Version 2.14.0-100.0.dev

Merge commit '31364331e9ab5d2ec8b033ecd3bdfea8c32289c1' into 'dev'
diff --git a/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.strong.expect b/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.strong.expect
index 888d8c5..09282c5 100644
--- a/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.strong.expect
+++ b/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.strong.expect
@@ -7,8 +7,8 @@
 
 static method main() → dynamic {
   core::List<dynamic> list = <dynamic>[];
-  if(list.{core::Iterable::isNotEmpty}{core::bool}) {
-    new mai::Class::•().{mai::Class::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::Enum){(mai::Enum) → core::int};
+  if(list.{core::Iterable::isNotEmpty}) {
+    new mai::Class::•().{mai::Class::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::Enum);
   }
 }
 
@@ -32,7 +32,7 @@
     : super core::Object::•()
     ;
   method method(mai::Enum e) → core::int
-    return e.{mai::Enum::index}{core::int};
+    return e.{mai::Enum::index};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.strong.transformed.expect b/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.strong.transformed.expect
index 4306d18..24d6d3b 100644
--- a/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.strong.transformed.expect
@@ -8,7 +8,7 @@
 
 static method main() → dynamic {
   core::List<dynamic> list = core::_GrowableList::•<dynamic>(0);
-  if(list.{core::Iterable::isNotEmpty}{core::bool}) {
+  if(list.{core::Iterable::isNotEmpty}) {
     let dynamic #t1 = new mai::Class::•() in let dynamic #t2 = _in::unsafeCast<dynamic>(null) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::Enum in throw "Attempt to execute code removed by Dart AOT compiler (TFA)";
   }
 }
diff --git a/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.weak.expect b/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.weak.expect
index fb73d75..d3516e5 100644
--- a/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.weak.expect
+++ b/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.weak.expect
@@ -7,8 +7,8 @@
 
 static method main() → dynamic {
   core::List<dynamic> list = <dynamic>[];
-  if(list.{core::Iterable::isNotEmpty}{core::bool}) {
-    new mai::Class::•().{mai::Class::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::Enum){(mai::Enum) → core::int};
+  if(list.{core::Iterable::isNotEmpty}) {
+    new mai::Class::•().{mai::Class::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::Enum);
   }
 }
 
@@ -32,7 +32,7 @@
     : super core::Object::•()
     ;
   method method(mai::Enum e) → core::int
-    return e.{mai::Enum::index}{core::int};
+    return e.{mai::Enum::index};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.weak.transformed.expect b/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.weak.transformed.expect
index e779a8d..040adbc 100644
--- a/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/aot/enum_from_lib_used_as_type/main.dart.weak.transformed.expect
@@ -8,8 +8,8 @@
 
 static method main() → dynamic {
   core::List<dynamic> list = core::_GrowableList::•<dynamic>(0);
-  if(list.{core::Iterable::isNotEmpty}{core::bool}) {
-    new mai::Class::•().{mai::Class::method}(_in::unsafeCast<mai::Enum>(_in::unsafeCast<dynamic>(null))){(mai::Enum) → core::int};
+  if(list.{core::Iterable::isNotEmpty}) {
+    new mai::Class::•().{mai::Class::method}(_in::unsafeCast<mai::Enum>(_in::unsafeCast<dynamic>(null)));
   }
 }
 
@@ -25,7 +25,7 @@
     : super core::Object::•()
     ;
   method method(mai::Enum e) → core::int
-    return e.{mai::Enum::index}{core::int};
+    return e.{mai::Enum::index};
 }
 
 
diff --git a/pkg/front_end/testcases/aot/tree_shake/main.dart.strong.expect b/pkg/front_end/testcases/aot/tree_shake/main.dart.strong.expect
index 95dd46c..57eb8a2 100644
--- a/pkg/front_end/testcases/aot/tree_shake/main.dart.strong.expect
+++ b/pkg/front_end/testcases/aot/tree_shake/main.dart.strong.expect
@@ -49,17 +49,17 @@
     ;
 }
 static method usedMethod(self::UnusedInterface c) → dynamic {
-  c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField}{core::int?};
+  c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField};
 }
 static method unusedMethod() → dynamic {}
 static method main() → dynamic {
   self::usedMethod(let final self::UsedClass #t1 = new self::UsedClass::•() in block {
-    #t1.{self::UsedClass::usedField}{core::int?};
+    #t1.{self::UsedClass::usedField};
   } =>#t1);
   #C11;
   core::List<self::UnusedEnum> list = <self::UnusedEnum>[];
-  if(list.{core::Iterable::isNotEmpty}{core::bool}) {
-    new mai::ConstClass::•().{mai::ConstClass::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::ConstEnum){(mai::ConstEnum) → core::int};
+  if(list.{core::Iterable::isNotEmpty}) {
+    new mai::ConstClass::•().{mai::ConstClass::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::ConstEnum);
   }
 }
 
@@ -83,7 +83,7 @@
     : super core::Object::•()
     ;
   method method(mai::ConstEnum e) → core::int
-    return e.{mai::ConstEnum::index}{core::int};
+    return e.{mai::ConstEnum::index};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/aot/tree_shake/main.dart.strong.transformed.expect b/pkg/front_end/testcases/aot/tree_shake/main.dart.strong.transformed.expect
index d19c074..23b7ce8 100644
--- a/pkg/front_end/testcases/aot/tree_shake/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/aot/tree_shake/main.dart.strong.transformed.expect
@@ -26,15 +26,15 @@
     ;
 }
 static method usedMethod(self::UnusedInterface c) → dynamic {
-  c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField}{core::int?};
+  c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField};
 }
 static method main() → dynamic {
   self::usedMethod(let final self::UsedClass #t1 = new self::UsedClass::•() in block {
-    #t1.{self::UsedClass::usedField}{core::int?};
+    #t1.{self::UsedClass::usedField};
   } =>#t1);
   #C3;
   core::List<self::UnusedEnum> list = core::_GrowableList::•<self::UnusedEnum>(0);
-  if(list.{core::Iterable::isNotEmpty}{core::bool}) {
+  if(list.{core::Iterable::isNotEmpty}) {
     let dynamic #t2 = new mai::ConstClass::•() in let dynamic #t3 = _in::unsafeCast<dynamic>(null) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::ConstEnum in throw "Attempt to execute code removed by Dart AOT compiler (TFA)";
   }
 }
diff --git a/pkg/front_end/testcases/aot/tree_shake/main.dart.weak.expect b/pkg/front_end/testcases/aot/tree_shake/main.dart.weak.expect
index 003dd46..55eeff3 100644
--- a/pkg/front_end/testcases/aot/tree_shake/main.dart.weak.expect
+++ b/pkg/front_end/testcases/aot/tree_shake/main.dart.weak.expect
@@ -49,17 +49,17 @@
     ;
 }
 static method usedMethod(self::UnusedInterface c) → dynamic {
-  c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField}{core::int?};
+  c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField};
 }
 static method unusedMethod() → dynamic {}
 static method main() → dynamic {
   self::usedMethod(let final self::UsedClass #t1 = new self::UsedClass::•() in block {
-    #t1.{self::UsedClass::usedField}{core::int?};
+    #t1.{self::UsedClass::usedField};
   } =>#t1);
   #C11;
   core::List<self::UnusedEnum> list = <self::UnusedEnum>[];
-  if(list.{core::Iterable::isNotEmpty}{core::bool}) {
-    new mai::ConstClass::•().{mai::ConstClass::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::ConstEnum){(mai::ConstEnum) → core::int};
+  if(list.{core::Iterable::isNotEmpty}) {
+    new mai::ConstClass::•().{mai::ConstClass::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::ConstEnum);
   }
 }
 
@@ -83,7 +83,7 @@
     : super core::Object::•()
     ;
   method method(mai::ConstEnum e) → core::int
-    return e.{mai::ConstEnum::index}{core::int};
+    return e.{mai::ConstEnum::index};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/aot/tree_shake/main.dart.weak.transformed.expect b/pkg/front_end/testcases/aot/tree_shake/main.dart.weak.transformed.expect
index cc814dc..80c0d6a 100644
--- a/pkg/front_end/testcases/aot/tree_shake/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/aot/tree_shake/main.dart.weak.transformed.expect
@@ -26,16 +26,16 @@
     ;
 }
 static method usedMethod(self::UnusedInterface c) → dynamic {
-  c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField}{core::int?};
+  c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField};
 }
 static method main() → dynamic {
   self::usedMethod(let final self::UsedClass #t1 = new self::UsedClass::•() in block {
-    #t1.{self::UsedClass::usedField}{core::int?};
+    #t1.{self::UsedClass::usedField};
   } =>#t1);
   #C3;
   core::List<self::UnusedEnum> list = core::_GrowableList::•<self::UnusedEnum>(0);
-  if(list.{core::Iterable::isNotEmpty}{core::bool}) {
-    new mai::ConstClass::•().{mai::ConstClass::method}(_in::unsafeCast<mai::ConstEnum>(_in::unsafeCast<dynamic>(null))){(mai::ConstEnum) → core::int};
+  if(list.{core::Iterable::isNotEmpty}) {
+    new mai::ConstClass::•().{mai::ConstClass::method}(_in::unsafeCast<mai::ConstEnum>(_in::unsafeCast<dynamic>(null)));
   }
 }
 
@@ -51,7 +51,7 @@
     : super core::Object::•()
     ;
   method method(mai::ConstEnum e) → core::int
-    return e.{mai::ConstEnum::index}{core::int};
+    return e.{mai::ConstEnum::index};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.strong.expect b/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.strong.expect
index b5c21df..fce2045 100644
--- a/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.strong.expect
+++ b/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.strong.expect
@@ -14,8 +14,8 @@
     ;
 }
 static method method(mai::Interface i) → void {
-  i.{mai::Interface::field2} = i.{mai::Interface::field1}{core::int?};
-  i.{mai::Interface::field3} = i.{mai::Interface::field3}{core::int?};
+  i.{mai::Interface::field2} = i.{mai::Interface::field1};
+  i.{mai::Interface::field3} = i.{mai::Interface::field3};
 }
 static method main() → dynamic {
   self::method(new self::Class::•());
diff --git a/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.strong.transformed.expect b/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.strong.transformed.expect
index 4f86a02..9a18bdf 100644
--- a/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.strong.transformed.expect
@@ -14,8 +14,8 @@
   set /*isLegacy*/ field2(core::int? value) → void;
 }
 static method method(mai::Interface i) → void {
-  i.{mai::Interface::field2} = i.{mai::Interface::field1}{core::int?};
-  i.{mai::Interface::field3} = i.{mai::Interface::field3}{core::int?};
+  i.{mai::Interface::field2} = i.{mai::Interface::field1};
+  i.{mai::Interface::field3} = i.{mai::Interface::field3};
 }
 static method main() → dynamic {
   self::method(new self::Class::•());
diff --git a/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.weak.expect b/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.weak.expect
index b5c21df..fce2045 100644
--- a/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.weak.expect
+++ b/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.weak.expect
@@ -14,8 +14,8 @@
     ;
 }
 static method method(mai::Interface i) → void {
-  i.{mai::Interface::field2} = i.{mai::Interface::field1}{core::int?};
-  i.{mai::Interface::field3} = i.{mai::Interface::field3}{core::int?};
+  i.{mai::Interface::field2} = i.{mai::Interface::field1};
+  i.{mai::Interface::field3} = i.{mai::Interface::field3};
 }
 static method main() → dynamic {
   self::method(new self::Class::•());
diff --git a/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.weak.transformed.expect b/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.weak.transformed.expect
index 4f86a02..9a18bdf 100644
--- a/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/aot/tree_shake_field_from_lib/main.dart.weak.transformed.expect
@@ -14,8 +14,8 @@
   set /*isLegacy*/ field2(core::int? value) → void;
 }
 static method method(mai::Interface i) → void {
-  i.{mai::Interface::field2} = i.{mai::Interface::field1}{core::int?};
-  i.{mai::Interface::field3} = i.{mai::Interface::field3}{core::int?};
+  i.{mai::Interface::field2} = i.{mai::Interface::field1};
+  i.{mai::Interface::field3} = i.{mai::Interface::field3};
 }
 static method main() → dynamic {
   self::method(new self::Class::•());
diff --git a/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.strong.expect
index 89d51078..6f5f7b1 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.strong.expect
@@ -9,15 +9,15 @@
 static const field core::int var2 = #C1;
 static method fn() → core::int {
   core::int x = 0;
-  assert(x =={core::num::==}{(core::Object) → core::bool} 0, "fail");
+  assert(x.{core::num::==}(0), "fail");
   return x;
 }
 static method fn2() → core::int {
   core::int x = 0;
   assert((() → core::bool {
-    core::int y = x.{core::num::+}(1){(core::num) → core::int};
-    return y =={core::num::==}{(core::Object) → core::bool} 1;
-  })(){() → core::bool});
+    core::int y = x.{core::num::+}(1);
+    return y.{core::num::==}(1);
+  }).call());
   return x;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.strong.transformed.expect
index 89d51078..6f5f7b1 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.strong.transformed.expect
@@ -9,15 +9,15 @@
 static const field core::int var2 = #C1;
 static method fn() → core::int {
   core::int x = 0;
-  assert(x =={core::num::==}{(core::Object) → core::bool} 0, "fail");
+  assert(x.{core::num::==}(0), "fail");
   return x;
 }
 static method fn2() → core::int {
   core::int x = 0;
   assert((() → core::bool {
-    core::int y = x.{core::num::+}(1){(core::num) → core::int};
-    return y =={core::num::==}{(core::Object) → core::bool} 1;
-  })(){() → core::bool});
+    core::int y = x.{core::num::+}(1);
+    return y.{core::num::==}(1);
+  }).call());
   return x;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.weak.expect
index 89d51078..6f5f7b1 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.weak.expect
@@ -9,15 +9,15 @@
 static const field core::int var2 = #C1;
 static method fn() → core::int {
   core::int x = 0;
-  assert(x =={core::num::==}{(core::Object) → core::bool} 0, "fail");
+  assert(x.{core::num::==}(0), "fail");
   return x;
 }
 static method fn2() → core::int {
   core::int x = 0;
   assert((() → core::bool {
-    core::int y = x.{core::num::+}(1){(core::num) → core::int};
-    return y =={core::num::==}{(core::Object) → core::bool} 1;
-  })(){() → core::bool});
+    core::int y = x.{core::num::+}(1);
+    return y.{core::num::==}(1);
+  }).call());
   return x;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.weak.transformed.expect
index 89d51078..6f5f7b1 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_assert_statements.dart.weak.transformed.expect
@@ -9,15 +9,15 @@
 static const field core::int var2 = #C1;
 static method fn() → core::int {
   core::int x = 0;
-  assert(x =={core::num::==}{(core::Object) → core::bool} 0, "fail");
+  assert(x.{core::num::==}(0), "fail");
   return x;
 }
 static method fn2() → core::int {
   core::int x = 0;
   assert((() → core::bool {
-    core::int y = x.{core::num::+}(1){(core::num) → core::int};
-    return y =={core::num::==}{(core::Object) → core::bool} 1;
-  })(){() → core::bool});
+    core::int y = x.{core::num::+}(1);
+    return y.{core::num::==}(1);
+  }).call());
   return x;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_closures.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_closures.dart.strong.expect
index a1bc565..64a08b6 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_closures.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_closures.dart.strong.expect
@@ -16,29 +16,29 @@
   () → () → core::int f = () → () → core::int {
     core::int count = 0;
     function baz() → core::int {
-      count = count.{core::num::+}(1){(core::num) → core::int};
+      count = count.{core::num::+}(1);
       return count;
     }
     return baz;
   };
-  () → core::int c1 = f(){() → () → core::int};
-  () → core::int c2 = f(){() → () → core::int};
-  core::int c1_val1 = c1(){() → core::int};
-  assert(c1_val1 =={core::num::==}{(core::Object) → core::bool} 1);
-  core::int c1_val2 = c1(){() → core::int};
-  assert(c1_val2 =={core::num::==}{(core::Object) → core::bool} 2);
-  core::int c1_val3 = c1(){() → core::int};
-  assert(c1_val3 =={core::num::==}{(core::Object) → core::bool} 3);
-  core::int c2_val1 = c2(){() → core::int};
-  assert(c1_val1 =={core::num::==}{(core::Object) → core::bool} 1);
-  core::int c2_val2 = c2(){() → core::int};
-  assert(c1_val2 =={core::num::==}{(core::Object) → core::bool} 2);
-  core::int c2_val3 = c2(){() → core::int};
-  assert(c1_val3 =={core::num::==}{(core::Object) → core::bool} 3);
+  () → core::int c1 = f.call();
+  () → core::int c2 = f.call();
+  core::int c1_val1 = c1.call();
+  assert(c1_val1.{core::num::==}(1));
+  core::int c1_val2 = c1.call();
+  assert(c1_val2.{core::num::==}(2));
+  core::int c1_val3 = c1.call();
+  assert(c1_val3.{core::num::==}(3));
+  core::int c2_val1 = c2.call();
+  assert(c1_val1.{core::num::==}(1));
+  core::int c2_val2 = c2.call();
+  assert(c1_val2.{core::num::==}(2));
+  core::int c2_val3 = c2.call();
+  assert(c1_val3.{core::num::==}(3));
   return 0;
 }
 static method fn() → core::int {
-  return (() → core::int => 0)(){() → core::int};
+  return (() → core::int => 0).call();
 }
 static method fn3() → core::int {
   core::int y = 2;
@@ -49,25 +49,25 @@
   function innerFn() → core::int {
     return x;
   }
-  return innerFn(){() → core::int};
+  return innerFn.call();
 }
 static method fn5(core::int a) → core::int {
   function recurse(core::int b) → core::int {
-    if(b =={core::num::==}{(core::Object) → core::bool} 1)
+    if(b.{core::num::==}(1))
       return 1;
-    core::int result = recurse(b.{core::num::-}(1){(core::num) → core::int}){(core::int) → core::int};
-    return b.{core::num::*}(result){(core::num) → core::int};
+    core::int result = recurse.call(b.{core::num::-}(1));
+    return b.{core::num::*}(result);
   }
-  return recurse(a){(core::int) → core::int};
+  return recurse.call(a);
 }
 static method fn6(core::int a) → core::int {
   function recurse() → core::int {
-    a = a.{core::num::-}(1){(core::num) → core::int};
-    if(a =={core::num::==}{(core::Object) → core::bool} 1)
+    a = a.{core::num::-}(1);
+    if(a.{core::num::==}(1))
       return 1;
-    return a.{core::num::*}(recurse(){() → core::int}){(core::num) → core::int};
+    return a.{core::num::*}(recurse.call());
   }
-  return recurse(){() → core::int};
+  return recurse.call();
 }
 static method main() → void {
   exp::Expect::equals(#C1, 0);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_closures.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_closures.dart.strong.transformed.expect
index a1bc565..64a08b6 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_closures.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_closures.dart.strong.transformed.expect
@@ -16,29 +16,29 @@
   () → () → core::int f = () → () → core::int {
     core::int count = 0;
     function baz() → core::int {
-      count = count.{core::num::+}(1){(core::num) → core::int};
+      count = count.{core::num::+}(1);
       return count;
     }
     return baz;
   };
-  () → core::int c1 = f(){() → () → core::int};
-  () → core::int c2 = f(){() → () → core::int};
-  core::int c1_val1 = c1(){() → core::int};
-  assert(c1_val1 =={core::num::==}{(core::Object) → core::bool} 1);
-  core::int c1_val2 = c1(){() → core::int};
-  assert(c1_val2 =={core::num::==}{(core::Object) → core::bool} 2);
-  core::int c1_val3 = c1(){() → core::int};
-  assert(c1_val3 =={core::num::==}{(core::Object) → core::bool} 3);
-  core::int c2_val1 = c2(){() → core::int};
-  assert(c1_val1 =={core::num::==}{(core::Object) → core::bool} 1);
-  core::int c2_val2 = c2(){() → core::int};
-  assert(c1_val2 =={core::num::==}{(core::Object) → core::bool} 2);
-  core::int c2_val3 = c2(){() → core::int};
-  assert(c1_val3 =={core::num::==}{(core::Object) → core::bool} 3);
+  () → core::int c1 = f.call();
+  () → core::int c2 = f.call();
+  core::int c1_val1 = c1.call();
+  assert(c1_val1.{core::num::==}(1));
+  core::int c1_val2 = c1.call();
+  assert(c1_val2.{core::num::==}(2));
+  core::int c1_val3 = c1.call();
+  assert(c1_val3.{core::num::==}(3));
+  core::int c2_val1 = c2.call();
+  assert(c1_val1.{core::num::==}(1));
+  core::int c2_val2 = c2.call();
+  assert(c1_val2.{core::num::==}(2));
+  core::int c2_val3 = c2.call();
+  assert(c1_val3.{core::num::==}(3));
   return 0;
 }
 static method fn() → core::int {
-  return (() → core::int => 0)(){() → core::int};
+  return (() → core::int => 0).call();
 }
 static method fn3() → core::int {
   core::int y = 2;
@@ -49,25 +49,25 @@
   function innerFn() → core::int {
     return x;
   }
-  return innerFn(){() → core::int};
+  return innerFn.call();
 }
 static method fn5(core::int a) → core::int {
   function recurse(core::int b) → core::int {
-    if(b =={core::num::==}{(core::Object) → core::bool} 1)
+    if(b.{core::num::==}(1))
       return 1;
-    core::int result = recurse(b.{core::num::-}(1){(core::num) → core::int}){(core::int) → core::int};
-    return b.{core::num::*}(result){(core::num) → core::int};
+    core::int result = recurse.call(b.{core::num::-}(1));
+    return b.{core::num::*}(result);
   }
-  return recurse(a){(core::int) → core::int};
+  return recurse.call(a);
 }
 static method fn6(core::int a) → core::int {
   function recurse() → core::int {
-    a = a.{core::num::-}(1){(core::num) → core::int};
-    if(a =={core::num::==}{(core::Object) → core::bool} 1)
+    a = a.{core::num::-}(1);
+    if(a.{core::num::==}(1))
       return 1;
-    return a.{core::num::*}(recurse(){() → core::int}){(core::num) → core::int};
+    return a.{core::num::*}(recurse.call());
   }
-  return recurse(){() → core::int};
+  return recurse.call();
 }
 static method main() → void {
   exp::Expect::equals(#C1, 0);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_closures.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_closures.dart.weak.expect
index a1bc565..64a08b6 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_closures.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_closures.dart.weak.expect
@@ -16,29 +16,29 @@
   () → () → core::int f = () → () → core::int {
     core::int count = 0;
     function baz() → core::int {
-      count = count.{core::num::+}(1){(core::num) → core::int};
+      count = count.{core::num::+}(1);
       return count;
     }
     return baz;
   };
-  () → core::int c1 = f(){() → () → core::int};
-  () → core::int c2 = f(){() → () → core::int};
-  core::int c1_val1 = c1(){() → core::int};
-  assert(c1_val1 =={core::num::==}{(core::Object) → core::bool} 1);
-  core::int c1_val2 = c1(){() → core::int};
-  assert(c1_val2 =={core::num::==}{(core::Object) → core::bool} 2);
-  core::int c1_val3 = c1(){() → core::int};
-  assert(c1_val3 =={core::num::==}{(core::Object) → core::bool} 3);
-  core::int c2_val1 = c2(){() → core::int};
-  assert(c1_val1 =={core::num::==}{(core::Object) → core::bool} 1);
-  core::int c2_val2 = c2(){() → core::int};
-  assert(c1_val2 =={core::num::==}{(core::Object) → core::bool} 2);
-  core::int c2_val3 = c2(){() → core::int};
-  assert(c1_val3 =={core::num::==}{(core::Object) → core::bool} 3);
+  () → core::int c1 = f.call();
+  () → core::int c2 = f.call();
+  core::int c1_val1 = c1.call();
+  assert(c1_val1.{core::num::==}(1));
+  core::int c1_val2 = c1.call();
+  assert(c1_val2.{core::num::==}(2));
+  core::int c1_val3 = c1.call();
+  assert(c1_val3.{core::num::==}(3));
+  core::int c2_val1 = c2.call();
+  assert(c1_val1.{core::num::==}(1));
+  core::int c2_val2 = c2.call();
+  assert(c1_val2.{core::num::==}(2));
+  core::int c2_val3 = c2.call();
+  assert(c1_val3.{core::num::==}(3));
   return 0;
 }
 static method fn() → core::int {
-  return (() → core::int => 0)(){() → core::int};
+  return (() → core::int => 0).call();
 }
 static method fn3() → core::int {
   core::int y = 2;
@@ -49,25 +49,25 @@
   function innerFn() → core::int {
     return x;
   }
-  return innerFn(){() → core::int};
+  return innerFn.call();
 }
 static method fn5(core::int a) → core::int {
   function recurse(core::int b) → core::int {
-    if(b =={core::num::==}{(core::Object) → core::bool} 1)
+    if(b.{core::num::==}(1))
       return 1;
-    core::int result = recurse(b.{core::num::-}(1){(core::num) → core::int}){(core::int) → core::int};
-    return b.{core::num::*}(result){(core::num) → core::int};
+    core::int result = recurse.call(b.{core::num::-}(1));
+    return b.{core::num::*}(result);
   }
-  return recurse(a){(core::int) → core::int};
+  return recurse.call(a);
 }
 static method fn6(core::int a) → core::int {
   function recurse() → core::int {
-    a = a.{core::num::-}(1){(core::num) → core::int};
-    if(a =={core::num::==}{(core::Object) → core::bool} 1)
+    a = a.{core::num::-}(1);
+    if(a.{core::num::==}(1))
       return 1;
-    return a.{core::num::*}(recurse(){() → core::int}){(core::num) → core::int};
+    return a.{core::num::*}(recurse.call());
   }
-  return recurse(){() → core::int};
+  return recurse.call();
 }
 static method main() → void {
   exp::Expect::equals(#C1, 0);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_closures.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_closures.dart.weak.transformed.expect
index a1bc565..64a08b6 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_closures.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_closures.dart.weak.transformed.expect
@@ -16,29 +16,29 @@
   () → () → core::int f = () → () → core::int {
     core::int count = 0;
     function baz() → core::int {
-      count = count.{core::num::+}(1){(core::num) → core::int};
+      count = count.{core::num::+}(1);
       return count;
     }
     return baz;
   };
-  () → core::int c1 = f(){() → () → core::int};
-  () → core::int c2 = f(){() → () → core::int};
-  core::int c1_val1 = c1(){() → core::int};
-  assert(c1_val1 =={core::num::==}{(core::Object) → core::bool} 1);
-  core::int c1_val2 = c1(){() → core::int};
-  assert(c1_val2 =={core::num::==}{(core::Object) → core::bool} 2);
-  core::int c1_val3 = c1(){() → core::int};
-  assert(c1_val3 =={core::num::==}{(core::Object) → core::bool} 3);
-  core::int c2_val1 = c2(){() → core::int};
-  assert(c1_val1 =={core::num::==}{(core::Object) → core::bool} 1);
-  core::int c2_val2 = c2(){() → core::int};
-  assert(c1_val2 =={core::num::==}{(core::Object) → core::bool} 2);
-  core::int c2_val3 = c2(){() → core::int};
-  assert(c1_val3 =={core::num::==}{(core::Object) → core::bool} 3);
+  () → core::int c1 = f.call();
+  () → core::int c2 = f.call();
+  core::int c1_val1 = c1.call();
+  assert(c1_val1.{core::num::==}(1));
+  core::int c1_val2 = c1.call();
+  assert(c1_val2.{core::num::==}(2));
+  core::int c1_val3 = c1.call();
+  assert(c1_val3.{core::num::==}(3));
+  core::int c2_val1 = c2.call();
+  assert(c1_val1.{core::num::==}(1));
+  core::int c2_val2 = c2.call();
+  assert(c1_val2.{core::num::==}(2));
+  core::int c2_val3 = c2.call();
+  assert(c1_val3.{core::num::==}(3));
   return 0;
 }
 static method fn() → core::int {
-  return (() → core::int => 0)(){() → core::int};
+  return (() → core::int => 0).call();
 }
 static method fn3() → core::int {
   core::int y = 2;
@@ -49,25 +49,25 @@
   function innerFn() → core::int {
     return x;
   }
-  return innerFn(){() → core::int};
+  return innerFn.call();
 }
 static method fn5(core::int a) → core::int {
   function recurse(core::int b) → core::int {
-    if(b =={core::num::==}{(core::Object) → core::bool} 1)
+    if(b.{core::num::==}(1))
       return 1;
-    core::int result = recurse(b.{core::num::-}(1){(core::num) → core::int}){(core::int) → core::int};
-    return b.{core::num::*}(result){(core::num) → core::int};
+    core::int result = recurse.call(b.{core::num::-}(1));
+    return b.{core::num::*}(result);
   }
-  return recurse(a){(core::int) → core::int};
+  return recurse.call(a);
 }
 static method fn6(core::int a) → core::int {
   function recurse() → core::int {
-    a = a.{core::num::-}(1){(core::num) → core::int};
-    if(a =={core::num::==}{(core::Object) → core::bool} 1)
+    a = a.{core::num::-}(1);
+    if(a.{core::num::==}(1))
       return 1;
-    return a.{core::num::*}(recurse(){() → core::int}){(core::num) → core::int};
+    return a.{core::num::*}(recurse.call());
   }
-  return recurse(){() → core::int};
+  return recurse.call();
 }
 static method main() → void {
   exp::Expect::equals(#C1, 0);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.strong.expect
index e55cf4a..d85a9e2 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.strong.expect
@@ -9,7 +9,7 @@
   final field core::String name;
   const constructor •(core::String name) → self::Simple
     : self::Simple::name = name, super core::Object::•() {
-    assert(this.{self::Simple::name}{core::String} =={core::String::==}{(core::Object) → core::bool} (#C1));
+    assert(this.{self::Simple::name}.{core::String::==}(#C1));
   }
 }
 class A extends core::Object /*hasConstConstructor*/  {
@@ -25,7 +25,7 @@
 static method fn() → self::A
   return new self::A::•();
 static method main() → void {
-  exp::Expect::equals((#C2).{self::Simple::name}{core::String}, #C1);
+  exp::Expect::equals((#C2).{self::Simple::name}, #C1);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.strong.transformed.expect
index e55cf4a..d85a9e2 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
   final field core::String name;
   const constructor •(core::String name) → self::Simple
     : self::Simple::name = name, super core::Object::•() {
-    assert(this.{self::Simple::name}{core::String} =={core::String::==}{(core::Object) → core::bool} (#C1));
+    assert(this.{self::Simple::name}.{core::String::==}(#C1));
   }
 }
 class A extends core::Object /*hasConstConstructor*/  {
@@ -25,7 +25,7 @@
 static method fn() → self::A
   return new self::A::•();
 static method main() → void {
-  exp::Expect::equals((#C2).{self::Simple::name}{core::String}, #C1);
+  exp::Expect::equals((#C2).{self::Simple::name}, #C1);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.weak.expect
index e55cf4a..d85a9e2 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.weak.expect
@@ -9,7 +9,7 @@
   final field core::String name;
   const constructor •(core::String name) → self::Simple
     : self::Simple::name = name, super core::Object::•() {
-    assert(this.{self::Simple::name}{core::String} =={core::String::==}{(core::Object) → core::bool} (#C1));
+    assert(this.{self::Simple::name}.{core::String::==}(#C1));
   }
 }
 class A extends core::Object /*hasConstConstructor*/  {
@@ -25,7 +25,7 @@
 static method fn() → self::A
   return new self::A::•();
 static method main() → void {
-  exp::Expect::equals((#C2).{self::Simple::name}{core::String}, #C1);
+  exp::Expect::equals((#C2).{self::Simple::name}, #C1);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.weak.transformed.expect
index e55cf4a..d85a9e2 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_const_ctor.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
   final field core::String name;
   const constructor •(core::String name) → self::Simple
     : self::Simple::name = name, super core::Object::•() {
-    assert(this.{self::Simple::name}{core::String} =={core::String::==}{(core::Object) → core::bool} (#C1));
+    assert(this.{self::Simple::name}.{core::String::==}(#C1));
   }
 }
 class A extends core::Object /*hasConstConstructor*/  {
@@ -25,7 +25,7 @@
 static method fn() → self::A
   return new self::A::•();
 static method main() → void {
-  exp::Expect::equals((#C2).{self::Simple::name}{core::String}, #C1);
+  exp::Expect::equals((#C2).{self::Simple::name}, #C1);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.strong.expect
index 539ee45..8f500e2 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.strong.expect
@@ -41,7 +41,7 @@
   final field core::String name;
   const constructor •(core::String name) → self::Simple
     : self::Simple::name = name, super core::Object::•() {
-    assert(!(this.{self::Simple::name}{core::String} =={core::String::==}{(core::Object) → core::bool} (#C1)));
+    assert(!this.{self::Simple::name}.{core::String::==}(#C1));
   }
 }
 class Simple2 extends core::Object /*hasConstConstructor*/  {
@@ -57,7 +57,7 @@
 class A extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::A
     : super core::Object::•() {
-    assert(1 =={core::num::==}{(core::Object) → core::bool} 2);
+    assert(1.{core::num::==}(2));
   }
 }
 class B extends self::A /*hasConstConstructor*/  {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.strong.transformed.expect
index 1fd70dc..1aea02c 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.strong.transformed.expect
@@ -41,7 +41,7 @@
   final field core::String name;
   const constructor •(core::String name) → self::Simple
     : self::Simple::name = name, super core::Object::•() {
-    assert(!(this.{self::Simple::name}{core::String} =={core::String::==}{(core::Object) → core::bool} (#C1)));
+    assert(!this.{self::Simple::name}.{core::String::==}(#C1));
   }
 }
 class Simple2 extends core::Object /*hasConstConstructor*/  {
@@ -57,7 +57,7 @@
 class A extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::A
     : super core::Object::•() {
-    assert(1 =={core::num::==}{(core::Object) → core::bool} 2);
+    assert(1.{core::num::==}(2));
   }
 }
 class B extends self::A /*hasConstConstructor*/  {
@@ -89,7 +89,7 @@
 }
 
 Extra constant evaluation status:
-Evaluated: EqualsCall @ org-dartlang-testcase:///const_functions_const_ctor_error.dart:33:14 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_const_ctor_error.dart:33:14 -> BoolConstant(false)
 Extra constant evaluation: evaluated: 7, effectively constant: 1
 
 
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.weak.expect
index 539ee45..8f500e2 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.weak.expect
@@ -41,7 +41,7 @@
   final field core::String name;
   const constructor •(core::String name) → self::Simple
     : self::Simple::name = name, super core::Object::•() {
-    assert(!(this.{self::Simple::name}{core::String} =={core::String::==}{(core::Object) → core::bool} (#C1)));
+    assert(!this.{self::Simple::name}.{core::String::==}(#C1));
   }
 }
 class Simple2 extends core::Object /*hasConstConstructor*/  {
@@ -57,7 +57,7 @@
 class A extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::A
     : super core::Object::•() {
-    assert(1 =={core::num::==}{(core::Object) → core::bool} 2);
+    assert(1.{core::num::==}(2));
   }
 }
 class B extends self::A /*hasConstConstructor*/  {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.weak.transformed.expect
index 1fd70dc..1aea02c 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_const_ctor_error.dart.weak.transformed.expect
@@ -41,7 +41,7 @@
   final field core::String name;
   const constructor •(core::String name) → self::Simple
     : self::Simple::name = name, super core::Object::•() {
-    assert(!(this.{self::Simple::name}{core::String} =={core::String::==}{(core::Object) → core::bool} (#C1)));
+    assert(!this.{self::Simple::name}.{core::String::==}(#C1));
   }
 }
 class Simple2 extends core::Object /*hasConstConstructor*/  {
@@ -57,7 +57,7 @@
 class A extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::A
     : super core::Object::•() {
-    assert(1 =={core::num::==}{(core::Object) → core::bool} 2);
+    assert(1.{core::num::==}(2));
   }
 }
 class B extends self::A /*hasConstConstructor*/  {
@@ -89,7 +89,7 @@
 }
 
 Extra constant evaluation status:
-Evaluated: EqualsCall @ org-dartlang-testcase:///const_functions_const_ctor_error.dart:33:14 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_const_ctor_error.dart:33:14 -> BoolConstant(false)
 Extra constant evaluation: evaluated: 7, effectively constant: 1
 
 
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.strong.expect
index b9d7932..c9674e9 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.strong.expect
@@ -13,7 +13,7 @@
     : self::MessageType::name = name, super core::Object::•()
     ;
   static factory parse(core::String name) → self::MessageType {
-    if(name =={core::String::==}{(core::Object) → core::bool} "print") {
+    if(name.{core::String::==}("print")) {
       return #C2;
     }
     return #C4;
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.strong.transformed.expect
index b9d7932..c9674e9 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.strong.transformed.expect
@@ -13,7 +13,7 @@
     : self::MessageType::name = name, super core::Object::•()
     ;
   static factory parse(core::String name) → self::MessageType {
-    if(name =={core::String::==}{(core::Object) → core::bool} "print") {
+    if(name.{core::String::==}("print")) {
       return #C2;
     }
     return #C4;
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.weak.expect
index b9d7932..c9674e9 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.weak.expect
@@ -13,7 +13,7 @@
     : self::MessageType::name = name, super core::Object::•()
     ;
   static factory parse(core::String name) → self::MessageType {
-    if(name =={core::String::==}{(core::Object) → core::bool} "print") {
+    if(name.{core::String::==}("print")) {
       return #C2;
     }
     return #C4;
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.weak.transformed.expect
index b9d7932..c9674e9 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
     : self::MessageType::name = name, super core::Object::•()
     ;
   static factory parse(core::String name) → self::MessageType {
-    if(name =={core::String::==}{(core::Object) → core::bool} "print") {
+    if(name.{core::String::==}("print")) {
       return #C2;
     }
     return #C4;
diff --git a/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.strong.expect
index 4442626..1737f7b 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.strong.expect
@@ -12,9 +12,9 @@
 static method fn() → core::int {
   core::int x = 0;
   do {
-    x = x.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(1);
   }
-  while (x.{core::num::<}(2){(core::num) → core::bool})
+  while (x.{core::num::<}(2))
   return x;
 }
 static method fn2(core::int a) → core::int {
@@ -22,12 +22,12 @@
   core::int b = 0;
   #L1:
   do {
-    if(x.{core::num::>}(5){(core::num) → core::bool})
+    if(x.{core::num::>}(5))
       break #L1;
-    x = x.{core::num::+}(a){(core::num) → core::int};
-    b = b.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(a);
+    b = b.{core::num::+}(1);
   }
-  while (b.{core::num::<}(2){(core::num) → core::bool})
+  while (b.{core::num::<}(2))
   return x;
 }
 static method fn3() → core::int {
@@ -36,12 +36,12 @@
   do
     #L2:
     {
-      x = x.{core::num::+}(1){(core::num) → core::int};
-      if(x.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1)
+      x = x.{core::num::+}(1);
+      if(x.{core::num::%}(2).{core::num::==}(1))
         break #L2;
-      b = b.{core::num::+}(x){(core::num) → core::int};
+      b = b.{core::num::+}(x);
     }
-  while (x.{core::num::<}(5){(core::num) → core::bool})
+  while (x.{core::num::<}(5))
   return b;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.strong.transformed.expect
index 4442626..1737f7b 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.strong.transformed.expect
@@ -12,9 +12,9 @@
 static method fn() → core::int {
   core::int x = 0;
   do {
-    x = x.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(1);
   }
-  while (x.{core::num::<}(2){(core::num) → core::bool})
+  while (x.{core::num::<}(2))
   return x;
 }
 static method fn2(core::int a) → core::int {
@@ -22,12 +22,12 @@
   core::int b = 0;
   #L1:
   do {
-    if(x.{core::num::>}(5){(core::num) → core::bool})
+    if(x.{core::num::>}(5))
       break #L1;
-    x = x.{core::num::+}(a){(core::num) → core::int};
-    b = b.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(a);
+    b = b.{core::num::+}(1);
   }
-  while (b.{core::num::<}(2){(core::num) → core::bool})
+  while (b.{core::num::<}(2))
   return x;
 }
 static method fn3() → core::int {
@@ -36,12 +36,12 @@
   do
     #L2:
     {
-      x = x.{core::num::+}(1){(core::num) → core::int};
-      if(x.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1)
+      x = x.{core::num::+}(1);
+      if(x.{core::num::%}(2).{core::num::==}(1))
         break #L2;
-      b = b.{core::num::+}(x){(core::num) → core::int};
+      b = b.{core::num::+}(x);
     }
-  while (x.{core::num::<}(5){(core::num) → core::bool})
+  while (x.{core::num::<}(5))
   return b;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.weak.expect
index 4442626..1737f7b 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.weak.expect
@@ -12,9 +12,9 @@
 static method fn() → core::int {
   core::int x = 0;
   do {
-    x = x.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(1);
   }
-  while (x.{core::num::<}(2){(core::num) → core::bool})
+  while (x.{core::num::<}(2))
   return x;
 }
 static method fn2(core::int a) → core::int {
@@ -22,12 +22,12 @@
   core::int b = 0;
   #L1:
   do {
-    if(x.{core::num::>}(5){(core::num) → core::bool})
+    if(x.{core::num::>}(5))
       break #L1;
-    x = x.{core::num::+}(a){(core::num) → core::int};
-    b = b.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(a);
+    b = b.{core::num::+}(1);
   }
-  while (b.{core::num::<}(2){(core::num) → core::bool})
+  while (b.{core::num::<}(2))
   return x;
 }
 static method fn3() → core::int {
@@ -36,12 +36,12 @@
   do
     #L2:
     {
-      x = x.{core::num::+}(1){(core::num) → core::int};
-      if(x.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1)
+      x = x.{core::num::+}(1);
+      if(x.{core::num::%}(2).{core::num::==}(1))
         break #L2;
-      b = b.{core::num::+}(x){(core::num) → core::int};
+      b = b.{core::num::+}(x);
     }
-  while (x.{core::num::<}(5){(core::num) → core::bool})
+  while (x.{core::num::<}(5))
   return b;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.weak.transformed.expect
index 4442626..1737f7b 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_do_statements.dart.weak.transformed.expect
@@ -12,9 +12,9 @@
 static method fn() → core::int {
   core::int x = 0;
   do {
-    x = x.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(1);
   }
-  while (x.{core::num::<}(2){(core::num) → core::bool})
+  while (x.{core::num::<}(2))
   return x;
 }
 static method fn2(core::int a) → core::int {
@@ -22,12 +22,12 @@
   core::int b = 0;
   #L1:
   do {
-    if(x.{core::num::>}(5){(core::num) → core::bool})
+    if(x.{core::num::>}(5))
       break #L1;
-    x = x.{core::num::+}(a){(core::num) → core::int};
-    b = b.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(a);
+    b = b.{core::num::+}(1);
   }
-  while (b.{core::num::<}(2){(core::num) → core::bool})
+  while (b.{core::num::<}(2))
   return x;
 }
 static method fn3() → core::int {
@@ -36,12 +36,12 @@
   do
     #L2:
     {
-      x = x.{core::num::+}(1){(core::num) → core::int};
-      if(x.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1)
+      x = x.{core::num::+}(1);
+      if(x.{core::num::%}(2).{core::num::==}(1))
         break #L2;
-      b = b.{core::num::+}(x){(core::num) → core::int};
+      b = b.{core::num::+}(x);
     }
-  while (x.{core::num::<}(5){(core::num) → core::bool})
+  while (x.{core::num::<}(5))
   return b;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.strong.expect
index f4906f3..b8210ed 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.strong.expect
@@ -17,44 +17,44 @@
 static const field core::int var10 = #C8;
 static method fn(core::int a) → core::int {
   core::int b = a;
-  for (core::int i = 0; i.{core::num::<}(2){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    b = b.{core::num::+}(a){(core::num) → core::int};
+  for (core::int i = 0; i.{core::num::<}(2); i = i.{core::num::+}(1)) {
+    b = b.{core::num::+}(a);
   }
   return b;
 }
 static method fn1(core::int a) → core::int {
   core::int b = a;
-  for (core::int i = 0; ; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    b = b.{core::num::*}(3){(core::num) → core::int};
-    if(b.{core::num::>}(10){(core::num) → core::bool})
+  for (core::int i = 0; ; i = i.{core::num::+}(1)) {
+    b = b.{core::num::*}(3);
+    if(b.{core::num::>}(10))
       return b;
   }
 }
 static method fn2() → core::int {
-  for (core::int i = 0, core::int j = 2; ; i = i.{core::num::+}(2){(core::num) → core::int}, j = j.{core::num::+}(1){(core::num) → core::int}) {
-    if(i.{core::num::+}(j){(core::num) → core::int}.{core::num::>}(10){(core::num) → core::bool}) {
-      return i.{core::num::+}(j){(core::num) → core::int};
+  for (core::int i = 0, core::int j = 2; ; i = i.{core::num::+}(2), j = j.{core::num::+}(1)) {
+    if(i.{core::num::+}(j).{core::num::>}(10)) {
+      return i.{core::num::+}(j);
     }
   }
 }
 static method fnContinue() → core::int {
   core::int a = 0;
-  for (core::int i = 0; i.{core::num::<}(5){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+  for (core::int i = 0; i.{core::num::<}(5); i = i.{core::num::+}(1))
     #L1:
     {
-      if(i.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1)
+      if(i.{core::num::%}(2).{core::num::==}(1))
         break #L1;
-      a = a.{core::num::+}(i){(core::num) → core::int};
+      a = a.{core::num::+}(i);
     }
   return a;
 }
 static method fnBreak(core::int a) → core::int {
   core::int b = a;
   #L2:
-  for (core::int i = 0; i.{core::num::<}(2){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    if(b =={core::num::==}{(core::Object) → core::bool} 2)
+  for (core::int i = 0; i.{core::num::<}(2); i = i.{core::num::+}(1)) {
+    if(b.{core::num::==}(2))
       break #L2;
-    b = b.{core::num::+}(a){(core::num) → core::int};
+    b = b.{core::num::+}(a);
   }
   return b;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.strong.transformed.expect
index f4906f3..b8210ed 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.strong.transformed.expect
@@ -17,44 +17,44 @@
 static const field core::int var10 = #C8;
 static method fn(core::int a) → core::int {
   core::int b = a;
-  for (core::int i = 0; i.{core::num::<}(2){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    b = b.{core::num::+}(a){(core::num) → core::int};
+  for (core::int i = 0; i.{core::num::<}(2); i = i.{core::num::+}(1)) {
+    b = b.{core::num::+}(a);
   }
   return b;
 }
 static method fn1(core::int a) → core::int {
   core::int b = a;
-  for (core::int i = 0; ; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    b = b.{core::num::*}(3){(core::num) → core::int};
-    if(b.{core::num::>}(10){(core::num) → core::bool})
+  for (core::int i = 0; ; i = i.{core::num::+}(1)) {
+    b = b.{core::num::*}(3);
+    if(b.{core::num::>}(10))
       return b;
   }
 }
 static method fn2() → core::int {
-  for (core::int i = 0, core::int j = 2; ; i = i.{core::num::+}(2){(core::num) → core::int}, j = j.{core::num::+}(1){(core::num) → core::int}) {
-    if(i.{core::num::+}(j){(core::num) → core::int}.{core::num::>}(10){(core::num) → core::bool}) {
-      return i.{core::num::+}(j){(core::num) → core::int};
+  for (core::int i = 0, core::int j = 2; ; i = i.{core::num::+}(2), j = j.{core::num::+}(1)) {
+    if(i.{core::num::+}(j).{core::num::>}(10)) {
+      return i.{core::num::+}(j);
     }
   }
 }
 static method fnContinue() → core::int {
   core::int a = 0;
-  for (core::int i = 0; i.{core::num::<}(5){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+  for (core::int i = 0; i.{core::num::<}(5); i = i.{core::num::+}(1))
     #L1:
     {
-      if(i.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1)
+      if(i.{core::num::%}(2).{core::num::==}(1))
         break #L1;
-      a = a.{core::num::+}(i){(core::num) → core::int};
+      a = a.{core::num::+}(i);
     }
   return a;
 }
 static method fnBreak(core::int a) → core::int {
   core::int b = a;
   #L2:
-  for (core::int i = 0; i.{core::num::<}(2){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    if(b =={core::num::==}{(core::Object) → core::bool} 2)
+  for (core::int i = 0; i.{core::num::<}(2); i = i.{core::num::+}(1)) {
+    if(b.{core::num::==}(2))
       break #L2;
-    b = b.{core::num::+}(a){(core::num) → core::int};
+    b = b.{core::num::+}(a);
   }
   return b;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.weak.expect
index f4906f3..b8210ed 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.weak.expect
@@ -17,44 +17,44 @@
 static const field core::int var10 = #C8;
 static method fn(core::int a) → core::int {
   core::int b = a;
-  for (core::int i = 0; i.{core::num::<}(2){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    b = b.{core::num::+}(a){(core::num) → core::int};
+  for (core::int i = 0; i.{core::num::<}(2); i = i.{core::num::+}(1)) {
+    b = b.{core::num::+}(a);
   }
   return b;
 }
 static method fn1(core::int a) → core::int {
   core::int b = a;
-  for (core::int i = 0; ; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    b = b.{core::num::*}(3){(core::num) → core::int};
-    if(b.{core::num::>}(10){(core::num) → core::bool})
+  for (core::int i = 0; ; i = i.{core::num::+}(1)) {
+    b = b.{core::num::*}(3);
+    if(b.{core::num::>}(10))
       return b;
   }
 }
 static method fn2() → core::int {
-  for (core::int i = 0, core::int j = 2; ; i = i.{core::num::+}(2){(core::num) → core::int}, j = j.{core::num::+}(1){(core::num) → core::int}) {
-    if(i.{core::num::+}(j){(core::num) → core::int}.{core::num::>}(10){(core::num) → core::bool}) {
-      return i.{core::num::+}(j){(core::num) → core::int};
+  for (core::int i = 0, core::int j = 2; ; i = i.{core::num::+}(2), j = j.{core::num::+}(1)) {
+    if(i.{core::num::+}(j).{core::num::>}(10)) {
+      return i.{core::num::+}(j);
     }
   }
 }
 static method fnContinue() → core::int {
   core::int a = 0;
-  for (core::int i = 0; i.{core::num::<}(5){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+  for (core::int i = 0; i.{core::num::<}(5); i = i.{core::num::+}(1))
     #L1:
     {
-      if(i.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1)
+      if(i.{core::num::%}(2).{core::num::==}(1))
         break #L1;
-      a = a.{core::num::+}(i){(core::num) → core::int};
+      a = a.{core::num::+}(i);
     }
   return a;
 }
 static method fnBreak(core::int a) → core::int {
   core::int b = a;
   #L2:
-  for (core::int i = 0; i.{core::num::<}(2){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    if(b =={core::num::==}{(core::Object) → core::bool} 2)
+  for (core::int i = 0; i.{core::num::<}(2); i = i.{core::num::+}(1)) {
+    if(b.{core::num::==}(2))
       break #L2;
-    b = b.{core::num::+}(a){(core::num) → core::int};
+    b = b.{core::num::+}(a);
   }
   return b;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.weak.transformed.expect
index f4906f3..b8210ed 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_for_statements.dart.weak.transformed.expect
@@ -17,44 +17,44 @@
 static const field core::int var10 = #C8;
 static method fn(core::int a) → core::int {
   core::int b = a;
-  for (core::int i = 0; i.{core::num::<}(2){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    b = b.{core::num::+}(a){(core::num) → core::int};
+  for (core::int i = 0; i.{core::num::<}(2); i = i.{core::num::+}(1)) {
+    b = b.{core::num::+}(a);
   }
   return b;
 }
 static method fn1(core::int a) → core::int {
   core::int b = a;
-  for (core::int i = 0; ; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    b = b.{core::num::*}(3){(core::num) → core::int};
-    if(b.{core::num::>}(10){(core::num) → core::bool})
+  for (core::int i = 0; ; i = i.{core::num::+}(1)) {
+    b = b.{core::num::*}(3);
+    if(b.{core::num::>}(10))
       return b;
   }
 }
 static method fn2() → core::int {
-  for (core::int i = 0, core::int j = 2; ; i = i.{core::num::+}(2){(core::num) → core::int}, j = j.{core::num::+}(1){(core::num) → core::int}) {
-    if(i.{core::num::+}(j){(core::num) → core::int}.{core::num::>}(10){(core::num) → core::bool}) {
-      return i.{core::num::+}(j){(core::num) → core::int};
+  for (core::int i = 0, core::int j = 2; ; i = i.{core::num::+}(2), j = j.{core::num::+}(1)) {
+    if(i.{core::num::+}(j).{core::num::>}(10)) {
+      return i.{core::num::+}(j);
     }
   }
 }
 static method fnContinue() → core::int {
   core::int a = 0;
-  for (core::int i = 0; i.{core::num::<}(5){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+  for (core::int i = 0; i.{core::num::<}(5); i = i.{core::num::+}(1))
     #L1:
     {
-      if(i.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1)
+      if(i.{core::num::%}(2).{core::num::==}(1))
         break #L1;
-      a = a.{core::num::+}(i){(core::num) → core::int};
+      a = a.{core::num::+}(i);
     }
   return a;
 }
 static method fnBreak(core::int a) → core::int {
   core::int b = a;
   #L2:
-  for (core::int i = 0; i.{core::num::<}(2){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    if(b =={core::num::==}{(core::Object) → core::bool} 2)
+  for (core::int i = 0; i.{core::num::<}(2); i = i.{core::num::+}(1)) {
+    if(b.{core::num::==}(2))
       break #L2;
-    b = b.{core::num::+}(a){(core::num) → core::int};
+    b = b.{core::num::+}(a);
   }
   return b;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.strong.expect
index 81d7277..8d0f813 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.strong.expect
@@ -17,11 +17,11 @@
 static const field core::int var7 = #C5;
 static const field core::int var8 = #C6;
 static method ifTest(core::int a) → core::int {
-  if(a =={core::num::==}{(core::Object) → core::bool} 1) {
+  if(a.{core::num::==}(1)) {
     return 100;
   }
   else
-    if(a =={core::num::==}{(core::Object) → core::bool} 2) {
+    if(a.{core::num::==}(2)) {
       return 200;
     }
     else {
@@ -29,7 +29,7 @@
     }
 }
 static method ifTest2(core::int a) → core::int {
-  if(a =={core::num::==}{(core::Object) → core::bool} (#C4)) {
+  if(a.{core::num::==}(#C4)) {
     return 100;
   }
   else {
@@ -37,8 +37,8 @@
   }
 }
 static method ifTest3(core::int a) → core::int {
-  if(a.{core::num::>}(0){(core::num) → core::bool}) {
-    if(a =={core::num::==}{(core::Object) → core::bool} 1)
+  if(a.{core::num::>}(0)) {
+    if(a.{core::num::==}(1))
       return 100;
     return 200;
   }
@@ -46,15 +46,15 @@
 }
 static method ifTest4(core::int a) → core::int {
   core::int b = a;
-  if(a =={core::num::==}{(core::Object) → core::bool} 1) {
-    b = b.{core::num::+}(a){(core::num) → core::int};
-    if(a.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
-      b = b.{core::num::+}(a){(core::num) → core::int};
+  if(a.{core::num::==}(1)) {
+    b = b.{core::num::+}(a);
+    if(a.{core::num::%}(2).{core::num::==}(1)) {
+      b = b.{core::num::+}(a);
     }
   }
   else
-    if(a =={core::num::==}{(core::Object) → core::bool} 2) {
-      b = b.{core::num::-}(a){(core::num) → core::int};
+    if(a.{core::num::==}(2)) {
+      b = b.{core::num::-}(a);
     }
   return b;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.strong.transformed.expect
index 81d7277..8d0f813 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.strong.transformed.expect
@@ -17,11 +17,11 @@
 static const field core::int var7 = #C5;
 static const field core::int var8 = #C6;
 static method ifTest(core::int a) → core::int {
-  if(a =={core::num::==}{(core::Object) → core::bool} 1) {
+  if(a.{core::num::==}(1)) {
     return 100;
   }
   else
-    if(a =={core::num::==}{(core::Object) → core::bool} 2) {
+    if(a.{core::num::==}(2)) {
       return 200;
     }
     else {
@@ -29,7 +29,7 @@
     }
 }
 static method ifTest2(core::int a) → core::int {
-  if(a =={core::num::==}{(core::Object) → core::bool} (#C4)) {
+  if(a.{core::num::==}(#C4)) {
     return 100;
   }
   else {
@@ -37,8 +37,8 @@
   }
 }
 static method ifTest3(core::int a) → core::int {
-  if(a.{core::num::>}(0){(core::num) → core::bool}) {
-    if(a =={core::num::==}{(core::Object) → core::bool} 1)
+  if(a.{core::num::>}(0)) {
+    if(a.{core::num::==}(1))
       return 100;
     return 200;
   }
@@ -46,15 +46,15 @@
 }
 static method ifTest4(core::int a) → core::int {
   core::int b = a;
-  if(a =={core::num::==}{(core::Object) → core::bool} 1) {
-    b = b.{core::num::+}(a){(core::num) → core::int};
-    if(a.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
-      b = b.{core::num::+}(a){(core::num) → core::int};
+  if(a.{core::num::==}(1)) {
+    b = b.{core::num::+}(a);
+    if(a.{core::num::%}(2).{core::num::==}(1)) {
+      b = b.{core::num::+}(a);
     }
   }
   else
-    if(a =={core::num::==}{(core::Object) → core::bool} 2) {
-      b = b.{core::num::-}(a){(core::num) → core::int};
+    if(a.{core::num::==}(2)) {
+      b = b.{core::num::-}(a);
     }
   return b;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.weak.expect
index 81d7277..8d0f813 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.weak.expect
@@ -17,11 +17,11 @@
 static const field core::int var7 = #C5;
 static const field core::int var8 = #C6;
 static method ifTest(core::int a) → core::int {
-  if(a =={core::num::==}{(core::Object) → core::bool} 1) {
+  if(a.{core::num::==}(1)) {
     return 100;
   }
   else
-    if(a =={core::num::==}{(core::Object) → core::bool} 2) {
+    if(a.{core::num::==}(2)) {
       return 200;
     }
     else {
@@ -29,7 +29,7 @@
     }
 }
 static method ifTest2(core::int a) → core::int {
-  if(a =={core::num::==}{(core::Object) → core::bool} (#C4)) {
+  if(a.{core::num::==}(#C4)) {
     return 100;
   }
   else {
@@ -37,8 +37,8 @@
   }
 }
 static method ifTest3(core::int a) → core::int {
-  if(a.{core::num::>}(0){(core::num) → core::bool}) {
-    if(a =={core::num::==}{(core::Object) → core::bool} 1)
+  if(a.{core::num::>}(0)) {
+    if(a.{core::num::==}(1))
       return 100;
     return 200;
   }
@@ -46,15 +46,15 @@
 }
 static method ifTest4(core::int a) → core::int {
   core::int b = a;
-  if(a =={core::num::==}{(core::Object) → core::bool} 1) {
-    b = b.{core::num::+}(a){(core::num) → core::int};
-    if(a.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
-      b = b.{core::num::+}(a){(core::num) → core::int};
+  if(a.{core::num::==}(1)) {
+    b = b.{core::num::+}(a);
+    if(a.{core::num::%}(2).{core::num::==}(1)) {
+      b = b.{core::num::+}(a);
     }
   }
   else
-    if(a =={core::num::==}{(core::Object) → core::bool} 2) {
-      b = b.{core::num::-}(a){(core::num) → core::int};
+    if(a.{core::num::==}(2)) {
+      b = b.{core::num::-}(a);
     }
   return b;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.weak.transformed.expect
index 81d7277..8d0f813 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_if_statements.dart.weak.transformed.expect
@@ -17,11 +17,11 @@
 static const field core::int var7 = #C5;
 static const field core::int var8 = #C6;
 static method ifTest(core::int a) → core::int {
-  if(a =={core::num::==}{(core::Object) → core::bool} 1) {
+  if(a.{core::num::==}(1)) {
     return 100;
   }
   else
-    if(a =={core::num::==}{(core::Object) → core::bool} 2) {
+    if(a.{core::num::==}(2)) {
       return 200;
     }
     else {
@@ -29,7 +29,7 @@
     }
 }
 static method ifTest2(core::int a) → core::int {
-  if(a =={core::num::==}{(core::Object) → core::bool} (#C4)) {
+  if(a.{core::num::==}(#C4)) {
     return 100;
   }
   else {
@@ -37,8 +37,8 @@
   }
 }
 static method ifTest3(core::int a) → core::int {
-  if(a.{core::num::>}(0){(core::num) → core::bool}) {
-    if(a =={core::num::==}{(core::Object) → core::bool} 1)
+  if(a.{core::num::>}(0)) {
+    if(a.{core::num::==}(1))
       return 100;
     return 200;
   }
@@ -46,15 +46,15 @@
 }
 static method ifTest4(core::int a) → core::int {
   core::int b = a;
-  if(a =={core::num::==}{(core::Object) → core::bool} 1) {
-    b = b.{core::num::+}(a){(core::num) → core::int};
-    if(a.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
-      b = b.{core::num::+}(a){(core::num) → core::int};
+  if(a.{core::num::==}(1)) {
+    b = b.{core::num::+}(a);
+    if(a.{core::num::%}(2).{core::num::==}(1)) {
+      b = b.{core::num::+}(a);
     }
   }
   else
-    if(a =={core::num::==}{(core::Object) → core::bool} 2) {
-      b = b.{core::num::-}(a){(core::num) → core::int};
+    if(a.{core::num::==}(2)) {
+      b = b.{core::num::-}(a);
     }
   return b;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.strong.expect
index 82b3cb4..265d81d 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.strong.expect
@@ -29,15 +29,15 @@
 static const field core::int var4 = #C2;
 static const field core::int var5 = #C3;
 static method fn() → core::int
-  return (#C4).{self::A::y}{core::int};
+  return (#C4).{self::A::y};
 static method fn2() → core::int {
   self::A x = #C4;
-  return x.{self::A::y}{core::int};
+  return x.{self::A::y};
 }
 static method fn4() → core::int
-  return (#C5).{self::A::y}{core::int};
+  return (#C5).{self::A::y};
 static method fn5() → core::int
-  return (#C7).{self::C::y}{core::int};
+  return (#C7).{self::C::y};
 static method main() → void {
   exp::Expect::equals(#C2, 1);
   exp::Expect::equals(#C2, 1);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.strong.transformed.expect
index 82b3cb4..265d81d 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.strong.transformed.expect
@@ -29,15 +29,15 @@
 static const field core::int var4 = #C2;
 static const field core::int var5 = #C3;
 static method fn() → core::int
-  return (#C4).{self::A::y}{core::int};
+  return (#C4).{self::A::y};
 static method fn2() → core::int {
   self::A x = #C4;
-  return x.{self::A::y}{core::int};
+  return x.{self::A::y};
 }
 static method fn4() → core::int
-  return (#C5).{self::A::y}{core::int};
+  return (#C5).{self::A::y};
 static method fn5() → core::int
-  return (#C7).{self::C::y}{core::int};
+  return (#C7).{self::C::y};
 static method main() → void {
   exp::Expect::equals(#C2, 1);
   exp::Expect::equals(#C2, 1);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.weak.expect
index 82b3cb4..265d81d 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.weak.expect
@@ -29,15 +29,15 @@
 static const field core::int var4 = #C2;
 static const field core::int var5 = #C3;
 static method fn() → core::int
-  return (#C4).{self::A::y}{core::int};
+  return (#C4).{self::A::y};
 static method fn2() → core::int {
   self::A x = #C4;
-  return x.{self::A::y}{core::int};
+  return x.{self::A::y};
 }
 static method fn4() → core::int
-  return (#C5).{self::A::y}{core::int};
+  return (#C5).{self::A::y};
 static method fn5() → core::int
-  return (#C7).{self::C::y}{core::int};
+  return (#C7).{self::C::y};
 static method main() → void {
   exp::Expect::equals(#C2, 1);
   exp::Expect::equals(#C2, 1);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.weak.outline.expect b/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.weak.outline.expect
index ed43e55..4d35f82 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.weak.outline.expect
@@ -24,7 +24,7 @@
 }
 static const field core::int var1 = self::fn();
 static const field core::int var2 = self::fn2();
-static const field core::int var3 = const self::A::•(1).{self::A::y}{core::int};
+static const field core::int var3 = const self::A::•(1).{self::A::y};
 static const field core::int var4 = self::fn4();
 static const field core::int var5 = self::fn5();
 static method fn() → core::int
diff --git a/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.weak.transformed.expect
index 82b3cb4..265d81d 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_instance_fields.dart.weak.transformed.expect
@@ -29,15 +29,15 @@
 static const field core::int var4 = #C2;
 static const field core::int var5 = #C3;
 static method fn() → core::int
-  return (#C4).{self::A::y}{core::int};
+  return (#C4).{self::A::y};
 static method fn2() → core::int {
   self::A x = #C4;
-  return x.{self::A::y}{core::int};
+  return x.{self::A::y};
 }
 static method fn4() → core::int
-  return (#C5).{self::A::y}{core::int};
+  return (#C5).{self::A::y};
 static method fn5() → core::int
-  return (#C7).{self::C::y}{core::int};
+  return (#C7).{self::C::y};
 static method main() → void {
   exp::Expect::equals(#C2, 1);
   exp::Expect::equals(#C2, 1);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.strong.expect
index 4c328e0..0eb686e 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.strong.expect
@@ -24,7 +24,7 @@
     : self::C::y = y, super core::Object::•()
     ;
   method fn() → core::int {
-    if(this.{self::C::y}{core::int} =={core::num::==}{(core::Object) → core::bool} 1)
+    if(this.{self::C::y}.{core::num::==}(1))
       return 100;
     return 200;
   }
@@ -71,26 +71,26 @@
 static const field core::String var8 = #C7;
 static const field core::String fnVal6 = #C7;
 static method fn() → core::String
-  return (#C8).{core::Object::toString}(){() → core::String};
+  return (#C8).{core::Object::toString}();
 static method fn2() → core::String
-  return (#C9).{self::B::toString}(){() → core::String};
+  return (#C9).{self::B::toString}();
 static method fn3() → core::int
-  return (#C11).{self::C::fn}(){() → core::int};
+  return (#C11).{self::C::fn}();
 static method fn4() → core::int
-  return (#C13).{self::C::fn}(){() → core::int};
+  return (#C13).{self::C::fn}();
 static method fn5() → core::int
-  return (#C14).{self::D::fn}(){() → core::int};
+  return (#C14).{self::D::fn}();
 static method fn6() → core::int
-  return (#C15).{self::C::fn}(){() → core::int};
+  return (#C15).{self::C::fn}();
 static method fn7() → core::String
-  return (#C16).{self::F::fn}("string"){(core::String) → core::String};
+  return (#C16).{self::F::fn}("string");
 static method fn8() → core::String
-  return (#C17).{self::F::fn}("string"){(core::String) → core::String};
+  return (#C17).{self::F::fn}("string");
 static method main() → void {
-  exp::Expect::equals(#C2, (#C8).{core::Object::toString}(){() → core::String});
-  exp::Expect::equals(#C2, (#C8).{core::Object::toString}(){() → core::String});
-  exp::Expect::equals(#C3, (#C9).{self::B::toString}(){() → core::String});
-  exp::Expect::equals(#C3, (#C9).{self::B::toString}(){() → core::String});
+  exp::Expect::equals(#C2, (#C8).{core::Object::toString}());
+  exp::Expect::equals(#C2, (#C8).{core::Object::toString}());
+  exp::Expect::equals(#C3, (#C9).{self::B::toString}());
+  exp::Expect::equals(#C3, (#C9).{self::B::toString}());
   exp::Expect::equals(#C4, 200);
   exp::Expect::equals(#C5, 100);
   exp::Expect::equals(#C4, 200);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.strong.transformed.expect
index 4c328e0..0eb686e 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.strong.transformed.expect
@@ -24,7 +24,7 @@
     : self::C::y = y, super core::Object::•()
     ;
   method fn() → core::int {
-    if(this.{self::C::y}{core::int} =={core::num::==}{(core::Object) → core::bool} 1)
+    if(this.{self::C::y}.{core::num::==}(1))
       return 100;
     return 200;
   }
@@ -71,26 +71,26 @@
 static const field core::String var8 = #C7;
 static const field core::String fnVal6 = #C7;
 static method fn() → core::String
-  return (#C8).{core::Object::toString}(){() → core::String};
+  return (#C8).{core::Object::toString}();
 static method fn2() → core::String
-  return (#C9).{self::B::toString}(){() → core::String};
+  return (#C9).{self::B::toString}();
 static method fn3() → core::int
-  return (#C11).{self::C::fn}(){() → core::int};
+  return (#C11).{self::C::fn}();
 static method fn4() → core::int
-  return (#C13).{self::C::fn}(){() → core::int};
+  return (#C13).{self::C::fn}();
 static method fn5() → core::int
-  return (#C14).{self::D::fn}(){() → core::int};
+  return (#C14).{self::D::fn}();
 static method fn6() → core::int
-  return (#C15).{self::C::fn}(){() → core::int};
+  return (#C15).{self::C::fn}();
 static method fn7() → core::String
-  return (#C16).{self::F::fn}("string"){(core::String) → core::String};
+  return (#C16).{self::F::fn}("string");
 static method fn8() → core::String
-  return (#C17).{self::F::fn}("string"){(core::String) → core::String};
+  return (#C17).{self::F::fn}("string");
 static method main() → void {
-  exp::Expect::equals(#C2, (#C8).{core::Object::toString}(){() → core::String});
-  exp::Expect::equals(#C2, (#C8).{core::Object::toString}(){() → core::String});
-  exp::Expect::equals(#C3, (#C9).{self::B::toString}(){() → core::String});
-  exp::Expect::equals(#C3, (#C9).{self::B::toString}(){() → core::String});
+  exp::Expect::equals(#C2, (#C8).{core::Object::toString}());
+  exp::Expect::equals(#C2, (#C8).{core::Object::toString}());
+  exp::Expect::equals(#C3, (#C9).{self::B::toString}());
+  exp::Expect::equals(#C3, (#C9).{self::B::toString}());
   exp::Expect::equals(#C4, 200);
   exp::Expect::equals(#C5, 100);
   exp::Expect::equals(#C4, 200);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.weak.expect
index 4ef96e2..00d54b0 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.weak.expect
@@ -24,7 +24,7 @@
     : self::C::y = y, super core::Object::•()
     ;
   method fn() → core::int {
-    if(this.{self::C::y}{core::int} =={core::num::==}{(core::Object) → core::bool} 1)
+    if(this.{self::C::y}.{core::num::==}(1))
       return 100;
     return 200;
   }
@@ -71,26 +71,26 @@
 static const field core::String var8 = #C7;
 static const field core::String fnVal6 = #C7;
 static method fn() → core::String
-  return (#C8).{core::Object::toString}(){() → core::String};
+  return (#C8).{core::Object::toString}();
 static method fn2() → core::String
-  return (#C9).{self::B::toString}(){() → core::String};
+  return (#C9).{self::B::toString}();
 static method fn3() → core::int
-  return (#C11).{self::C::fn}(){() → core::int};
+  return (#C11).{self::C::fn}();
 static method fn4() → core::int
-  return (#C13).{self::C::fn}(){() → core::int};
+  return (#C13).{self::C::fn}();
 static method fn5() → core::int
-  return (#C14).{self::D::fn}(){() → core::int};
+  return (#C14).{self::D::fn}();
 static method fn6() → core::int
-  return (#C15).{self::C::fn}(){() → core::int};
+  return (#C15).{self::C::fn}();
 static method fn7() → core::String
-  return (#C16).{self::F::fn}("string"){(core::String) → core::String};
+  return (#C16).{self::F::fn}("string");
 static method fn8() → core::String
-  return (#C17).{self::F::fn}("string"){(core::String) → core::String};
+  return (#C17).{self::F::fn}("string");
 static method main() → void {
-  exp::Expect::equals(#C2, (#C8).{core::Object::toString}(){() → core::String});
-  exp::Expect::equals(#C2, (#C8).{core::Object::toString}(){() → core::String});
-  exp::Expect::equals(#C3, (#C9).{self::B::toString}(){() → core::String});
-  exp::Expect::equals(#C3, (#C9).{self::B::toString}(){() → core::String});
+  exp::Expect::equals(#C2, (#C8).{core::Object::toString}());
+  exp::Expect::equals(#C2, (#C8).{core::Object::toString}());
+  exp::Expect::equals(#C3, (#C9).{self::B::toString}());
+  exp::Expect::equals(#C3, (#C9).{self::B::toString}());
   exp::Expect::equals(#C4, 200);
   exp::Expect::equals(#C5, 100);
   exp::Expect::equals(#C4, 200);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.weak.outline.expect b/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.weak.outline.expect
index 4443d89..05abaed 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.weak.outline.expect
@@ -51,21 +51,21 @@
     ;
 }
 static const field core::String var1 = self::fn();
-static const field core::String toString1 = const self::A::•().{core::Object::toString}(){() → core::String};
+static const field core::String toString1 = const self::A::•().{core::Object::toString}();
 static const field core::String var2 = self::fn2();
-static const field core::String toString2 = const self::B::•().{self::B::toString}(){() → core::String};
+static const field core::String toString2 = const self::B::•().{self::B::toString}();
 static const field core::int var3 = self::fn3();
 static const field core::int var4 = self::fn4();
-static const field core::int fnVal1 = const self::C::•(0).{self::C::fn}(){() → core::int};
-static const field core::int fnVal2 = const self::C::•(1).{self::C::fn}(){() → core::int};
+static const field core::int fnVal1 = const self::C::•(0).{self::C::fn}();
+static const field core::int fnVal2 = const self::C::•(1).{self::C::fn}();
 static const field core::int var5 = self::fn5();
-static const field core::int fnVal3 = const self::D::•(1).{self::D::fn}(){() → core::int};
+static const field core::int fnVal3 = const self::D::•(1).{self::D::fn}();
 static const field core::int var6 = self::fn6();
-static const field core::int fnVal4 = const self::E::•(0).{self::C::fn}(){() → core::int};
+static const field core::int fnVal4 = const self::E::•(0).{self::C::fn}();
 static const field core::String var7 = self::fn7();
-static const field core::String fnVal5 = const self::F::•<core::int, core::String, core::num>().{self::F::fn}("string"){(core::String) → core::String};
+static const field core::String fnVal5 = const self::F::•<core::int, core::String, core::num>().{self::F::fn}("string");
 static const field core::String var8 = self::fn8();
-static const field core::String fnVal6 = const self::G::•<core::int>().{self::F::fn}("string"){(core::String) → core::String};
+static const field core::String fnVal6 = const self::G::•<core::int>().{self::F::fn}("string");
 static method fn() → core::String
   ;
 static method fn2() → core::String
diff --git a/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.weak.transformed.expect
index 4ef96e2..00d54b0 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_instance_methods.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
     : self::C::y = y, super core::Object::•()
     ;
   method fn() → core::int {
-    if(this.{self::C::y}{core::int} =={core::num::==}{(core::Object) → core::bool} 1)
+    if(this.{self::C::y}.{core::num::==}(1))
       return 100;
     return 200;
   }
@@ -71,26 +71,26 @@
 static const field core::String var8 = #C7;
 static const field core::String fnVal6 = #C7;
 static method fn() → core::String
-  return (#C8).{core::Object::toString}(){() → core::String};
+  return (#C8).{core::Object::toString}();
 static method fn2() → core::String
-  return (#C9).{self::B::toString}(){() → core::String};
+  return (#C9).{self::B::toString}();
 static method fn3() → core::int
-  return (#C11).{self::C::fn}(){() → core::int};
+  return (#C11).{self::C::fn}();
 static method fn4() → core::int
-  return (#C13).{self::C::fn}(){() → core::int};
+  return (#C13).{self::C::fn}();
 static method fn5() → core::int
-  return (#C14).{self::D::fn}(){() → core::int};
+  return (#C14).{self::D::fn}();
 static method fn6() → core::int
-  return (#C15).{self::C::fn}(){() → core::int};
+  return (#C15).{self::C::fn}();
 static method fn7() → core::String
-  return (#C16).{self::F::fn}("string"){(core::String) → core::String};
+  return (#C16).{self::F::fn}("string");
 static method fn8() → core::String
-  return (#C17).{self::F::fn}("string"){(core::String) → core::String};
+  return (#C17).{self::F::fn}("string");
 static method main() → void {
-  exp::Expect::equals(#C2, (#C8).{core::Object::toString}(){() → core::String});
-  exp::Expect::equals(#C2, (#C8).{core::Object::toString}(){() → core::String});
-  exp::Expect::equals(#C3, (#C9).{self::B::toString}(){() → core::String});
-  exp::Expect::equals(#C3, (#C9).{self::B::toString}(){() → core::String});
+  exp::Expect::equals(#C2, (#C8).{core::Object::toString}());
+  exp::Expect::equals(#C2, (#C8).{core::Object::toString}());
+  exp::Expect::equals(#C3, (#C9).{self::B::toString}());
+  exp::Expect::equals(#C3, (#C9).{self::B::toString}());
   exp::Expect::equals(#C4, 200);
   exp::Expect::equals(#C5, 100);
   exp::Expect::equals(#C4, 200);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_list.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_list.dart.strong.expect
index d172063..b69cf08 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_list.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_list.dart.strong.expect
@@ -20,11 +20,11 @@
 static const field core::List<core::int> mutableListVar = #C6;
 static const field core::List<core::int> mutableListAddVar = #C8;
 static method firstFn() → core::int {
-  return (#C6).{core::Iterable::first}{core::int};
+  return (#C6).{core::Iterable::first};
 }
 static method firstCatchFn() → core::int {
   try {
-    core::int v = (#C9).{core::Iterable::first}{core::int};
+    core::int v = (#C9).{core::Iterable::first};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -32,17 +32,17 @@
   return 1;
 }
 static method isEmptyFn() → core::bool {
-  return (#C6).{core::Iterable::isEmpty}{core::bool};
+  return (#C6).{core::Iterable::isEmpty};
 }
 static method isNotEmptyFn() → core::bool {
-  return (#C6).{core::Iterable::isNotEmpty}{core::bool};
+  return (#C6).{core::Iterable::isNotEmpty};
 }
 static method lastFn() → core::int {
-  return (#C6).{core::Iterable::last}{core::int};
+  return (#C6).{core::Iterable::last};
 }
 static method lastCatchFn() → core::int {
   try {
-    core::int v = (#C9).{core::Iterable::last}{core::int};
+    core::int v = (#C9).{core::Iterable::last};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -50,14 +50,14 @@
   return 1;
 }
 static method lengthFn() → core::int {
-  return (#C6).{core::List::length}{core::int};
+  return (#C6).{core::List::length};
 }
 static method singleFn() → core::int {
-  return (#C10).{core::Iterable::single}{core::int};
+  return (#C10).{core::Iterable::single};
 }
 static method singleCatchFn() → core::int {
   try {
-    core::int v = (#C9).{core::Iterable::single}{core::int};
+    core::int v = (#C9).{core::Iterable::single};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -66,7 +66,7 @@
 }
 static method singleCatchFn2() → core::int {
   try {
-    core::int v = (#C6).{core::Iterable::single}{core::int};
+    core::int v = (#C6).{core::Iterable::single};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -74,11 +74,11 @@
   return 1;
 }
 static method getWithIndexFn() → core::int {
-  return (#C10).{core::List::[]}(0){(core::int) → core::int};
+  return (#C10).{core::List::[]}(0);
 }
 static method rangeErrorCatchFn() → core::int {
   try {
-    core::int v = (#C10).{core::List::[]}(1){(core::int) → core::int};
+    core::int v = (#C10).{core::List::[]}(1);
   }
   on core::RangeError catch(no-exception-var) {
     return 0;
@@ -91,7 +91,7 @@
 }
 static method mutableListAdd() → core::List<core::int> {
   core::List<core::int> x = <core::int>[1, 2];
-  x.{core::List::add}(3){(core::int) → void};
+  x.{core::List::add}(3);
   return x;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_list.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_list.dart.strong.transformed.expect
index 02621b8..3a3adca 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_list.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_list.dart.strong.transformed.expect
@@ -20,11 +20,11 @@
 static const field core::List<core::int> mutableListVar = #C6;
 static const field core::List<core::int> mutableListAddVar = #C8;
 static method firstFn() → core::int {
-  return (#C6).{core::Iterable::first}{core::int};
+  return (#C6).{core::Iterable::first};
 }
 static method firstCatchFn() → core::int {
   try {
-    core::int v = (#C9).{core::Iterable::first}{core::int};
+    core::int v = (#C9).{core::Iterable::first};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -32,17 +32,17 @@
   return 1;
 }
 static method isEmptyFn() → core::bool {
-  return (#C6).{core::Iterable::isEmpty}{core::bool};
+  return (#C6).{core::Iterable::isEmpty};
 }
 static method isNotEmptyFn() → core::bool {
-  return (#C6).{core::Iterable::isNotEmpty}{core::bool};
+  return (#C6).{core::Iterable::isNotEmpty};
 }
 static method lastFn() → core::int {
-  return (#C6).{core::Iterable::last}{core::int};
+  return (#C6).{core::Iterable::last};
 }
 static method lastCatchFn() → core::int {
   try {
-    core::int v = (#C9).{core::Iterable::last}{core::int};
+    core::int v = (#C9).{core::Iterable::last};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -50,14 +50,14 @@
   return 1;
 }
 static method lengthFn() → core::int {
-  return (#C6).{core::List::length}{core::int};
+  return (#C6).{core::List::length};
 }
 static method singleFn() → core::int {
-  return (#C10).{core::Iterable::single}{core::int};
+  return (#C10).{core::Iterable::single};
 }
 static method singleCatchFn() → core::int {
   try {
-    core::int v = (#C9).{core::Iterable::single}{core::int};
+    core::int v = (#C9).{core::Iterable::single};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -66,7 +66,7 @@
 }
 static method singleCatchFn2() → core::int {
   try {
-    core::int v = (#C6).{core::Iterable::single}{core::int};
+    core::int v = (#C6).{core::Iterable::single};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -74,11 +74,11 @@
   return 1;
 }
 static method getWithIndexFn() → core::int {
-  return (#C10).{core::List::[]}(0){(core::int) → core::int};
+  return (#C10).{core::List::[]}(0);
 }
 static method rangeErrorCatchFn() → core::int {
   try {
-    core::int v = (#C10).{core::List::[]}(1){(core::int) → core::int};
+    core::int v = (#C10).{core::List::[]}(1);
   }
   on core::RangeError catch(no-exception-var) {
     return 0;
@@ -91,7 +91,7 @@
 }
 static method mutableListAdd() → core::List<core::int> {
   core::List<core::int> x = core::_GrowableList::_literal2<core::int>(1, 2);
-  x.{core::List::add}(3){(core::int) → void};
+  x.{core::List::add}(3);
   return x;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_list.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_list.dart.weak.expect
index db792b6..bcc8e63 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_list.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_list.dart.weak.expect
@@ -20,11 +20,11 @@
 static const field core::List<core::int> mutableListVar = #C6;
 static const field core::List<core::int> mutableListAddVar = #C8;
 static method firstFn() → core::int {
-  return (#C6).{core::Iterable::first}{core::int};
+  return (#C6).{core::Iterable::first};
 }
 static method firstCatchFn() → core::int {
   try {
-    core::int v = (#C9).{core::Iterable::first}{core::int};
+    core::int v = (#C9).{core::Iterable::first};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -32,17 +32,17 @@
   return 1;
 }
 static method isEmptyFn() → core::bool {
-  return (#C6).{core::Iterable::isEmpty}{core::bool};
+  return (#C6).{core::Iterable::isEmpty};
 }
 static method isNotEmptyFn() → core::bool {
-  return (#C6).{core::Iterable::isNotEmpty}{core::bool};
+  return (#C6).{core::Iterable::isNotEmpty};
 }
 static method lastFn() → core::int {
-  return (#C6).{core::Iterable::last}{core::int};
+  return (#C6).{core::Iterable::last};
 }
 static method lastCatchFn() → core::int {
   try {
-    core::int v = (#C9).{core::Iterable::last}{core::int};
+    core::int v = (#C9).{core::Iterable::last};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -50,14 +50,14 @@
   return 1;
 }
 static method lengthFn() → core::int {
-  return (#C6).{core::List::length}{core::int};
+  return (#C6).{core::List::length};
 }
 static method singleFn() → core::int {
-  return (#C10).{core::Iterable::single}{core::int};
+  return (#C10).{core::Iterable::single};
 }
 static method singleCatchFn() → core::int {
   try {
-    core::int v = (#C9).{core::Iterable::single}{core::int};
+    core::int v = (#C9).{core::Iterable::single};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -66,7 +66,7 @@
 }
 static method singleCatchFn2() → core::int {
   try {
-    core::int v = (#C6).{core::Iterable::single}{core::int};
+    core::int v = (#C6).{core::Iterable::single};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -74,11 +74,11 @@
   return 1;
 }
 static method getWithIndexFn() → core::int {
-  return (#C10).{core::List::[]}(0){(core::int) → core::int};
+  return (#C10).{core::List::[]}(0);
 }
 static method rangeErrorCatchFn() → core::int {
   try {
-    core::int v = (#C10).{core::List::[]}(1){(core::int) → core::int};
+    core::int v = (#C10).{core::List::[]}(1);
   }
   on core::RangeError catch(no-exception-var) {
     return 0;
@@ -91,7 +91,7 @@
 }
 static method mutableListAdd() → core::List<core::int> {
   core::List<core::int> x = <core::int>[1, 2];
-  x.{core::List::add}(3){(core::int) → void};
+  x.{core::List::add}(3);
   return x;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_list.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_list.dart.weak.transformed.expect
index 88c7fa4..fd2c81a 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_list.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_list.dart.weak.transformed.expect
@@ -20,11 +20,11 @@
 static const field core::List<core::int> mutableListVar = #C6;
 static const field core::List<core::int> mutableListAddVar = #C8;
 static method firstFn() → core::int {
-  return (#C6).{core::Iterable::first}{core::int};
+  return (#C6).{core::Iterable::first};
 }
 static method firstCatchFn() → core::int {
   try {
-    core::int v = (#C9).{core::Iterable::first}{core::int};
+    core::int v = (#C9).{core::Iterable::first};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -32,17 +32,17 @@
   return 1;
 }
 static method isEmptyFn() → core::bool {
-  return (#C6).{core::Iterable::isEmpty}{core::bool};
+  return (#C6).{core::Iterable::isEmpty};
 }
 static method isNotEmptyFn() → core::bool {
-  return (#C6).{core::Iterable::isNotEmpty}{core::bool};
+  return (#C6).{core::Iterable::isNotEmpty};
 }
 static method lastFn() → core::int {
-  return (#C6).{core::Iterable::last}{core::int};
+  return (#C6).{core::Iterable::last};
 }
 static method lastCatchFn() → core::int {
   try {
-    core::int v = (#C9).{core::Iterable::last}{core::int};
+    core::int v = (#C9).{core::Iterable::last};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -50,14 +50,14 @@
   return 1;
 }
 static method lengthFn() → core::int {
-  return (#C6).{core::List::length}{core::int};
+  return (#C6).{core::List::length};
 }
 static method singleFn() → core::int {
-  return (#C10).{core::Iterable::single}{core::int};
+  return (#C10).{core::Iterable::single};
 }
 static method singleCatchFn() → core::int {
   try {
-    core::int v = (#C9).{core::Iterable::single}{core::int};
+    core::int v = (#C9).{core::Iterable::single};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -66,7 +66,7 @@
 }
 static method singleCatchFn2() → core::int {
   try {
-    core::int v = (#C6).{core::Iterable::single}{core::int};
+    core::int v = (#C6).{core::Iterable::single};
   }
   on core::StateError catch(no-exception-var) {
     return 0;
@@ -74,11 +74,11 @@
   return 1;
 }
 static method getWithIndexFn() → core::int {
-  return (#C10).{core::List::[]}(0){(core::int) → core::int};
+  return (#C10).{core::List::[]}(0);
 }
 static method rangeErrorCatchFn() → core::int {
   try {
-    core::int v = (#C10).{core::List::[]}(1){(core::int) → core::int};
+    core::int v = (#C10).{core::List::[]}(1);
   }
   on core::RangeError catch(no-exception-var) {
     return 0;
@@ -91,7 +91,7 @@
 }
 static method mutableListAdd() → core::List<core::int> {
   core::List<core::int> x = core::_GrowableList::_literal2<core::int>(1, 2);
-  x.{core::List::add}(3){(core::int) → void};
+  x.{core::List::add}(3);
   return x;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.strong.expect
index f4af2aa..d9798b9 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.strong.expect
@@ -82,16 +82,16 @@
            ^";
 static const field core::List<core::int> constListAddException = invalid-expression "Unhandled core exception: Unsupported operation: add";
 static method firstExceptionFn() → core::int {
-  return (#C1).{core::Iterable::first}{core::int};
+  return (#C1).{core::Iterable::first};
 }
 static method lastExceptionFn() → core::int {
-  return (#C1).{core::Iterable::last}{core::int};
+  return (#C1).{core::Iterable::last};
 }
 static method singleExceptionFn() → core::int {
-  return (#C1).{core::Iterable::single}{core::int};
+  return (#C1).{core::Iterable::single};
 }
 static method singleExceptionMultiFn() → core::int {
-  return (#C4).{core::Iterable::single}{core::int};
+  return (#C4).{core::Iterable::single};
 }
 static method invalidPropertyFn() → core::int {
   return invalid-expression "pkg/front_end/testcases/const_functions/const_functions_list_error.dart:36:12: Error: The getter 'invalidProperty' isn't defined for the class 'List<int>'.
@@ -101,18 +101,18 @@
            ^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
 }
 static method getWithIndexExceptionFn() → core::int {
-  return (#C5).{core::List::[]}(1){(core::int) → core::int};
+  return (#C5).{core::List::[]}(1);
 }
 static method getWithIndexExceptionFn2() → core::int {
-  return (#C5).{core::List::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::int};
+  return (#C5).{core::List::[]}(1.{core::int::unary-}());
 }
 static method getWithIndexExceptionFn3() → core::int {
   return (#C5).{core::List::[]}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/const_functions/const_functions_list_error.dart:54:12: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   return x[0.1];
-           ^" in 0.1 as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::int};
+           ^" in 0.1 as{TypeError,ForNonNullableByDefault} core::int);
 }
 static method constListAddExceptionFn() → core::List<core::int> {
-  (#C4).{core::List::add}(3){(core::int) → void};
+  (#C4).{core::List::add}(3);
   return #C4;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.strong.transformed.expect
index 6afdb33..fb04009 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.strong.transformed.expect
@@ -82,16 +82,16 @@
            ^";
 static const field core::List<core::int> constListAddException = invalid-expression "Unhandled core exception: Unsupported operation: add";
 static method firstExceptionFn() → core::int {
-  return (#C1).{core::Iterable::first}{core::int};
+  return (#C1).{core::Iterable::first};
 }
 static method lastExceptionFn() → core::int {
-  return (#C1).{core::Iterable::last}{core::int};
+  return (#C1).{core::Iterable::last};
 }
 static method singleExceptionFn() → core::int {
-  return (#C1).{core::Iterable::single}{core::int};
+  return (#C1).{core::Iterable::single};
 }
 static method singleExceptionMultiFn() → core::int {
-  return (#C4).{core::Iterable::single}{core::int};
+  return (#C4).{core::Iterable::single};
 }
 static method invalidPropertyFn() → core::int {
   return invalid-expression "pkg/front_end/testcases/const_functions/const_functions_list_error.dart:36:12: Error: The getter 'invalidProperty' isn't defined for the class 'List<int>'.
@@ -101,18 +101,18 @@
            ^^^^^^^^^^^^^^^";
 }
 static method getWithIndexExceptionFn() → core::int {
-  return (#C5).{core::List::[]}(1){(core::int) → core::int};
+  return (#C5).{core::List::[]}(1);
 }
 static method getWithIndexExceptionFn2() → core::int {
-  return (#C5).{core::List::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::int};
+  return (#C5).{core::List::[]}(1.{core::int::unary-}());
 }
 static method getWithIndexExceptionFn3() → core::int {
   return (#C5).{core::List::[]}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/const_functions/const_functions_list_error.dart:54:12: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   return x[0.1];
-           ^" in 0.1 as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::int};
+           ^" in 0.1 as{TypeError,ForNonNullableByDefault} core::int);
 }
 static method constListAddExceptionFn() → core::List<core::int> {
-  (#C4).{core::List::add}(3){(core::int) → void};
+  (#C4).{core::List::add}(3);
   return #C4;
 }
 static method main() → void {}
@@ -126,5 +126,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_list_error.dart:48:12 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_list_error.dart:48:12 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 11, effectively constant: 1
diff --git a/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.weak.expect
index 4accbb0..d918e0a 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.weak.expect
@@ -82,16 +82,16 @@
            ^";
 static const field core::List<core::int> constListAddException = invalid-expression "Unhandled core exception: Unsupported operation: add";
 static method firstExceptionFn() → core::int {
-  return (#C1).{core::Iterable::first}{core::int};
+  return (#C1).{core::Iterable::first};
 }
 static method lastExceptionFn() → core::int {
-  return (#C1).{core::Iterable::last}{core::int};
+  return (#C1).{core::Iterable::last};
 }
 static method singleExceptionFn() → core::int {
-  return (#C1).{core::Iterable::single}{core::int};
+  return (#C1).{core::Iterable::single};
 }
 static method singleExceptionMultiFn() → core::int {
-  return (#C4).{core::Iterable::single}{core::int};
+  return (#C4).{core::Iterable::single};
 }
 static method invalidPropertyFn() → core::int {
   return invalid-expression "pkg/front_end/testcases/const_functions/const_functions_list_error.dart:36:12: Error: The getter 'invalidProperty' isn't defined for the class 'List<int>'.
@@ -101,18 +101,18 @@
            ^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
 }
 static method getWithIndexExceptionFn() → core::int {
-  return (#C5).{core::List::[]}(1){(core::int) → core::int};
+  return (#C5).{core::List::[]}(1);
 }
 static method getWithIndexExceptionFn2() → core::int {
-  return (#C5).{core::List::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::int};
+  return (#C5).{core::List::[]}(1.{core::int::unary-}());
 }
 static method getWithIndexExceptionFn3() → core::int {
   return (#C5).{core::List::[]}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/const_functions/const_functions_list_error.dart:54:12: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   return x[0.1];
-           ^" in 0.1 as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::int};
+           ^" in 0.1 as{TypeError,ForNonNullableByDefault} core::int);
 }
 static method constListAddExceptionFn() → core::List<core::int> {
-  (#C4).{core::List::add}(3){(core::int) → void};
+  (#C4).{core::List::add}(3);
   return #C4;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.weak.transformed.expect
index 670f5fc..e2984c7 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_list_error.dart.weak.transformed.expect
@@ -82,16 +82,16 @@
            ^";
 static const field core::List<core::int> constListAddException = invalid-expression "Unhandled core exception: Unsupported operation: add";
 static method firstExceptionFn() → core::int {
-  return (#C1).{core::Iterable::first}{core::int};
+  return (#C1).{core::Iterable::first};
 }
 static method lastExceptionFn() → core::int {
-  return (#C1).{core::Iterable::last}{core::int};
+  return (#C1).{core::Iterable::last};
 }
 static method singleExceptionFn() → core::int {
-  return (#C1).{core::Iterable::single}{core::int};
+  return (#C1).{core::Iterable::single};
 }
 static method singleExceptionMultiFn() → core::int {
-  return (#C4).{core::Iterable::single}{core::int};
+  return (#C4).{core::Iterable::single};
 }
 static method invalidPropertyFn() → core::int {
   return invalid-expression "pkg/front_end/testcases/const_functions/const_functions_list_error.dart:36:12: Error: The getter 'invalidProperty' isn't defined for the class 'List<int>'.
@@ -101,18 +101,18 @@
            ^^^^^^^^^^^^^^^";
 }
 static method getWithIndexExceptionFn() → core::int {
-  return (#C5).{core::List::[]}(1){(core::int) → core::int};
+  return (#C5).{core::List::[]}(1);
 }
 static method getWithIndexExceptionFn2() → core::int {
-  return (#C5).{core::List::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::int};
+  return (#C5).{core::List::[]}(1.{core::int::unary-}());
 }
 static method getWithIndexExceptionFn3() → core::int {
   return (#C5).{core::List::[]}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/const_functions/const_functions_list_error.dart:54:12: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   return x[0.1];
-           ^" in 0.1 as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::int};
+           ^" in 0.1 as{TypeError,ForNonNullableByDefault} core::int);
 }
 static method constListAddExceptionFn() → core::List<core::int> {
-  (#C4).{core::List::add}(3){(core::int) → void};
+  (#C4).{core::List::add}(3);
   return #C4;
 }
 static method main() → void {}
@@ -126,5 +126,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_list_error.dart:48:12 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_list_error.dart:48:12 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 11, effectively constant: 1
diff --git a/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.strong.expect
index 0ace590..cd90a2e 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.strong.expect
@@ -8,24 +8,24 @@
 static const field core::int constTwo = #C1;
 static method function1() → core::int {
   function add(core::int a, core::int b) → core::int
-    return a.{core::num::+}(b){(core::num) → core::int};
+    return a.{core::num::+}(b);
   return #C2;
 }
 static method function2() → core::int {
   function addTwo(core::int a) → core::int {
-    core::int b = a.{core::num::+}(#C1){(core::num) → core::int};
+    core::int b = a.{core::num::+}(#C1);
     return b;
   }
   return #C3;
 }
 static method function3() → core::int {
   function addTwoReturn(core::int a) → core::int
-    return a.{core::num::+}(#C1){(core::num) → core::int};
+    return a.{core::num::+}(#C1);
   return #C4;
 }
 static method function4() → core::int {
   function addTwo(core::int a) → core::int
-    return a.{core::num::+}(#C1){(core::num) → core::int};
+    return a.{core::num::+}(#C1);
   return #C5;
 }
 static method function5() → core::int {
@@ -45,8 +45,8 @@
 }
 static method function8() → core::int {
   function add(core::int a, core::int b) → core::int
-    return a.{core::num::+}(b){(core::num) → core::int};
-  return (#C1).{core::num::+}(#C4){(core::num) → core::int};
+    return a.{core::num::+}(b);
+  return (#C1).{core::num::+}(#C4);
 }
 static method main() → void {
   exp::Expect::equals(self::function1(), 12);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.strong.transformed.expect
index 142ff6a..2dc0292 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.strong.transformed.expect
@@ -8,24 +8,24 @@
 static const field core::int constTwo = #C1;
 static method function1() → core::int {
   function add(core::int a, core::int b) → core::int
-    return a.{core::num::+}(b){(core::num) → core::int};
+    return a.{core::num::+}(b);
   return #C2;
 }
 static method function2() → core::int {
   function addTwo(core::int a) → core::int {
-    core::int b = a.{core::num::+}(#C1){(core::num) → core::int};
+    core::int b = a.{core::num::+}(#C1);
     return b;
   }
   return #C3;
 }
 static method function3() → core::int {
   function addTwoReturn(core::int a) → core::int
-    return a.{core::num::+}(#C1){(core::num) → core::int};
+    return a.{core::num::+}(#C1);
   return #C4;
 }
 static method function4() → core::int {
   function addTwo(core::int a) → core::int
-    return a.{core::num::+}(#C1){(core::num) → core::int};
+    return a.{core::num::+}(#C1);
   return #C5;
 }
 static method function5() → core::int {
@@ -45,8 +45,8 @@
 }
 static method function8() → core::int {
   function add(core::int a, core::int b) → core::int
-    return a.{core::num::+}(b){(core::num) → core::int};
-  return (#C1).{core::num::+}(#C4){(core::num) → core::int};
+    return a.{core::num::+}(b);
+  return (#C1).{core::num::+}(#C4);
 }
 static method main() → void {
   exp::Expect::equals(self::function1(), 12);
@@ -71,5 +71,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_local_functions.dart:61:16 -> IntConstant(7)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_local_functions.dart:61:16 -> IntConstant(7)
 Extra constant evaluation: evaluated: 33, effectively constant: 1
diff --git a/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.weak.expect
index 0ace590..cd90a2e 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.weak.expect
@@ -8,24 +8,24 @@
 static const field core::int constTwo = #C1;
 static method function1() → core::int {
   function add(core::int a, core::int b) → core::int
-    return a.{core::num::+}(b){(core::num) → core::int};
+    return a.{core::num::+}(b);
   return #C2;
 }
 static method function2() → core::int {
   function addTwo(core::int a) → core::int {
-    core::int b = a.{core::num::+}(#C1){(core::num) → core::int};
+    core::int b = a.{core::num::+}(#C1);
     return b;
   }
   return #C3;
 }
 static method function3() → core::int {
   function addTwoReturn(core::int a) → core::int
-    return a.{core::num::+}(#C1){(core::num) → core::int};
+    return a.{core::num::+}(#C1);
   return #C4;
 }
 static method function4() → core::int {
   function addTwo(core::int a) → core::int
-    return a.{core::num::+}(#C1){(core::num) → core::int};
+    return a.{core::num::+}(#C1);
   return #C5;
 }
 static method function5() → core::int {
@@ -45,8 +45,8 @@
 }
 static method function8() → core::int {
   function add(core::int a, core::int b) → core::int
-    return a.{core::num::+}(b){(core::num) → core::int};
-  return (#C1).{core::num::+}(#C4){(core::num) → core::int};
+    return a.{core::num::+}(b);
+  return (#C1).{core::num::+}(#C4);
 }
 static method main() → void {
   exp::Expect::equals(self::function1(), 12);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.weak.transformed.expect
index 142ff6a..2dc0292 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_local_functions.dart.weak.transformed.expect
@@ -8,24 +8,24 @@
 static const field core::int constTwo = #C1;
 static method function1() → core::int {
   function add(core::int a, core::int b) → core::int
-    return a.{core::num::+}(b){(core::num) → core::int};
+    return a.{core::num::+}(b);
   return #C2;
 }
 static method function2() → core::int {
   function addTwo(core::int a) → core::int {
-    core::int b = a.{core::num::+}(#C1){(core::num) → core::int};
+    core::int b = a.{core::num::+}(#C1);
     return b;
   }
   return #C3;
 }
 static method function3() → core::int {
   function addTwoReturn(core::int a) → core::int
-    return a.{core::num::+}(#C1){(core::num) → core::int};
+    return a.{core::num::+}(#C1);
   return #C4;
 }
 static method function4() → core::int {
   function addTwo(core::int a) → core::int
-    return a.{core::num::+}(#C1){(core::num) → core::int};
+    return a.{core::num::+}(#C1);
   return #C5;
 }
 static method function5() → core::int {
@@ -45,8 +45,8 @@
 }
 static method function8() → core::int {
   function add(core::int a, core::int b) → core::int
-    return a.{core::num::+}(b){(core::num) → core::int};
-  return (#C1).{core::num::+}(#C4){(core::num) → core::int};
+    return a.{core::num::+}(b);
+  return (#C1).{core::num::+}(#C4);
 }
 static method main() → void {
   exp::Expect::equals(self::function1(), 12);
@@ -71,5 +71,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_local_functions.dart:61:16 -> IntConstant(7)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_local_functions.dart:61:16 -> IntConstant(7)
 Extra constant evaluation: evaluated: 33, effectively constant: 1
diff --git a/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.expect
index f35acb3..1b2b117 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.expect
@@ -14,10 +14,10 @@
 static const field core::Object? var6 = #C8;
 static const field core::int? var7 = #C2;
 static method fn(core::Map<core::Object, core::Object> map, core::Object key) → core::Object? {
-  return map.{core::Map::[]}(key){(core::Object?) → core::Object?};
+  return map.{core::Map::[]}(key);
 }
 static method fn2() → core::int? {
-  return (#C13).{core::Map::[]}("key"){(core::Object?) → core::int?};
+  return (#C13).{core::Map::[]}("key");
 }
 static method main() → void {
   exp::Expect::equals(#C1, "val");
diff --git a/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.transformed.expect
index f35acb3..1b2b117 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.transformed.expect
@@ -14,10 +14,10 @@
 static const field core::Object? var6 = #C8;
 static const field core::int? var7 = #C2;
 static method fn(core::Map<core::Object, core::Object> map, core::Object key) → core::Object? {
-  return map.{core::Map::[]}(key){(core::Object?) → core::Object?};
+  return map.{core::Map::[]}(key);
 }
 static method fn2() → core::int? {
-  return (#C13).{core::Map::[]}("key"){(core::Object?) → core::int?};
+  return (#C13).{core::Map::[]}("key");
 }
 static method main() → void {
   exp::Expect::equals(#C1, "val");
diff --git a/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.expect
index a1dcfec..836d428 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.expect
@@ -14,10 +14,10 @@
 static const field core::Object? var6 = #C8;
 static const field core::int? var7 = #C2;
 static method fn(core::Map<core::Object, core::Object> map, core::Object key) → core::Object? {
-  return map.{core::Map::[]}(key){(core::Object?) → core::Object?};
+  return map.{core::Map::[]}(key);
 }
 static method fn2() → core::int? {
-  return (#C13).{core::Map::[]}("key"){(core::Object?) → core::int?};
+  return (#C13).{core::Map::[]}("key");
 }
 static method main() → void {
   exp::Expect::equals(#C1, "val");
diff --git a/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.transformed.expect
index a1dcfec..836d428 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.transformed.expect
@@ -14,10 +14,10 @@
 static const field core::Object? var6 = #C8;
 static const field core::int? var7 = #C2;
 static method fn(core::Map<core::Object, core::Object> map, core::Object key) → core::Object? {
-  return map.{core::Map::[]}(key){(core::Object?) → core::Object?};
+  return map.{core::Map::[]}(key);
 }
 static method fn2() → core::int? {
-  return (#C13).{core::Map::[]}("key"){(core::Object?) → core::int?};
+  return (#C13).{core::Map::[]}("key");
 }
 static method main() → void {
   exp::Expect::equals(#C1, "val");
diff --git a/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.strong.expect
index 1ee9329..c53d3dc 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.strong.expect
@@ -7,15 +7,15 @@
 
 static const field core::int b = #C1;
 static method fn(core::int a) → core::int {
-  if(a =={core::num::==}{(core::Object) → core::bool} 1)
+  if(a.{core::num::==}(1))
     return 1;
-  return a.{core::num::*}(self::fn(a.{core::num::-}(1){(core::num) → core::int})){(core::num) → core::int};
+  return a.{core::num::*}(self::fn(a.{core::num::-}(1)));
 }
 static method localTest() → core::int {
   function fnLocal(core::int a) → core::int {
-    if(a =={core::num::==}{(core::Object) → core::bool} 1)
+    if(a.{core::num::==}(1))
       return 1;
-    return a.{core::num::*}(fnLocal(a.{core::num::-}(1){(core::num) → core::int}){(core::int) → core::int}){(core::num) → core::int};
+    return a.{core::num::*}(fnLocal.call(a.{core::num::-}(1)));
   }
   return #C1;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.strong.transformed.expect
index 1ee9329..c53d3dc 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.strong.transformed.expect
@@ -7,15 +7,15 @@
 
 static const field core::int b = #C1;
 static method fn(core::int a) → core::int {
-  if(a =={core::num::==}{(core::Object) → core::bool} 1)
+  if(a.{core::num::==}(1))
     return 1;
-  return a.{core::num::*}(self::fn(a.{core::num::-}(1){(core::num) → core::int})){(core::num) → core::int};
+  return a.{core::num::*}(self::fn(a.{core::num::-}(1)));
 }
 static method localTest() → core::int {
   function fnLocal(core::int a) → core::int {
-    if(a =={core::num::==}{(core::Object) → core::bool} 1)
+    if(a.{core::num::==}(1))
       return 1;
-    return a.{core::num::*}(fnLocal(a.{core::num::-}(1){(core::num) → core::int}){(core::int) → core::int}){(core::num) → core::int};
+    return a.{core::num::*}(fnLocal.call(a.{core::num::-}(1)));
   }
   return #C1;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.weak.expect
index 1ee9329..c53d3dc 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.weak.expect
@@ -7,15 +7,15 @@
 
 static const field core::int b = #C1;
 static method fn(core::int a) → core::int {
-  if(a =={core::num::==}{(core::Object) → core::bool} 1)
+  if(a.{core::num::==}(1))
     return 1;
-  return a.{core::num::*}(self::fn(a.{core::num::-}(1){(core::num) → core::int})){(core::num) → core::int};
+  return a.{core::num::*}(self::fn(a.{core::num::-}(1)));
 }
 static method localTest() → core::int {
   function fnLocal(core::int a) → core::int {
-    if(a =={core::num::==}{(core::Object) → core::bool} 1)
+    if(a.{core::num::==}(1))
       return 1;
-    return a.{core::num::*}(fnLocal(a.{core::num::-}(1){(core::num) → core::int}){(core::int) → core::int}){(core::num) → core::int};
+    return a.{core::num::*}(fnLocal.call(a.{core::num::-}(1)));
   }
   return #C1;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.weak.transformed.expect
index 1ee9329..c53d3dc 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_recursion.dart.weak.transformed.expect
@@ -7,15 +7,15 @@
 
 static const field core::int b = #C1;
 static method fn(core::int a) → core::int {
-  if(a =={core::num::==}{(core::Object) → core::bool} 1)
+  if(a.{core::num::==}(1))
     return 1;
-  return a.{core::num::*}(self::fn(a.{core::num::-}(1){(core::num) → core::int})){(core::num) → core::int};
+  return a.{core::num::*}(self::fn(a.{core::num::-}(1)));
 }
 static method localTest() → core::int {
   function fnLocal(core::int a) → core::int {
-    if(a =={core::num::==}{(core::Object) → core::bool} 1)
+    if(a.{core::num::==}(1))
       return 1;
-    return a.{core::num::*}(fnLocal(a.{core::num::-}(1){(core::num) → core::int}){(core::int) → core::int}){(core::num) → core::int};
+    return a.{core::num::*}(fnLocal.call(a.{core::num::-}(1)));
   }
   return #C1;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.strong.expect
index 04bf4ef..0d13bf0 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.strong.expect
@@ -19,25 +19,25 @@
 static const field core::int multi = #C2;
 static const field core::int multi2 = #C3;
 static method binaryFn(core::int a, core::int b) → core::int
-  return a.{core::num::-}(b){(core::num) → core::int};
+  return a.{core::num::-}(b);
 static method optionalFn(core::int c, [core::int d = #C11]) → core::int
-  return c.{core::num::+}(d){(core::num) → core::int};
+  return c.{core::num::+}(d);
 static method namedFn(core::int e, {core::int f = #C3}) → core::int
-  return e.{core::num::+}(f){(core::num) → core::int};
+  return e.{core::num::+}(f);
 static method typeFn<T extends core::Object? = dynamic>(self::typeFn::T% x) → self::typeFn::T%
   return x;
 static method stringFn(core::String s) → core::String
-  return s.{core::String::+}("ing"){(core::String) → core::String};
+  return s.{core::String::+}("ing");
 static method equalFn(core::int a, core::int b) → core::bool
-  return a =={core::num::==}{(core::Object) → core::bool} b;
+  return a.{core::num::==}(b);
 static method unary(core::int a) → core::int
-  return a.{core::int::unary-}(){() → core::int};
+  return a.{core::int::unary-}();
 static method boolFn(core::bool a, core::bool b) → core::bool
   return a || b;
 static method doubleFn(core::double a, core::double b) → core::double
-  return a.{core::double::*}(b){(core::num) → core::double};
+  return a.{core::double::*}(b);
 static method multiFn(core::int a) → core::int
-  return a.{core::num::+}(1){(core::num) → core::int};
+  return a.{core::num::+}(1);
 static method main() → void {
   exp::Expect::equals(#C1, 1);
   exp::Expect::equals(#C2, 2);
@@ -47,7 +47,7 @@
   exp::Expect::equals(#C6, 6);
   exp::Expect::equals(#C7, "string");
   exp::Expect::equals(#C8, true);
-  exp::Expect::equals(#C9, 2.{core::int::unary-}(){() → core::int});
+  exp::Expect::equals(#C9, 2.{core::int::unary-}());
   exp::Expect::equals(#C8, true);
   exp::Expect::equals(#C10, 4.4);
   exp::Expect::equals(#C2, 2);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.strong.transformed.expect
index 15750cc..de39112 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.strong.transformed.expect
@@ -19,25 +19,25 @@
 static const field core::int multi = #C2;
 static const field core::int multi2 = #C3;
 static method binaryFn(core::int a, core::int b) → core::int
-  return a.{core::num::-}(b){(core::num) → core::int};
+  return a.{core::num::-}(b);
 static method optionalFn(core::int c, [core::int d = #C11]) → core::int
-  return c.{core::num::+}(d){(core::num) → core::int};
+  return c.{core::num::+}(d);
 static method namedFn(core::int e, {core::int f = #C3}) → core::int
-  return e.{core::num::+}(f){(core::num) → core::int};
+  return e.{core::num::+}(f);
 static method typeFn<T extends core::Object? = dynamic>(self::typeFn::T% x) → self::typeFn::T%
   return x;
 static method stringFn(core::String s) → core::String
-  return s.{core::String::+}("ing"){(core::String) → core::String};
+  return s.{core::String::+}("ing");
 static method equalFn(core::int a, core::int b) → core::bool
-  return a =={core::num::==}{(core::Object) → core::bool} b;
+  return a.{core::num::==}(b);
 static method unary(core::int a) → core::int
-  return a.{core::int::unary-}(){() → core::int};
+  return a.{core::int::unary-}();
 static method boolFn(core::bool a, core::bool b) → core::bool
   return a || b;
 static method doubleFn(core::double a, core::double b) → core::double
-  return a.{core::double::*}(b){(core::num) → core::double};
+  return a.{core::double::*}(b);
 static method multiFn(core::int a) → core::int
-  return a.{core::num::+}(1){(core::num) → core::int};
+  return a.{core::num::+}(1);
 static method main() → void {
   exp::Expect::equals(#C1, 1);
   exp::Expect::equals(#C2, 2);
@@ -47,7 +47,7 @@
   exp::Expect::equals(#C6, 6);
   exp::Expect::equals(#C7, "string");
   exp::Expect::equals(#C8, true);
-  exp::Expect::equals(#C9, 2.{core::int::unary-}(){() → core::int});
+  exp::Expect::equals(#C9, 2.{core::int::unary-}());
   exp::Expect::equals(#C8, true);
   exp::Expect::equals(#C10, 4.4);
   exp::Expect::equals(#C2, 2);
@@ -69,5 +69,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_simple_invocations.dart:51:27 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_simple_invocations.dart:51:27 -> IntConstant(-2)
 Extra constant evaluation: evaluated: 39, effectively constant: 1
diff --git a/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.weak.expect
index 04bf4ef..0d13bf0 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.weak.expect
@@ -19,25 +19,25 @@
 static const field core::int multi = #C2;
 static const field core::int multi2 = #C3;
 static method binaryFn(core::int a, core::int b) → core::int
-  return a.{core::num::-}(b){(core::num) → core::int};
+  return a.{core::num::-}(b);
 static method optionalFn(core::int c, [core::int d = #C11]) → core::int
-  return c.{core::num::+}(d){(core::num) → core::int};
+  return c.{core::num::+}(d);
 static method namedFn(core::int e, {core::int f = #C3}) → core::int
-  return e.{core::num::+}(f){(core::num) → core::int};
+  return e.{core::num::+}(f);
 static method typeFn<T extends core::Object? = dynamic>(self::typeFn::T% x) → self::typeFn::T%
   return x;
 static method stringFn(core::String s) → core::String
-  return s.{core::String::+}("ing"){(core::String) → core::String};
+  return s.{core::String::+}("ing");
 static method equalFn(core::int a, core::int b) → core::bool
-  return a =={core::num::==}{(core::Object) → core::bool} b;
+  return a.{core::num::==}(b);
 static method unary(core::int a) → core::int
-  return a.{core::int::unary-}(){() → core::int};
+  return a.{core::int::unary-}();
 static method boolFn(core::bool a, core::bool b) → core::bool
   return a || b;
 static method doubleFn(core::double a, core::double b) → core::double
-  return a.{core::double::*}(b){(core::num) → core::double};
+  return a.{core::double::*}(b);
 static method multiFn(core::int a) → core::int
-  return a.{core::num::+}(1){(core::num) → core::int};
+  return a.{core::num::+}(1);
 static method main() → void {
   exp::Expect::equals(#C1, 1);
   exp::Expect::equals(#C2, 2);
@@ -47,7 +47,7 @@
   exp::Expect::equals(#C6, 6);
   exp::Expect::equals(#C7, "string");
   exp::Expect::equals(#C8, true);
-  exp::Expect::equals(#C9, 2.{core::int::unary-}(){() → core::int});
+  exp::Expect::equals(#C9, 2.{core::int::unary-}());
   exp::Expect::equals(#C8, true);
   exp::Expect::equals(#C10, 4.4);
   exp::Expect::equals(#C2, 2);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.weak.transformed.expect
index 15750cc..de39112 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_simple_invocations.dart.weak.transformed.expect
@@ -19,25 +19,25 @@
 static const field core::int multi = #C2;
 static const field core::int multi2 = #C3;
 static method binaryFn(core::int a, core::int b) → core::int
-  return a.{core::num::-}(b){(core::num) → core::int};
+  return a.{core::num::-}(b);
 static method optionalFn(core::int c, [core::int d = #C11]) → core::int
-  return c.{core::num::+}(d){(core::num) → core::int};
+  return c.{core::num::+}(d);
 static method namedFn(core::int e, {core::int f = #C3}) → core::int
-  return e.{core::num::+}(f){(core::num) → core::int};
+  return e.{core::num::+}(f);
 static method typeFn<T extends core::Object? = dynamic>(self::typeFn::T% x) → self::typeFn::T%
   return x;
 static method stringFn(core::String s) → core::String
-  return s.{core::String::+}("ing"){(core::String) → core::String};
+  return s.{core::String::+}("ing");
 static method equalFn(core::int a, core::int b) → core::bool
-  return a =={core::num::==}{(core::Object) → core::bool} b;
+  return a.{core::num::==}(b);
 static method unary(core::int a) → core::int
-  return a.{core::int::unary-}(){() → core::int};
+  return a.{core::int::unary-}();
 static method boolFn(core::bool a, core::bool b) → core::bool
   return a || b;
 static method doubleFn(core::double a, core::double b) → core::double
-  return a.{core::double::*}(b){(core::num) → core::double};
+  return a.{core::double::*}(b);
 static method multiFn(core::int a) → core::int
-  return a.{core::num::+}(1){(core::num) → core::int};
+  return a.{core::num::+}(1);
 static method main() → void {
   exp::Expect::equals(#C1, 1);
   exp::Expect::equals(#C2, 2);
@@ -47,7 +47,7 @@
   exp::Expect::equals(#C6, 6);
   exp::Expect::equals(#C7, "string");
   exp::Expect::equals(#C8, true);
-  exp::Expect::equals(#C9, 2.{core::int::unary-}(){() → core::int});
+  exp::Expect::equals(#C9, 2.{core::int::unary-}());
   exp::Expect::equals(#C8, true);
   exp::Expect::equals(#C10, 4.4);
   exp::Expect::equals(#C2, 2);
@@ -69,5 +69,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_simple_invocations.dart:51:27 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_simple_invocations.dart:51:27 -> IntConstant(-2)
 Extra constant evaluation: evaluated: 39, effectively constant: 1
diff --git a/pkg/front_end/testcases/const_functions/const_functions_string.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_string.dart.strong.expect
index 30b3270..f573022 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_string.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_string.dart.strong.expect
@@ -12,11 +12,11 @@
 static const field dynamic var4 = #C4;
 static method fn() → dynamic {
   core::String local = "str";
-  return local.{core::String::[]}(0){(core::int) → core::String};
+  return local.{core::String::[]}(0);
 }
 static method fn2() → dynamic {
   try {
-    core::String x = (#C1).{core::String::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::String};
+    core::String x = (#C1).{core::String::[]}(1.{core::int::unary-}());
   }
   on core::RangeError catch(no-exception-var) {
     return 2;
diff --git a/pkg/front_end/testcases/const_functions/const_functions_string.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_string.dart.strong.transformed.expect
index c6e9308..9ba5e5c 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_string.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_string.dart.strong.transformed.expect
@@ -12,11 +12,11 @@
 static const field dynamic var4 = #C4;
 static method fn() → dynamic {
   core::String local = "str";
-  return local.{core::String::[]}(0){(core::int) → core::String};
+  return local.{core::String::[]}(0);
 }
 static method fn2() → dynamic {
   try {
-    core::String x = (#C1).{core::String::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::String};
+    core::String x = (#C1).{core::String::[]}(1.{core::int::unary-}());
   }
   on core::RangeError catch(no-exception-var) {
     return 2;
@@ -37,5 +37,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_string.dart:23:17 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_string.dart:23:17 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 8, effectively constant: 1
diff --git a/pkg/front_end/testcases/const_functions/const_functions_string.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_string.dart.weak.expect
index 30b3270..f573022 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_string.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_string.dart.weak.expect
@@ -12,11 +12,11 @@
 static const field dynamic var4 = #C4;
 static method fn() → dynamic {
   core::String local = "str";
-  return local.{core::String::[]}(0){(core::int) → core::String};
+  return local.{core::String::[]}(0);
 }
 static method fn2() → dynamic {
   try {
-    core::String x = (#C1).{core::String::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::String};
+    core::String x = (#C1).{core::String::[]}(1.{core::int::unary-}());
   }
   on core::RangeError catch(no-exception-var) {
     return 2;
diff --git a/pkg/front_end/testcases/const_functions/const_functions_string.dart.weak.outline.expect b/pkg/front_end/testcases/const_functions/const_functions_string.dart.weak.outline.expect
index eb00fe5..8da9073 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_string.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_string.dart.weak.outline.expect
@@ -5,9 +5,9 @@
 import "package:expect/expect.dart";
 
 static const field core::String str = "str";
-static const field core::String var1 = self::str.{core::String::[]}(2){(core::int) → core::String};
+static const field core::String var1 = self::str.{core::String::[]}(2);
 static const field dynamic var2 = self::fn();
-static const field core::String var3 = "str".{core::String::[]}(0){(core::int) → core::String};
+static const field core::String var3 = "str".{core::String::[]}(0);
 static const field dynamic var4 = self::fn2();
 static method fn() → dynamic
   ;
diff --git a/pkg/front_end/testcases/const_functions/const_functions_string.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_string.dart.weak.transformed.expect
index c6e9308..9ba5e5c 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_string.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_string.dart.weak.transformed.expect
@@ -12,11 +12,11 @@
 static const field dynamic var4 = #C4;
 static method fn() → dynamic {
   core::String local = "str";
-  return local.{core::String::[]}(0){(core::int) → core::String};
+  return local.{core::String::[]}(0);
 }
 static method fn2() → dynamic {
   try {
-    core::String x = (#C1).{core::String::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::String};
+    core::String x = (#C1).{core::String::[]}(1.{core::int::unary-}());
   }
   on core::RangeError catch(no-exception-var) {
     return 2;
@@ -37,5 +37,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_string.dart:23:17 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_string.dart:23:17 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 8, effectively constant: 1
diff --git a/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.strong.expect
index 7511ee3..0cdd42f 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.strong.expect
@@ -49,17 +49,17 @@
              ^";
 static method fn() → dynamic {
   core::String s = "str";
-  return (#C1).{core::String::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::String};
+  return (#C1).{core::String::[]}(1.{core::int::unary-}());
 }
 static method fn2() → dynamic {
   core::String s = "str";
-  return (#C1).{core::String::[]}(3){(core::int) → core::String};
+  return (#C1).{core::String::[]}(3);
 }
 static method fn3() → dynamic {
   core::String s = "str";
   return (#C1).{core::String::[]}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/const_functions/const_functions_string_error.dart:28:14: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   return str[1.1];
-             ^" in 1.1 as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::String};
+             ^" in 1.1 as{TypeError,ForNonNullableByDefault} core::int);
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.strong.transformed.expect
index 04e045d..e7133c8 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.strong.transformed.expect
@@ -49,17 +49,17 @@
              ^";
 static method fn() → dynamic {
   core::String s = "str";
-  return (#C1).{core::String::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::String};
+  return (#C1).{core::String::[]}(1.{core::int::unary-}());
 }
 static method fn2() → dynamic {
   core::String s = "str";
-  return (#C1).{core::String::[]}(3){(core::int) → core::String};
+  return (#C1).{core::String::[]}(3);
 }
 static method fn3() → dynamic {
   core::String s = "str";
   return (#C1).{core::String::[]}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/const_functions/const_functions_string_error.dart:28:14: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   return str[1.1];
-             ^" in 1.1 as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::String};
+             ^" in 1.1 as{TypeError,ForNonNullableByDefault} core::int);
 }
 static method main() → void {}
 
@@ -68,5 +68,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_string_error.dart:16:14 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_string_error.dart:16:14 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 6, effectively constant: 1
diff --git a/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.weak.expect
index 7511ee3..0cdd42f 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.weak.expect
@@ -49,17 +49,17 @@
              ^";
 static method fn() → dynamic {
   core::String s = "str";
-  return (#C1).{core::String::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::String};
+  return (#C1).{core::String::[]}(1.{core::int::unary-}());
 }
 static method fn2() → dynamic {
   core::String s = "str";
-  return (#C1).{core::String::[]}(3){(core::int) → core::String};
+  return (#C1).{core::String::[]}(3);
 }
 static method fn3() → dynamic {
   core::String s = "str";
   return (#C1).{core::String::[]}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/const_functions/const_functions_string_error.dart:28:14: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   return str[1.1];
-             ^" in 1.1 as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::String};
+             ^" in 1.1 as{TypeError,ForNonNullableByDefault} core::int);
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.weak.outline.expect b/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.weak.outline.expect
index a20d79c..183676d 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.weak.outline.expect
@@ -5,8 +5,8 @@
 import "package:expect/expect.dart";
 
 static const field core::String str = "str";
-static const field core::String var1 = self::str.{core::String::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::String};
-static const field core::String var2 = self::str.{core::String::[]}(3){(core::int) → core::String};
+static const field core::String var1 = self::str.{core::String::[]}(1.{core::int::unary-}());
+static const field core::String var2 = self::str.{core::String::[]}(3);
 static const field dynamic var3 = self::fn();
 static const field dynamic var4 = self::fn2();
 static const field dynamic var5 = self::fn3();
@@ -22,6 +22,6 @@
 
 Extra constant evaluation status:
 Evaluated: StaticGet @ org-dartlang-testcase:///const_functions_string_error.dart:10:14 -> StringConstant("str")
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_string_error.dart:10:18 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_string_error.dart:10:18 -> IntConstant(-1)
 Evaluated: StaticGet @ org-dartlang-testcase:///const_functions_string_error.dart:11:14 -> StringConstant("str")
 Extra constant evaluation: evaluated: 8, effectively constant: 3
diff --git a/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.weak.transformed.expect
index 04e045d..e7133c8 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_string_error.dart.weak.transformed.expect
@@ -49,17 +49,17 @@
              ^";
 static method fn() → dynamic {
   core::String s = "str";
-  return (#C1).{core::String::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::String};
+  return (#C1).{core::String::[]}(1.{core::int::unary-}());
 }
 static method fn2() → dynamic {
   core::String s = "str";
-  return (#C1).{core::String::[]}(3){(core::int) → core::String};
+  return (#C1).{core::String::[]}(3);
 }
 static method fn3() → dynamic {
   core::String s = "str";
   return (#C1).{core::String::[]}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/const_functions/const_functions_string_error.dart:28:14: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   return str[1.1];
-             ^" in 1.1 as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::String};
+             ^" in 1.1 as{TypeError,ForNonNullableByDefault} core::int);
 }
 static method main() → void {}
 
@@ -68,5 +68,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_string_error.dart:16:14 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_string_error.dart:16:14 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 6, effectively constant: 1
diff --git a/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.strong.expect
index b3f761c..76efdb8 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.strong.expect
@@ -25,7 +25,7 @@
     #L3:
     default:
       {
-        x = x.{core::num::+}(1){(core::num) → core::int};
+        x = x.{core::num::+}(1);
         break #L1;
       }
   }
@@ -53,7 +53,7 @@
     #L7:
     case #C7:
       {
-        x = x.{core::num::+}(100){(core::num) → core::int};
+        x = x.{core::num::+}(100);
         continue #L8;
       }
     #L9:
@@ -64,7 +64,7 @@
     #L8:
     case #C2:
       {
-        return x.{core::num::+}(3){(core::num) → core::int};
+        return x.{core::num::+}(3);
       }
   }
   return 0;
diff --git a/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.strong.transformed.expect
index b3f761c..76efdb8 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.strong.transformed.expect
@@ -25,7 +25,7 @@
     #L3:
     default:
       {
-        x = x.{core::num::+}(1){(core::num) → core::int};
+        x = x.{core::num::+}(1);
         break #L1;
       }
   }
@@ -53,7 +53,7 @@
     #L7:
     case #C7:
       {
-        x = x.{core::num::+}(100){(core::num) → core::int};
+        x = x.{core::num::+}(100);
         continue #L8;
       }
     #L9:
@@ -64,7 +64,7 @@
     #L8:
     case #C2:
       {
-        return x.{core::num::+}(3){(core::num) → core::int};
+        return x.{core::num::+}(3);
       }
   }
   return 0;
diff --git a/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.weak.expect
index b3f761c..76efdb8 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.weak.expect
@@ -25,7 +25,7 @@
     #L3:
     default:
       {
-        x = x.{core::num::+}(1){(core::num) → core::int};
+        x = x.{core::num::+}(1);
         break #L1;
       }
   }
@@ -53,7 +53,7 @@
     #L7:
     case #C7:
       {
-        x = x.{core::num::+}(100){(core::num) → core::int};
+        x = x.{core::num::+}(100);
         continue #L8;
       }
     #L9:
@@ -64,7 +64,7 @@
     #L8:
     case #C2:
       {
-        return x.{core::num::+}(3){(core::num) → core::int};
+        return x.{core::num::+}(3);
       }
   }
   return 0;
diff --git a/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.weak.transformed.expect
index b3f761c..76efdb8 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_switch_statements.dart.weak.transformed.expect
@@ -25,7 +25,7 @@
     #L3:
     default:
       {
-        x = x.{core::num::+}(1){(core::num) → core::int};
+        x = x.{core::num::+}(1);
         break #L1;
       }
   }
@@ -53,7 +53,7 @@
     #L7:
     case #C7:
       {
-        x = x.{core::num::+}(100){(core::num) → core::int};
+        x = x.{core::num::+}(100);
         continue #L8;
       }
     #L9:
@@ -64,7 +64,7 @@
     #L8:
     case #C2:
       {
-        return x.{core::num::+}(3){(core::num) → core::int};
+        return x.{core::num::+}(3);
       }
   }
   return 0;
diff --git a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.strong.expect
index f816401..1d0bf2c 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.strong.expect
@@ -43,7 +43,7 @@
 static method finallyReturn(dynamic error) → core::int {
   try
     try {
-      if(!(error =={core::Object::==}{(core::Object) → core::bool} 1))
+      if(!error.{core::Object::==}(1))
         throw error;
     }
     on core::int catch(final core::int e) {
@@ -58,7 +58,7 @@
 }
 static method finallyReturn1(core::int x) → core::int {
   try {
-    if(x =={core::num::==}{(core::Object) → core::bool} 1) {
+    if(x.{core::num::==}(1)) {
       throw x;
     }
     else {
@@ -75,7 +75,7 @@
     return x;
   }
   finally {
-    x = x.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(1);
   }
 }
 static method subtypeFn() → core::int {
@@ -90,21 +90,21 @@
   core::String x = "st";
   try
     try {
-      x = x.{core::String::+}("ri"){(core::String) → core::String};
+      x = x.{core::String::+}("ri");
       throw 2;
     }
     on core::Object catch(final core::Object e) {
-      x = x.{core::String::+}("n"){(core::String) → core::String};
+      x = x.{core::String::+}("n");
     }
   finally {
-    return x.{core::String::+}("g"){(core::String) → core::String};
+    return x.{core::String::+}("g");
   }
 }
 static method notThrowStatement() → core::int {
   core::int count = 0;
   try {
-    for (core::int i = 0; i.{core::num::<}(1){(core::num) → core::bool}; throw "a") {
-      count = count.{core::num::+}(i){(core::num) → core::int};
+    for (core::int i = 0; i.{core::num::<}(1); throw "a") {
+      count = count.{core::num::+}(i);
     }
   }
   on core::Object catch(final core::Object e) {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.strong.transformed.expect
index f816401..1d0bf2c 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.strong.transformed.expect
@@ -43,7 +43,7 @@
 static method finallyReturn(dynamic error) → core::int {
   try
     try {
-      if(!(error =={core::Object::==}{(core::Object) → core::bool} 1))
+      if(!error.{core::Object::==}(1))
         throw error;
     }
     on core::int catch(final core::int e) {
@@ -58,7 +58,7 @@
 }
 static method finallyReturn1(core::int x) → core::int {
   try {
-    if(x =={core::num::==}{(core::Object) → core::bool} 1) {
+    if(x.{core::num::==}(1)) {
       throw x;
     }
     else {
@@ -75,7 +75,7 @@
     return x;
   }
   finally {
-    x = x.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(1);
   }
 }
 static method subtypeFn() → core::int {
@@ -90,21 +90,21 @@
   core::String x = "st";
   try
     try {
-      x = x.{core::String::+}("ri"){(core::String) → core::String};
+      x = x.{core::String::+}("ri");
       throw 2;
     }
     on core::Object catch(final core::Object e) {
-      x = x.{core::String::+}("n"){(core::String) → core::String};
+      x = x.{core::String::+}("n");
     }
   finally {
-    return x.{core::String::+}("g"){(core::String) → core::String};
+    return x.{core::String::+}("g");
   }
 }
 static method notThrowStatement() → core::int {
   core::int count = 0;
   try {
-    for (core::int i = 0; i.{core::num::<}(1){(core::num) → core::bool}; throw "a") {
-      count = count.{core::num::+}(i){(core::num) → core::int};
+    for (core::int i = 0; i.{core::num::<}(1); throw "a") {
+      count = count.{core::num::+}(i);
     }
   }
   on core::Object catch(final core::Object e) {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.weak.expect
index f816401..1d0bf2c 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.weak.expect
@@ -43,7 +43,7 @@
 static method finallyReturn(dynamic error) → core::int {
   try
     try {
-      if(!(error =={core::Object::==}{(core::Object) → core::bool} 1))
+      if(!error.{core::Object::==}(1))
         throw error;
     }
     on core::int catch(final core::int e) {
@@ -58,7 +58,7 @@
 }
 static method finallyReturn1(core::int x) → core::int {
   try {
-    if(x =={core::num::==}{(core::Object) → core::bool} 1) {
+    if(x.{core::num::==}(1)) {
       throw x;
     }
     else {
@@ -75,7 +75,7 @@
     return x;
   }
   finally {
-    x = x.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(1);
   }
 }
 static method subtypeFn() → core::int {
@@ -90,21 +90,21 @@
   core::String x = "st";
   try
     try {
-      x = x.{core::String::+}("ri"){(core::String) → core::String};
+      x = x.{core::String::+}("ri");
       throw 2;
     }
     on core::Object catch(final core::Object e) {
-      x = x.{core::String::+}("n"){(core::String) → core::String};
+      x = x.{core::String::+}("n");
     }
   finally {
-    return x.{core::String::+}("g"){(core::String) → core::String};
+    return x.{core::String::+}("g");
   }
 }
 static method notThrowStatement() → core::int {
   core::int count = 0;
   try {
-    for (core::int i = 0; i.{core::num::<}(1){(core::num) → core::bool}; throw "a") {
-      count = count.{core::num::+}(i){(core::num) → core::int};
+    for (core::int i = 0; i.{core::num::<}(1); throw "a") {
+      count = count.{core::num::+}(i);
     }
   }
   on core::Object catch(final core::Object e) {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.weak.transformed.expect
index f816401..1d0bf2c 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.weak.transformed.expect
@@ -43,7 +43,7 @@
 static method finallyReturn(dynamic error) → core::int {
   try
     try {
-      if(!(error =={core::Object::==}{(core::Object) → core::bool} 1))
+      if(!error.{core::Object::==}(1))
         throw error;
     }
     on core::int catch(final core::int e) {
@@ -58,7 +58,7 @@
 }
 static method finallyReturn1(core::int x) → core::int {
   try {
-    if(x =={core::num::==}{(core::Object) → core::bool} 1) {
+    if(x.{core::num::==}(1)) {
       throw x;
     }
     else {
@@ -75,7 +75,7 @@
     return x;
   }
   finally {
-    x = x.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(1);
   }
 }
 static method subtypeFn() → core::int {
@@ -90,21 +90,21 @@
   core::String x = "st";
   try
     try {
-      x = x.{core::String::+}("ri"){(core::String) → core::String};
+      x = x.{core::String::+}("ri");
       throw 2;
     }
     on core::Object catch(final core::Object e) {
-      x = x.{core::String::+}("n"){(core::String) → core::String};
+      x = x.{core::String::+}("n");
     }
   finally {
-    return x.{core::String::+}("g"){(core::String) → core::String};
+    return x.{core::String::+}("g");
   }
 }
 static method notThrowStatement() → core::int {
   core::int count = 0;
   try {
-    for (core::int i = 0; i.{core::num::<}(1){(core::num) → core::bool}; throw "a") {
-      count = count.{core::num::+}(i){(core::num) → core::int};
+    for (core::int i = 0; i.{core::num::<}(1); throw "a") {
+      count = count.{core::num::+}(i);
     }
   }
   on core::Object catch(final core::Object e) {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.strong.expect
index 233c4ee..3126895 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.strong.expect
@@ -49,7 +49,7 @@
 static const field core::int var5 = invalid-expression "Unhandled exception: \"a\"";
 static method finallyThrow(core::int x) → core::int {
   try {
-    if(x =={core::num::==}{(core::Object) → core::bool} 1) {
+    if(x.{core::num::==}(1)) {
       throw x;
     }
     else {
@@ -70,8 +70,8 @@
 }
 static method unhandledThrow2() → core::int {
   core::int count = 0;
-  for (core::int i = 0; i.{core::num::<}(1){(core::num) → core::bool}; throw "a") {
-    count = count.{core::num::+}(i){(core::num) → core::int};
+  for (core::int i = 0; i.{core::num::<}(1); throw "a") {
+    count = count.{core::num::+}(i);
   }
   return 0;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.strong.transformed.expect
index 233c4ee..3126895 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.strong.transformed.expect
@@ -49,7 +49,7 @@
 static const field core::int var5 = invalid-expression "Unhandled exception: \"a\"";
 static method finallyThrow(core::int x) → core::int {
   try {
-    if(x =={core::num::==}{(core::Object) → core::bool} 1) {
+    if(x.{core::num::==}(1)) {
       throw x;
     }
     else {
@@ -70,8 +70,8 @@
 }
 static method unhandledThrow2() → core::int {
   core::int count = 0;
-  for (core::int i = 0; i.{core::num::<}(1){(core::num) → core::bool}; throw "a") {
-    count = count.{core::num::+}(i){(core::num) → core::int};
+  for (core::int i = 0; i.{core::num::<}(1); throw "a") {
+    count = count.{core::num::+}(i);
   }
   return 0;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.weak.expect
index 233c4ee..3126895 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.weak.expect
@@ -49,7 +49,7 @@
 static const field core::int var5 = invalid-expression "Unhandled exception: \"a\"";
 static method finallyThrow(core::int x) → core::int {
   try {
-    if(x =={core::num::==}{(core::Object) → core::bool} 1) {
+    if(x.{core::num::==}(1)) {
       throw x;
     }
     else {
@@ -70,8 +70,8 @@
 }
 static method unhandledThrow2() → core::int {
   core::int count = 0;
-  for (core::int i = 0; i.{core::num::<}(1){(core::num) → core::bool}; throw "a") {
-    count = count.{core::num::+}(i){(core::num) → core::int};
+  for (core::int i = 0; i.{core::num::<}(1); throw "a") {
+    count = count.{core::num::+}(i);
   }
   return 0;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.weak.transformed.expect
index 233c4ee..3126895 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.weak.transformed.expect
@@ -49,7 +49,7 @@
 static const field core::int var5 = invalid-expression "Unhandled exception: \"a\"";
 static method finallyThrow(core::int x) → core::int {
   try {
-    if(x =={core::num::==}{(core::Object) → core::bool} 1) {
+    if(x.{core::num::==}(1)) {
       throw x;
     }
     else {
@@ -70,8 +70,8 @@
 }
 static method unhandledThrow2() → core::int {
   core::int count = 0;
-  for (core::int i = 0; i.{core::num::<}(1){(core::num) → core::bool}; throw "a") {
-    count = count.{core::num::+}(i){(core::num) → core::int};
+  for (core::int i = 0; i.{core::num::<}(1); throw "a") {
+    count = count.{core::num::+}(i);
   }
   return 0;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.strong.expect
index 704d914..7107ba3 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.strong.expect
@@ -18,14 +18,14 @@
 static method function() → core::int {
   function varAssignmentTest2() → core::int {
     core::int x = 2;
-    x = x.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(1);
     return x;
   }
   return #C1;
 }
 static method varAssignmentTest3(core::int a) → core::int {
   core::int x = 4;
-  x = a.{core::num::+}(1){(core::num) → core::int};
+  x = a.{core::num::+}(1);
   return x;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.strong.transformed.expect
index 704d914..7107ba3 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.strong.transformed.expect
@@ -18,14 +18,14 @@
 static method function() → core::int {
   function varAssignmentTest2() → core::int {
     core::int x = 2;
-    x = x.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(1);
     return x;
   }
   return #C1;
 }
 static method varAssignmentTest3(core::int a) → core::int {
   core::int x = 4;
-  x = a.{core::num::+}(1){(core::num) → core::int};
+  x = a.{core::num::+}(1);
   return x;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.weak.expect
index 704d914..7107ba3 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.weak.expect
@@ -18,14 +18,14 @@
 static method function() → core::int {
   function varAssignmentTest2() → core::int {
     core::int x = 2;
-    x = x.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(1);
     return x;
   }
   return #C1;
 }
 static method varAssignmentTest3(core::int a) → core::int {
   core::int x = 4;
-  x = a.{core::num::+}(1){(core::num) → core::int};
+  x = a.{core::num::+}(1);
   return x;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.weak.transformed.expect
index 704d914..7107ba3 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_variable_assignments.dart.weak.transformed.expect
@@ -18,14 +18,14 @@
 static method function() → core::int {
   function varAssignmentTest2() → core::int {
     core::int x = 2;
-    x = x.{core::num::+}(1){(core::num) → core::int};
+    x = x.{core::num::+}(1);
     return x;
   }
   return #C1;
 }
 static method varAssignmentTest3(core::int a) → core::int {
   core::int x = 4;
-  x = a.{core::num::+}(1){(core::num) → core::int};
+  x = a.{core::num::+}(1);
   return x;
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.strong.expect
index c8a68f5..d270f74 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.strong.expect
@@ -16,7 +16,7 @@
 static const field core::int var8 = #C5;
 static const field core::int? var9 = #C7;
 static method function1(core::int a, core::int b) → core::int {
-  core::int x = 1.{core::num::+}(a){(core::num) → core::int}.{core::num::+}(b){(core::num) → core::int};
+  core::int x = 1.{core::num::+}(a).{core::num::+}(b);
   return x;
 }
 static method function2() → core::String {
@@ -25,13 +25,13 @@
 }
 static method function3() → core::int {
   core::int first = 2;
-  core::int second = 2.{core::num::+}(first){(core::num) → core::int};
-  return 2.{core::num::+}(second){(core::num) → core::int};
+  core::int second = 2.{core::num::+}(first);
+  return 2.{core::num::+}(second);
 }
 static method function4() → core::int {
   core::int first = 2;
   core::int second = 0;
-  return first.{core::num::+}(second){(core::num) → core::int};
+  return first.{core::num::+}(second);
 }
 static method function5() → core::int {
   return #C6;
@@ -63,7 +63,7 @@
   exp::Expect::equals(#C3, "string");
   exp::Expect::equals(#C4, 6);
   exp::Expect::equals(#C5, 2);
-  exp::Expect::equals(#C6, 2.{core::int::unary-}(){() → core::int});
+  exp::Expect::equals(#C6, 2.{core::int::unary-}());
   exp::Expect::equals(#C5, 2);
   exp::Expect::equals(#C5, 2);
   exp::Expect::equals(#C5, 2);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.strong.transformed.expect
index 47af773..3ec97cd 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.strong.transformed.expect
@@ -16,7 +16,7 @@
 static const field core::int var8 = #C5;
 static const field core::int? var9 = #C7;
 static method function1(core::int a, core::int b) → core::int {
-  core::int x = 1.{core::num::+}(a){(core::num) → core::int}.{core::num::+}(b){(core::num) → core::int};
+  core::int x = 1.{core::num::+}(a).{core::num::+}(b);
   return x;
 }
 static method function2() → core::String {
@@ -25,13 +25,13 @@
 }
 static method function3() → core::int {
   core::int first = 2;
-  core::int second = 2.{core::num::+}(first){(core::num) → core::int};
-  return 2.{core::num::+}(second){(core::num) → core::int};
+  core::int second = 2.{core::num::+}(first);
+  return 2.{core::num::+}(second);
 }
 static method function4() → core::int {
   core::int first = 2;
   core::int second = 0;
-  return first.{core::num::+}(second){(core::num) → core::int};
+  return first.{core::num::+}(second);
 }
 static method function5() → core::int {
   return #C6;
@@ -63,7 +63,7 @@
   exp::Expect::equals(#C3, "string");
   exp::Expect::equals(#C4, 6);
   exp::Expect::equals(#C5, 2);
-  exp::Expect::equals(#C6, 2.{core::int::unary-}(){() → core::int});
+  exp::Expect::equals(#C6, 2.{core::int::unary-}());
   exp::Expect::equals(#C5, 2);
   exp::Expect::equals(#C5, 2);
   exp::Expect::equals(#C5, 2);
@@ -81,5 +81,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_variable_declarations.dart:77:23 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_variable_declarations.dart:77:23 -> IntConstant(-2)
 Extra constant evaluation: evaluated: 35, effectively constant: 1
diff --git a/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.weak.expect
index c8a68f5..d270f74 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.weak.expect
@@ -16,7 +16,7 @@
 static const field core::int var8 = #C5;
 static const field core::int? var9 = #C7;
 static method function1(core::int a, core::int b) → core::int {
-  core::int x = 1.{core::num::+}(a){(core::num) → core::int}.{core::num::+}(b){(core::num) → core::int};
+  core::int x = 1.{core::num::+}(a).{core::num::+}(b);
   return x;
 }
 static method function2() → core::String {
@@ -25,13 +25,13 @@
 }
 static method function3() → core::int {
   core::int first = 2;
-  core::int second = 2.{core::num::+}(first){(core::num) → core::int};
-  return 2.{core::num::+}(second){(core::num) → core::int};
+  core::int second = 2.{core::num::+}(first);
+  return 2.{core::num::+}(second);
 }
 static method function4() → core::int {
   core::int first = 2;
   core::int second = 0;
-  return first.{core::num::+}(second){(core::num) → core::int};
+  return first.{core::num::+}(second);
 }
 static method function5() → core::int {
   return #C6;
@@ -63,7 +63,7 @@
   exp::Expect::equals(#C3, "string");
   exp::Expect::equals(#C4, 6);
   exp::Expect::equals(#C5, 2);
-  exp::Expect::equals(#C6, 2.{core::int::unary-}(){() → core::int});
+  exp::Expect::equals(#C6, 2.{core::int::unary-}());
   exp::Expect::equals(#C5, 2);
   exp::Expect::equals(#C5, 2);
   exp::Expect::equals(#C5, 2);
diff --git a/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.weak.transformed.expect
index 47af773..3ec97cd 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_variable_declarations.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
 static const field core::int var8 = #C5;
 static const field core::int? var9 = #C7;
 static method function1(core::int a, core::int b) → core::int {
-  core::int x = 1.{core::num::+}(a){(core::num) → core::int}.{core::num::+}(b){(core::num) → core::int};
+  core::int x = 1.{core::num::+}(a).{core::num::+}(b);
   return x;
 }
 static method function2() → core::String {
@@ -25,13 +25,13 @@
 }
 static method function3() → core::int {
   core::int first = 2;
-  core::int second = 2.{core::num::+}(first){(core::num) → core::int};
-  return 2.{core::num::+}(second){(core::num) → core::int};
+  core::int second = 2.{core::num::+}(first);
+  return 2.{core::num::+}(second);
 }
 static method function4() → core::int {
   core::int first = 2;
   core::int second = 0;
-  return first.{core::num::+}(second){(core::num) → core::int};
+  return first.{core::num::+}(second);
 }
 static method function5() → core::int {
   return #C6;
@@ -63,7 +63,7 @@
   exp::Expect::equals(#C3, "string");
   exp::Expect::equals(#C4, 6);
   exp::Expect::equals(#C5, 2);
-  exp::Expect::equals(#C6, 2.{core::int::unary-}(){() → core::int});
+  exp::Expect::equals(#C6, 2.{core::int::unary-}());
   exp::Expect::equals(#C5, 2);
   exp::Expect::equals(#C5, 2);
   exp::Expect::equals(#C5, 2);
@@ -81,5 +81,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_variable_declarations.dart:77:23 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_functions_variable_declarations.dart:77:23 -> IntConstant(-2)
 Extra constant evaluation: evaluated: 35, effectively constant: 1
diff --git a/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.strong.expect
index b96eb2b..00d3c60 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.strong.expect
@@ -17,32 +17,32 @@
 static method fn(core::int a) → core::int {
   core::int b = a;
   core::int i = 0;
-  while (i.{core::num::<}(2){(core::num) → core::bool}) {
-    b = b.{core::num::+}(a){(core::num) → core::int};
-    i = i.{core::num::+}(1){(core::num) → core::int};
+  while (i.{core::num::<}(2)) {
+    b = b.{core::num::+}(a);
+    i = i.{core::num::+}(1);
   }
   return b;
 }
 static method fn1(core::int a) → core::int {
   core::int b = a;
   while (true) {
-    b = b.{core::num::*}(3){(core::num) → core::int};
-    if(b.{core::num::>}(10){(core::num) → core::bool})
+    b = b.{core::num::*}(3);
+    if(b.{core::num::>}(10))
       return b;
   }
 }
 static method fnContinue() → core::int {
   core::int a = 0;
   core::int i = 0;
-  while (i.{core::num::<}(5){(core::num) → core::bool})
+  while (i.{core::num::<}(5))
     #L1:
     {
-      if(i.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
-        i = i.{core::num::+}(1){(core::num) → core::int};
+      if(i.{core::num::%}(2).{core::num::==}(1)) {
+        i = i.{core::num::+}(1);
         break #L1;
       }
-      a = a.{core::num::+}(i){(core::num) → core::int};
-      i = i.{core::num::+}(1){(core::num) → core::int};
+      a = a.{core::num::+}(i);
+      i = i.{core::num::+}(1);
     }
   return a;
 }
@@ -50,11 +50,11 @@
   core::int b = a;
   core::int i = 0;
   #L2:
-  while (i.{core::num::<}(2){(core::num) → core::bool}) {
-    if(b =={core::num::==}{(core::Object) → core::bool} 2)
+  while (i.{core::num::<}(2)) {
+    if(b.{core::num::==}(2))
       break #L2;
-    b = b.{core::num::+}(a){(core::num) → core::int};
-    i = i.{core::num::+}(1){(core::num) → core::int};
+    b = b.{core::num::+}(a);
+    i = i.{core::num::+}(1);
   }
   return b;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.strong.transformed.expect
index b96eb2b..00d3c60 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.strong.transformed.expect
@@ -17,32 +17,32 @@
 static method fn(core::int a) → core::int {
   core::int b = a;
   core::int i = 0;
-  while (i.{core::num::<}(2){(core::num) → core::bool}) {
-    b = b.{core::num::+}(a){(core::num) → core::int};
-    i = i.{core::num::+}(1){(core::num) → core::int};
+  while (i.{core::num::<}(2)) {
+    b = b.{core::num::+}(a);
+    i = i.{core::num::+}(1);
   }
   return b;
 }
 static method fn1(core::int a) → core::int {
   core::int b = a;
   while (true) {
-    b = b.{core::num::*}(3){(core::num) → core::int};
-    if(b.{core::num::>}(10){(core::num) → core::bool})
+    b = b.{core::num::*}(3);
+    if(b.{core::num::>}(10))
       return b;
   }
 }
 static method fnContinue() → core::int {
   core::int a = 0;
   core::int i = 0;
-  while (i.{core::num::<}(5){(core::num) → core::bool})
+  while (i.{core::num::<}(5))
     #L1:
     {
-      if(i.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
-        i = i.{core::num::+}(1){(core::num) → core::int};
+      if(i.{core::num::%}(2).{core::num::==}(1)) {
+        i = i.{core::num::+}(1);
         break #L1;
       }
-      a = a.{core::num::+}(i){(core::num) → core::int};
-      i = i.{core::num::+}(1){(core::num) → core::int};
+      a = a.{core::num::+}(i);
+      i = i.{core::num::+}(1);
     }
   return a;
 }
@@ -50,11 +50,11 @@
   core::int b = a;
   core::int i = 0;
   #L2:
-  while (i.{core::num::<}(2){(core::num) → core::bool}) {
-    if(b =={core::num::==}{(core::Object) → core::bool} 2)
+  while (i.{core::num::<}(2)) {
+    if(b.{core::num::==}(2))
       break #L2;
-    b = b.{core::num::+}(a){(core::num) → core::int};
-    i = i.{core::num::+}(1){(core::num) → core::int};
+    b = b.{core::num::+}(a);
+    i = i.{core::num::+}(1);
   }
   return b;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.weak.expect
index b96eb2b..00d3c60 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.weak.expect
@@ -17,32 +17,32 @@
 static method fn(core::int a) → core::int {
   core::int b = a;
   core::int i = 0;
-  while (i.{core::num::<}(2){(core::num) → core::bool}) {
-    b = b.{core::num::+}(a){(core::num) → core::int};
-    i = i.{core::num::+}(1){(core::num) → core::int};
+  while (i.{core::num::<}(2)) {
+    b = b.{core::num::+}(a);
+    i = i.{core::num::+}(1);
   }
   return b;
 }
 static method fn1(core::int a) → core::int {
   core::int b = a;
   while (true) {
-    b = b.{core::num::*}(3){(core::num) → core::int};
-    if(b.{core::num::>}(10){(core::num) → core::bool})
+    b = b.{core::num::*}(3);
+    if(b.{core::num::>}(10))
       return b;
   }
 }
 static method fnContinue() → core::int {
   core::int a = 0;
   core::int i = 0;
-  while (i.{core::num::<}(5){(core::num) → core::bool})
+  while (i.{core::num::<}(5))
     #L1:
     {
-      if(i.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
-        i = i.{core::num::+}(1){(core::num) → core::int};
+      if(i.{core::num::%}(2).{core::num::==}(1)) {
+        i = i.{core::num::+}(1);
         break #L1;
       }
-      a = a.{core::num::+}(i){(core::num) → core::int};
-      i = i.{core::num::+}(1){(core::num) → core::int};
+      a = a.{core::num::+}(i);
+      i = i.{core::num::+}(1);
     }
   return a;
 }
@@ -50,11 +50,11 @@
   core::int b = a;
   core::int i = 0;
   #L2:
-  while (i.{core::num::<}(2){(core::num) → core::bool}) {
-    if(b =={core::num::==}{(core::Object) → core::bool} 2)
+  while (i.{core::num::<}(2)) {
+    if(b.{core::num::==}(2))
       break #L2;
-    b = b.{core::num::+}(a){(core::num) → core::int};
-    i = i.{core::num::+}(1){(core::num) → core::int};
+    b = b.{core::num::+}(a);
+    i = i.{core::num::+}(1);
   }
   return b;
 }
diff --git a/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.weak.transformed.expect
index b96eb2b..00d3c60 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_while_statements.dart.weak.transformed.expect
@@ -17,32 +17,32 @@
 static method fn(core::int a) → core::int {
   core::int b = a;
   core::int i = 0;
-  while (i.{core::num::<}(2){(core::num) → core::bool}) {
-    b = b.{core::num::+}(a){(core::num) → core::int};
-    i = i.{core::num::+}(1){(core::num) → core::int};
+  while (i.{core::num::<}(2)) {
+    b = b.{core::num::+}(a);
+    i = i.{core::num::+}(1);
   }
   return b;
 }
 static method fn1(core::int a) → core::int {
   core::int b = a;
   while (true) {
-    b = b.{core::num::*}(3){(core::num) → core::int};
-    if(b.{core::num::>}(10){(core::num) → core::bool})
+    b = b.{core::num::*}(3);
+    if(b.{core::num::>}(10))
       return b;
   }
 }
 static method fnContinue() → core::int {
   core::int a = 0;
   core::int i = 0;
-  while (i.{core::num::<}(5){(core::num) → core::bool})
+  while (i.{core::num::<}(5))
     #L1:
     {
-      if(i.{core::num::%}(2){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
-        i = i.{core::num::+}(1){(core::num) → core::int};
+      if(i.{core::num::%}(2).{core::num::==}(1)) {
+        i = i.{core::num::+}(1);
         break #L1;
       }
-      a = a.{core::num::+}(i){(core::num) → core::int};
-      i = i.{core::num::+}(1){(core::num) → core::int};
+      a = a.{core::num::+}(i);
+      i = i.{core::num::+}(1);
     }
   return a;
 }
@@ -50,11 +50,11 @@
   core::int b = a;
   core::int i = 0;
   #L2:
-  while (i.{core::num::<}(2){(core::num) → core::bool}) {
-    if(b =={core::num::==}{(core::Object) → core::bool} 2)
+  while (i.{core::num::<}(2)) {
+    if(b.{core::num::==}(2))
       break #L2;
-    b = b.{core::num::+}(a){(core::num) → core::int};
-    i = i.{core::num::+}(1){(core::num) → core::int};
+    b = b.{core::num::+}(a);
+    i = i.{core::num::+}(1);
   }
   return b;
 }
diff --git a/pkg/front_end/testcases/expression/class_capture.expression.yaml.expect b/pkg/front_end/testcases/expression/class_capture.expression.yaml.expect
index 2bf8abf..e05b4b1 100644
--- a/pkg/front_end/testcases/expression/class_capture.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_capture.expression.yaml.expect
@@ -2,5 +2,5 @@
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return () → dart.core::int* {
-    return this.{main::B::x}{dart.core::int*}.{dart.core::num::+}(this.{main::B::y}{dart.core::int*}){(dart.core::num*) →* dart.core::int*};
+    return this.{main::B::x}.{dart.core::num::+}(this.{main::B::y});
   };
diff --git a/pkg/front_end/testcases/expression/class_getter.expression.yaml.expect b/pkg/front_end/testcases/expression/class_getter.expression.yaml.expect
index d0eae14..e8e5846 100644
--- a/pkg/front_end/testcases/expression/class_getter.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_getter.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return this.{main::B::z}{dart.core::String*};
+  return this.{main::B::z};
diff --git a/pkg/front_end/testcases/expression/class_invalid_static_capture.expression.yaml.expect b/pkg/front_end/testcases/expression/class_invalid_static_capture.expression.yaml.expect
index 330d032..eb8b256 100644
--- a/pkg/front_end/testcases/expression/class_invalid_static_capture.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_invalid_static_capture.expression.yaml.expect
@@ -8,5 +8,5 @@
 }
 static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return () → dynamic {
-    return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'x'.\n() { return x + y; }\n            ^"{dynamic}.+(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:17: Error: Getter not found: 'y'.\n() { return x + y; }\n                ^");
+    return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'x'.\n() { return x + y; }\n            ^".+(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:17: Error: Getter not found: 'y'.\n() { return x + y; }\n                ^");
   };
diff --git a/pkg/front_end/testcases/expression/class_method.expression.yaml.expect b/pkg/front_end/testcases/expression/class_method.expression.yaml.expect
index f5bb3e4..5c85dec 100644
--- a/pkg/front_end/testcases/expression/class_method.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_method.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return this.{main::A::doit_with_this}(2){(dart.core::int*) →* dart.core::int*};
+  return this.{main::A::doit_with_this}(2);
diff --git a/pkg/front_end/testcases/expression/class_private_get.expression.yaml.expect b/pkg/front_end/testcases/expression/class_private_get.expression.yaml.expect
index b594541..1b23fa1 100644
--- a/pkg/front_end/testcases/expression/class_private_get.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_private_get.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return this.{main::B::_priv}{dart.core::int*};
+  return this.{main::B::_priv};
diff --git a/pkg/front_end/testcases/expression/class_private_method.expression.yaml.expect b/pkg/front_end/testcases/expression/class_private_method.expression.yaml.expect
index b1449b4..d945f2e 100644
--- a/pkg/front_end/testcases/expression/class_private_method.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_private_method.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return this.{main::B::_privMethod}{() →* void};
+  return this.{main::B::_privMethod};
diff --git a/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect b/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
index 18654e51..9fcf6bc 100644
--- a/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
@@ -4,8 +4,8 @@
               ^^^^^^^^^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return #lib1::globalVar.{dart.core::num::+}(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'staticVar'.\nglobalVar + staticVar + 5\n            ^^^^^^^^^"){(dart.core::num*) →* dart.core::num*}.{dart.core::num::+}(5){(dart.core::num*) →* dart.core::num*};
+  return #lib1::globalVar.{dart.core::num::+}(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'staticVar'.\nglobalVar + staticVar + 5\n            ^^^^^^^^^").{dart.core::num::+}(5);
 Errors: {
 }
 static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return #lib1::globalVar.{dart.core::num::+}(#lib1::MyClass::staticVar){(dart.core::num*) →* dart.core::int*}.{dart.core::num::+}(5){(dart.core::num*) →* dart.core::int*};
+  return #lib1::globalVar.{dart.core::num::+}(#lib1::MyClass::staticVar).{dart.core::num::+}(5);
diff --git a/pkg/front_end/testcases/expression/class_type_param_circular_reference.expression.yaml.expect b/pkg/front_end/testcases/expression/class_type_param_circular_reference.expression.yaml.expect
index 87b923b..efc0681 100644
--- a/pkg/front_end/testcases/expression/class_type_param_circular_reference.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_type_param_circular_reference.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return this.{main::MiddlewareApi::toString}(){() →* dart.core::String*};
+  return this.{main::MiddlewareApi::toString}();
diff --git a/pkg/front_end/testcases/expression/const_usage.expression.yaml.expect b/pkg/front_end/testcases/expression/const_usage.expression.yaml.expect
index 7253997..1d2b890 100644
--- a/pkg/front_end/testcases/expression/const_usage.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/const_usage.expression.yaml.expect
@@ -1,7 +1,7 @@
 Errors: {
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return (#C2).{main::ConstClass::x}{dart.core::int*};
+  return (#C2).{main::ConstClass::x};
 constants  {
   #C1 = 42
   #C2 = main::ConstClass {x:#C1}
diff --git a/pkg/front_end/testcases/expression/const_usage_class.expression.yaml.expect b/pkg/front_end/testcases/expression/const_usage_class.expression.yaml.expect
index 7253997..1d2b890 100644
--- a/pkg/front_end/testcases/expression/const_usage_class.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/const_usage_class.expression.yaml.expect
@@ -1,7 +1,7 @@
 Errors: {
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return (#C2).{main::ConstClass::x}{dart.core::int*};
+  return (#C2).{main::ConstClass::x};
 constants  {
   #C1 = 42
   #C2 = main::ConstClass {x:#C1}
diff --git a/pkg/front_end/testcases/expression/from_vm_cc_linked_hash_map.expression.yaml.expect b/pkg/front_end/testcases/expression/from_vm_cc_linked_hash_map.expression.yaml.expect
index b6b1ee0..6ca1293 100644
--- a/pkg/front_end/testcases/expression/from_vm_cc_linked_hash_map.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/from_vm_cc_linked_hash_map.expression.yaml.expect
@@ -2,20 +2,20 @@
 }
 method /*isLegacy, from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic a, dynamic b) → dynamic
   return ((dynamic a, dynamic b) → dart.core::bool* {
-    if(!(a{dynamic}._usedData =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b{dynamic}._usedData) || !(a{dynamic}._deletedKeys =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b{dynamic}._deletedKeys) || !(a{dynamic}._hashMask =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b{dynamic}._hashMask) || !(a{dynamic}._index{dynamic}.length =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b{dynamic}._index{dynamic}.length) || !(a{dynamic}._data{dynamic}.length =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b{dynamic}._data{dynamic}.length)) {
+    if(!a._usedData.{dart.core::Object::==}(b._usedData) || !a._deletedKeys.{dart.core::Object::==}(b._deletedKeys) || !a._hashMask.{dart.core::Object::==}(b._hashMask) || !a._index.length.{dart.core::Object::==}(b._index.length) || !a._data.length.{dart.core::Object::==}(b._data.length)) {
       return false;
     }
-    for (dart.core::int* i = 0; i.{dart.core::num::<}(a{dynamic}._index{dynamic}.length as{TypeError,ForDynamic} dart.core::num*){(dart.core::num*) →* dart.core::bool*}; i = i.{dart.core::num::+}(1){(dart.core::num*) →* dart.core::int*}) {
-      if(!(a{dynamic}._index{dynamic}.[](i) =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b{dynamic}._index{dynamic}.[](i))) {
+    for (dart.core::int* i = 0; i.{dart.core::num::<}(a._index.length as{TypeError,ForDynamic} dart.core::num*); i = i.{dart.core::num::+}(1)) {
+      if(!a._index.[](i).{dart.core::Object::==}(b._index.[](i))) {
         return false;
       }
     }
-    for (dart.core::int* i = 0; i.{dart.core::num::<}(a{dynamic}._data{dynamic}.length as{TypeError,ForDynamic} dart.core::num*){(dart.core::num*) →* dart.core::bool*}; i = i.{dart.core::num::+}(1){(dart.core::num*) →* dart.core::int*}) {
-      dynamic ad = a{dynamic}._data{dynamic}.[](i);
-      dynamic bd = b{dynamic}._data{dynamic}.[](i);
-      if(!dart.core::identical(ad, bd) && !(ad =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} a && bd =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b)) {
+    for (dart.core::int* i = 0; i.{dart.core::num::<}(a._data.length as{TypeError,ForDynamic} dart.core::num*); i = i.{dart.core::num::+}(1)) {
+      dynamic ad = a._data.[](i);
+      dynamic bd = b._data.[](i);
+      if(!dart.core::identical(ad, bd) && !(ad.{dart.core::Object::==}(a) && bd.{dart.core::Object::==}(b))) {
         return false;
       }
     }
     return true;
-  })(a, b){(dynamic, dynamic) →* dart.core::bool*};
+  }).call(a, b);
diff --git a/pkg/front_end/testcases/expression/invalid.expression.yaml.expect b/pkg/front_end/testcases/expression/invalid.expression.yaml.expect
index 9e16ada..7fc40b9 100644
--- a/pkg/front_end/testcases/expression/invalid.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/invalid.expression.yaml.expect
@@ -11,4 +11,4 @@
    ^^^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:1: Error: This couldn't be parsed.\n*foo(3,\n^"{dynamic}.*(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:2: Error: Method not found: 'foo'.\n*foo(3,\n ^^^");
+  return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:1: Error: This couldn't be parsed.\n*foo(3,\n^".*(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:2: Error: Method not found: 'foo'.\n*foo(3,\n ^^^");
diff --git a/pkg/front_end/testcases/expression/missing_variable_types.expression.yaml.expect b/pkg/front_end/testcases/expression/missing_variable_types.expression.yaml.expect
index 69d0373..cbffcf7 100644
--- a/pkg/front_end/testcases/expression/missing_variable_types.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/missing_variable_types.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic s) → dynamic
-  return this.{main::D::m}(this.{main::D::id}<dart.core::List<main::D::T*>*>((s = dart.core::_GrowableList::•<dynamic>(0)) as{TypeError} dart.core::List<main::D::T*>*){(dart.core::List<main::D::T*>*) →* dart.core::List<main::D::T*>*}){(dart.core::List<main::D::T*>*) →* dynamic};
+  return this.{main::D::m}(this.{main::D::id}<dart.core::List<main::D::T*>*>((s = dart.core::_GrowableList::•<dynamic>(0)) as{TypeError} dart.core::List<main::D::T*>*));
diff --git a/pkg/front_end/testcases/expression/param_capture.expression.yaml.expect b/pkg/front_end/testcases/expression/param_capture.expression.yaml.expect
index 3845731..ccedccc 100644
--- a/pkg/front_end/testcases/expression/param_capture.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/param_capture.expression.yaml.expect
@@ -2,5 +2,5 @@
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic x, dynamic y) → dynamic
   return () → Null {
-    x = x{dynamic}.+(y);
+    x = x.+(y);
   };
diff --git a/pkg/front_end/testcases/expression/param_conflict.expression.yaml.expect b/pkg/front_end/testcases/expression/param_conflict.expression.yaml.expect
index 34e5988..5c4a28c 100644
--- a/pkg/front_end/testcases/expression/param_conflict.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/param_conflict.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic dostat, dynamic y) → dynamic
-  return dostat{dynamic}.foo();
+  return dostat.foo();
diff --git a/pkg/front_end/testcases/expression/param_conflict_class.expression.yaml.expect b/pkg/front_end/testcases/expression/param_conflict_class.expression.yaml.expect
index 13e40f7..c66e526 100644
--- a/pkg/front_end/testcases/expression/param_conflict_class.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/param_conflict_class.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic A, dynamic y) → dynamic
-  return A{dynamic}.foo(y);
+  return A.foo(y);
diff --git a/pkg/front_end/testcases/expression/param_method.expression.yaml.expect b/pkg/front_end/testcases/expression/param_method.expression.yaml.expect
index 0d0326b..4f6b188 100644
--- a/pkg/front_end/testcases/expression/param_method.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/param_method.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic x, dynamic y) → dynamic
-  return x{dynamic}.foo(y);
+  return x.foo(y);
diff --git a/pkg/front_end/testcases/expression/regress_34224.expression.yaml.expect b/pkg/front_end/testcases/expression/regress_34224.expression.yaml.expect
index fd54faa..fd35ac2 100644
--- a/pkg/front_end/testcases/expression/regress_34224.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/regress_34224.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
 method /*isLegacy, from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return this.{dart.core::Object::toString}(){() →* dart.core::String*};
+  return this.{dart.core::Object::toString}();
diff --git a/pkg/front_end/testcases/expression/set_literal.expression.yaml.expect b/pkg/front_end/testcases/expression/set_literal.expression.yaml.expect
index 59ee272..88031b2 100644
--- a/pkg/front_end/testcases/expression/set_literal.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/set_literal.expression.yaml.expect
@@ -3,5 +3,5 @@
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return block {
     final dart.core::Set<dart.core::String*>* #t1 = new dart.collection::_CompactLinkedHashSet::•<dart.core::String*>();
-    #t1.{dart.core::Set::add}("a"){(dart.core::String*) →* dart.core::bool*};
+    #t1.{dart.core::Set::add}{Invariant}("a");
   } =>#t1;
diff --git a/pkg/front_end/testcases/extension_types/simple_getter_resolution.dart.strong.expect b/pkg/front_end/testcases/extension_types/simple_getter_resolution.dart.strong.expect
index f7bc273..8c6d2ea 100644
--- a/pkg/front_end/testcases/extension_types/simple_getter_resolution.dart.strong.expect
+++ b/pkg/front_end/testcases/extension_types/simple_getter_resolution.dart.strong.expect
@@ -23,7 +23,7 @@
 static method E|get#bar(lowered final self::A #this) → core::double
   return 3.14;
 static method test(self::A a, self::E e) → dynamic {
-  a.{self::A::foo}{core::int};
+  a.{self::A::foo};
   self::E|get#bar(a);
   invalid-expression "pkg/front_end/testcases/extension_types/simple_getter_resolution.dart:16:5: Error: The getter 'foo' isn't defined for the extension 'E'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'foo'.
diff --git a/pkg/front_end/testcases/extension_types/simple_getter_resolution.dart.weak.expect b/pkg/front_end/testcases/extension_types/simple_getter_resolution.dart.weak.expect
index f7bc273..8c6d2ea 100644
--- a/pkg/front_end/testcases/extension_types/simple_getter_resolution.dart.weak.expect
+++ b/pkg/front_end/testcases/extension_types/simple_getter_resolution.dart.weak.expect
@@ -23,7 +23,7 @@
 static method E|get#bar(lowered final self::A #this) → core::double
   return 3.14;
 static method test(self::A a, self::E e) → dynamic {
-  a.{self::A::foo}{core::int};
+  a.{self::A::foo};
   self::E|get#bar(a);
   invalid-expression "pkg/front_end/testcases/extension_types/simple_getter_resolution.dart:16:5: Error: The getter 'foo' isn't defined for the extension 'E'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'foo'.
diff --git a/pkg/front_end/testcases/extension_types/simple_method_resolution.dart.strong.expect b/pkg/front_end/testcases/extension_types/simple_method_resolution.dart.strong.expect
index 043030d..207f18f 100644
--- a/pkg/front_end/testcases/extension_types/simple_method_resolution.dart.strong.expect
+++ b/pkg/front_end/testcases/extension_types/simple_method_resolution.dart.strong.expect
@@ -21,11 +21,11 @@
   tearoff bar = self::E|get#bar;
 }
 static method E|bar(lowered final self::A #this) → void
-  return #this.{self::A::foo}(){() → void};
+  return #this.{self::A::foo}();
 static method E|get#bar(lowered final self::A #this) → () → void
   return () → void => self::E|bar(#this);
 static method test(self::A a, self::E e) → dynamic {
-  a.{self::A::foo}(){() → void};
+  a.{self::A::foo}();
   self::E|bar(a);
   invalid-expression "pkg/front_end/testcases/extension_types/simple_method_resolution.dart:16:5: Error: The method 'foo' isn't defined for the extension 'E'.
 Try correcting the name to the name of an existing method, or defining a method name 'foo'.
diff --git a/pkg/front_end/testcases/extension_types/simple_method_resolution.dart.weak.expect b/pkg/front_end/testcases/extension_types/simple_method_resolution.dart.weak.expect
index 043030d..207f18f 100644
--- a/pkg/front_end/testcases/extension_types/simple_method_resolution.dart.weak.expect
+++ b/pkg/front_end/testcases/extension_types/simple_method_resolution.dart.weak.expect
@@ -21,11 +21,11 @@
   tearoff bar = self::E|get#bar;
 }
 static method E|bar(lowered final self::A #this) → void
-  return #this.{self::A::foo}(){() → void};
+  return #this.{self::A::foo}();
 static method E|get#bar(lowered final self::A #this) → () → void
   return () → void => self::E|bar(#this);
 static method test(self::A a, self::E e) → dynamic {
-  a.{self::A::foo}(){() → void};
+  a.{self::A::foo}();
   self::E|bar(a);
   invalid-expression "pkg/front_end/testcases/extension_types/simple_method_resolution.dart:16:5: Error: The method 'foo' isn't defined for the extension 'E'.
 Try correcting the name to the name of an existing method, or defining a method name 'foo'.
diff --git a/pkg/front_end/testcases/extension_types/simple_operator_resolution.dart.strong.expect b/pkg/front_end/testcases/extension_types/simple_operator_resolution.dart.strong.expect
index 2ff87ce..80d58c8 100644
--- a/pkg/front_end/testcases/extension_types/simple_operator_resolution.dart.strong.expect
+++ b/pkg/front_end/testcases/extension_types/simple_operator_resolution.dart.strong.expect
@@ -43,10 +43,10 @@
 static method E|+(lowered final self::A #this, dynamic other) → dynamic
   return 42;
 static method test(self::A a, self::E e) → dynamic {
-  a.{self::A::*}("foobar"){(dynamic) → dynamic};
-  a.{self::A::[]}(0){(core::int) → dynamic};
-  a.{self::A::[]=}(0, "foobar"){(core::int, dynamic) → void};
-  a.{self::A::unary-}(){() → dynamic};
+  a.{self::A::*}("foobar");
+  a.{self::A::[]}(0);
+  a.{self::A::[]=}(0, "foobar");
+  a.{self::A::unary-}();
   self::E|+(a, "foobar");
   invalid-expression "pkg/front_end/testcases/extension_types/simple_operator_resolution.dart:23:5: Error: The operator '*' isn't defined for the extension 'E'.
 Try correcting the operator to an existing operator, or defining a '*' operator.
diff --git a/pkg/front_end/testcases/extension_types/simple_operator_resolution.dart.weak.expect b/pkg/front_end/testcases/extension_types/simple_operator_resolution.dart.weak.expect
index 2ff87ce..80d58c8 100644
--- a/pkg/front_end/testcases/extension_types/simple_operator_resolution.dart.weak.expect
+++ b/pkg/front_end/testcases/extension_types/simple_operator_resolution.dart.weak.expect
@@ -43,10 +43,10 @@
 static method E|+(lowered final self::A #this, dynamic other) → dynamic
   return 42;
 static method test(self::A a, self::E e) → dynamic {
-  a.{self::A::*}("foobar"){(dynamic) → dynamic};
-  a.{self::A::[]}(0){(core::int) → dynamic};
-  a.{self::A::[]=}(0, "foobar"){(core::int, dynamic) → void};
-  a.{self::A::unary-}(){() → dynamic};
+  a.{self::A::*}("foobar");
+  a.{self::A::[]}(0);
+  a.{self::A::[]=}(0, "foobar");
+  a.{self::A::unary-}();
   self::E|+(a, "foobar");
   invalid-expression "pkg/front_end/testcases/extension_types/simple_operator_resolution.dart:23:5: Error: The operator '*' isn't defined for the extension 'E'.
 Try correcting the operator to an existing operator, or defining a '*' operator.
diff --git a/pkg/front_end/testcases/extensions/call_methods.dart.weak.expect b/pkg/front_end/testcases/extensions/call_methods.dart.weak.expect
index 6f3ad1d..5a2ac69 100644
--- a/pkg/front_end/testcases/extensions/call_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/call_methods.dart.weak.expect
@@ -141,19 +141,19 @@
 static field core::String* topLevel1 = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
 Try removing the extra positional arguments.
 var topLevel1 = 1(10);
-                 ^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.(10);
+                 ^" in self::_extension#2|get#call(self::_extension#0|get#call(1)).call(10);
 static field core::String* topLevel2 = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
 Try removing the extra positional arguments.
 var topLevel2 = 1(\"10\");
-                 ^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.("10");
+                 ^" in self::_extension#2|get#call(self::_extension#0|get#call(1)).call("10");
 static field core::String* topLevel3 = let final Never* #t3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
 Try removing the extra positional arguments.
 var topLevel3 = 1.0(10);
-                   ^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.(10);
+                   ^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)).call(10);
 static field core::String* topLevel4 = let final Never* #t4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
 Try removing the extra positional arguments.
 var topLevel4 = 1.0(\"10\");
-                   ^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
+                   ^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)).call("10");
 static field self::A* a = new self::A::•();
 static field core::String* topLevel5 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:34:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
  - 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
@@ -173,25 +173,25 @@
 static method _extension#2|get#call(lowered final core::String* #this) → () →* core::String*
   return () → core::String* => "My name is String";
 static method main() → dynamic {
-  self::_extension#2|get#call("")(){() →* core::String*};
+  self::_extension#2|get#call("").call();
 }
 static method errors() → dynamic {
   let final Never* #t5 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:39:4: Error: Too many positional arguments: 0 allowed, but 1 found.
 Try removing the extra positional arguments.
   1(10);
-   ^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.(10);
+   ^" in self::_extension#2|get#call(self::_extension#0|get#call(1)).call(10);
   let final Never* #t6 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:40:4: Error: Too many positional arguments: 0 allowed, but 1 found.
 Try removing the extra positional arguments.
   1(\"10\");
-   ^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.("10");
+   ^" in self::_extension#2|get#call(self::_extension#0|get#call(1)).call("10");
   let final Never* #t7 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:41:6: Error: Too many positional arguments: 0 allowed, but 1 found.
 Try removing the extra positional arguments.
   1.0(10);
-     ^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.(10);
+     ^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)).call(10);
   let final Never* #t8 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:42:6: Error: Too many positional arguments: 0 allowed, but 1 found.
 Try removing the extra positional arguments.
   1.0(\"10\");
-     ^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
+     ^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)).call("10");
   self::A* a = new self::A::•();
   invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:44:4: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
  - 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
diff --git a/pkg/front_end/testcases/extensions/call_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/call_methods.dart.weak.transformed.expect
deleted file mode 100644
index 55e391b..0000000
--- a/pkg/front_end/testcases/extensions/call_methods.dart.weak.transformed.expect
+++ /dev/null
@@ -1,212 +0,0 @@
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
-// Try removing the extra positional arguments.
-// var topLevel1 = 1(10);
-//                  ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
-// Try removing the extra positional arguments.
-// var topLevel2 = 1("10");
-//                  ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
-// Try removing the extra positional arguments.
-// var topLevel3 = 1.0(10);
-//                    ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
-// Try removing the extra positional arguments.
-// var topLevel4 = 1.0("10");
-//                    ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:34:18: Error: Too many positional arguments: 0 allowed, but 1 found.
-// Try removing the extra positional arguments.
-// var topLevel5 = a(2);
-//                  ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:34:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
-//  - 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
-// Try changing 'call' to a method or explicitly invoke 'call'.
-// var topLevel5 = a(2);
-//                  ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:36:18: Error: Too many positional arguments: 0 allowed, but 2 found.
-// Try removing the extra positional arguments.
-// var topLevel6 = a(2, "3");
-//                  ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:36:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
-//  - 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
-// Try changing 'call' to a method or explicitly invoke 'call'.
-// var topLevel6 = a(2, "3");
-//                  ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:39:4: Error: Too many positional arguments: 0 allowed, but 1 found.
-// Try removing the extra positional arguments.
-//   1(10);
-//    ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:40:4: Error: Too many positional arguments: 0 allowed, but 1 found.
-// Try removing the extra positional arguments.
-//   1("10");
-//    ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:41:6: Error: Too many positional arguments: 0 allowed, but 1 found.
-// Try removing the extra positional arguments.
-//   1.0(10);
-//      ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:42:6: Error: Too many positional arguments: 0 allowed, but 1 found.
-// Try removing the extra positional arguments.
-//   1.0("10");
-//      ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:44:4: Error: Too many positional arguments: 0 allowed, but 1 found.
-// Try removing the extra positional arguments.
-//   a(2);
-//    ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:44:4: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
-//  - 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
-// Try changing 'call' to a method or explicitly invoke 'call'.
-//   a(2);
-//    ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:45:4: Error: Too many positional arguments: 0 allowed, but 2 found.
-// Try removing the extra positional arguments.
-//   a(2, "3");
-//    ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:45:4: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
-//  - 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
-// Try changing 'call' to a method or explicitly invoke 'call'.
-//   a(2, "3");
-//    ^
-//
-// pkg/front_end/testcases/extensions/call_methods.dart:47:4: Error: Cannot invoke an instance of 'B' because it declares 'call' to be something other than a method.
-//  - 'B' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
-// Try changing 'call' to a method or explicitly invoke 'call'.
-//   b();
-//    ^
-//
-import self as self;
-import "dart:core" as core;
-
-class A extends core::Object {
-  synthetic constructor •() → self::A*
-    : super core::Object::•()
-    ;
-  get call() → core::String*
-    return "My name is A";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-}
-class B extends core::Object {
-  synthetic constructor •() → self::B*
-    : super core::Object::•()
-    ;
-  get call() → () →* core::String*
-    return () → core::String* => "My name is B";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-}
-extension _extension#0 on core::int* {
-  get call = self::_extension#0|get#call;
-}
-extension _extension#1 on core::num* {
-  get call = self::_extension#1|get#call;
-}
-extension _extension#2 on core::String* {
-  get call = self::_extension#2|get#call;
-}
-static field core::String* topLevel1 = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
-Try removing the extra positional arguments.
-var topLevel1 = 1(10);
-                 ^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.(10);
-static field core::String* topLevel2 = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
-Try removing the extra positional arguments.
-var topLevel2 = 1(\"10\");
-                 ^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.("10");
-static field core::String* topLevel3 = let final Never* #t3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
-Try removing the extra positional arguments.
-var topLevel3 = 1.0(10);
-                   ^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.(10);
-static field core::String* topLevel4 = let final Never* #t4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
-Try removing the extra positional arguments.
-var topLevel4 = 1.0(\"10\");
-                   ^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
-static field self::A* a = new self::A::•();
-static field core::String* topLevel5 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:34:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- - 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
-Try changing 'call' to a method or explicitly invoke 'call'.
-var topLevel5 = a(2);
-                 ^";
-static field self::B* b = new self::B::•();
-static field core::String* topLevel6 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:36:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- - 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
-Try changing 'call' to a method or explicitly invoke 'call'.
-var topLevel6 = a(2, \"3\");
-                 ^";
-static method _extension#0|get#call(lowered final core::int* #this) → core::String*
-  return "My name is int";
-static method _extension#1|get#call(lowered final core::num* #this) → core::String*
-  return "My name is num";
-static method _extension#2|get#call(lowered final core::String* #this) → () →* core::String*
-  return () → core::String* => "My name is String";
-static method main() → dynamic {
-  self::_extension#2|get#call("")(){() →* core::String*};
-}
-static method errors() → dynamic {
-  let final Never* #t5 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:39:4: Error: Too many positional arguments: 0 allowed, but 1 found.
-Try removing the extra positional arguments.
-  1(10);
-   ^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.(10);
-  let final Never* #t6 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:40:4: Error: Too many positional arguments: 0 allowed, but 1 found.
-Try removing the extra positional arguments.
-  1(\"10\");
-   ^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.("10");
-  let final Never* #t7 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:41:6: Error: Too many positional arguments: 0 allowed, but 1 found.
-Try removing the extra positional arguments.
-  1.0(10);
-     ^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.(10);
-  let final Never* #t8 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:42:6: Error: Too many positional arguments: 0 allowed, but 1 found.
-Try removing the extra positional arguments.
-  1.0(\"10\");
-     ^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
-  self::A* a = new self::A::•();
-  invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:44:4: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- - 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
-Try changing 'call' to a method or explicitly invoke 'call'.
-  a(2);
-   ^";
-  invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:45:4: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- - 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
-Try changing 'call' to a method or explicitly invoke 'call'.
-  a(2, \"3\");
-   ^";
-  self::B* b = new self::B::•();
-  invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:47:4: Error: Cannot invoke an instance of 'B' because it declares 'call' to be something other than a method.
- - 'B' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
-Try changing 'call' to a method or explicitly invoke 'call'.
-  b();
-   ^";
-}
diff --git a/pkg/front_end/testcases/extensions/compounds.dart.weak.expect b/pkg/front_end/testcases/extensions/compounds.dart.weak.expect
index ccd5bd4..5174cae 100644
--- a/pkg/front_end/testcases/extensions/compounds.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/compounds.dart.weak.expect
@@ -8,11 +8,11 @@
     : self::Number::value = value, super core::Object::•()
     ;
   get hashCode() → core::int*
-    return this.{self::Number::value}{core::int*}.{core::num::hashCode}{core::int*};
+    return this.{self::Number::value}.{core::num::hashCode};
   operator ==(core::Object* other) → core::bool*
-    return other is self::Number* && this.{self::Number::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Number*}.{self::Number::value}{core::int*};
+    return other is self::Number* && this.{self::Number::value}.{core::num::==}(other{self::Number*}.{self::Number::value});
   method toString() → core::String*
-    return "Number(${this.{self::Number::value}{core::int*}})";
+    return "Number(${this.{self::Number::value}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -71,11 +71,11 @@
 }
 static method NumberExtension|+(lowered final self::Number* #this, core::Object* other) → self::Number* {
   if(other is core::int*) {
-    return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{core::int*}){(core::num*) →* core::int*});
+    return new self::Number::•(#this.{self::Number::value}.{core::num::+}(other{core::int*}));
   }
   else
     if(other is self::Number*) {
-      return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
+      return new self::Number::•(#this.{self::Number::value}.{core::num::+}(other{self::Number*}.{self::Number::value}));
     }
     else {
       throw new core::ArgumentError::•("${other}");
@@ -83,18 +83,18 @@
 }
 static method NumberExtension|-(lowered final self::Number* #this, core::Object* other) → self::Number* {
   if(other is core::int*) {
-    return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{core::int*}){(core::num*) →* core::int*});
+    return new self::Number::•(#this.{self::Number::value}.{core::num::-}(other{core::int*}));
   }
   else
     if(other is self::Number*) {
-      return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
+      return new self::Number::•(#this.{self::Number::value}.{core::num::-}(other{self::Number*}.{self::Number::value}));
     }
     else {
       throw new core::ArgumentError::•("${other}");
     }
 }
 static method ClassExtension|get#property(lowered final self::Class* #this) → self::Number*
-  return #this.{self::Class::field}{self::Number*};
+  return #this.{self::Class::field};
 static method ClassExtension|set#property(lowered final self::Class* #this, self::Number* value) → void {
   #this.{self::Class::field} = value;
 }
@@ -136,7 +136,7 @@
 static method ClassExtension|get#testImplicitProperties(lowered final self::Class* #this) → () →* dynamic
   return () → dynamic => self::ClassExtension|testImplicitProperties(#this);
 static method IntClassExtension|get#property(lowered final self::IntClass* #this) → core::int*
-  return #this.{self::IntClass::field}{core::int*};
+  return #this.{self::IntClass::field};
 static method IntClassExtension|set#property(lowered final self::IntClass* #this, core::int* value) → void {
   #this.{self::IntClass::field} = value;
 }
@@ -145,34 +145,34 @@
   core::int* n1 = 1;
   core::int* n2 = 2;
   self::expect(n0, self::IntClassExtension|get#property(#this));
-  self::expect(n1, let final core::int* #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
-  self::expect(n2, let final core::int* #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
-  self::expect(n0, let final core::int* #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
-  self::expect(n1, let final core::int* #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
-  self::expect(n0, let final core::int* #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
-  self::expect(n1, let final core::int* #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
-  self::expect(n0, let final core::int* #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
-  self::expect(n0, let final core::int* #t37 = self::IntClassExtension|get#property(#this) in let final core::int* #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num*) →* core::int*}) in #t37);
-  self::expect(n1, let final core::int* #t39 = self::IntClassExtension|get#property(#this) in let final core::int* #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num*) →* core::int*}) in #t39);
+  self::expect(n1, let final core::int* #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1) in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
+  self::expect(n2, let final core::int* #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1) in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
+  self::expect(n0, let final core::int* #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2) in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
+  self::expect(n1, let final core::int* #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1) in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
+  self::expect(n0, let final core::int* #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1) in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
+  self::expect(n1, let final core::int* #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1) in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
+  self::expect(n0, let final core::int* #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1) in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
+  self::expect(n0, let final core::int* #t37 = self::IntClassExtension|get#property(#this) in let final core::int* #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1)) in #t37);
+  self::expect(n1, let final core::int* #t39 = self::IntClassExtension|get#property(#this) in let final core::int* #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1)) in #t39);
   self::expect(n0, self::IntClassExtension|get#property(#this));
   self::expect(n0, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1));
   self::expect(n1, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1));
   self::expect(n2, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2));
   self::expect(n0, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1));
   self::expect(n1, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1));
   self::expect(n0, self::IntClassExtension|get#property(#this));
-  let final core::int* #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
+  let final core::int* #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1) in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
   self::expect(n1, self::IntClassExtension|get#property(#this));
-  let final core::int* #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
+  let final core::int* #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1) in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
   self::expect(n0, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1));
   self::expect(n1, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1));
   self::expect(n0, self::IntClassExtension|get#property(#this));
 }
 static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass* #this) → () →* dynamic
@@ -231,36 +231,36 @@
   self::Number* n1 = new self::Number::•(1);
   self::Number* n2 = new self::Number::•(2);
   self::Class* v = new self::Class::•(n0);
-  self::expect(n0, v.{self::Class::field}{self::Number*});
-  self::expect(n1, let final self::Class* #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number*}, n1));
-  self::expect(n2, let final self::Class* #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number*}, n1));
-  self::expect(n0, let final self::Class* #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number*}, n2));
-  self::expect(n1, let final self::Class* #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number*}, n1));
-  self::expect(n0, let final self::Class* #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number*}, n1));
-  self::expect(n1, let final self::Class* #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number*}, 1));
-  self::expect(n0, let final self::Class* #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number*}, 1));
-  self::expect(n0, let final self::Class* #t56 = v in let final self::Number* #t57 = #t56.{self::Class::field}{self::Number*} in let final self::Number* #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
-  self::expect(n1, let final self::Class* #t59 = v in let final self::Number* #t60 = #t59.{self::Class::field}{self::Number*} in let final self::Number* #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
-  self::expect(n0, v.{self::Class::field}{self::Number*});
-  self::expect(n0, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number*}, n1);
-  self::expect(n1, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number*}, n1);
-  self::expect(n2, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number*}, n2);
-  self::expect(n0, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number*}, n1);
-  self::expect(n1, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number*}, n1);
-  self::expect(n0, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number*}, 1);
-  self::expect(n1, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number*}, 1);
-  self::expect(n0, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number*}, 1);
-  self::expect(n1, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number*}, 1);
-  self::expect(n0, v.{self::Class::field}{self::Number*});
+  self::expect(n0, v.{self::Class::field});
+  self::expect(n1, let final self::Class* #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}, n1));
+  self::expect(n2, let final self::Class* #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}, n1));
+  self::expect(n0, let final self::Class* #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}, n2));
+  self::expect(n1, let final self::Class* #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}, n1));
+  self::expect(n0, let final self::Class* #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}, n1));
+  self::expect(n1, let final self::Class* #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}, 1));
+  self::expect(n0, let final self::Class* #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}, 1));
+  self::expect(n0, let final self::Class* #t56 = v in let final self::Number* #t57 = #t56.{self::Class::field} in let final self::Number* #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
+  self::expect(n1, let final self::Class* #t59 = v in let final self::Number* #t60 = #t59.{self::Class::field} in let final self::Number* #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
+  self::expect(n0, v.{self::Class::field});
+  self::expect(n0, v.{self::Class::field});
+  let final self::Class* #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}, n1);
+  self::expect(n1, v.{self::Class::field});
+  let final self::Class* #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}, n1);
+  self::expect(n2, v.{self::Class::field});
+  let final self::Class* #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}, n2);
+  self::expect(n0, v.{self::Class::field});
+  let final self::Class* #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}, n1);
+  self::expect(n1, v.{self::Class::field});
+  let final self::Class* #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}, n1);
+  self::expect(n0, v.{self::Class::field});
+  let final self::Class* #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}, 1);
+  self::expect(n1, v.{self::Class::field});
+  let final self::Class* #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}, 1);
+  self::expect(n0, v.{self::Class::field});
+  let final self::Class* #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}, 1);
+  self::expect(n1, v.{self::Class::field});
+  let final self::Class* #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}, 1);
+  self::expect(n0, v.{self::Class::field});
   self::expect(n0, self::ClassExtension|get#property(v));
   self::expect(n1, let final self::Class* #t71 = v in let final self::Number* #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
   self::expect(n2, let final self::Class* #t74 = v in let final self::Number* #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
@@ -297,65 +297,65 @@
   core::int* n1 = 1;
   core::int* n2 = 2;
   self::IntClass* v = new self::IntClass::•(n0);
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
-  self::expect(n1, let final self::IntClass* #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
-  self::expect(n2, let final self::IntClass* #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*});
-  self::expect(n1, let final self::IntClass* #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*});
-  self::expect(n1, let final self::IntClass* #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t118 = v in let final core::int* #t119 = #t118.{self::IntClass::field}{core::int*} in let final core::int* #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num*) →* core::int*} in #t119);
-  self::expect(n1, let final self::IntClass* #t121 = v in let final core::int* #t122 = #t121.{self::IntClass::field}{core::int*} in let final core::int* #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num*) →* core::int*} in #t122);
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
-  self::expect(n1, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
-  self::expect(n2, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*};
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
-  self::expect(n1, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*};
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-  self::expect(n1, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-  self::expect(n1, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
+  self::expect(n0, v.{self::IntClass::field});
+  self::expect(n1, let final self::IntClass* #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}.{core::num::+}(n1));
+  self::expect(n2, let final self::IntClass* #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}.{core::num::+}(n1));
+  self::expect(n0, let final self::IntClass* #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}.{core::num::-}(n2));
+  self::expect(n1, let final self::IntClass* #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}.{core::num::+}(n1));
+  self::expect(n0, let final self::IntClass* #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}.{core::num::-}(n1));
+  self::expect(n1, let final self::IntClass* #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}.{core::num::+}(1));
+  self::expect(n0, let final self::IntClass* #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}.{core::num::-}(1));
+  self::expect(n0, let final self::IntClass* #t118 = v in let final core::int* #t119 = #t118.{self::IntClass::field} in let final core::int* #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1) in #t119);
+  self::expect(n1, let final self::IntClass* #t121 = v in let final core::int* #t122 = #t121.{self::IntClass::field} in let final core::int* #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1) in #t122);
+  self::expect(n0, v.{self::IntClass::field});
+  self::expect(n0, v.{self::IntClass::field});
+  let final self::IntClass* #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}.{core::num::+}(n1);
+  self::expect(n1, v.{self::IntClass::field});
+  let final self::IntClass* #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}.{core::num::+}(n1);
+  self::expect(n2, v.{self::IntClass::field});
+  let final self::IntClass* #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}.{core::num::-}(n2);
+  self::expect(n0, v.{self::IntClass::field});
+  let final self::IntClass* #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}.{core::num::+}(n1);
+  self::expect(n1, v.{self::IntClass::field});
+  let final self::IntClass* #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}.{core::num::-}(n1);
+  self::expect(n0, v.{self::IntClass::field});
+  let final self::IntClass* #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}.{core::num::+}(1);
+  self::expect(n1, v.{self::IntClass::field});
+  let final self::IntClass* #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}.{core::num::-}(1);
+  self::expect(n0, v.{self::IntClass::field});
+  let final self::IntClass* #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}.{core::num::+}(1);
+  self::expect(n1, v.{self::IntClass::field});
+  let final self::IntClass* #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}.{core::num::-}(1);
+  self::expect(n0, v.{self::IntClass::field});
   self::expect(n0, self::IntClassExtension|get#property(v));
-  self::expect(n1, let final self::IntClass* #t133 = v in let final core::int* #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
-  self::expect(n2, let final self::IntClass* #t136 = v in let final core::int* #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
-  self::expect(n0, let final self::IntClass* #t139 = v in let final core::int* #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
-  self::expect(n1, let final self::IntClass* #t142 = v in let final core::int* #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
-  self::expect(n0, let final self::IntClass* #t145 = v in let final core::int* #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
-  self::expect(n1, let final self::IntClass* #t148 = v in let final core::int* #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
-  self::expect(n0, let final self::IntClass* #t151 = v in let final core::int* #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
-  self::expect(n0, let final self::IntClass* #t154 = v in let final core::int* #t155 = self::IntClassExtension|get#property(#t154) in let final core::int* #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num*) →* core::int*}) in #t155);
-  self::expect(n1, let final self::IntClass* #t157 = v in let final core::int* #t158 = self::IntClassExtension|get#property(#t157) in let final core::int* #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num*) →* core::int*}) in #t158);
+  self::expect(n1, let final self::IntClass* #t133 = v in let final core::int* #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1) in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
+  self::expect(n2, let final self::IntClass* #t136 = v in let final core::int* #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1) in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
+  self::expect(n0, let final self::IntClass* #t139 = v in let final core::int* #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2) in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
+  self::expect(n1, let final self::IntClass* #t142 = v in let final core::int* #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1) in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
+  self::expect(n0, let final self::IntClass* #t145 = v in let final core::int* #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1) in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
+  self::expect(n1, let final self::IntClass* #t148 = v in let final core::int* #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1) in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
+  self::expect(n0, let final self::IntClass* #t151 = v in let final core::int* #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1) in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
+  self::expect(n0, let final self::IntClass* #t154 = v in let final core::int* #t155 = self::IntClassExtension|get#property(#t154) in let final core::int* #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1)) in #t155);
+  self::expect(n1, let final self::IntClass* #t157 = v in let final core::int* #t158 = self::IntClassExtension|get#property(#t157) in let final core::int* #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1)) in #t158);
   self::expect(n0, self::IntClassExtension|get#property(v));
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1));
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1));
   self::expect(n2, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num*) →* core::int*});
+  let final self::IntClass* #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2));
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1));
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1));
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t165 = v in let final core::int* #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
+  let final self::IntClass* #t165 = v in let final core::int* #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1) in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t168 = v in let final core::int* #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
+  let final self::IntClass* #t168 = v in let final core::int* #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1) in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num*) →* core::int*});
+  let final self::IntClass* #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1));
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num*) →* core::int*});
+  let final self::IntClass* #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1));
   self::expect(n0, self::IntClassExtension|get#property(v));
 }
 static method testExplicitProperties() → dynamic {
@@ -400,111 +400,111 @@
   core::int* n2 = 2;
   self::IntClass* v = new self::IntClass::•(n0);
   self::expect(n0, self::IntClassExtension|get#property(v));
-  self::expect(n1, let final self::IntClass* #t217 = v in let final core::int* #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
-  self::expect(n2, let final self::IntClass* #t220 = v in let final core::int* #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
-  self::expect(n0, let final self::IntClass* #t223 = v in let final core::int* #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
-  self::expect(n1, let final self::IntClass* #t226 = v in let final core::int* #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
-  self::expect(n0, let final self::IntClass* #t229 = v in let final core::int* #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
-  self::expect(n1, let final self::IntClass* #t232 = v in let final core::int* #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
-  self::expect(n0, let final self::IntClass* #t235 = v in let final core::int* #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
-  self::expect(n0, let final self::IntClass* #t238 = v in let final core::int* #t239 = self::IntClassExtension|get#property(#t238) in let final core::int* #t240 = let final core::int* #t241 = #t239.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
-  self::expect(n1, let final self::IntClass* #t243 = v in let final core::int* #t244 = self::IntClassExtension|get#property(#t243) in let final core::int* #t245 = let final core::int* #t246 = #t244.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
+  self::expect(n1, let final self::IntClass* #t217 = v in let final core::int* #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1) in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
+  self::expect(n2, let final self::IntClass* #t220 = v in let final core::int* #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1) in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
+  self::expect(n0, let final self::IntClass* #t223 = v in let final core::int* #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2) in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
+  self::expect(n1, let final self::IntClass* #t226 = v in let final core::int* #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1) in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
+  self::expect(n0, let final self::IntClass* #t229 = v in let final core::int* #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1) in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
+  self::expect(n1, let final self::IntClass* #t232 = v in let final core::int* #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1) in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
+  self::expect(n0, let final self::IntClass* #t235 = v in let final core::int* #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1) in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
+  self::expect(n0, let final self::IntClass* #t238 = v in let final core::int* #t239 = self::IntClassExtension|get#property(#t238) in let final core::int* #t240 = let final core::int* #t241 = #t239.{core::num::+}(1) in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
+  self::expect(n1, let final self::IntClass* #t243 = v in let final core::int* #t244 = self::IntClassExtension|get#property(#t243) in let final core::int* #t245 = let final core::int* #t246 = #t244.{core::num::-}(1) in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
   self::expect(n0, self::IntClassExtension|get#property(v));
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1));
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1));
   self::expect(n2, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num*) →* core::int*});
+  let final self::IntClass* #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2));
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1));
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1));
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t253 = v in let final core::int* #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
+  let final self::IntClass* #t253 = v in let final core::int* #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1) in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t256 = v in let final core::int* #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
+  let final self::IntClass* #t256 = v in let final core::int* #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1) in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num*) →* core::int*});
+  let final self::IntClass* #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1));
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num*) →* core::int*});
+  let final self::IntClass* #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1));
   self::expect(n0, self::IntClassExtension|get#property(v));
 }
 static method testExplicitNullAwareProperties(self::Class* v) → dynamic {
   self::Number* n0 = new self::Number::•(0);
   self::Number* n1 = new self::Number::•(1);
   self::Number* n2 = new self::Number::•(2);
-  self::expect(n0, let final self::Class* #t261 = v in #t261 == null ?{self::Number*} null : self::ClassExtension|get#property(#t261), v == null);
-  self::expect(n1, let final self::Class* #t262 = v in #t262 == null ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v == null);
-  self::expect(n2, let final self::Class* #t265 = v in #t265 == null ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v == null);
-  self::expect(n0, let final self::Class* #t268 = v in #t268 == null ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v == null);
-  self::expect(n1, let final self::Class* #t271 = v in #t271 == null ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v == null);
-  self::expect(n0, let final self::Class* #t274 = v in #t274 == null ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v == null);
-  self::expect(n1, let final self::Class* #t277 = v in #t277 == null ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v == null);
-  self::expect(n0, let final self::Class* #t280 = v in #t280 == null ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v == null);
-  self::expect(n0, let final self::Class* #t283 = v in #t283 == null ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v == null);
-  self::expect(n1, let final self::Class* #t288 = v in #t288 == null ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v == null);
-  self::expect(n0, let final self::Class* #t293 = v in #t293 == null ?{self::Number*} null : self::ClassExtension|get#property(#t293), v == null);
-  self::expect(n0, let final self::Class* #t294 = v in #t294 == null ?{self::Number*} null : self::ClassExtension|get#property(#t294), v == null);
-  let final self::Class* #t295 = v in #t295 == null ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
-  self::expect(n1, let final self::Class* #t296 = v in #t296 == null ?{self::Number*} null : self::ClassExtension|get#property(#t296), v == null);
-  let final self::Class* #t297 = v in #t297 == null ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
-  self::expect(n2, let final self::Class* #t298 = v in #t298 == null ?{self::Number*} null : self::ClassExtension|get#property(#t298), v == null);
-  let final self::Class* #t299 = v in #t299 == null ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
-  self::expect(n0, let final self::Class* #t300 = v in #t300 == null ?{self::Number*} null : self::ClassExtension|get#property(#t300), v == null);
-  let final self::Class* #t301 = v in #t301 == null ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
-  self::expect(n1, let final self::Class* #t302 = v in #t302 == null ?{self::Number*} null : self::ClassExtension|get#property(#t302), v == null);
-  let final self::Class* #t303 = v in #t303 == null ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
-  self::expect(n0, let final self::Class* #t304 = v in #t304 == null ?{self::Number*} null : self::ClassExtension|get#property(#t304), v == null);
-  let final self::Class* #t305 = v in #t305 == null ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
-  self::expect(n1, let final self::Class* #t308 = v in #t308 == null ?{self::Number*} null : self::ClassExtension|get#property(#t308), v == null);
-  let final self::Class* #t309 = v in #t309 == null ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
-  self::expect(n0, let final self::Class* #t312 = v in #t312 == null ?{self::Number*} null : self::ClassExtension|get#property(#t312), v == null);
-  let final self::Class* #t313 = v in #t313 == null ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
-  self::expect(n1, let final self::Class* #t314 = v in #t314 == null ?{self::Number*} null : self::ClassExtension|get#property(#t314), v == null);
-  let final self::Class* #t315 = v in #t315 == null ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
-  self::expect(n0, let final self::Class* #t316 = v in #t316 == null ?{self::Number*} null : self::ClassExtension|get#property(#t316), v == null);
+  self::expect(n0, let final self::Class* #t261 = v in #t261.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t261), v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t262 = v in #t262.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v.{self::Class::==}(null));
+  self::expect(n2, let final self::Class* #t265 = v in #t265.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t268 = v in #t268.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t271 = v in #t271.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t274 = v in #t274.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t277 = v in #t277.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t280 = v in #t280.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t283 = v in #t283.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t288 = v in #t288.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t293 = v in #t293.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t293), v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t294 = v in #t294.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t294), v.{self::Class::==}(null));
+  let final self::Class* #t295 = v in #t295.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
+  self::expect(n1, let final self::Class* #t296 = v in #t296.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t296), v.{self::Class::==}(null));
+  let final self::Class* #t297 = v in #t297.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
+  self::expect(n2, let final self::Class* #t298 = v in #t298.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t298), v.{self::Class::==}(null));
+  let final self::Class* #t299 = v in #t299.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
+  self::expect(n0, let final self::Class* #t300 = v in #t300.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t300), v.{self::Class::==}(null));
+  let final self::Class* #t301 = v in #t301.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
+  self::expect(n1, let final self::Class* #t302 = v in #t302.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t302), v.{self::Class::==}(null));
+  let final self::Class* #t303 = v in #t303.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
+  self::expect(n0, let final self::Class* #t304 = v in #t304.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t304), v.{self::Class::==}(null));
+  let final self::Class* #t305 = v in #t305.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
+  self::expect(n1, let final self::Class* #t308 = v in #t308.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t308), v.{self::Class::==}(null));
+  let final self::Class* #t309 = v in #t309.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
+  self::expect(n0, let final self::Class* #t312 = v in #t312.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t312), v.{self::Class::==}(null));
+  let final self::Class* #t313 = v in #t313.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
+  self::expect(n1, let final self::Class* #t314 = v in #t314.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t314), v.{self::Class::==}(null));
+  let final self::Class* #t315 = v in #t315.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
+  self::expect(n0, let final self::Class* #t316 = v in #t316.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t316), v.{self::Class::==}(null));
 }
 static method testExplicitNullAwareIntProperties(self::IntClass* v) → dynamic {
   core::int* n0 = 0;
   core::int* n1 = 1;
   core::int* n2 = 2;
-  self::expect(n0, let final self::IntClass* #t317 = v in #t317 == null ?{core::int*} null : self::IntClassExtension|get#property(#t317), v == null);
-  self::expect(n1, let final self::IntClass* #t318 = v in #t318 == null ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v == null);
-  self::expect(n2, let final self::IntClass* #t321 = v in #t321 == null ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v == null);
-  self::expect(n0, let final self::IntClass* #t324 = v in #t324 == null ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v == null);
-  self::expect(n1, let final self::IntClass* #t327 = v in #t327 == null ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v == null);
-  self::expect(n0, let final self::IntClass* #t330 = v in #t330 == null ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v == null);
-  self::expect(n1, let final self::IntClass* #t333 = v in #t333 == null ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v == null);
-  self::expect(n0, let final self::IntClass* #t336 = v in #t336 == null ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v == null);
-  self::expect(n0, let final self::IntClass* #t339 = v in #t339 == null ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v == null);
-  self::expect(n1, let final self::IntClass* #t344 = v in #t344 == null ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v == null);
-  self::expect(n0, let final self::IntClass* #t349 = v in #t349 == null ?{core::int*} null : self::IntClassExtension|get#property(#t349), v == null);
-  self::expect(n0, let final self::IntClass* #t350 = v in #t350 == null ?{core::int*} null : self::IntClassExtension|get#property(#t350), v == null);
-  let final self::IntClass* #t351 = v in #t351 == null ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1){(core::num*) →* core::int*});
-  self::expect(n1, let final self::IntClass* #t352 = v in #t352 == null ?{core::int*} null : self::IntClassExtension|get#property(#t352), v == null);
-  let final self::IntClass* #t353 = v in #t353 == null ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1){(core::num*) →* core::int*});
-  self::expect(n2, let final self::IntClass* #t354 = v in #t354 == null ?{core::int*} null : self::IntClassExtension|get#property(#t354), v == null);
-  let final self::IntClass* #t355 = v in #t355 == null ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t356 = v in #t356 == null ?{core::int*} null : self::IntClassExtension|get#property(#t356), v == null);
-  let final self::IntClass* #t357 = v in #t357 == null ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1){(core::num*) →* core::int*});
-  self::expect(n1, let final self::IntClass* #t358 = v in #t358 == null ?{core::int*} null : self::IntClassExtension|get#property(#t358), v == null);
-  let final self::IntClass* #t359 = v in #t359 == null ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t360 = v in #t360 == null ?{core::int*} null : self::IntClassExtension|get#property(#t360), v == null);
-  let final self::IntClass* #t361 = v in #t361 == null ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
-  self::expect(n1, let final self::IntClass* #t364 = v in #t364 == null ?{core::int*} null : self::IntClassExtension|get#property(#t364), v == null);
-  let final self::IntClass* #t365 = v in #t365 == null ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
-  self::expect(n0, let final self::IntClass* #t368 = v in #t368 == null ?{core::int*} null : self::IntClassExtension|get#property(#t368), v == null);
-  let final self::IntClass* #t369 = v in #t369 == null ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1){(core::num*) →* core::int*});
-  self::expect(n1, let final self::IntClass* #t370 = v in #t370 == null ?{core::int*} null : self::IntClassExtension|get#property(#t370), v == null);
-  let final self::IntClass* #t371 = v in #t371 == null ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t372 = v in #t372 == null ?{core::int*} null : self::IntClassExtension|get#property(#t372), v == null);
+  self::expect(n0, let final self::IntClass* #t317 = v in #t317.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t317), v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t318 = v in #t318.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1) in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v.{self::IntClass::==}(null));
+  self::expect(n2, let final self::IntClass* #t321 = v in #t321.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1) in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t324 = v in #t324.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2) in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t327 = v in #t327.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1) in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t330 = v in #t330.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1) in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t333 = v in #t333.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1) in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t336 = v in #t336.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1) in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t339 = v in #t339.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1) in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t344 = v in #t344.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1) in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t349 = v in #t349.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t349), v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t350 = v in #t350.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t350), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t351 = v in #t351.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1));
+  self::expect(n1, let final self::IntClass* #t352 = v in #t352.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t352), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t353 = v in #t353.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1));
+  self::expect(n2, let final self::IntClass* #t354 = v in #t354.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t354), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t355 = v in #t355.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2));
+  self::expect(n0, let final self::IntClass* #t356 = v in #t356.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t356), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t357 = v in #t357.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1));
+  self::expect(n1, let final self::IntClass* #t358 = v in #t358.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t358), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t359 = v in #t359.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1));
+  self::expect(n0, let final self::IntClass* #t360 = v in #t360.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t360), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t361 = v in #t361.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1) in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
+  self::expect(n1, let final self::IntClass* #t364 = v in #t364.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t364), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t365 = v in #t365.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1) in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
+  self::expect(n0, let final self::IntClass* #t368 = v in #t368.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t368), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t369 = v in #t369.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1));
+  self::expect(n1, let final self::IntClass* #t370 = v in #t370.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t370), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t371 = v in #t371.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1));
+  self::expect(n0, let final self::IntClass* #t372 = v in #t372.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t372), v.{self::IntClass::==}(null));
 }
 static method expect(dynamic expected, dynamic actual, [dynamic expectNull = #C1]) → dynamic {
   if(expectNull as{TypeError,ForDynamic} core::bool*) {
     expected = null;
   }
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/compounds.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/compounds.dart.weak.transformed.expect
index ccd5bd4..5174cae 100644
--- a/pkg/front_end/testcases/extensions/compounds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/compounds.dart.weak.transformed.expect
@@ -8,11 +8,11 @@
     : self::Number::value = value, super core::Object::•()
     ;
   get hashCode() → core::int*
-    return this.{self::Number::value}{core::int*}.{core::num::hashCode}{core::int*};
+    return this.{self::Number::value}.{core::num::hashCode};
   operator ==(core::Object* other) → core::bool*
-    return other is self::Number* && this.{self::Number::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Number*}.{self::Number::value}{core::int*};
+    return other is self::Number* && this.{self::Number::value}.{core::num::==}(other{self::Number*}.{self::Number::value});
   method toString() → core::String*
-    return "Number(${this.{self::Number::value}{core::int*}})";
+    return "Number(${this.{self::Number::value}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -71,11 +71,11 @@
 }
 static method NumberExtension|+(lowered final self::Number* #this, core::Object* other) → self::Number* {
   if(other is core::int*) {
-    return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{core::int*}){(core::num*) →* core::int*});
+    return new self::Number::•(#this.{self::Number::value}.{core::num::+}(other{core::int*}));
   }
   else
     if(other is self::Number*) {
-      return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
+      return new self::Number::•(#this.{self::Number::value}.{core::num::+}(other{self::Number*}.{self::Number::value}));
     }
     else {
       throw new core::ArgumentError::•("${other}");
@@ -83,18 +83,18 @@
 }
 static method NumberExtension|-(lowered final self::Number* #this, core::Object* other) → self::Number* {
   if(other is core::int*) {
-    return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{core::int*}){(core::num*) →* core::int*});
+    return new self::Number::•(#this.{self::Number::value}.{core::num::-}(other{core::int*}));
   }
   else
     if(other is self::Number*) {
-      return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
+      return new self::Number::•(#this.{self::Number::value}.{core::num::-}(other{self::Number*}.{self::Number::value}));
     }
     else {
       throw new core::ArgumentError::•("${other}");
     }
 }
 static method ClassExtension|get#property(lowered final self::Class* #this) → self::Number*
-  return #this.{self::Class::field}{self::Number*};
+  return #this.{self::Class::field};
 static method ClassExtension|set#property(lowered final self::Class* #this, self::Number* value) → void {
   #this.{self::Class::field} = value;
 }
@@ -136,7 +136,7 @@
 static method ClassExtension|get#testImplicitProperties(lowered final self::Class* #this) → () →* dynamic
   return () → dynamic => self::ClassExtension|testImplicitProperties(#this);
 static method IntClassExtension|get#property(lowered final self::IntClass* #this) → core::int*
-  return #this.{self::IntClass::field}{core::int*};
+  return #this.{self::IntClass::field};
 static method IntClassExtension|set#property(lowered final self::IntClass* #this, core::int* value) → void {
   #this.{self::IntClass::field} = value;
 }
@@ -145,34 +145,34 @@
   core::int* n1 = 1;
   core::int* n2 = 2;
   self::expect(n0, self::IntClassExtension|get#property(#this));
-  self::expect(n1, let final core::int* #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
-  self::expect(n2, let final core::int* #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
-  self::expect(n0, let final core::int* #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
-  self::expect(n1, let final core::int* #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
-  self::expect(n0, let final core::int* #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
-  self::expect(n1, let final core::int* #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
-  self::expect(n0, let final core::int* #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
-  self::expect(n0, let final core::int* #t37 = self::IntClassExtension|get#property(#this) in let final core::int* #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num*) →* core::int*}) in #t37);
-  self::expect(n1, let final core::int* #t39 = self::IntClassExtension|get#property(#this) in let final core::int* #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num*) →* core::int*}) in #t39);
+  self::expect(n1, let final core::int* #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1) in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
+  self::expect(n2, let final core::int* #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1) in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
+  self::expect(n0, let final core::int* #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2) in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
+  self::expect(n1, let final core::int* #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1) in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
+  self::expect(n0, let final core::int* #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1) in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
+  self::expect(n1, let final core::int* #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1) in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
+  self::expect(n0, let final core::int* #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1) in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
+  self::expect(n0, let final core::int* #t37 = self::IntClassExtension|get#property(#this) in let final core::int* #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1)) in #t37);
+  self::expect(n1, let final core::int* #t39 = self::IntClassExtension|get#property(#this) in let final core::int* #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1)) in #t39);
   self::expect(n0, self::IntClassExtension|get#property(#this));
   self::expect(n0, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1));
   self::expect(n1, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1));
   self::expect(n2, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2));
   self::expect(n0, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1));
   self::expect(n1, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1));
   self::expect(n0, self::IntClassExtension|get#property(#this));
-  let final core::int* #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
+  let final core::int* #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1) in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
   self::expect(n1, self::IntClassExtension|get#property(#this));
-  let final core::int* #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
+  let final core::int* #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1) in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
   self::expect(n0, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1));
   self::expect(n1, self::IntClassExtension|get#property(#this));
-  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*});
+  self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1));
   self::expect(n0, self::IntClassExtension|get#property(#this));
 }
 static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass* #this) → () →* dynamic
@@ -231,36 +231,36 @@
   self::Number* n1 = new self::Number::•(1);
   self::Number* n2 = new self::Number::•(2);
   self::Class* v = new self::Class::•(n0);
-  self::expect(n0, v.{self::Class::field}{self::Number*});
-  self::expect(n1, let final self::Class* #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number*}, n1));
-  self::expect(n2, let final self::Class* #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number*}, n1));
-  self::expect(n0, let final self::Class* #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number*}, n2));
-  self::expect(n1, let final self::Class* #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number*}, n1));
-  self::expect(n0, let final self::Class* #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number*}, n1));
-  self::expect(n1, let final self::Class* #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number*}, 1));
-  self::expect(n0, let final self::Class* #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number*}, 1));
-  self::expect(n0, let final self::Class* #t56 = v in let final self::Number* #t57 = #t56.{self::Class::field}{self::Number*} in let final self::Number* #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
-  self::expect(n1, let final self::Class* #t59 = v in let final self::Number* #t60 = #t59.{self::Class::field}{self::Number*} in let final self::Number* #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
-  self::expect(n0, v.{self::Class::field}{self::Number*});
-  self::expect(n0, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number*}, n1);
-  self::expect(n1, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number*}, n1);
-  self::expect(n2, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number*}, n2);
-  self::expect(n0, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number*}, n1);
-  self::expect(n1, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number*}, n1);
-  self::expect(n0, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number*}, 1);
-  self::expect(n1, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number*}, 1);
-  self::expect(n0, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number*}, 1);
-  self::expect(n1, v.{self::Class::field}{self::Number*});
-  let final self::Class* #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number*}, 1);
-  self::expect(n0, v.{self::Class::field}{self::Number*});
+  self::expect(n0, v.{self::Class::field});
+  self::expect(n1, let final self::Class* #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}, n1));
+  self::expect(n2, let final self::Class* #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}, n1));
+  self::expect(n0, let final self::Class* #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}, n2));
+  self::expect(n1, let final self::Class* #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}, n1));
+  self::expect(n0, let final self::Class* #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}, n1));
+  self::expect(n1, let final self::Class* #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}, 1));
+  self::expect(n0, let final self::Class* #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}, 1));
+  self::expect(n0, let final self::Class* #t56 = v in let final self::Number* #t57 = #t56.{self::Class::field} in let final self::Number* #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
+  self::expect(n1, let final self::Class* #t59 = v in let final self::Number* #t60 = #t59.{self::Class::field} in let final self::Number* #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
+  self::expect(n0, v.{self::Class::field});
+  self::expect(n0, v.{self::Class::field});
+  let final self::Class* #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}, n1);
+  self::expect(n1, v.{self::Class::field});
+  let final self::Class* #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}, n1);
+  self::expect(n2, v.{self::Class::field});
+  let final self::Class* #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}, n2);
+  self::expect(n0, v.{self::Class::field});
+  let final self::Class* #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}, n1);
+  self::expect(n1, v.{self::Class::field});
+  let final self::Class* #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}, n1);
+  self::expect(n0, v.{self::Class::field});
+  let final self::Class* #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}, 1);
+  self::expect(n1, v.{self::Class::field});
+  let final self::Class* #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}, 1);
+  self::expect(n0, v.{self::Class::field});
+  let final self::Class* #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}, 1);
+  self::expect(n1, v.{self::Class::field});
+  let final self::Class* #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}, 1);
+  self::expect(n0, v.{self::Class::field});
   self::expect(n0, self::ClassExtension|get#property(v));
   self::expect(n1, let final self::Class* #t71 = v in let final self::Number* #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
   self::expect(n2, let final self::Class* #t74 = v in let final self::Number* #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
@@ -297,65 +297,65 @@
   core::int* n1 = 1;
   core::int* n2 = 2;
   self::IntClass* v = new self::IntClass::•(n0);
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
-  self::expect(n1, let final self::IntClass* #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
-  self::expect(n2, let final self::IntClass* #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*});
-  self::expect(n1, let final self::IntClass* #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*});
-  self::expect(n1, let final self::IntClass* #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t118 = v in let final core::int* #t119 = #t118.{self::IntClass::field}{core::int*} in let final core::int* #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num*) →* core::int*} in #t119);
-  self::expect(n1, let final self::IntClass* #t121 = v in let final core::int* #t122 = #t121.{self::IntClass::field}{core::int*} in let final core::int* #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num*) →* core::int*} in #t122);
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
-  self::expect(n1, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
-  self::expect(n2, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*};
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
-  self::expect(n1, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*};
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-  self::expect(n1, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-  self::expect(n1, v.{self::IntClass::field}{core::int*});
-  let final self::IntClass* #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
-  self::expect(n0, v.{self::IntClass::field}{core::int*});
+  self::expect(n0, v.{self::IntClass::field});
+  self::expect(n1, let final self::IntClass* #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}.{core::num::+}(n1));
+  self::expect(n2, let final self::IntClass* #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}.{core::num::+}(n1));
+  self::expect(n0, let final self::IntClass* #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}.{core::num::-}(n2));
+  self::expect(n1, let final self::IntClass* #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}.{core::num::+}(n1));
+  self::expect(n0, let final self::IntClass* #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}.{core::num::-}(n1));
+  self::expect(n1, let final self::IntClass* #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}.{core::num::+}(1));
+  self::expect(n0, let final self::IntClass* #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}.{core::num::-}(1));
+  self::expect(n0, let final self::IntClass* #t118 = v in let final core::int* #t119 = #t118.{self::IntClass::field} in let final core::int* #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1) in #t119);
+  self::expect(n1, let final self::IntClass* #t121 = v in let final core::int* #t122 = #t121.{self::IntClass::field} in let final core::int* #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1) in #t122);
+  self::expect(n0, v.{self::IntClass::field});
+  self::expect(n0, v.{self::IntClass::field});
+  let final self::IntClass* #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}.{core::num::+}(n1);
+  self::expect(n1, v.{self::IntClass::field});
+  let final self::IntClass* #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}.{core::num::+}(n1);
+  self::expect(n2, v.{self::IntClass::field});
+  let final self::IntClass* #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}.{core::num::-}(n2);
+  self::expect(n0, v.{self::IntClass::field});
+  let final self::IntClass* #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}.{core::num::+}(n1);
+  self::expect(n1, v.{self::IntClass::field});
+  let final self::IntClass* #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}.{core::num::-}(n1);
+  self::expect(n0, v.{self::IntClass::field});
+  let final self::IntClass* #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}.{core::num::+}(1);
+  self::expect(n1, v.{self::IntClass::field});
+  let final self::IntClass* #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}.{core::num::-}(1);
+  self::expect(n0, v.{self::IntClass::field});
+  let final self::IntClass* #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}.{core::num::+}(1);
+  self::expect(n1, v.{self::IntClass::field});
+  let final self::IntClass* #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}.{core::num::-}(1);
+  self::expect(n0, v.{self::IntClass::field});
   self::expect(n0, self::IntClassExtension|get#property(v));
-  self::expect(n1, let final self::IntClass* #t133 = v in let final core::int* #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
-  self::expect(n2, let final self::IntClass* #t136 = v in let final core::int* #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
-  self::expect(n0, let final self::IntClass* #t139 = v in let final core::int* #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
-  self::expect(n1, let final self::IntClass* #t142 = v in let final core::int* #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
-  self::expect(n0, let final self::IntClass* #t145 = v in let final core::int* #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
-  self::expect(n1, let final self::IntClass* #t148 = v in let final core::int* #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
-  self::expect(n0, let final self::IntClass* #t151 = v in let final core::int* #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
-  self::expect(n0, let final self::IntClass* #t154 = v in let final core::int* #t155 = self::IntClassExtension|get#property(#t154) in let final core::int* #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num*) →* core::int*}) in #t155);
-  self::expect(n1, let final self::IntClass* #t157 = v in let final core::int* #t158 = self::IntClassExtension|get#property(#t157) in let final core::int* #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num*) →* core::int*}) in #t158);
+  self::expect(n1, let final self::IntClass* #t133 = v in let final core::int* #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1) in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
+  self::expect(n2, let final self::IntClass* #t136 = v in let final core::int* #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1) in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
+  self::expect(n0, let final self::IntClass* #t139 = v in let final core::int* #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2) in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
+  self::expect(n1, let final self::IntClass* #t142 = v in let final core::int* #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1) in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
+  self::expect(n0, let final self::IntClass* #t145 = v in let final core::int* #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1) in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
+  self::expect(n1, let final self::IntClass* #t148 = v in let final core::int* #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1) in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
+  self::expect(n0, let final self::IntClass* #t151 = v in let final core::int* #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1) in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
+  self::expect(n0, let final self::IntClass* #t154 = v in let final core::int* #t155 = self::IntClassExtension|get#property(#t154) in let final core::int* #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1)) in #t155);
+  self::expect(n1, let final self::IntClass* #t157 = v in let final core::int* #t158 = self::IntClassExtension|get#property(#t157) in let final core::int* #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1)) in #t158);
   self::expect(n0, self::IntClassExtension|get#property(v));
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1));
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1));
   self::expect(n2, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num*) →* core::int*});
+  let final self::IntClass* #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2));
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1));
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1));
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t165 = v in let final core::int* #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
+  let final self::IntClass* #t165 = v in let final core::int* #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1) in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t168 = v in let final core::int* #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
+  let final self::IntClass* #t168 = v in let final core::int* #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1) in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num*) →* core::int*});
+  let final self::IntClass* #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1));
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num*) →* core::int*});
+  let final self::IntClass* #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1));
   self::expect(n0, self::IntClassExtension|get#property(v));
 }
 static method testExplicitProperties() → dynamic {
@@ -400,111 +400,111 @@
   core::int* n2 = 2;
   self::IntClass* v = new self::IntClass::•(n0);
   self::expect(n0, self::IntClassExtension|get#property(v));
-  self::expect(n1, let final self::IntClass* #t217 = v in let final core::int* #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
-  self::expect(n2, let final self::IntClass* #t220 = v in let final core::int* #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
-  self::expect(n0, let final self::IntClass* #t223 = v in let final core::int* #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
-  self::expect(n1, let final self::IntClass* #t226 = v in let final core::int* #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
-  self::expect(n0, let final self::IntClass* #t229 = v in let final core::int* #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
-  self::expect(n1, let final self::IntClass* #t232 = v in let final core::int* #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
-  self::expect(n0, let final self::IntClass* #t235 = v in let final core::int* #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
-  self::expect(n0, let final self::IntClass* #t238 = v in let final core::int* #t239 = self::IntClassExtension|get#property(#t238) in let final core::int* #t240 = let final core::int* #t241 = #t239.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
-  self::expect(n1, let final self::IntClass* #t243 = v in let final core::int* #t244 = self::IntClassExtension|get#property(#t243) in let final core::int* #t245 = let final core::int* #t246 = #t244.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
+  self::expect(n1, let final self::IntClass* #t217 = v in let final core::int* #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1) in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
+  self::expect(n2, let final self::IntClass* #t220 = v in let final core::int* #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1) in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
+  self::expect(n0, let final self::IntClass* #t223 = v in let final core::int* #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2) in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
+  self::expect(n1, let final self::IntClass* #t226 = v in let final core::int* #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1) in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
+  self::expect(n0, let final self::IntClass* #t229 = v in let final core::int* #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1) in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
+  self::expect(n1, let final self::IntClass* #t232 = v in let final core::int* #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1) in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
+  self::expect(n0, let final self::IntClass* #t235 = v in let final core::int* #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1) in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
+  self::expect(n0, let final self::IntClass* #t238 = v in let final core::int* #t239 = self::IntClassExtension|get#property(#t238) in let final core::int* #t240 = let final core::int* #t241 = #t239.{core::num::+}(1) in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
+  self::expect(n1, let final self::IntClass* #t243 = v in let final core::int* #t244 = self::IntClassExtension|get#property(#t243) in let final core::int* #t245 = let final core::int* #t246 = #t244.{core::num::-}(1) in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
   self::expect(n0, self::IntClassExtension|get#property(v));
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1));
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1));
   self::expect(n2, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num*) →* core::int*});
+  let final self::IntClass* #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2));
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1));
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num*) →* core::int*});
+  let final self::IntClass* #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1));
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t253 = v in let final core::int* #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
+  let final self::IntClass* #t253 = v in let final core::int* #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1) in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t256 = v in let final core::int* #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
+  let final self::IntClass* #t256 = v in let final core::int* #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1) in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
   self::expect(n0, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num*) →* core::int*});
+  let final self::IntClass* #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1));
   self::expect(n1, self::IntClassExtension|get#property(v));
-  let final self::IntClass* #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num*) →* core::int*});
+  let final self::IntClass* #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1));
   self::expect(n0, self::IntClassExtension|get#property(v));
 }
 static method testExplicitNullAwareProperties(self::Class* v) → dynamic {
   self::Number* n0 = new self::Number::•(0);
   self::Number* n1 = new self::Number::•(1);
   self::Number* n2 = new self::Number::•(2);
-  self::expect(n0, let final self::Class* #t261 = v in #t261 == null ?{self::Number*} null : self::ClassExtension|get#property(#t261), v == null);
-  self::expect(n1, let final self::Class* #t262 = v in #t262 == null ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v == null);
-  self::expect(n2, let final self::Class* #t265 = v in #t265 == null ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v == null);
-  self::expect(n0, let final self::Class* #t268 = v in #t268 == null ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v == null);
-  self::expect(n1, let final self::Class* #t271 = v in #t271 == null ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v == null);
-  self::expect(n0, let final self::Class* #t274 = v in #t274 == null ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v == null);
-  self::expect(n1, let final self::Class* #t277 = v in #t277 == null ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v == null);
-  self::expect(n0, let final self::Class* #t280 = v in #t280 == null ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v == null);
-  self::expect(n0, let final self::Class* #t283 = v in #t283 == null ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v == null);
-  self::expect(n1, let final self::Class* #t288 = v in #t288 == null ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v == null);
-  self::expect(n0, let final self::Class* #t293 = v in #t293 == null ?{self::Number*} null : self::ClassExtension|get#property(#t293), v == null);
-  self::expect(n0, let final self::Class* #t294 = v in #t294 == null ?{self::Number*} null : self::ClassExtension|get#property(#t294), v == null);
-  let final self::Class* #t295 = v in #t295 == null ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
-  self::expect(n1, let final self::Class* #t296 = v in #t296 == null ?{self::Number*} null : self::ClassExtension|get#property(#t296), v == null);
-  let final self::Class* #t297 = v in #t297 == null ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
-  self::expect(n2, let final self::Class* #t298 = v in #t298 == null ?{self::Number*} null : self::ClassExtension|get#property(#t298), v == null);
-  let final self::Class* #t299 = v in #t299 == null ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
-  self::expect(n0, let final self::Class* #t300 = v in #t300 == null ?{self::Number*} null : self::ClassExtension|get#property(#t300), v == null);
-  let final self::Class* #t301 = v in #t301 == null ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
-  self::expect(n1, let final self::Class* #t302 = v in #t302 == null ?{self::Number*} null : self::ClassExtension|get#property(#t302), v == null);
-  let final self::Class* #t303 = v in #t303 == null ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
-  self::expect(n0, let final self::Class* #t304 = v in #t304 == null ?{self::Number*} null : self::ClassExtension|get#property(#t304), v == null);
-  let final self::Class* #t305 = v in #t305 == null ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
-  self::expect(n1, let final self::Class* #t308 = v in #t308 == null ?{self::Number*} null : self::ClassExtension|get#property(#t308), v == null);
-  let final self::Class* #t309 = v in #t309 == null ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
-  self::expect(n0, let final self::Class* #t312 = v in #t312 == null ?{self::Number*} null : self::ClassExtension|get#property(#t312), v == null);
-  let final self::Class* #t313 = v in #t313 == null ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
-  self::expect(n1, let final self::Class* #t314 = v in #t314 == null ?{self::Number*} null : self::ClassExtension|get#property(#t314), v == null);
-  let final self::Class* #t315 = v in #t315 == null ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
-  self::expect(n0, let final self::Class* #t316 = v in #t316 == null ?{self::Number*} null : self::ClassExtension|get#property(#t316), v == null);
+  self::expect(n0, let final self::Class* #t261 = v in #t261.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t261), v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t262 = v in #t262.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v.{self::Class::==}(null));
+  self::expect(n2, let final self::Class* #t265 = v in #t265.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t268 = v in #t268.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t271 = v in #t271.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t274 = v in #t274.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t277 = v in #t277.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t280 = v in #t280.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t283 = v in #t283.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t288 = v in #t288.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t293 = v in #t293.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t293), v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t294 = v in #t294.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t294), v.{self::Class::==}(null));
+  let final self::Class* #t295 = v in #t295.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
+  self::expect(n1, let final self::Class* #t296 = v in #t296.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t296), v.{self::Class::==}(null));
+  let final self::Class* #t297 = v in #t297.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
+  self::expect(n2, let final self::Class* #t298 = v in #t298.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t298), v.{self::Class::==}(null));
+  let final self::Class* #t299 = v in #t299.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
+  self::expect(n0, let final self::Class* #t300 = v in #t300.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t300), v.{self::Class::==}(null));
+  let final self::Class* #t301 = v in #t301.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
+  self::expect(n1, let final self::Class* #t302 = v in #t302.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t302), v.{self::Class::==}(null));
+  let final self::Class* #t303 = v in #t303.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
+  self::expect(n0, let final self::Class* #t304 = v in #t304.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t304), v.{self::Class::==}(null));
+  let final self::Class* #t305 = v in #t305.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
+  self::expect(n1, let final self::Class* #t308 = v in #t308.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t308), v.{self::Class::==}(null));
+  let final self::Class* #t309 = v in #t309.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
+  self::expect(n0, let final self::Class* #t312 = v in #t312.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t312), v.{self::Class::==}(null));
+  let final self::Class* #t313 = v in #t313.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
+  self::expect(n1, let final self::Class* #t314 = v in #t314.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t314), v.{self::Class::==}(null));
+  let final self::Class* #t315 = v in #t315.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
+  self::expect(n0, let final self::Class* #t316 = v in #t316.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t316), v.{self::Class::==}(null));
 }
 static method testExplicitNullAwareIntProperties(self::IntClass* v) → dynamic {
   core::int* n0 = 0;
   core::int* n1 = 1;
   core::int* n2 = 2;
-  self::expect(n0, let final self::IntClass* #t317 = v in #t317 == null ?{core::int*} null : self::IntClassExtension|get#property(#t317), v == null);
-  self::expect(n1, let final self::IntClass* #t318 = v in #t318 == null ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v == null);
-  self::expect(n2, let final self::IntClass* #t321 = v in #t321 == null ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v == null);
-  self::expect(n0, let final self::IntClass* #t324 = v in #t324 == null ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v == null);
-  self::expect(n1, let final self::IntClass* #t327 = v in #t327 == null ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v == null);
-  self::expect(n0, let final self::IntClass* #t330 = v in #t330 == null ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v == null);
-  self::expect(n1, let final self::IntClass* #t333 = v in #t333 == null ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v == null);
-  self::expect(n0, let final self::IntClass* #t336 = v in #t336 == null ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v == null);
-  self::expect(n0, let final self::IntClass* #t339 = v in #t339 == null ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v == null);
-  self::expect(n1, let final self::IntClass* #t344 = v in #t344 == null ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v == null);
-  self::expect(n0, let final self::IntClass* #t349 = v in #t349 == null ?{core::int*} null : self::IntClassExtension|get#property(#t349), v == null);
-  self::expect(n0, let final self::IntClass* #t350 = v in #t350 == null ?{core::int*} null : self::IntClassExtension|get#property(#t350), v == null);
-  let final self::IntClass* #t351 = v in #t351 == null ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1){(core::num*) →* core::int*});
-  self::expect(n1, let final self::IntClass* #t352 = v in #t352 == null ?{core::int*} null : self::IntClassExtension|get#property(#t352), v == null);
-  let final self::IntClass* #t353 = v in #t353 == null ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1){(core::num*) →* core::int*});
-  self::expect(n2, let final self::IntClass* #t354 = v in #t354 == null ?{core::int*} null : self::IntClassExtension|get#property(#t354), v == null);
-  let final self::IntClass* #t355 = v in #t355 == null ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t356 = v in #t356 == null ?{core::int*} null : self::IntClassExtension|get#property(#t356), v == null);
-  let final self::IntClass* #t357 = v in #t357 == null ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1){(core::num*) →* core::int*});
-  self::expect(n1, let final self::IntClass* #t358 = v in #t358 == null ?{core::int*} null : self::IntClassExtension|get#property(#t358), v == null);
-  let final self::IntClass* #t359 = v in #t359 == null ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t360 = v in #t360 == null ?{core::int*} null : self::IntClassExtension|get#property(#t360), v == null);
-  let final self::IntClass* #t361 = v in #t361 == null ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
-  self::expect(n1, let final self::IntClass* #t364 = v in #t364 == null ?{core::int*} null : self::IntClassExtension|get#property(#t364), v == null);
-  let final self::IntClass* #t365 = v in #t365 == null ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
-  self::expect(n0, let final self::IntClass* #t368 = v in #t368 == null ?{core::int*} null : self::IntClassExtension|get#property(#t368), v == null);
-  let final self::IntClass* #t369 = v in #t369 == null ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1){(core::num*) →* core::int*});
-  self::expect(n1, let final self::IntClass* #t370 = v in #t370 == null ?{core::int*} null : self::IntClassExtension|get#property(#t370), v == null);
-  let final self::IntClass* #t371 = v in #t371 == null ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1){(core::num*) →* core::int*});
-  self::expect(n0, let final self::IntClass* #t372 = v in #t372 == null ?{core::int*} null : self::IntClassExtension|get#property(#t372), v == null);
+  self::expect(n0, let final self::IntClass* #t317 = v in #t317.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t317), v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t318 = v in #t318.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1) in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v.{self::IntClass::==}(null));
+  self::expect(n2, let final self::IntClass* #t321 = v in #t321.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1) in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t324 = v in #t324.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2) in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t327 = v in #t327.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1) in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t330 = v in #t330.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1) in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t333 = v in #t333.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1) in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t336 = v in #t336.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1) in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t339 = v in #t339.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1) in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t344 = v in #t344.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1) in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t349 = v in #t349.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t349), v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t350 = v in #t350.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t350), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t351 = v in #t351.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1));
+  self::expect(n1, let final self::IntClass* #t352 = v in #t352.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t352), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t353 = v in #t353.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1));
+  self::expect(n2, let final self::IntClass* #t354 = v in #t354.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t354), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t355 = v in #t355.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2));
+  self::expect(n0, let final self::IntClass* #t356 = v in #t356.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t356), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t357 = v in #t357.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1));
+  self::expect(n1, let final self::IntClass* #t358 = v in #t358.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t358), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t359 = v in #t359.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1));
+  self::expect(n0, let final self::IntClass* #t360 = v in #t360.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t360), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t361 = v in #t361.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1) in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
+  self::expect(n1, let final self::IntClass* #t364 = v in #t364.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t364), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t365 = v in #t365.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1) in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
+  self::expect(n0, let final self::IntClass* #t368 = v in #t368.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t368), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t369 = v in #t369.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1));
+  self::expect(n1, let final self::IntClass* #t370 = v in #t370.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t370), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t371 = v in #t371.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1));
+  self::expect(n0, let final self::IntClass* #t372 = v in #t372.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t372), v.{self::IntClass::==}(null));
 }
 static method expect(dynamic expected, dynamic actual, [dynamic expectNull = #C1]) → dynamic {
   if(expectNull as{TypeError,ForDynamic} core::bool*) {
     expected = null;
   }
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.expect b/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.expect
index 96b1de2..fa3307c 100644
--- a/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.expect
@@ -60,13 +60,13 @@
   return "Foo";
 static method main() → dynamic {
   core::int* value;
-  self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} is core::Function*);
+  self::expect(true, "".{core::Object::noSuchMethod} is core::Function*);
   value = self::Extension|get#noSuchMethod("");
   self::Extension|set#hashCode("", 42);
-  self::expect(true, "".{core::Object::runtimeType}{core::Type*} is core::Type*);
+  self::expect(true, "".{core::Object::runtimeType} is core::Type*);
   self::expect(true, self::Extension|get#runtimeType("") is core::Function*);
   value = self::Extension|runtimeType("");
-  self::expect(true, "" =={core::String::==}{(core::Object*) →* core::bool*} "");
+  self::expect(true, "".{core::String::==}(""));
   self::expect("Foo", self::Extension|toString());
 }
 static method errors() → dynamic {
@@ -74,7 +74,7 @@
   value = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:27:14: Error: A value of type 'dynamic Function(Invocation)' can't be assigned to a variable of type 'int'.
  - 'Invocation' is from 'dart:core'.
   value = \"\".noSuchMethod;
-             ^" in "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} as{TypeError} core::int*;
+             ^" in "".{core::Object::noSuchMethod} as{TypeError} core::int*;
   invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:28:6: Error: The setter 'hashCode' isn't defined for the class 'String'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'hashCode'.
   \"\".hashCode = 42;
@@ -82,10 +82,10 @@
   value = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:29:14: Error: A value of type 'Type' can't be assigned to a variable of type 'int'.
  - 'Type' is from 'dart:core'.
   value = \"\".runtimeType;
-             ^" in "".{core::Object::runtimeType}{core::Type*} as{TypeError} core::int*;
+             ^" in "".{core::Object::runtimeType} as{TypeError} core::int*;
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.transformed.expect
index 5c1250b..7134ac1 100644
--- a/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.transformed.expect
@@ -60,13 +60,13 @@
   return "Foo";
 static method main() → dynamic {
   core::int* value;
-  self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} is core::Function*);
+  self::expect(true, "".{core::Object::noSuchMethod} is core::Function*);
   value = self::Extension|get#noSuchMethod("");
   self::Extension|set#hashCode("", 42);
-  self::expect(true, "".{core::Object::runtimeType}{core::Type*} is core::Type*);
+  self::expect(true, "".{core::Object::runtimeType} is core::Type*);
   self::expect(true, self::Extension|get#runtimeType("") is core::Function*);
   value = self::Extension|runtimeType("");
-  self::expect(true, "" =={core::String::==}{(core::Object*) →* core::bool*} "");
+  self::expect(true, "".{core::String::==}(""));
   self::expect("Foo", self::Extension|toString());
 }
 static method errors() → dynamic {
@@ -74,7 +74,7 @@
   value = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:27:14: Error: A value of type 'dynamic Function(Invocation)' can't be assigned to a variable of type 'int'.
  - 'Invocation' is from 'dart:core'.
   value = \"\".noSuchMethod;
-             ^" in "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} as{TypeError} core::int*;
+             ^" in "".{core::Object::noSuchMethod} as{TypeError} core::int*;
   invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:28:6: Error: The setter 'hashCode' isn't defined for the class 'String'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'hashCode'.
   \"\".hashCode = 42;
@@ -82,15 +82,15 @@
   value = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:29:14: Error: A value of type 'Type' can't be assigned to a variable of type 'int'.
  - 'Type' is from 'dart:core'.
   value = \"\".runtimeType;
-             ^" in "".{core::Object::runtimeType}{core::Type*} as{TypeError} core::int*;
+             ^" in "".{core::Object::runtimeType} as{TypeError} core::int*;
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
 
 
 Extra constant evaluation status:
-Evaluated: EqualsCall @ org-dartlang-testcase:///conflict_with_object.dart:21:19 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///conflict_with_object.dart:21:19 -> BoolConstant(true)
 Extra constant evaluation: evaluated: 37, effectively constant: 1
diff --git a/pkg/front_end/testcases/extensions/default_values.dart.weak.expect b/pkg/front_end/testcases/extensions/default_values.dart.weak.expect
index f4256f5..3c37068 100644
--- a/pkg/front_end/testcases/extensions/default_values.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/default_values.dart.weak.expect
@@ -41,7 +41,7 @@
 static method Extension|get#method2(lowered final self::Class* #this) → ({b: dynamic}) →* dynamic
   return ({dynamic b = #C3}) → dynamic => self::Extension|method2(#this, b: b);
 static method Extension|method3(lowered final self::Class* #this, {dynamic c = #C4}) → dynamic
-  return c{dynamic}.call();
+  return c.call();
 static method Extension|get#method3(lowered final self::Class* #this) → ({c: dynamic}) →* dynamic
   return ({dynamic c = #C4}) → dynamic => self::Extension|method3(#this, c: c);
 static method Extension|staticMethod() → dynamic
@@ -49,20 +49,20 @@
 static method main() → dynamic {
   self::Class* c = new self::Class::•();
   ([dynamic]) →* dynamic tearOff0 = self::Extension|get#method0(c);
-  self::expect(0, tearOff0(0){([dynamic]) →* dynamic});
-  self::expect(null, tearOff0(){([dynamic]) →* dynamic});
+  self::expect(0, tearOff0.call(0));
+  self::expect(null, tearOff0.call());
   ([dynamic]) →* dynamic tearOff1 = self::Extension|get#method1(c);
-  self::expect(0, tearOff1(0){([dynamic]) →* dynamic});
-  self::expect(42, tearOff1(){([dynamic]) →* dynamic});
+  self::expect(0, tearOff1.call(0));
+  self::expect(42, tearOff1.call());
   ({b: dynamic}) →* dynamic tearOff2 = self::Extension|get#method2(c);
-  self::expect(0, tearOff2(b: 0){({b: dynamic}) →* dynamic});
-  self::expect(87, tearOff2(){({b: dynamic}) →* dynamic});
+  self::expect(0, tearOff2.call(b: 0));
+  self::expect(87, tearOff2.call());
   ({c: dynamic}) →* dynamic tearOff3 = self::Extension|get#method3(c);
-  self::expect(0, tearOff3(c: () → core::int* => 0){({c: dynamic}) →* dynamic});
-  self::expect(123, tearOff3(){({c: dynamic}) →* dynamic});
+  self::expect(0, tearOff3.call(c: () → core::int* => 0));
+  self::expect(123, tearOff3.call());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/default_values.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/default_values.dart.weak.transformed.expect
index f4256f5..3c37068 100644
--- a/pkg/front_end/testcases/extensions/default_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/default_values.dart.weak.transformed.expect
@@ -41,7 +41,7 @@
 static method Extension|get#method2(lowered final self::Class* #this) → ({b: dynamic}) →* dynamic
   return ({dynamic b = #C3}) → dynamic => self::Extension|method2(#this, b: b);
 static method Extension|method3(lowered final self::Class* #this, {dynamic c = #C4}) → dynamic
-  return c{dynamic}.call();
+  return c.call();
 static method Extension|get#method3(lowered final self::Class* #this) → ({c: dynamic}) →* dynamic
   return ({dynamic c = #C4}) → dynamic => self::Extension|method3(#this, c: c);
 static method Extension|staticMethod() → dynamic
@@ -49,20 +49,20 @@
 static method main() → dynamic {
   self::Class* c = new self::Class::•();
   ([dynamic]) →* dynamic tearOff0 = self::Extension|get#method0(c);
-  self::expect(0, tearOff0(0){([dynamic]) →* dynamic});
-  self::expect(null, tearOff0(){([dynamic]) →* dynamic});
+  self::expect(0, tearOff0.call(0));
+  self::expect(null, tearOff0.call());
   ([dynamic]) →* dynamic tearOff1 = self::Extension|get#method1(c);
-  self::expect(0, tearOff1(0){([dynamic]) →* dynamic});
-  self::expect(42, tearOff1(){([dynamic]) →* dynamic});
+  self::expect(0, tearOff1.call(0));
+  self::expect(42, tearOff1.call());
   ({b: dynamic}) →* dynamic tearOff2 = self::Extension|get#method2(c);
-  self::expect(0, tearOff2(b: 0){({b: dynamic}) →* dynamic});
-  self::expect(87, tearOff2(){({b: dynamic}) →* dynamic});
+  self::expect(0, tearOff2.call(b: 0));
+  self::expect(87, tearOff2.call());
   ({c: dynamic}) →* dynamic tearOff3 = self::Extension|get#method3(c);
-  self::expect(0, tearOff3(c: () → core::int* => 0){({c: dynamic}) →* dynamic});
-  self::expect(123, tearOff3(){({c: dynamic}) →* dynamic});
+  self::expect(0, tearOff3.call(c: () → core::int* => 0));
+  self::expect(123, tearOff3.call());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.expect
index a3e0d9a..eb88dad 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.expect
@@ -25,7 +25,7 @@
   self::expect(87, let final dynamic #t11 = CheckLibraryIsLoaded(prefix) in def::Extension|staticMethod());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
@@ -53,12 +53,12 @@
 static method Extension|staticMethod() → core::int*
   return def::Extension|staticField;
 static method Extension|get#property(lowered final core::int* #this) → core::int*
-  return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
+  return #this.{core::num::+}(def::Extension|staticField);
 static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
   def::Extension|staticField = value;
 }
 static method Extension|method(lowered final core::int* #this) → core::int*
-  return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
+  return #this.{core::num::+}(def::Extension|staticField);
 static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
   return () → core::int* => def::Extension|method(#this);
 static get topLevelProperty() → core::int*
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect
index c7560fa..9a7758f 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect
@@ -51,7 +51,7 @@
   return :async_future;
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
@@ -79,12 +79,12 @@
 static method Extension|staticMethod() → core::int*
   return def::Extension|staticField;
 static method Extension|get#property(lowered final core::int* #this) → core::int*
-  return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
+  return #this.{core::num::+}(def::Extension|staticField);
 static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
   def::Extension|staticField = value;
 }
 static method Extension|method(lowered final core::int* #this) → core::int*
-  return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
+  return #this.{core::num::+}(def::Extension|staticField);
 static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
   return () → core::int* => def::Extension|method(#this);
 static get topLevelProperty() → core::int*
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.expect
index ddd41d6..614cb6f 100644
--- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.expect
@@ -16,7 +16,7 @@
   self::expect(87, let final dynamic #t7 = CheckLibraryIsLoaded(prefix) in def::topLevelMethod());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
@@ -44,12 +44,12 @@
 static method Extension|staticMethod() → core::int*
   return def::Extension|staticField;
 static method Extension|get#property(lowered final core::int* #this) → core::int*
-  return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
+  return #this.{core::num::+}(def::Extension|staticField);
 static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
   def::Extension|staticField = value;
 }
 static method Extension|method(lowered final core::int* #this) → core::int*
-  return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
+  return #this.{core::num::+}(def::Extension|staticField);
 static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
   return () → core::int* => def::Extension|method(#this);
 static get topLevelProperty() → core::int*
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect
index 86a95a1..41815d4 100644
--- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect
@@ -42,7 +42,7 @@
   return :async_future;
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
@@ -70,12 +70,12 @@
 static method Extension|staticMethod() → core::int*
   return def::Extension|staticField;
 static method Extension|get#property(lowered final core::int* #this) → core::int*
-  return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
+  return #this.{core::num::+}(def::Extension|staticField);
 static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
   def::Extension|staticField = value;
 }
 static method Extension|method(lowered final core::int* #this) → core::int*
-  return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
+  return #this.{core::num::+}(def::Extension|staticField);
 static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
   return () → core::int* => def::Extension|method(#this);
 static get topLevelProperty() → core::int*
diff --git a/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.expect b/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.expect
index 96d1c00..394a69b3 100644
--- a/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.expect
@@ -116,7 +116,7 @@
 static method Extension|get#tearOffGetterNamed(lowered final self::Class* #this) → dynamic
   return self::Extension|get#writeSetterNamed(#this);
 static method Extension|get#property(lowered final self::Class* #this) → dynamic
-  return #this.{self::Class::field}{dynamic};
+  return #this.{self::Class::field};
 static method Extension|set#property(lowered final self::Class* #this, dynamic value) → void {
   #this.{self::Class::field} = value;
 }
@@ -134,23 +134,23 @@
   return (dynamic value) → dynamic => self::Extension|tearOffs(#this, value);
 static method Extension|tearOffs(lowered final self::Class* #this, dynamic value) → dynamic {
   () →* dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
-  tearOffNoArgs();
+  tearOffNoArgs.call();
   (dynamic) →* dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
-  tearOffRequired(value){(dynamic) →* dynamic};
+  tearOffRequired.call(value);
   ([dynamic]) →* dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
-  tearOffOptional(){([dynamic]) →* dynamic};
-  tearOffOptional(value){([dynamic]) →* dynamic};
+  tearOffOptional.call();
+  tearOffOptional.call(value);
   ({value: dynamic}) →* dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
-  tearOffNamed(){({value: dynamic}) →* dynamic};
-  tearOffNamed(value: value){({value: dynamic}) →* dynamic};
+  tearOffNamed.call();
+  tearOffNamed.call(value: value);
 }
 static method Extension|getterCalls(lowered final self::Class* #this, dynamic value) → dynamic {
-  self::Extension|get#tearOffGetterNoArgs(#this){dynamic}.call();
-  self::Extension|get#tearOffGetterRequired(#this){dynamic}.call(value);
-  self::Extension|get#tearOffGetterOptional(#this){dynamic}.call();
-  self::Extension|get#tearOffGetterOptional(#this){dynamic}.call(value);
-  self::Extension|get#tearOffGetterNamed(#this){dynamic}.call();
-  self::Extension|get#tearOffGetterNamed(#this){dynamic}.call(value: value);
+  self::Extension|get#tearOffGetterNoArgs(#this).call();
+  self::Extension|get#tearOffGetterRequired(#this).call(value);
+  self::Extension|get#tearOffGetterOptional(#this).call();
+  self::Extension|get#tearOffGetterOptional(#this).call(value);
+  self::Extension|get#tearOffGetterNamed(#this).call();
+  self::Extension|get#tearOffGetterNamed(#this).call(value: value);
 }
 static method Extension|get#getterCalls(lowered final self::Class* #this) → (dynamic) →* dynamic
   return (dynamic value) → dynamic => self::Extension|getterCalls(#this, value);
@@ -190,7 +190,7 @@
   self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T*>(#this, value);
 }
 static method GenericExtension|get#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T*>* #this) → self::GenericExtension|get#property::T*
-  return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T*};
+  return #this.{self::GenericClass::field};
 static method GenericExtension|set#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T*>* #this, self::GenericExtension|set#property::T* value) → void {
   #this.{self::GenericClass::field} = value;
 }
@@ -235,58 +235,58 @@
   return <S extends self::GenericExtension|get#invocations::T* = dynamic>(S* value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T*, S*>(#this, value);
 static method GenericExtension|tearOffs<T extends core::Object* = dynamic, S extends self::GenericExtension|tearOffs::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T*>* #this, self::GenericExtension|tearOffs::S* value) → dynamic {
   () →* self::GenericExtension|tearOffs::T* tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T*>(#this);
-  tearOffNoArgs(){() →* self::GenericExtension|tearOffs::T*};
+  tearOffNoArgs.call();
   (self::GenericExtension|tearOffs::T*) →* dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
-  tearOffRequired(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
+  tearOffRequired.call(value);
   ([self::GenericExtension|tearOffs::T*]) →* dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
-  tearOffOptional(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
-  tearOffOptional(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
+  tearOffOptional.call();
+  tearOffOptional.call(value);
   ({value: self::GenericExtension|tearOffs::T*}) →* dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
-  tearOffNamed(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
-  tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
+  tearOffNamed.call();
+  tearOffNamed.call(value: value);
   <S extends self::GenericExtension|tearOffs::T* = dynamic>(S*) →* dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
-  genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
-  genericTearOffRequired<self::GenericExtension|tearOffs::T*>(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
-  genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
+  genericTearOffRequired.call<self::GenericExtension|tearOffs::S*>(value);
+  genericTearOffRequired.call<self::GenericExtension|tearOffs::T*>(value);
+  genericTearOffRequired.call<self::GenericExtension|tearOffs::S*>(value);
   <S extends self::GenericExtension|tearOffs::T* = dynamic>([S*]) →* dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
-  genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
-  genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
-  genericTearOffOptional<self::GenericExtension|tearOffs::S*>(){([self::GenericExtension|tearOffs::S*]) →* dynamic};
-  genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
-  genericTearOffOptional<self::GenericExtension|tearOffs::T*>(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
-  genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
+  genericTearOffOptional.call<self::GenericExtension|tearOffs::T*>();
+  genericTearOffOptional.call<self::GenericExtension|tearOffs::T*>();
+  genericTearOffOptional.call<self::GenericExtension|tearOffs::S*>();
+  genericTearOffOptional.call<self::GenericExtension|tearOffs::S*>(value);
+  genericTearOffOptional.call<self::GenericExtension|tearOffs::T*>(value);
+  genericTearOffOptional.call<self::GenericExtension|tearOffs::S*>(value);
   <S extends self::GenericExtension|tearOffs::T* = dynamic>({value: S*}) →* dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
-  genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
-  genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
-  genericTearOffNamed<self::GenericExtension|tearOffs::S*>(){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
-  genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
-  genericTearOffNamed<self::GenericExtension|tearOffs::T*>(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
-  genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
+  genericTearOffNamed.call<self::GenericExtension|tearOffs::T*>();
+  genericTearOffNamed.call<self::GenericExtension|tearOffs::T*>();
+  genericTearOffNamed.call<self::GenericExtension|tearOffs::S*>();
+  genericTearOffNamed.call<self::GenericExtension|tearOffs::S*>(value: value);
+  genericTearOffNamed.call<self::GenericExtension|tearOffs::T*>(value: value);
+  genericTearOffNamed.call<self::GenericExtension|tearOffs::S*>(value: value);
 }
 static method GenericExtension|get#tearOffs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T*>* #this) → <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S*) →* dynamic
   return <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S* value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T*, S*>(#this, value);
 static method GenericExtension|getterCalls<T extends core::Object* = dynamic, S extends self::GenericExtension|getterCalls::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T*>* #this, self::GenericExtension|getterCalls::S* value) → dynamic {
-  self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
-  self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
-  self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
-  self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
-  self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
-  self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
-  self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
-  self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
-  self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
-  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
-  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
-  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
-  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
-  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
-  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
-  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
-  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
-  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
-  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
-  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value: value);
-  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value: value);
+  self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T*>(#this).call();
+  self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T*>(#this).call(value);
+  self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this).call();
+  self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this).call(value);
+  self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this).call();
+  self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this).call(value: value);
+  self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this).call(value);
+  self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::T*>(value);
+  self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::S*>(value);
+  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this).call();
+  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::T*>();
+  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::S*>();
+  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this).call(value);
+  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::T*>(value);
+  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::S*>(value);
+  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this).call();
+  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::T*>();
+  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::S*>();
+  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this).call(value: value);
+  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::T*>(value: value);
+  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::S*>(value: value);
 }
 static method GenericExtension|get#getterCalls<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T*>* #this) → <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S*) →* dynamic
   return <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S* value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T*, S*>(#this, value);
diff --git a/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.transformed.expect
index 96d1c00..394a69b3 100644
--- a/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.transformed.expect
@@ -116,7 +116,7 @@
 static method Extension|get#tearOffGetterNamed(lowered final self::Class* #this) → dynamic
   return self::Extension|get#writeSetterNamed(#this);
 static method Extension|get#property(lowered final self::Class* #this) → dynamic
-  return #this.{self::Class::field}{dynamic};
+  return #this.{self::Class::field};
 static method Extension|set#property(lowered final self::Class* #this, dynamic value) → void {
   #this.{self::Class::field} = value;
 }
@@ -134,23 +134,23 @@
   return (dynamic value) → dynamic => self::Extension|tearOffs(#this, value);
 static method Extension|tearOffs(lowered final self::Class* #this, dynamic value) → dynamic {
   () →* dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
-  tearOffNoArgs();
+  tearOffNoArgs.call();
   (dynamic) →* dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
-  tearOffRequired(value){(dynamic) →* dynamic};
+  tearOffRequired.call(value);
   ([dynamic]) →* dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
-  tearOffOptional(){([dynamic]) →* dynamic};
-  tearOffOptional(value){([dynamic]) →* dynamic};
+  tearOffOptional.call();
+  tearOffOptional.call(value);
   ({value: dynamic}) →* dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
-  tearOffNamed(){({value: dynamic}) →* dynamic};
-  tearOffNamed(value: value){({value: dynamic}) →* dynamic};
+  tearOffNamed.call();
+  tearOffNamed.call(value: value);
 }
 static method Extension|getterCalls(lowered final self::Class* #this, dynamic value) → dynamic {
-  self::Extension|get#tearOffGetterNoArgs(#this){dynamic}.call();
-  self::Extension|get#tearOffGetterRequired(#this){dynamic}.call(value);
-  self::Extension|get#tearOffGetterOptional(#this){dynamic}.call();
-  self::Extension|get#tearOffGetterOptional(#this){dynamic}.call(value);
-  self::Extension|get#tearOffGetterNamed(#this){dynamic}.call();
-  self::Extension|get#tearOffGetterNamed(#this){dynamic}.call(value: value);
+  self::Extension|get#tearOffGetterNoArgs(#this).call();
+  self::Extension|get#tearOffGetterRequired(#this).call(value);
+  self::Extension|get#tearOffGetterOptional(#this).call();
+  self::Extension|get#tearOffGetterOptional(#this).call(value);
+  self::Extension|get#tearOffGetterNamed(#this).call();
+  self::Extension|get#tearOffGetterNamed(#this).call(value: value);
 }
 static method Extension|get#getterCalls(lowered final self::Class* #this) → (dynamic) →* dynamic
   return (dynamic value) → dynamic => self::Extension|getterCalls(#this, value);
@@ -190,7 +190,7 @@
   self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T*>(#this, value);
 }
 static method GenericExtension|get#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T*>* #this) → self::GenericExtension|get#property::T*
-  return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T*};
+  return #this.{self::GenericClass::field};
 static method GenericExtension|set#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T*>* #this, self::GenericExtension|set#property::T* value) → void {
   #this.{self::GenericClass::field} = value;
 }
@@ -235,58 +235,58 @@
   return <S extends self::GenericExtension|get#invocations::T* = dynamic>(S* value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T*, S*>(#this, value);
 static method GenericExtension|tearOffs<T extends core::Object* = dynamic, S extends self::GenericExtension|tearOffs::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T*>* #this, self::GenericExtension|tearOffs::S* value) → dynamic {
   () →* self::GenericExtension|tearOffs::T* tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T*>(#this);
-  tearOffNoArgs(){() →* self::GenericExtension|tearOffs::T*};
+  tearOffNoArgs.call();
   (self::GenericExtension|tearOffs::T*) →* dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
-  tearOffRequired(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
+  tearOffRequired.call(value);
   ([self::GenericExtension|tearOffs::T*]) →* dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
-  tearOffOptional(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
-  tearOffOptional(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
+  tearOffOptional.call();
+  tearOffOptional.call(value);
   ({value: self::GenericExtension|tearOffs::T*}) →* dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
-  tearOffNamed(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
-  tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
+  tearOffNamed.call();
+  tearOffNamed.call(value: value);
   <S extends self::GenericExtension|tearOffs::T* = dynamic>(S*) →* dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
-  genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
-  genericTearOffRequired<self::GenericExtension|tearOffs::T*>(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
-  genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
+  genericTearOffRequired.call<self::GenericExtension|tearOffs::S*>(value);
+  genericTearOffRequired.call<self::GenericExtension|tearOffs::T*>(value);
+  genericTearOffRequired.call<self::GenericExtension|tearOffs::S*>(value);
   <S extends self::GenericExtension|tearOffs::T* = dynamic>([S*]) →* dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
-  genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
-  genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
-  genericTearOffOptional<self::GenericExtension|tearOffs::S*>(){([self::GenericExtension|tearOffs::S*]) →* dynamic};
-  genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
-  genericTearOffOptional<self::GenericExtension|tearOffs::T*>(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
-  genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
+  genericTearOffOptional.call<self::GenericExtension|tearOffs::T*>();
+  genericTearOffOptional.call<self::GenericExtension|tearOffs::T*>();
+  genericTearOffOptional.call<self::GenericExtension|tearOffs::S*>();
+  genericTearOffOptional.call<self::GenericExtension|tearOffs::S*>(value);
+  genericTearOffOptional.call<self::GenericExtension|tearOffs::T*>(value);
+  genericTearOffOptional.call<self::GenericExtension|tearOffs::S*>(value);
   <S extends self::GenericExtension|tearOffs::T* = dynamic>({value: S*}) →* dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
-  genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
-  genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
-  genericTearOffNamed<self::GenericExtension|tearOffs::S*>(){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
-  genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
-  genericTearOffNamed<self::GenericExtension|tearOffs::T*>(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
-  genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
+  genericTearOffNamed.call<self::GenericExtension|tearOffs::T*>();
+  genericTearOffNamed.call<self::GenericExtension|tearOffs::T*>();
+  genericTearOffNamed.call<self::GenericExtension|tearOffs::S*>();
+  genericTearOffNamed.call<self::GenericExtension|tearOffs::S*>(value: value);
+  genericTearOffNamed.call<self::GenericExtension|tearOffs::T*>(value: value);
+  genericTearOffNamed.call<self::GenericExtension|tearOffs::S*>(value: value);
 }
 static method GenericExtension|get#tearOffs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T*>* #this) → <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S*) →* dynamic
   return <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S* value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T*, S*>(#this, value);
 static method GenericExtension|getterCalls<T extends core::Object* = dynamic, S extends self::GenericExtension|getterCalls::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T*>* #this, self::GenericExtension|getterCalls::S* value) → dynamic {
-  self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
-  self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
-  self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
-  self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
-  self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
-  self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
-  self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
-  self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
-  self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
-  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
-  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
-  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
-  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
-  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
-  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
-  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
-  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
-  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
-  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
-  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value: value);
-  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value: value);
+  self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T*>(#this).call();
+  self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T*>(#this).call(value);
+  self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this).call();
+  self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this).call(value);
+  self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this).call();
+  self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this).call(value: value);
+  self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this).call(value);
+  self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::T*>(value);
+  self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::S*>(value);
+  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this).call();
+  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::T*>();
+  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::S*>();
+  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this).call(value);
+  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::T*>(value);
+  self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::S*>(value);
+  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this).call();
+  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::T*>();
+  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::S*>();
+  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this).call(value: value);
+  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::T*>(value: value);
+  self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this).call<self::GenericExtension|getterCalls::S*>(value: value);
 }
 static method GenericExtension|get#getterCalls<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T*>* #this) → <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S*) →* dynamic
   return <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S* value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T*, S*>(#this, value);
diff --git a/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.expect b/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.expect
index e3e273f..f9c2886 100644
--- a/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.expect
@@ -110,50 +110,50 @@
 }
 static method Extension|tearOffsFromStaticContext(core::int* value) → dynamic {
   () →* dynamic tearOffNoArgs = #C2;
-  tearOffNoArgs();
+  tearOffNoArgs.call();
   (dynamic) →* dynamic tearOffRequired = #C3;
-  tearOffRequired(value){(dynamic) →* dynamic};
+  tearOffRequired.call(value);
   ([dynamic]) →* dynamic tearOffOptional = #C4;
-  tearOffOptional(){([dynamic]) →* dynamic};
-  tearOffOptional(value){([dynamic]) →* dynamic};
+  tearOffOptional.call();
+  tearOffOptional.call(value);
   ({value: dynamic}) →* dynamic tearOffNamed = #C5;
-  tearOffNamed(){({value: dynamic}) →* dynamic};
-  tearOffNamed(value: value){({value: dynamic}) →* dynamic};
+  tearOffNamed.call();
+  tearOffNamed.call(value: value);
   <S extends core::Object* = dynamic>(S*) →* dynamic tearOffGenericRequired = #C6;
-  tearOffGenericRequired<core::int*>(value){(core::int*) →* dynamic};
-  tearOffGenericRequired<core::int*>(value){(core::int*) →* dynamic};
+  tearOffGenericRequired.call<core::int*>(value);
+  tearOffGenericRequired.call<core::int*>(value);
   <S extends core::Object* = dynamic>([S*]) →* dynamic tearOffGenericOptional = #C7;
-  tearOffGenericOptional<dynamic>(){([dynamic]) →* dynamic};
-  tearOffGenericOptional<core::int*>(){([core::int*]) →* dynamic};
-  tearOffGenericOptional<core::int*>(value){([core::int*]) →* dynamic};
-  tearOffGenericOptional<core::int*>(value){([core::int*]) →* dynamic};
+  tearOffGenericOptional.call<dynamic>();
+  tearOffGenericOptional.call<core::int*>();
+  tearOffGenericOptional.call<core::int*>(value);
+  tearOffGenericOptional.call<core::int*>(value);
   <S extends core::Object* = dynamic>({value: S*}) →* dynamic tearOffGenericNamed = #C8;
-  tearOffGenericNamed<dynamic>(){({value: dynamic}) →* dynamic};
-  tearOffGenericNamed<core::int*>(){({value: core::int*}) →* dynamic};
-  tearOffGenericNamed<core::int*>(value: value){({value: core::int*}) →* dynamic};
-  tearOffGenericNamed<core::int*>(value: value){({value: core::int*}) →* dynamic};
+  tearOffGenericNamed.call<dynamic>();
+  tearOffGenericNamed.call<core::int*>();
+  tearOffGenericNamed.call<core::int*>(value: value);
+  tearOffGenericNamed.call<core::int*>(value: value);
 }
 static method Extension|fieldAccessFromStaticContext() → dynamic {
   self::Extension|field = self::Extension|property;
   self::Extension|property = self::Extension|field;
 }
 static method Extension|getterCallsFromStaticContext(core::int* value) → dynamic {
-  self::Extension|tearOffGetterNoArgs{dynamic}.call();
-  self::Extension|tearOffGetterRequired{dynamic}.call(value);
-  self::Extension|tearOffGetterOptional{dynamic}.call();
-  self::Extension|tearOffGetterOptional{dynamic}.call(value);
-  self::Extension|tearOffGetterNamed{dynamic}.call();
-  self::Extension|tearOffGetterNamed{dynamic}.call(value: value);
-  self::Extension|tearOffGetterGenericRequired{dynamic}.call(value);
-  self::Extension|tearOffGetterGenericRequired{dynamic}.call<core::int*>(value);
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call();
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int*>();
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call(value);
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int*>(value);
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call();
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int*>();
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call(value: value);
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int*>(value: value);
+  self::Extension|tearOffGetterNoArgs.call();
+  self::Extension|tearOffGetterRequired.call(value);
+  self::Extension|tearOffGetterOptional.call();
+  self::Extension|tearOffGetterOptional.call(value);
+  self::Extension|tearOffGetterNamed.call();
+  self::Extension|tearOffGetterNamed.call(value: value);
+  self::Extension|tearOffGetterGenericRequired.call(value);
+  self::Extension|tearOffGetterGenericRequired.call<core::int*>(value);
+  self::Extension|tearOffGetterGenericOptional.call();
+  self::Extension|tearOffGetterGenericOptional.call<core::int*>();
+  self::Extension|tearOffGetterGenericOptional.call(value);
+  self::Extension|tearOffGetterGenericOptional.call<core::int*>(value);
+  self::Extension|tearOffGetterGenericNamed.call();
+  self::Extension|tearOffGetterGenericNamed.call<core::int*>();
+  self::Extension|tearOffGetterGenericNamed.call(value: value);
+  self::Extension|tearOffGetterGenericNamed.call<core::int*>(value: value);
 }
 static method Extension|invocationsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|invocationsFromInstanceContext::T*>* #this, self::Extension|invocationsFromInstanceContext::T* value) → dynamic {
   self::Extension|readGetter();
@@ -177,28 +177,28 @@
   return (self::Extension|get#invocationsFromInstanceContext::T* value) → dynamic => self::Extension|invocationsFromInstanceContext<self::Extension|get#invocationsFromInstanceContext::T*>(#this, value);
 static method Extension|tearOffsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|tearOffsFromInstanceContext::T*>* #this, self::Extension|tearOffsFromInstanceContext::T* value) → dynamic {
   () →* dynamic tearOffNoArgs = #C2;
-  tearOffNoArgs();
+  tearOffNoArgs.call();
   (dynamic) →* dynamic tearOffRequired = #C3;
-  tearOffRequired(value){(dynamic) →* dynamic};
+  tearOffRequired.call(value);
   ([dynamic]) →* dynamic tearOffOptional = #C4;
-  tearOffOptional(){([dynamic]) →* dynamic};
-  tearOffOptional(value){([dynamic]) →* dynamic};
+  tearOffOptional.call();
+  tearOffOptional.call(value);
   ({value: dynamic}) →* dynamic tearOffNamed = #C5;
-  tearOffNamed(){({value: dynamic}) →* dynamic};
-  tearOffNamed(value: value){({value: dynamic}) →* dynamic};
+  tearOffNamed.call();
+  tearOffNamed.call(value: value);
   <S extends core::Object* = dynamic>(S*) →* dynamic tearOffGenericRequired = #C6;
-  tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T*>(value){(self::Extension|tearOffsFromInstanceContext::T*) →* dynamic};
-  tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T*>(value){(self::Extension|tearOffsFromInstanceContext::T*) →* dynamic};
+  tearOffGenericRequired.call<self::Extension|tearOffsFromInstanceContext::T*>(value);
+  tearOffGenericRequired.call<self::Extension|tearOffsFromInstanceContext::T*>(value);
   <S extends core::Object* = dynamic>([S*]) →* dynamic tearOffGenericOptional = #C7;
-  tearOffGenericOptional<dynamic>(){([dynamic]) →* dynamic};
-  tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
-  tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(value){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
-  tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(value){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
+  tearOffGenericOptional.call<dynamic>();
+  tearOffGenericOptional.call<self::Extension|tearOffsFromInstanceContext::T*>();
+  tearOffGenericOptional.call<self::Extension|tearOffsFromInstanceContext::T*>(value);
+  tearOffGenericOptional.call<self::Extension|tearOffsFromInstanceContext::T*>(value);
   <S extends core::Object* = dynamic>({value: S*}) →* dynamic tearOffGenericNamed = #C8;
-  tearOffGenericNamed<dynamic>(){({value: dynamic}) →* dynamic};
-  tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
-  tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
-  tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
+  tearOffGenericNamed.call<dynamic>();
+  tearOffGenericNamed.call<self::Extension|tearOffsFromInstanceContext::T*>();
+  tearOffGenericNamed.call<self::Extension|tearOffsFromInstanceContext::T*>(value: value);
+  tearOffGenericNamed.call<self::Extension|tearOffsFromInstanceContext::T*>(value: value);
 }
 static method Extension|get#tearOffsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#tearOffsFromInstanceContext::T*>* #this) → (self::Extension|get#tearOffsFromInstanceContext::T*) →* dynamic
   return (self::Extension|get#tearOffsFromInstanceContext::T* value) → dynamic => self::Extension|tearOffsFromInstanceContext<self::Extension|get#tearOffsFromInstanceContext::T*>(#this, value);
@@ -209,22 +209,22 @@
 static method Extension|get#fieldAccessFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#fieldAccessFromInstanceContext::T*>* #this) → () →* dynamic
   return () → dynamic => self::Extension|fieldAccessFromInstanceContext<self::Extension|get#fieldAccessFromInstanceContext::T*>(#this);
 static method Extension|getterCallsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|getterCallsFromInstanceContext::T*>* #this, self::Extension|getterCallsFromInstanceContext::T* value) → dynamic {
-  self::Extension|tearOffGetterNoArgs{dynamic}.call();
-  self::Extension|tearOffGetterRequired{dynamic}.call(value);
-  self::Extension|tearOffGetterOptional{dynamic}.call();
-  self::Extension|tearOffGetterOptional{dynamic}.call(value);
-  self::Extension|tearOffGetterNamed{dynamic}.call();
-  self::Extension|tearOffGetterNamed{dynamic}.call(value: value);
-  self::Extension|tearOffGetterGenericRequired{dynamic}.call(value);
-  self::Extension|tearOffGetterGenericRequired{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call();
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>();
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call(value);
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call();
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>();
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call(value: value);
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value: value);
+  self::Extension|tearOffGetterNoArgs.call();
+  self::Extension|tearOffGetterRequired.call(value);
+  self::Extension|tearOffGetterOptional.call();
+  self::Extension|tearOffGetterOptional.call(value);
+  self::Extension|tearOffGetterNamed.call();
+  self::Extension|tearOffGetterNamed.call(value: value);
+  self::Extension|tearOffGetterGenericRequired.call(value);
+  self::Extension|tearOffGetterGenericRequired.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
+  self::Extension|tearOffGetterGenericOptional.call();
+  self::Extension|tearOffGetterGenericOptional.call<self::Extension|getterCallsFromInstanceContext::T*>();
+  self::Extension|tearOffGetterGenericOptional.call(value);
+  self::Extension|tearOffGetterGenericOptional.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
+  self::Extension|tearOffGetterGenericNamed.call();
+  self::Extension|tearOffGetterGenericNamed.call<self::Extension|getterCallsFromInstanceContext::T*>();
+  self::Extension|tearOffGetterGenericNamed.call(value: value);
+  self::Extension|tearOffGetterGenericNamed.call<self::Extension|getterCallsFromInstanceContext::T*>(value: value);
 }
 static method Extension|get#getterCallsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#getterCallsFromInstanceContext::T*>* #this) → (self::Extension|get#getterCallsFromInstanceContext::T*) →* dynamic
   return (self::Extension|get#getterCallsFromInstanceContext::T* value) → dynamic => self::Extension|getterCallsFromInstanceContext<self::Extension|get#getterCallsFromInstanceContext::T*>(#this, value);
diff --git a/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.transformed.expect
index e3e273f..f9c2886 100644
--- a/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.transformed.expect
@@ -110,50 +110,50 @@
 }
 static method Extension|tearOffsFromStaticContext(core::int* value) → dynamic {
   () →* dynamic tearOffNoArgs = #C2;
-  tearOffNoArgs();
+  tearOffNoArgs.call();
   (dynamic) →* dynamic tearOffRequired = #C3;
-  tearOffRequired(value){(dynamic) →* dynamic};
+  tearOffRequired.call(value);
   ([dynamic]) →* dynamic tearOffOptional = #C4;
-  tearOffOptional(){([dynamic]) →* dynamic};
-  tearOffOptional(value){([dynamic]) →* dynamic};
+  tearOffOptional.call();
+  tearOffOptional.call(value);
   ({value: dynamic}) →* dynamic tearOffNamed = #C5;
-  tearOffNamed(){({value: dynamic}) →* dynamic};
-  tearOffNamed(value: value){({value: dynamic}) →* dynamic};
+  tearOffNamed.call();
+  tearOffNamed.call(value: value);
   <S extends core::Object* = dynamic>(S*) →* dynamic tearOffGenericRequired = #C6;
-  tearOffGenericRequired<core::int*>(value){(core::int*) →* dynamic};
-  tearOffGenericRequired<core::int*>(value){(core::int*) →* dynamic};
+  tearOffGenericRequired.call<core::int*>(value);
+  tearOffGenericRequired.call<core::int*>(value);
   <S extends core::Object* = dynamic>([S*]) →* dynamic tearOffGenericOptional = #C7;
-  tearOffGenericOptional<dynamic>(){([dynamic]) →* dynamic};
-  tearOffGenericOptional<core::int*>(){([core::int*]) →* dynamic};
-  tearOffGenericOptional<core::int*>(value){([core::int*]) →* dynamic};
-  tearOffGenericOptional<core::int*>(value){([core::int*]) →* dynamic};
+  tearOffGenericOptional.call<dynamic>();
+  tearOffGenericOptional.call<core::int*>();
+  tearOffGenericOptional.call<core::int*>(value);
+  tearOffGenericOptional.call<core::int*>(value);
   <S extends core::Object* = dynamic>({value: S*}) →* dynamic tearOffGenericNamed = #C8;
-  tearOffGenericNamed<dynamic>(){({value: dynamic}) →* dynamic};
-  tearOffGenericNamed<core::int*>(){({value: core::int*}) →* dynamic};
-  tearOffGenericNamed<core::int*>(value: value){({value: core::int*}) →* dynamic};
-  tearOffGenericNamed<core::int*>(value: value){({value: core::int*}) →* dynamic};
+  tearOffGenericNamed.call<dynamic>();
+  tearOffGenericNamed.call<core::int*>();
+  tearOffGenericNamed.call<core::int*>(value: value);
+  tearOffGenericNamed.call<core::int*>(value: value);
 }
 static method Extension|fieldAccessFromStaticContext() → dynamic {
   self::Extension|field = self::Extension|property;
   self::Extension|property = self::Extension|field;
 }
 static method Extension|getterCallsFromStaticContext(core::int* value) → dynamic {
-  self::Extension|tearOffGetterNoArgs{dynamic}.call();
-  self::Extension|tearOffGetterRequired{dynamic}.call(value);
-  self::Extension|tearOffGetterOptional{dynamic}.call();
-  self::Extension|tearOffGetterOptional{dynamic}.call(value);
-  self::Extension|tearOffGetterNamed{dynamic}.call();
-  self::Extension|tearOffGetterNamed{dynamic}.call(value: value);
-  self::Extension|tearOffGetterGenericRequired{dynamic}.call(value);
-  self::Extension|tearOffGetterGenericRequired{dynamic}.call<core::int*>(value);
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call();
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int*>();
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call(value);
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int*>(value);
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call();
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int*>();
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call(value: value);
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int*>(value: value);
+  self::Extension|tearOffGetterNoArgs.call();
+  self::Extension|tearOffGetterRequired.call(value);
+  self::Extension|tearOffGetterOptional.call();
+  self::Extension|tearOffGetterOptional.call(value);
+  self::Extension|tearOffGetterNamed.call();
+  self::Extension|tearOffGetterNamed.call(value: value);
+  self::Extension|tearOffGetterGenericRequired.call(value);
+  self::Extension|tearOffGetterGenericRequired.call<core::int*>(value);
+  self::Extension|tearOffGetterGenericOptional.call();
+  self::Extension|tearOffGetterGenericOptional.call<core::int*>();
+  self::Extension|tearOffGetterGenericOptional.call(value);
+  self::Extension|tearOffGetterGenericOptional.call<core::int*>(value);
+  self::Extension|tearOffGetterGenericNamed.call();
+  self::Extension|tearOffGetterGenericNamed.call<core::int*>();
+  self::Extension|tearOffGetterGenericNamed.call(value: value);
+  self::Extension|tearOffGetterGenericNamed.call<core::int*>(value: value);
 }
 static method Extension|invocationsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|invocationsFromInstanceContext::T*>* #this, self::Extension|invocationsFromInstanceContext::T* value) → dynamic {
   self::Extension|readGetter();
@@ -177,28 +177,28 @@
   return (self::Extension|get#invocationsFromInstanceContext::T* value) → dynamic => self::Extension|invocationsFromInstanceContext<self::Extension|get#invocationsFromInstanceContext::T*>(#this, value);
 static method Extension|tearOffsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|tearOffsFromInstanceContext::T*>* #this, self::Extension|tearOffsFromInstanceContext::T* value) → dynamic {
   () →* dynamic tearOffNoArgs = #C2;
-  tearOffNoArgs();
+  tearOffNoArgs.call();
   (dynamic) →* dynamic tearOffRequired = #C3;
-  tearOffRequired(value){(dynamic) →* dynamic};
+  tearOffRequired.call(value);
   ([dynamic]) →* dynamic tearOffOptional = #C4;
-  tearOffOptional(){([dynamic]) →* dynamic};
-  tearOffOptional(value){([dynamic]) →* dynamic};
+  tearOffOptional.call();
+  tearOffOptional.call(value);
   ({value: dynamic}) →* dynamic tearOffNamed = #C5;
-  tearOffNamed(){({value: dynamic}) →* dynamic};
-  tearOffNamed(value: value){({value: dynamic}) →* dynamic};
+  tearOffNamed.call();
+  tearOffNamed.call(value: value);
   <S extends core::Object* = dynamic>(S*) →* dynamic tearOffGenericRequired = #C6;
-  tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T*>(value){(self::Extension|tearOffsFromInstanceContext::T*) →* dynamic};
-  tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T*>(value){(self::Extension|tearOffsFromInstanceContext::T*) →* dynamic};
+  tearOffGenericRequired.call<self::Extension|tearOffsFromInstanceContext::T*>(value);
+  tearOffGenericRequired.call<self::Extension|tearOffsFromInstanceContext::T*>(value);
   <S extends core::Object* = dynamic>([S*]) →* dynamic tearOffGenericOptional = #C7;
-  tearOffGenericOptional<dynamic>(){([dynamic]) →* dynamic};
-  tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
-  tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(value){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
-  tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(value){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
+  tearOffGenericOptional.call<dynamic>();
+  tearOffGenericOptional.call<self::Extension|tearOffsFromInstanceContext::T*>();
+  tearOffGenericOptional.call<self::Extension|tearOffsFromInstanceContext::T*>(value);
+  tearOffGenericOptional.call<self::Extension|tearOffsFromInstanceContext::T*>(value);
   <S extends core::Object* = dynamic>({value: S*}) →* dynamic tearOffGenericNamed = #C8;
-  tearOffGenericNamed<dynamic>(){({value: dynamic}) →* dynamic};
-  tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
-  tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
-  tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
+  tearOffGenericNamed.call<dynamic>();
+  tearOffGenericNamed.call<self::Extension|tearOffsFromInstanceContext::T*>();
+  tearOffGenericNamed.call<self::Extension|tearOffsFromInstanceContext::T*>(value: value);
+  tearOffGenericNamed.call<self::Extension|tearOffsFromInstanceContext::T*>(value: value);
 }
 static method Extension|get#tearOffsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#tearOffsFromInstanceContext::T*>* #this) → (self::Extension|get#tearOffsFromInstanceContext::T*) →* dynamic
   return (self::Extension|get#tearOffsFromInstanceContext::T* value) → dynamic => self::Extension|tearOffsFromInstanceContext<self::Extension|get#tearOffsFromInstanceContext::T*>(#this, value);
@@ -209,22 +209,22 @@
 static method Extension|get#fieldAccessFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#fieldAccessFromInstanceContext::T*>* #this) → () →* dynamic
   return () → dynamic => self::Extension|fieldAccessFromInstanceContext<self::Extension|get#fieldAccessFromInstanceContext::T*>(#this);
 static method Extension|getterCallsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|getterCallsFromInstanceContext::T*>* #this, self::Extension|getterCallsFromInstanceContext::T* value) → dynamic {
-  self::Extension|tearOffGetterNoArgs{dynamic}.call();
-  self::Extension|tearOffGetterRequired{dynamic}.call(value);
-  self::Extension|tearOffGetterOptional{dynamic}.call();
-  self::Extension|tearOffGetterOptional{dynamic}.call(value);
-  self::Extension|tearOffGetterNamed{dynamic}.call();
-  self::Extension|tearOffGetterNamed{dynamic}.call(value: value);
-  self::Extension|tearOffGetterGenericRequired{dynamic}.call(value);
-  self::Extension|tearOffGetterGenericRequired{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call();
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>();
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call(value);
-  self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call();
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>();
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call(value: value);
-  self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value: value);
+  self::Extension|tearOffGetterNoArgs.call();
+  self::Extension|tearOffGetterRequired.call(value);
+  self::Extension|tearOffGetterOptional.call();
+  self::Extension|tearOffGetterOptional.call(value);
+  self::Extension|tearOffGetterNamed.call();
+  self::Extension|tearOffGetterNamed.call(value: value);
+  self::Extension|tearOffGetterGenericRequired.call(value);
+  self::Extension|tearOffGetterGenericRequired.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
+  self::Extension|tearOffGetterGenericOptional.call();
+  self::Extension|tearOffGetterGenericOptional.call<self::Extension|getterCallsFromInstanceContext::T*>();
+  self::Extension|tearOffGetterGenericOptional.call(value);
+  self::Extension|tearOffGetterGenericOptional.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
+  self::Extension|tearOffGetterGenericNamed.call();
+  self::Extension|tearOffGetterGenericNamed.call<self::Extension|getterCallsFromInstanceContext::T*>();
+  self::Extension|tearOffGetterGenericNamed.call(value: value);
+  self::Extension|tearOffGetterGenericNamed.call<self::Extension|getterCallsFromInstanceContext::T*>(value: value);
 }
 static method Extension|get#getterCallsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#getterCallsFromInstanceContext::T*>* #this) → (self::Extension|get#getterCallsFromInstanceContext::T*) →* dynamic
   return (self::Extension|get#getterCallsFromInstanceContext::T* value) → dynamic => self::Extension|getterCallsFromInstanceContext<self::Extension|get#getterCallsFromInstanceContext::T*>(#this, value);
diff --git a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.expect b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.expect
index 8289cb4..3f2a400 100644
--- a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.expect
@@ -38,12 +38,12 @@
   dynamic c0 = new self::Class::•();
   core::Object* c1 = new self::Class::•();
   self::Class* c2 = new self::Class::•();
-  self::expect(123, c0{dynamic}.method());
+  self::expect(123, c0.method());
   self::expect(87, self::Extension|method(c1));
   self::expect(42, self::ClassExtension|method(c2));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.transformed.expect
index 8289cb4..3f2a400 100644
--- a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.transformed.expect
@@ -38,12 +38,12 @@
   dynamic c0 = new self::Class::•();
   core::Object* c1 = new self::Class::•();
   self::Class* c2 = new self::Class::•();
-  self::expect(123, c0{dynamic}.method());
+  self::expect(123, c0.method());
   self::expect(87, self::Extension|method(c1));
   self::expect(42, self::ClassExtension|method(c2));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.expect b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.expect
index b2bd40c..cf95acc 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.expect
@@ -36,29 +36,29 @@
   set field = self::Extension2|set#field;
 }
 static method Extension1|get#field(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field1}{core::int*};
+  return #this.{self::Class::field1};
 static method Extension1|set#field(lowered final self::Class* #this, core::int* value) → void {
   #this.{self::Class::field1} = value;
 }
 static method Extension1|method(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field1}{core::int*};
+  return #this.{self::Class::field1};
 static method Extension1|get#method(lowered final self::Class* #this) → () →* core::int*
   return () → core::int* => self::Extension1|method(#this);
 static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class* #this, self::Extension1|genericMethod::T* t) → core::int*
-  return #this.{self::Class::field1}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class::field1}.{core::num::+}(t) as{TypeError} core::int*;
 static method Extension1|get#genericMethod(lowered final self::Class* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
 static method Extension2|get#field(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field2}{core::int*};
+  return #this.{self::Class::field2};
 static method Extension2|set#field(lowered final self::Class* #this, core::int* value) → void {
   #this.{self::Class::field2} = value;
 }
 static method Extension2|method(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field2}{core::int*};
+  return #this.{self::Class::field2};
 static method Extension2|get#method(lowered final self::Class* #this) → () →* core::int*
   return () → core::int* => self::Extension2|method(#this);
 static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class* #this, self::Extension2|genericMethod::T* t) → core::int*
-  return #this.{self::Class::field2}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class::field2}.{core::num::+}(t) as{TypeError} core::int*;
 static method Extension2|get#genericMethod(lowered final self::Class* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
 static method main() → dynamic {
@@ -69,25 +69,25 @@
   self::expect(87, self::Extension2|method(c));
   () →* core::int* tearOff1 = self::Extension1|get#method(c);
   () →* core::int* tearOff2 = self::Extension2|get#method(c);
-  self::expect(42, tearOff1(){() →* core::int*});
-  self::expect(87, tearOff2(){() →* core::int*});
+  self::expect(42, tearOff1.call());
+  self::expect(87, tearOff2.call());
   self::expect(52, self::Extension1|genericMethod<core::int*>(c, 10));
   self::expect(97, self::Extension2|genericMethod<core::int*>(c, 10));
   self::expect(52, self::Extension1|genericMethod<core::num*>(c, 10));
   self::expect(97, self::Extension2|genericMethod<core::num*>(c, 10));
   <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension1|get#genericMethod(c);
   <T extends core::num*>(T*) →* core::int* genericTearOff2 = self::Extension2|get#genericMethod(c);
-  self::expect(52, genericTearOff1<core::int*>(10){(core::int*) →* core::int*});
-  self::expect(97, genericTearOff2<core::int*>(10){(core::int*) →* core::int*});
-  self::expect(52, genericTearOff1<core::num*>(10){(core::num*) →* core::int*});
-  self::expect(97, genericTearOff2<core::num*>(10){(core::num*) →* core::int*});
+  self::expect(52, genericTearOff1.call<core::int*>(10));
+  self::expect(97, genericTearOff2.call<core::int*>(10));
+  self::expect(52, genericTearOff1.call<core::num*>(10));
+  self::expect(97, genericTearOff2.call<core::num*>(10));
   self::expect(23, let final self::Class* #t1 = c in let final core::int* #t2 = 23 in let final void #t3 = self::Extension1|set#field(#t1, #t2) in #t2);
   self::expect(67, let final self::Class* #t4 = c in let final core::int* #t5 = 67 in let final void #t6 = self::Extension2|set#field(#t4, #t5) in #t5);
   self::expect(23, self::Extension1|get#field(c));
   self::expect(67, self::Extension2|get#field(c));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.transformed.expect
index 5beead8..ad97e80 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.transformed.expect
@@ -36,29 +36,29 @@
   set field = self::Extension2|set#field;
 }
 static method Extension1|get#field(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field1}{core::int*};
+  return #this.{self::Class::field1};
 static method Extension1|set#field(lowered final self::Class* #this, core::int* value) → void {
   #this.{self::Class::field1} = value;
 }
 static method Extension1|method(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field1}{core::int*};
+  return #this.{self::Class::field1};
 static method Extension1|get#method(lowered final self::Class* #this) → () →* core::int*
   return () → core::int* => self::Extension1|method(#this);
 static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class* #this, self::Extension1|genericMethod::T* t) → core::int*
-  return #this.{self::Class::field1}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class::field1}.{core::num::+}(t) as{TypeError} core::int*;
 static method Extension1|get#genericMethod(lowered final self::Class* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
 static method Extension2|get#field(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field2}{core::int*};
+  return #this.{self::Class::field2};
 static method Extension2|set#field(lowered final self::Class* #this, core::int* value) → void {
   #this.{self::Class::field2} = value;
 }
 static method Extension2|method(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field2}{core::int*};
+  return #this.{self::Class::field2};
 static method Extension2|get#method(lowered final self::Class* #this) → () →* core::int*
   return () → core::int* => self::Extension2|method(#this);
 static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class* #this, self::Extension2|genericMethod::T* t) → core::int*
-  return #this.{self::Class::field2}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class::field2}.{core::num::+}(t) as{TypeError} core::int*;
 static method Extension2|get#genericMethod(lowered final self::Class* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
 static method main() → dynamic {
@@ -69,25 +69,25 @@
   self::expect(87, self::Extension2|method(c));
   () →* core::int* tearOff1 = self::Extension1|get#method(c);
   () →* core::int* tearOff2 = self::Extension2|get#method(c);
-  self::expect(42, tearOff1(){() →* core::int*});
-  self::expect(87, tearOff2(){() →* core::int*});
+  self::expect(42, tearOff1.call());
+  self::expect(87, tearOff2.call());
   self::expect(52, self::Extension1|genericMethod<core::int*>(c, 10));
   self::expect(97, self::Extension2|genericMethod<core::int*>(c, 10));
   self::expect(52, self::Extension1|genericMethod<core::num*>(c, 10));
   self::expect(97, self::Extension2|genericMethod<core::num*>(c, 10));
   <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension1|get#genericMethod(c);
   <T extends core::num*>(T*) →* core::int* genericTearOff2 = self::Extension2|get#genericMethod(c);
-  self::expect(52, genericTearOff1<core::int*>(10){(core::int*) →* core::int*});
-  self::expect(97, genericTearOff2<core::int*>(10){(core::int*) →* core::int*});
-  self::expect(52, genericTearOff1<core::num*>(10){(core::num*) →* core::int*});
-  self::expect(97, genericTearOff2<core::num*>(10){(core::num*) →* core::int*});
+  self::expect(52, genericTearOff1.call<core::int*>(10));
+  self::expect(97, genericTearOff2.call<core::int*>(10));
+  self::expect(52, genericTearOff1.call<core::num*>(10));
+  self::expect(97, genericTearOff2.call<core::num*>(10));
   self::expect(23, let final self::Class* #t1 = c in let final core::int* #t2 = 23 in let final void #t3 = self::Extension1|set#field(#t1, #t2) in #t2);
   self::expect(67, let final self::Class* #t4 = c in let final core::int* #t5 = 67 in let final void #t6 = self::Extension2|set#field(#t4, #t5) in #t5);
   self::expect(23, self::Extension1|get#field(c));
   self::expect(67, self::Extension2|get#field(c));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.expect b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.expect
index 6e15fda..6cff7c7 100644
--- a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.expect
@@ -39,7 +39,7 @@
 static field core::String* Extension1|latestType;
 static method Extension1|get#field<T extends core::num*>(lowered final self::Class<self::Extension1|get#field::T*>* #this) → self::Extension1|get#field::T* {
   self::Extension1|latestType = "${self::Extension1|get#field::T*}";
-  return #this.{self::Class::field1}{self::Extension1|get#field::T*};
+  return #this.{self::Class::field1};
 }
 static method Extension1|set#field<T extends core::num*>(lowered final self::Class<self::Extension1|set#field::T*>* #this, self::Extension1|set#field::T* value) → void {
   self::Extension1|latestType = "${self::Extension1|set#field::T*}";
@@ -47,27 +47,27 @@
 }
 static method Extension1|method<T extends core::num*>(lowered final self::Class<self::Extension1|method::T*>* #this) → self::Extension1|method::T* {
   self::Extension1|latestType = "${self::Extension1|method::T*}";
-  return #this.{self::Class::field1}{self::Extension1|method::T*};
+  return #this.{self::Class::field1};
 }
 static method Extension1|get#method<T extends core::num*>(lowered final self::Class<self::Extension1|get#method::T*>* #this) → () →* self::Extension1|get#method::T*
   return () → self::Extension1|get#method::T* => self::Extension1|method<self::Extension1|get#method::T*>(#this);
 static method Extension1|genericMethod<T extends core::num*, S extends core::num*>(lowered final self::Class<self::Extension1|genericMethod::T*>* #this, self::Extension1|genericMethod::S* t) → self::Extension1|genericMethod::T* {
   self::Extension1|latestType = "${self::Extension1|genericMethod::T*}:${self::Extension1|genericMethod::S*}";
-  return #this.{self::Class::field1}{self::Extension1|genericMethod::T*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} self::Extension1|genericMethod::T*;
+  return #this.{self::Class::field1}.{core::num::+}(t) as{TypeError} self::Extension1|genericMethod::T*;
 }
 static method Extension1|get#genericMethod<T extends core::num*>(lowered final self::Class<self::Extension1|get#genericMethod::T*>* #this) → <S extends core::num*>(S*) →* self::Extension1|get#genericMethod::T*
   return <S extends core::num*>(S* t) → self::Extension1|get#genericMethod::T* => self::Extension1|genericMethod<self::Extension1|get#genericMethod::T*, S*>(#this, t);
 static method Extension2|get#field<T extends core::num*>(lowered final self::Class<self::Extension2|get#field::T*>* #this) → self::Extension2|get#field::T*
-  return #this.{self::Class::field2}{self::Extension2|get#field::T*};
+  return #this.{self::Class::field2};
 static method Extension2|set#field<T extends core::num*>(lowered final self::Class<self::Extension2|set#field::T*>* #this, self::Extension2|set#field::T* value) → void {
   #this.{self::Class::field2} = value;
 }
 static method Extension2|method<T extends core::num*>(lowered final self::Class<self::Extension2|method::T*>* #this) → self::Extension2|method::T*
-  return #this.{self::Class::field2}{self::Extension2|method::T*};
+  return #this.{self::Class::field2};
 static method Extension2|get#method<T extends core::num*>(lowered final self::Class<self::Extension2|get#method::T*>* #this) → () →* self::Extension2|get#method::T*
   return () → self::Extension2|get#method::T* => self::Extension2|method<self::Extension2|get#method::T*>(#this);
 static method Extension2|genericMethod<T extends core::num*, S extends core::num*>(lowered final self::Class<self::Extension2|genericMethod::T*>* #this, self::Extension2|genericMethod::S* t) → self::Extension2|genericMethod::T*
-  return #this.{self::Class::field2}{self::Extension2|genericMethod::T*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} self::Extension2|genericMethod::T*;
+  return #this.{self::Class::field2}.{core::num::+}(t) as{TypeError} self::Extension2|genericMethod::T*;
 static method Extension2|get#genericMethod<T extends core::num*>(lowered final self::Class<self::Extension2|get#genericMethod::T*>* #this) → <S extends core::num*>(S*) →* self::Extension2|get#genericMethod::T*
   return <S extends core::num*>(S* t) → self::Extension2|get#genericMethod::T* => self::Extension2|genericMethod<self::Extension2|get#genericMethod::T*, S*>(#this, t);
 static method main() → dynamic {
@@ -85,11 +85,11 @@
   () →* core::num* tearOffNumber1 = self::Extension1|get#method<core::num*>(c);
   () →* core::int* tearOffInteger1 = self::Extension1|get#method<core::int*>(c);
   () →* core::num* tearOff2 = self::Extension2|get#method<core::num*>(c);
-  self::expect(42, tearOffNumber1(){() →* core::num*});
+  self::expect(42, tearOffNumber1.call());
   self::expect("num", self::Extension1|latestType);
-  self::expect(42, tearOffInteger1(){() →* core::int*});
+  self::expect(42, tearOffInteger1.call());
   self::expect("int", self::Extension1|latestType);
-  self::expect(87, tearOff2(){() →* core::num*});
+  self::expect(87, tearOff2.call());
   self::expect(52, self::Extension1|genericMethod<core::num*, core::int*>(c, 10));
   self::expect("num:int", self::Extension1|latestType);
   self::expect(52, self::Extension1|genericMethod<core::int*, core::int*>(c, 10));
@@ -109,16 +109,16 @@
   <S extends core::num*>(S*) →* core::num* genericTearOffNumber1 = self::Extension1|get#genericMethod<core::num*>(c);
   <S extends core::num*>(S*) →* core::int* genericTearOffInteger1 = self::Extension1|get#genericMethod<core::int*>(c);
   <S extends core::num*>(S*) →* core::num* genericTearOff2 = self::Extension2|get#genericMethod<core::num*>(c);
-  self::expect(52, genericTearOffNumber1<core::int*>(10){(core::int*) →* core::num*});
+  self::expect(52, genericTearOffNumber1.call<core::int*>(10));
   self::expect("num:int", self::Extension1|latestType);
-  self::expect(52, genericTearOffInteger1<core::int*>(10){(core::int*) →* core::int*});
+  self::expect(52, genericTearOffInteger1.call<core::int*>(10));
   self::expect("int:int", self::Extension1|latestType);
-  self::expect(97, genericTearOff2<core::int*>(10){(core::int*) →* core::num*});
-  self::expect(52, genericTearOffNumber1<core::num*>(10){(core::num*) →* core::num*});
+  self::expect(97, genericTearOff2.call<core::int*>(10));
+  self::expect(52, genericTearOffNumber1.call<core::num*>(10));
   self::expect("num:num", self::Extension1|latestType);
-  self::expect(52, genericTearOffInteger1<core::num*>(10){(core::num*) →* core::int*});
+  self::expect(52, genericTearOffInteger1.call<core::num*>(10));
   self::expect("int:num", self::Extension1|latestType);
-  self::expect(97, genericTearOff2<core::num*>(10){(core::num*) →* core::num*});
+  self::expect(97, genericTearOff2.call<core::num*>(10));
   self::expect(23, let final self::Class<core::int*>* #t1 = c in let final core::int* #t2 = 23 in let final void #t3 = self::Extension1|set#field<core::num*>(#t1, #t2) in #t2);
   self::expect("num", self::Extension1|latestType);
   self::expect(23, let final self::Class<core::int*>* #t4 = c in let final core::int* #t5 = 23 in let final void #t6 = self::Extension1|set#field<core::int*>(#t4, #t5) in #t5);
@@ -128,7 +128,7 @@
   self::expect(67, self::Extension2|get#field<core::num*>(c));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.transformed.expect
index a8c297a..8f41bf6 100644
--- a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.transformed.expect
@@ -39,7 +39,7 @@
 static field core::String* Extension1|latestType;
 static method Extension1|get#field<T extends core::num*>(lowered final self::Class<self::Extension1|get#field::T*>* #this) → self::Extension1|get#field::T* {
   self::Extension1|latestType = "${self::Extension1|get#field::T*}";
-  return #this.{self::Class::field1}{self::Extension1|get#field::T*};
+  return #this.{self::Class::field1};
 }
 static method Extension1|set#field<T extends core::num*>(lowered final self::Class<self::Extension1|set#field::T*>* #this, self::Extension1|set#field::T* value) → void {
   self::Extension1|latestType = "${self::Extension1|set#field::T*}";
@@ -47,27 +47,27 @@
 }
 static method Extension1|method<T extends core::num*>(lowered final self::Class<self::Extension1|method::T*>* #this) → self::Extension1|method::T* {
   self::Extension1|latestType = "${self::Extension1|method::T*}";
-  return #this.{self::Class::field1}{self::Extension1|method::T*};
+  return #this.{self::Class::field1};
 }
 static method Extension1|get#method<T extends core::num*>(lowered final self::Class<self::Extension1|get#method::T*>* #this) → () →* self::Extension1|get#method::T*
   return () → self::Extension1|get#method::T* => self::Extension1|method<self::Extension1|get#method::T*>(#this);
 static method Extension1|genericMethod<T extends core::num*, S extends core::num*>(lowered final self::Class<self::Extension1|genericMethod::T*>* #this, self::Extension1|genericMethod::S* t) → self::Extension1|genericMethod::T* {
   self::Extension1|latestType = "${self::Extension1|genericMethod::T*}:${self::Extension1|genericMethod::S*}";
-  return #this.{self::Class::field1}{self::Extension1|genericMethod::T*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} self::Extension1|genericMethod::T*;
+  return #this.{self::Class::field1}.{core::num::+}(t) as{TypeError} self::Extension1|genericMethod::T*;
 }
 static method Extension1|get#genericMethod<T extends core::num*>(lowered final self::Class<self::Extension1|get#genericMethod::T*>* #this) → <S extends core::num*>(S*) →* self::Extension1|get#genericMethod::T*
   return <S extends core::num*>(S* t) → self::Extension1|get#genericMethod::T* => self::Extension1|genericMethod<self::Extension1|get#genericMethod::T*, S*>(#this, t);
 static method Extension2|get#field<T extends core::num*>(lowered final self::Class<self::Extension2|get#field::T*>* #this) → self::Extension2|get#field::T*
-  return #this.{self::Class::field2}{self::Extension2|get#field::T*};
+  return #this.{self::Class::field2};
 static method Extension2|set#field<T extends core::num*>(lowered final self::Class<self::Extension2|set#field::T*>* #this, self::Extension2|set#field::T* value) → void {
   #this.{self::Class::field2} = value;
 }
 static method Extension2|method<T extends core::num*>(lowered final self::Class<self::Extension2|method::T*>* #this) → self::Extension2|method::T*
-  return #this.{self::Class::field2}{self::Extension2|method::T*};
+  return #this.{self::Class::field2};
 static method Extension2|get#method<T extends core::num*>(lowered final self::Class<self::Extension2|get#method::T*>* #this) → () →* self::Extension2|get#method::T*
   return () → self::Extension2|get#method::T* => self::Extension2|method<self::Extension2|get#method::T*>(#this);
 static method Extension2|genericMethod<T extends core::num*, S extends core::num*>(lowered final self::Class<self::Extension2|genericMethod::T*>* #this, self::Extension2|genericMethod::S* t) → self::Extension2|genericMethod::T*
-  return #this.{self::Class::field2}{self::Extension2|genericMethod::T*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} self::Extension2|genericMethod::T*;
+  return #this.{self::Class::field2}.{core::num::+}(t) as{TypeError} self::Extension2|genericMethod::T*;
 static method Extension2|get#genericMethod<T extends core::num*>(lowered final self::Class<self::Extension2|get#genericMethod::T*>* #this) → <S extends core::num*>(S*) →* self::Extension2|get#genericMethod::T*
   return <S extends core::num*>(S* t) → self::Extension2|get#genericMethod::T* => self::Extension2|genericMethod<self::Extension2|get#genericMethod::T*, S*>(#this, t);
 static method main() → dynamic {
@@ -85,11 +85,11 @@
   () →* core::num* tearOffNumber1 = self::Extension1|get#method<core::num*>(c);
   () →* core::int* tearOffInteger1 = self::Extension1|get#method<core::int*>(c);
   () →* core::num* tearOff2 = self::Extension2|get#method<core::num*>(c);
-  self::expect(42, tearOffNumber1(){() →* core::num*});
+  self::expect(42, tearOffNumber1.call());
   self::expect("num", self::Extension1|latestType);
-  self::expect(42, tearOffInteger1(){() →* core::int*});
+  self::expect(42, tearOffInteger1.call());
   self::expect("int", self::Extension1|latestType);
-  self::expect(87, tearOff2(){() →* core::num*});
+  self::expect(87, tearOff2.call());
   self::expect(52, self::Extension1|genericMethod<core::num*, core::int*>(c, 10));
   self::expect("num:int", self::Extension1|latestType);
   self::expect(52, self::Extension1|genericMethod<core::int*, core::int*>(c, 10));
@@ -109,16 +109,16 @@
   <S extends core::num*>(S*) →* core::num* genericTearOffNumber1 = self::Extension1|get#genericMethod<core::num*>(c);
   <S extends core::num*>(S*) →* core::int* genericTearOffInteger1 = self::Extension1|get#genericMethod<core::int*>(c);
   <S extends core::num*>(S*) →* core::num* genericTearOff2 = self::Extension2|get#genericMethod<core::num*>(c);
-  self::expect(52, genericTearOffNumber1<core::int*>(10){(core::int*) →* core::num*});
+  self::expect(52, genericTearOffNumber1.call<core::int*>(10));
   self::expect("num:int", self::Extension1|latestType);
-  self::expect(52, genericTearOffInteger1<core::int*>(10){(core::int*) →* core::int*});
+  self::expect(52, genericTearOffInteger1.call<core::int*>(10));
   self::expect("int:int", self::Extension1|latestType);
-  self::expect(97, genericTearOff2<core::int*>(10){(core::int*) →* core::num*});
-  self::expect(52, genericTearOffNumber1<core::num*>(10){(core::num*) →* core::num*});
+  self::expect(97, genericTearOff2.call<core::int*>(10));
+  self::expect(52, genericTearOffNumber1.call<core::num*>(10));
   self::expect("num:num", self::Extension1|latestType);
-  self::expect(52, genericTearOffInteger1<core::num*>(10){(core::num*) →* core::int*});
+  self::expect(52, genericTearOffInteger1.call<core::num*>(10));
   self::expect("int:num", self::Extension1|latestType);
-  self::expect(97, genericTearOff2<core::num*>(10){(core::num*) →* core::num*});
+  self::expect(97, genericTearOff2.call<core::num*>(10));
   self::expect(23, let final self::Class<core::int*>* #t1 = c in let final core::int* #t2 = 23 in let final void #t3 = self::Extension1|set#field<core::num*>(#t1, #t2) in #t2);
   self::expect("num", self::Extension1|latestType);
   self::expect(23, let final self::Class<core::int*>* #t4 = c in let final core::int* #t5 = 23 in let final void #t6 = self::Extension1|set#field<core::int*>(#t4, #t5) in #t5);
@@ -128,7 +128,7 @@
   self::expect(67, self::Extension2|get#field<core::num*>(c));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/explicit_this.dart.weak.expect b/pkg/front_end/testcases/extensions/explicit_this.dart.weak.expect
index 9328ef6..f13b8bd 100644
--- a/pkg/front_end/testcases/extensions/explicit_this.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/explicit_this.dart.weak.expect
@@ -28,11 +28,11 @@
   tearoff method4 = self::A2|get#method4;
 }
 static method A2|method2(lowered final self::A1* #this) → void
-  return #this.{self::A1::method1}(){() →* void};
+  return #this.{self::A1::method1}();
 static method A2|get#method2(lowered final self::A1* #this) → () →* void
   return () → void => self::A2|method2(#this);
 static method A2|method3(lowered final self::A1* #this) → core::Object*
-  return #this.{self::A1::field}{core::Object*};
+  return #this.{self::A1::field};
 static method A2|get#method3(lowered final self::A1* #this) → () →* core::Object*
   return () → core::Object* => self::A2|method3(#this);
 static method A2|method4(lowered final self::A1* #this, core::Object* o) → void {
diff --git a/pkg/front_end/testcases/extensions/explicit_this.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/explicit_this.dart.weak.transformed.expect
index 9328ef6..f13b8bd 100644
--- a/pkg/front_end/testcases/extensions/explicit_this.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/explicit_this.dart.weak.transformed.expect
@@ -28,11 +28,11 @@
   tearoff method4 = self::A2|get#method4;
 }
 static method A2|method2(lowered final self::A1* #this) → void
-  return #this.{self::A1::method1}(){() →* void};
+  return #this.{self::A1::method1}();
 static method A2|get#method2(lowered final self::A1* #this) → () →* void
   return () → void => self::A2|method2(#this);
 static method A2|method3(lowered final self::A1* #this) → core::Object*
-  return #this.{self::A1::field}{core::Object*};
+  return #this.{self::A1::field};
 static method A2|get#method3(lowered final self::A1* #this) → () →* core::Object*
   return () → core::Object* => self::A2|method3(#this);
 static method A2|method4(lowered final self::A1* #this, core::Object* o) → void {
diff --git a/pkg/front_end/testcases/extensions/extension_call.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_call.dart.weak.expect
index c6d89be..12c9cd8 100644
--- a/pkg/front_end/testcases/extensions/extension_call.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/extension_call.dart.weak.expect
@@ -24,7 +24,7 @@
   tearoff call = self::Extension|get#call;
 }
 static method Extension|call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|call::T*>* #this, self::Extension|call::T* a) → self::Extension|call::T*
-  return #this.{self::Class::method}(a){(self::Extension|call::T*) →* self::Extension|call::T*};
+  return #this.{self::Class::method}(a);
 static method Extension|get#call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#call::T*>* #this) → (self::Extension|get#call::T*) →* self::Extension|get#call::T*
   return (self::Extension|get#call::T* a) → self::Extension|get#call::T* => self::Extension|call<self::Extension|get#call::T*>(#this, a);
 static method main() → dynamic {
@@ -37,7 +37,7 @@
   self::expect(123, self::Extension|call<core::int*>(c, 123));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/extension_call.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/extension_call.dart.weak.transformed.expect
index c6d89be..12c9cd8 100644
--- a/pkg/front_end/testcases/extensions/extension_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_call.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
   tearoff call = self::Extension|get#call;
 }
 static method Extension|call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|call::T*>* #this, self::Extension|call::T* a) → self::Extension|call::T*
-  return #this.{self::Class::method}(a){(self::Extension|call::T*) →* self::Extension|call::T*};
+  return #this.{self::Class::method}(a);
 static method Extension|get#call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#call::T*>* #this) → (self::Extension|get#call::T*) →* self::Extension|get#call::T*
   return (self::Extension|get#call::T* a) → self::Extension|get#call::T* => self::Extension|call<self::Extension|get#call::T*>(#this, a);
 static method main() → dynamic {
@@ -37,7 +37,7 @@
   self::expect(123, self::Extension|call<core::int*>(c, 123));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.expect
index 3578f8e..e1fc1ee 100644
--- a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.expect
@@ -85,16 +85,16 @@
 static field core::int* E|field2 = (() → Null {
   invalid-type x = null;
   return null;
-})(){() →* Null};
+}).call();
 static field core::List<invalid-type>* E|field3 = null;
 static field (invalid-type) →* invalid-type E|field4 = null;
 static field (core::List<invalid-type>*) →* core::List<invalid-type>* E|field5 = null;
 static field core::int* E|field6 = (<E extends core::Object* = dynamic>() → Null {
   E* x = null;
   return null;
-})<core::String*>(){() →* Null};
+}).call<core::String*>();
 static field core::int* E|field7 = (<E extends core::Object* = dynamic>() → Null {
   E* x = null;
   return null;
-})<invalid-type>(){() →* Null};
+}).call<invalid-type>();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.transformed.expect
index 3578f8e..e1fc1ee 100644
--- a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.transformed.expect
@@ -85,16 +85,16 @@
 static field core::int* E|field2 = (() → Null {
   invalid-type x = null;
   return null;
-})(){() →* Null};
+}).call();
 static field core::List<invalid-type>* E|field3 = null;
 static field (invalid-type) →* invalid-type E|field4 = null;
 static field (core::List<invalid-type>*) →* core::List<invalid-type>* E|field5 = null;
 static field core::int* E|field6 = (<E extends core::Object* = dynamic>() → Null {
   E* x = null;
   return null;
-})<core::String*>(){() →* Null};
+}).call<core::String*>();
 static field core::int* E|field7 = (<E extends core::Object* = dynamic>() → Null {
   E* x = null;
   return null;
-})<invalid-type>(){() →* Null};
+}).call<invalid-type>();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_methods.dart.weak.expect
index dd3ee97..fd6fddd 100644
--- a/pkg/front_end/testcases/extensions/extension_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/extension_methods.dart.weak.expect
@@ -29,6 +29,6 @@
   return 2;
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  core::int* result = c.{self::C::one}{core::int*}.{core::num::+}(self::E|get#two(c)){(core::num*) →* core::int*};
+  core::int* result = c.{self::C::one}.{core::num::+}(self::E|get#two(c));
   exp::Expect::equals(result, 3);
 }
diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/extension_methods.dart.weak.transformed.expect
index dd3ee97..fd6fddd 100644
--- a/pkg/front_end/testcases/extensions/extension_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_methods.dart.weak.transformed.expect
@@ -29,6 +29,6 @@
   return 2;
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  core::int* result = c.{self::C::one}{core::int*}.{core::num::+}(self::E|get#two(c)){(core::num*) →* core::int*};
+  core::int* result = c.{self::C::one}.{core::num::+}(self::E|get#two(c));
   exp::Expect::equals(result, 3);
 }
diff --git a/pkg/front_end/testcases/extensions/extension_setter.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_setter.dart.weak.expect
index 049dae0..ce8e8ef 100644
--- a/pkg/front_end/testcases/extensions/extension_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter.dart.weak.expect
@@ -49,175 +49,175 @@
   set setter = self::GenericExtension|set#setter;
 }
 static method Extension|get#simpleSetter(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|set#simpleSetter(lowered final self::Class* #this, core::int* value) → void {
   #this.{self::Class::field} = value;
 }
 static method Extension|get#mutatingSetter(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|set#mutatingSetter(lowered final self::Class* #this, core::int* value) → void {
-  value = value.{core::num::+}(1){(core::num*) →* core::int*};
+  value = value.{core::num::+}(1);
   #this.{self::Class::field} = value;
 }
 static method Extension|get#setterWithReturn(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|set#setterWithReturn(lowered final self::Class* #this, core::int* value) → void {
-  if(value.{core::num::<}(0){(core::num*) →* core::bool*}) {
-    #this.{self::Class::field} = value.{core::int::unary-}(){() →* core::int*};
+  if(value.{core::num::<}(0)) {
+    #this.{self::Class::field} = value.{core::int::unary-}();
     return;
   }
   #this.{self::Class::field} = value;
 }
 static method Extension|get#setterWithClosure(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|set#setterWithClosure(lowered final self::Class* #this, core::int* value) → void {
   function abs(dynamic value) → dynamic {
-    return value{dynamic}.<(0) as{TypeError,ForDynamic} core::bool* ?{dynamic} value{dynamic}.unary-() : value;
+    return value.<(0) as{TypeError,ForDynamic} core::bool* ?{dynamic} value.unary-() : value;
   }
-  #this.{self::Class::field} = abs(value){(dynamic) →* dynamic} as{TypeError,ForDynamic} core::int*;
+  #this.{self::Class::field} = abs.call(value) as{TypeError,ForDynamic} core::int*;
 }
 static method Extension|testInternal(lowered final self::Class* #this) → dynamic {
-  self::expect(null, #this.{self::Class::field}{core::int*});
+  self::expect(null, #this.{self::Class::field});
   self::Extension|set#simpleSetter(#this, 0);
-  self::expect(0, #this.{self::Class::field}{core::int*});
+  self::expect(0, #this.{self::Class::field});
   self::expect(1, let final core::int* #t1 = 1 in let final void #t2 = self::Extension|set#simpleSetter(#this, #t1) in #t1);
   self::Extension|set#mutatingSetter(#this, 0);
-  self::expect(1, #this.{self::Class::field}{core::int*});
+  self::expect(1, #this.{self::Class::field});
   self::expect(2, let final core::int* #t3 = 2 in let final void #t4 = self::Extension|set#mutatingSetter(#this, #t3) in #t3);
-  self::expect(3, #this.{self::Class::field}{core::int*});
+  self::expect(3, #this.{self::Class::field});
   self::Extension|set#setterWithReturn(#this, 1);
-  self::expect(1, #this.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithReturn(#this, 2.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, #this.{self::Class::field}{core::int*});
+  self::expect(1, #this.{self::Class::field});
+  self::Extension|set#setterWithReturn(#this, 2.{core::int::unary-}());
+  self::expect(2, #this.{self::Class::field});
   self::expect(3, let final core::int* #t5 = 3 in let final void #t6 = self::Extension|set#setterWithReturn(#this, #t5) in #t5);
-  self::expect(3, #this.{self::Class::field}{core::int*});
-  self::expect(4.{core::int::unary-}(){() →* core::int*}, let final core::int* #t7 = 4.{core::int::unary-}(){() →* core::int*} in let final void #t8 = self::Extension|set#setterWithReturn(#this, #t7) in #t7);
-  self::expect(4, #this.{self::Class::field}{core::int*});
+  self::expect(3, #this.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final core::int* #t7 = 4.{core::int::unary-}() in let final void #t8 = self::Extension|set#setterWithReturn(#this, #t7) in #t7);
+  self::expect(4, #this.{self::Class::field});
   self::Extension|set#setterWithClosure(#this, 1);
-  self::expect(1, #this.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithClosure(#this, 2.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, #this.{self::Class::field}{core::int*});
+  self::expect(1, #this.{self::Class::field});
+  self::Extension|set#setterWithClosure(#this, 2.{core::int::unary-}());
+  self::expect(2, #this.{self::Class::field});
   self::expect(3, let final core::int* #t9 = 3 in let final void #t10 = self::Extension|set#setterWithClosure(#this, #t9) in #t9);
-  self::expect(3, #this.{self::Class::field}{core::int*});
-  self::expect(4.{core::int::unary-}(){() →* core::int*}, let final core::int* #t11 = 4.{core::int::unary-}(){() →* core::int*} in let final void #t12 = self::Extension|set#setterWithClosure(#this, #t11) in #t11);
-  self::expect(4, #this.{self::Class::field}{core::int*});
+  self::expect(3, #this.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final core::int* #t11 = 4.{core::int::unary-}() in let final void #t12 = self::Extension|set#setterWithClosure(#this, #t11) in #t11);
+  self::expect(4, #this.{self::Class::field});
 }
 static method Extension|get#testInternal(lowered final self::Class* #this) → () →* dynamic
   return () → dynamic => self::Extension|testInternal(#this);
 static method GenericExtension|set#setter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T*>* #this, self::GenericExtension|set#setter::T* value) → void {}
 static method main() → dynamic {
   self::Class* c = new self::Class::•();
-  self::expect(null, c.{self::Class::field}{core::int*});
+  self::expect(null, c.{self::Class::field});
   self::Extension|set#simpleSetter(c, 0);
-  self::expect(0, c.{self::Class::field}{core::int*});
+  self::expect(0, c.{self::Class::field});
   self::expect(1, let final core::int* #t13 = 1 in let final void #t14 = self::Extension|set#simpleSetter(c, #t13) in #t13);
   self::Extension|set#simpleSetter(c, 2);
-  self::expect(2, c.{self::Class::field}{core::int*});
+  self::expect(2, c.{self::Class::field});
   self::expect(3, let final self::Class* #t15 = c in let final core::int* #t16 = 3 in let final void #t17 = self::Extension|set#simpleSetter(#t15, #t16) in #t16);
   self::Extension|set#mutatingSetter(c, 0);
-  self::expect(1, c.{self::Class::field}{core::int*});
+  self::expect(1, c.{self::Class::field});
   self::expect(2, let final core::int* #t18 = 2 in let final void #t19 = self::Extension|set#mutatingSetter(c, #t18) in #t18);
-  self::expect(3, c.{self::Class::field}{core::int*});
+  self::expect(3, c.{self::Class::field});
   self::Extension|set#mutatingSetter(c, 4);
-  self::expect(5, c.{self::Class::field}{core::int*});
+  self::expect(5, c.{self::Class::field});
   self::expect(6, let final self::Class* #t20 = c in let final core::int* #t21 = 6 in let final void #t22 = self::Extension|set#mutatingSetter(#t20, #t21) in #t21);
-  self::expect(7, c.{self::Class::field}{core::int*});
+  self::expect(7, c.{self::Class::field});
   self::Extension|set#setterWithReturn(c, 1);
-  self::expect(1, c.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithReturn(c, 2.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, c.{self::Class::field}{core::int*});
+  self::expect(1, c.{self::Class::field});
+  self::Extension|set#setterWithReturn(c, 2.{core::int::unary-}());
+  self::expect(2, c.{self::Class::field});
   self::expect(3, let final core::int* #t23 = 3 in let final void #t24 = self::Extension|set#setterWithReturn(c, #t23) in #t23);
-  self::expect(3, c.{self::Class::field}{core::int*});
-  self::expect(4.{core::int::unary-}(){() →* core::int*}, let final core::int* #t25 = 4.{core::int::unary-}(){() →* core::int*} in let final void #t26 = self::Extension|set#setterWithReturn(c, #t25) in #t25);
-  self::expect(4, c.{self::Class::field}{core::int*});
+  self::expect(3, c.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final core::int* #t25 = 4.{core::int::unary-}() in let final void #t26 = self::Extension|set#setterWithReturn(c, #t25) in #t25);
+  self::expect(4, c.{self::Class::field});
   self::Extension|set#setterWithReturn(c, 5);
-  self::expect(5, c.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}(){() →* core::int*});
-  self::expect(6, c.{self::Class::field}{core::int*});
+  self::expect(5, c.{self::Class::field});
+  self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}());
+  self::expect(6, c.{self::Class::field});
   self::expect(7, let final self::Class* #t27 = c in let final core::int* #t28 = 7 in let final void #t29 = self::Extension|set#setterWithReturn(#t27, #t28) in #t28);
-  self::expect(7, c.{self::Class::field}{core::int*});
-  self::expect(8.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t30 = c in let final core::int* #t31 = 8.{core::int::unary-}(){() →* core::int*} in let final void #t32 = self::Extension|set#setterWithReturn(#t30, #t31) in #t31);
-  self::expect(8, c.{self::Class::field}{core::int*});
+  self::expect(7, c.{self::Class::field});
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t30 = c in let final core::int* #t31 = 8.{core::int::unary-}() in let final void #t32 = self::Extension|set#setterWithReturn(#t30, #t31) in #t31);
+  self::expect(8, c.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 1);
-  self::expect(1, c.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithClosure(c, 2.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, c.{self::Class::field}{core::int*});
+  self::expect(1, c.{self::Class::field});
+  self::Extension|set#setterWithClosure(c, 2.{core::int::unary-}());
+  self::expect(2, c.{self::Class::field});
   self::expect(3, let final core::int* #t33 = 3 in let final void #t34 = self::Extension|set#setterWithClosure(c, #t33) in #t33);
-  self::expect(3, c.{self::Class::field}{core::int*});
-  self::expect(4.{core::int::unary-}(){() →* core::int*}, let final core::int* #t35 = 4.{core::int::unary-}(){() →* core::int*} in let final void #t36 = self::Extension|set#setterWithClosure(c, #t35) in #t35);
-  self::expect(4, c.{self::Class::field}{core::int*});
+  self::expect(3, c.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final core::int* #t35 = 4.{core::int::unary-}() in let final void #t36 = self::Extension|set#setterWithClosure(c, #t35) in #t35);
+  self::expect(4, c.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 5);
-  self::expect(5, c.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}(){() →* core::int*});
-  self::expect(6, c.{self::Class::field}{core::int*});
+  self::expect(5, c.{self::Class::field});
+  self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}());
+  self::expect(6, c.{self::Class::field});
   self::expect(7, let final self::Class* #t37 = c in let final core::int* #t38 = 7 in let final void #t39 = self::Extension|set#setterWithClosure(#t37, #t38) in #t38);
-  self::expect(7, c.{self::Class::field}{core::int*});
-  self::expect(8.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t40 = c in let final core::int* #t41 = 8.{core::int::unary-}(){() →* core::int*} in let final void #t42 = self::Extension|set#setterWithClosure(#t40, #t41) in #t41);
-  self::expect(8, c.{self::Class::field}{core::int*});
+  self::expect(7, c.{self::Class::field});
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t40 = c in let final core::int* #t41 = 8.{core::int::unary-}() in let final void #t42 = self::Extension|set#setterWithClosure(#t40, #t41) in #t41);
+  self::expect(8, c.{self::Class::field});
   self::Extension|set#simpleSetter(c, 0);
-  self::expect(0, let final self::Class* #t43 = c in #t43 == null ?{core::int*} null : #t43.{self::Class::field}{core::int*});
-  self::expect(1, let final self::Class* #t44 = c in #t44 == null ?{core::int*} null : let final core::int* #t45 = 1 in let final void #t46 = self::Extension|set#simpleSetter(#t44, #t45) in #t45);
+  self::expect(0, let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{core::int*} null : #t43.{self::Class::field});
+  self::expect(1, let final self::Class* #t44 = c in #t44.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t45 = 1 in let final void #t46 = self::Extension|set#simpleSetter(#t44, #t45) in #t45);
   self::Extension|set#simpleSetter(c, 2);
-  self::expect(2, let final self::Class* #t47 = c in #t47 == null ?{core::int*} null : #t47.{self::Class::field}{core::int*});
+  self::expect(2, let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{core::int*} null : #t47.{self::Class::field});
   self::expect(3, let final self::Class* #t48 = c in let final core::int* #t49 = 3 in let final void #t50 = self::Extension|set#simpleSetter(#t48, #t49) in #t49);
   self::Extension|set#mutatingSetter(c, 0);
-  self::expect(1, let final self::Class* #t51 = c in #t51 == null ?{core::int*} null : #t51.{self::Class::field}{core::int*});
-  self::expect(2, let final self::Class* #t52 = c in #t52 == null ?{core::int*} null : let final core::int* #t53 = 2 in let final void #t54 = self::Extension|set#mutatingSetter(#t52, #t53) in #t53);
-  self::expect(3, let final self::Class* #t55 = c in #t55 == null ?{core::int*} null : #t55.{self::Class::field}{core::int*});
+  self::expect(1, let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{core::int*} null : #t51.{self::Class::field});
+  self::expect(2, let final self::Class* #t52 = c in #t52.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t53 = 2 in let final void #t54 = self::Extension|set#mutatingSetter(#t52, #t53) in #t53);
+  self::expect(3, let final self::Class* #t55 = c in #t55.{self::Class::==}(null) ?{core::int*} null : #t55.{self::Class::field});
   self::Extension|set#mutatingSetter(c, 4);
-  self::expect(5, let final self::Class* #t56 = c in #t56 == null ?{core::int*} null : #t56.{self::Class::field}{core::int*});
+  self::expect(5, let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{core::int*} null : #t56.{self::Class::field});
   self::expect(6, let final self::Class* #t57 = c in let final core::int* #t58 = 6 in let final void #t59 = self::Extension|set#mutatingSetter(#t57, #t58) in #t58);
-  self::expect(7, let final self::Class* #t60 = c in #t60 == null ?{core::int*} null : #t60.{self::Class::field}{core::int*});
-  let final self::Class* #t61 = c in #t61 == null ?{core::int*} null : self::Extension|set#setterWithReturn(#t61, 1);
-  self::expect(1, let final self::Class* #t62 = c in #t62 == null ?{core::int*} null : #t62.{self::Class::field}{core::int*});
-  let final self::Class* #t63 = c in #t63 == null ?{core::int*} null : self::Extension|set#setterWithReturn(#t63, 2.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, let final self::Class* #t64 = c in #t64 == null ?{core::int*} null : #t64.{self::Class::field}{core::int*});
-  self::expect(3, let final self::Class* #t65 = c in #t65 == null ?{core::int*} null : let final core::int* #t66 = 3 in let final void #t67 = self::Extension|set#setterWithReturn(#t65, #t66) in #t66);
-  self::expect(3, let final self::Class* #t68 = c in #t68 == null ?{core::int*} null : #t68.{self::Class::field}{core::int*});
-  self::expect(4.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t69 = c in #t69 == null ?{core::int*} null : let final core::int* #t70 = 4.{core::int::unary-}(){() →* core::int*} in let final void #t71 = self::Extension|set#setterWithReturn(#t69, #t70) in #t70);
-  self::expect(4, let final self::Class* #t72 = c in #t72 == null ?{core::int*} null : #t72.{self::Class::field}{core::int*});
+  self::expect(7, let final self::Class* #t60 = c in #t60.{self::Class::==}(null) ?{core::int*} null : #t60.{self::Class::field});
+  let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithReturn(#t61, 1);
+  self::expect(1, let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{core::int*} null : #t62.{self::Class::field});
+  let final self::Class* #t63 = c in #t63.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithReturn(#t63, 2.{core::int::unary-}());
+  self::expect(2, let final self::Class* #t64 = c in #t64.{self::Class::==}(null) ?{core::int*} null : #t64.{self::Class::field});
+  self::expect(3, let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t66 = 3 in let final void #t67 = self::Extension|set#setterWithReturn(#t65, #t66) in #t66);
+  self::expect(3, let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{core::int*} null : #t68.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final self::Class* #t69 = c in #t69.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t70 = 4.{core::int::unary-}() in let final void #t71 = self::Extension|set#setterWithReturn(#t69, #t70) in #t70);
+  self::expect(4, let final self::Class* #t72 = c in #t72.{self::Class::==}(null) ?{core::int*} null : #t72.{self::Class::field});
   self::Extension|set#setterWithReturn(c, 5);
-  self::expect(5, let final self::Class* #t73 = c in #t73 == null ?{core::int*} null : #t73.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}(){() →* core::int*});
-  self::expect(6, let final self::Class* #t74 = c in #t74 == null ?{core::int*} null : #t74.{self::Class::field}{core::int*});
+  self::expect(5, let final self::Class* #t73 = c in #t73.{self::Class::==}(null) ?{core::int*} null : #t73.{self::Class::field});
+  self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}());
+  self::expect(6, let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{core::int*} null : #t74.{self::Class::field});
   self::expect(7, let final self::Class* #t75 = c in let final core::int* #t76 = 7 in let final void #t77 = self::Extension|set#setterWithReturn(#t75, #t76) in #t76);
-  self::expect(7, let final self::Class* #t78 = c in #t78 == null ?{core::int*} null : #t78.{self::Class::field}{core::int*});
-  self::expect(8.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t79 = c in let final core::int* #t80 = 8.{core::int::unary-}(){() →* core::int*} in let final void #t81 = self::Extension|set#setterWithReturn(#t79, #t80) in #t80);
-  self::expect(8, let final self::Class* #t82 = c in #t82 == null ?{core::int*} null : #t82.{self::Class::field}{core::int*});
-  let final self::Class* #t83 = c in #t83 == null ?{core::int*} null : self::Extension|set#setterWithClosure(#t83, 1);
-  self::expect(1, let final self::Class* #t84 = c in #t84 == null ?{core::int*} null : #t84.{self::Class::field}{core::int*});
-  let final self::Class* #t85 = c in #t85 == null ?{core::int*} null : self::Extension|set#setterWithClosure(#t85, 2.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, let final self::Class* #t86 = c in #t86 == null ?{core::int*} null : #t86.{self::Class::field}{core::int*});
-  self::expect(3, let final self::Class* #t87 = c in #t87 == null ?{core::int*} null : let final core::int* #t88 = 3 in let final void #t89 = self::Extension|set#setterWithClosure(#t87, #t88) in #t88);
-  self::expect(3, let final self::Class* #t90 = c in #t90 == null ?{core::int*} null : #t90.{self::Class::field}{core::int*});
-  self::expect(4.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t91 = c in #t91 == null ?{core::int*} null : let final core::int* #t92 = 4.{core::int::unary-}(){() →* core::int*} in let final void #t93 = self::Extension|set#setterWithClosure(#t91, #t92) in #t92);
-  self::expect(4, let final self::Class* #t94 = c in #t94 == null ?{core::int*} null : #t94.{self::Class::field}{core::int*});
+  self::expect(7, let final self::Class* #t78 = c in #t78.{self::Class::==}(null) ?{core::int*} null : #t78.{self::Class::field});
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t79 = c in let final core::int* #t80 = 8.{core::int::unary-}() in let final void #t81 = self::Extension|set#setterWithReturn(#t79, #t80) in #t80);
+  self::expect(8, let final self::Class* #t82 = c in #t82.{self::Class::==}(null) ?{core::int*} null : #t82.{self::Class::field});
+  let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithClosure(#t83, 1);
+  self::expect(1, let final self::Class* #t84 = c in #t84.{self::Class::==}(null) ?{core::int*} null : #t84.{self::Class::field});
+  let final self::Class* #t85 = c in #t85.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithClosure(#t85, 2.{core::int::unary-}());
+  self::expect(2, let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{core::int*} null : #t86.{self::Class::field});
+  self::expect(3, let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t88 = 3 in let final void #t89 = self::Extension|set#setterWithClosure(#t87, #t88) in #t88);
+  self::expect(3, let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{core::int*} null : #t90.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final self::Class* #t91 = c in #t91.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t92 = 4.{core::int::unary-}() in let final void #t93 = self::Extension|set#setterWithClosure(#t91, #t92) in #t92);
+  self::expect(4, let final self::Class* #t94 = c in #t94.{self::Class::==}(null) ?{core::int*} null : #t94.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 5);
-  self::expect(5, let final self::Class* #t95 = c in #t95 == null ?{core::int*} null : #t95.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}(){() →* core::int*});
-  self::expect(6, let final self::Class* #t96 = c in #t96 == null ?{core::int*} null : #t96.{self::Class::field}{core::int*});
+  self::expect(5, let final self::Class* #t95 = c in #t95.{self::Class::==}(null) ?{core::int*} null : #t95.{self::Class::field});
+  self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}());
+  self::expect(6, let final self::Class* #t96 = c in #t96.{self::Class::==}(null) ?{core::int*} null : #t96.{self::Class::field});
   self::expect(7, let final self::Class* #t97 = c in let final core::int* #t98 = 7 in let final void #t99 = self::Extension|set#setterWithClosure(#t97, #t98) in #t98);
-  self::expect(7, let final self::Class* #t100 = c in #t100 == null ?{core::int*} null : #t100.{self::Class::field}{core::int*});
-  self::expect(8.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t101 = c in let final core::int* #t102 = 8.{core::int::unary-}(){() →* core::int*} in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102);
-  self::expect(8, let final self::Class* #t104 = c in #t104 == null ?{core::int*} null : #t104.{self::Class::field}{core::int*});
+  self::expect(7, let final self::Class* #t100 = c in #t100.{self::Class::==}(null) ?{core::int*} null : #t100.{self::Class::field});
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t101 = c in let final core::int* #t102 = 8.{core::int::unary-}() in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102);
+  self::expect(8, let final self::Class* #t104 = c in #t104.{self::Class::==}(null) ?{core::int*} null : #t104.{self::Class::field});
   c.{self::Class::field} = null;
-  let final self::Class* #t105 = c in self::Extension|get#simpleSetter(#t105) == null ?{core::int*} self::Extension|set#simpleSetter(#t105, 1) : null;
-  self::expect(1, c.{self::Class::field}{core::int*});
-  self::expect(1, let final self::Class* #t106 = c in let final core::int* #t107 = self::Extension|get#simpleSetter(#t106) in #t107 == null ?{core::int*} let final core::int* #t108 = 2 in let final void #t109 = self::Extension|set#simpleSetter(#t106, #t108) in #t108 : #t107);
+  let final self::Class* #t105 = c in self::Extension|get#simpleSetter(#t105).{core::num::==}(null) ?{core::int*} self::Extension|set#simpleSetter(#t105, 1) : null;
+  self::expect(1, c.{self::Class::field});
+  self::expect(1, let final self::Class* #t106 = c in let final core::int* #t107 = self::Extension|get#simpleSetter(#t106) in #t107.{core::num::==}(null) ?{core::int*} let final core::int* #t108 = 2 in let final void #t109 = self::Extension|set#simpleSetter(#t106, #t108) in #t108 : #t107);
   c.{self::Class::field} = null;
-  self::expect(2, let final self::Class* #t110 = c in let final core::int* #t111 = self::Extension|get#simpleSetter(#t110) in #t111 == null ?{core::int*} let final core::int* #t112 = 2 in let final void #t113 = self::Extension|set#simpleSetter(#t110, #t112) in #t112 : #t111);
-  let final self::Class* #t114 = c in #t114 == null ?{Null} null : #t114.{self::Class::field} = null;
-  let final self::Class* #t115 = c in #t115 == null ?{core::int*} null : self::Extension|get#simpleSetter(#t115) == null ?{core::int*} self::Extension|set#simpleSetter(#t115, 1) : null;
-  self::expect(1, let final self::Class* #t116 = c in #t116 == null ?{core::int*} null : #t116.{self::Class::field}{core::int*});
-  self::expect(1, let final self::Class* #t117 = c in #t117 == null ?{core::int*} null : let final core::int* #t118 = self::Extension|get#simpleSetter(#t117) in #t118 == null ?{core::int*} let final core::int* #t119 = 2 in let final void #t120 = self::Extension|set#simpleSetter(#t117, #t119) in #t119 : #t118);
-  let final self::Class* #t121 = c in #t121 == null ?{Null} null : #t121.{self::Class::field} = null;
-  self::expect(2, let final self::Class* #t122 = c in #t122 == null ?{core::int*} null : let final core::int* #t123 = self::Extension|get#simpleSetter(#t122) in #t123 == null ?{core::int*} let final core::int* #t124 = 2 in let final void #t125 = self::Extension|set#simpleSetter(#t122, #t124) in #t124 : #t123);
+  self::expect(2, let final self::Class* #t110 = c in let final core::int* #t111 = self::Extension|get#simpleSetter(#t110) in #t111.{core::num::==}(null) ?{core::int*} let final core::int* #t112 = 2 in let final void #t113 = self::Extension|set#simpleSetter(#t110, #t112) in #t112 : #t111);
+  let final self::Class* #t114 = c in #t114.{self::Class::==}(null) ?{Null} null : #t114.{self::Class::field} = null;
+  let final self::Class* #t115 = c in #t115.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#simpleSetter(#t115).{core::num::==}(null) ?{core::int*} self::Extension|set#simpleSetter(#t115, 1) : null;
+  self::expect(1, let final self::Class* #t116 = c in #t116.{self::Class::==}(null) ?{core::int*} null : #t116.{self::Class::field});
+  self::expect(1, let final self::Class* #t117 = c in #t117.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t118 = self::Extension|get#simpleSetter(#t117) in #t118.{core::num::==}(null) ?{core::int*} let final core::int* #t119 = 2 in let final void #t120 = self::Extension|set#simpleSetter(#t117, #t119) in #t119 : #t118);
+  let final self::Class* #t121 = c in #t121.{self::Class::==}(null) ?{Null} null : #t121.{self::Class::field} = null;
+  self::expect(2, let final self::Class* #t122 = c in #t122.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t123 = self::Extension|get#simpleSetter(#t122) in #t123.{core::num::==}(null) ?{core::int*} let final core::int* #t124 = 2 in let final void #t125 = self::Extension|set#simpleSetter(#t122, #t124) in #t124 : #t123);
   self::Extension|testInternal(new self::Class::•());
   self::GenericClass<core::int*>* genericClass = new self::GenericClass::•<core::int*>();
   self::expect(1, let final self::GenericClass<core::int*>* #t126 = genericClass in let final core::int* #t127 = 1 in let final void #t128 = self::GenericExtension|set#setter<core::int*>(#t126, #t127) in #t127);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/extension_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/extension_setter.dart.weak.transformed.expect
index 27a9a41..37d083c 100644
--- a/pkg/front_end/testcases/extensions/extension_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter.dart.weak.transformed.expect
@@ -49,175 +49,175 @@
   set setter = self::GenericExtension|set#setter;
 }
 static method Extension|get#simpleSetter(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|set#simpleSetter(lowered final self::Class* #this, core::int* value) → void {
   #this.{self::Class::field} = value;
 }
 static method Extension|get#mutatingSetter(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|set#mutatingSetter(lowered final self::Class* #this, core::int* value) → void {
-  value = value.{core::num::+}(1){(core::num*) →* core::int*};
+  value = value.{core::num::+}(1);
   #this.{self::Class::field} = value;
 }
 static method Extension|get#setterWithReturn(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|set#setterWithReturn(lowered final self::Class* #this, core::int* value) → void {
-  if(value.{core::num::<}(0){(core::num*) →* core::bool*}) {
-    #this.{self::Class::field} = value.{core::int::unary-}(){() →* core::int*};
+  if(value.{core::num::<}(0)) {
+    #this.{self::Class::field} = value.{core::int::unary-}();
     return;
   }
   #this.{self::Class::field} = value;
 }
 static method Extension|get#setterWithClosure(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|set#setterWithClosure(lowered final self::Class* #this, core::int* value) → void {
   function abs(dynamic value) → dynamic {
-    return value{dynamic}.<(0) as{TypeError,ForDynamic} core::bool* ?{dynamic} value{dynamic}.unary-() : value;
+    return value.<(0) as{TypeError,ForDynamic} core::bool* ?{dynamic} value.unary-() : value;
   }
-  #this.{self::Class::field} = abs(value){(dynamic) →* dynamic} as{TypeError,ForDynamic} core::int*;
+  #this.{self::Class::field} = abs.call(value) as{TypeError,ForDynamic} core::int*;
 }
 static method Extension|testInternal(lowered final self::Class* #this) → dynamic {
-  self::expect(null, #this.{self::Class::field}{core::int*});
+  self::expect(null, #this.{self::Class::field});
   self::Extension|set#simpleSetter(#this, 0);
-  self::expect(0, #this.{self::Class::field}{core::int*});
+  self::expect(0, #this.{self::Class::field});
   self::expect(1, let final core::int* #t1 = 1 in let final void #t2 = self::Extension|set#simpleSetter(#this, #t1) in #t1);
   self::Extension|set#mutatingSetter(#this, 0);
-  self::expect(1, #this.{self::Class::field}{core::int*});
+  self::expect(1, #this.{self::Class::field});
   self::expect(2, let final core::int* #t3 = 2 in let final void #t4 = self::Extension|set#mutatingSetter(#this, #t3) in #t3);
-  self::expect(3, #this.{self::Class::field}{core::int*});
+  self::expect(3, #this.{self::Class::field});
   self::Extension|set#setterWithReturn(#this, 1);
-  self::expect(1, #this.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithReturn(#this, 2.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, #this.{self::Class::field}{core::int*});
+  self::expect(1, #this.{self::Class::field});
+  self::Extension|set#setterWithReturn(#this, 2.{core::int::unary-}());
+  self::expect(2, #this.{self::Class::field});
   self::expect(3, let final core::int* #t5 = 3 in let final void #t6 = self::Extension|set#setterWithReturn(#this, #t5) in #t5);
-  self::expect(3, #this.{self::Class::field}{core::int*});
-  self::expect(4.{core::int::unary-}(){() →* core::int*}, let final core::int* #t7 = 4.{core::int::unary-}(){() →* core::int*} in let final void #t8 = self::Extension|set#setterWithReturn(#this, #t7) in #t7);
-  self::expect(4, #this.{self::Class::field}{core::int*});
+  self::expect(3, #this.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final core::int* #t7 = 4.{core::int::unary-}() in let final void #t8 = self::Extension|set#setterWithReturn(#this, #t7) in #t7);
+  self::expect(4, #this.{self::Class::field});
   self::Extension|set#setterWithClosure(#this, 1);
-  self::expect(1, #this.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithClosure(#this, 2.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, #this.{self::Class::field}{core::int*});
+  self::expect(1, #this.{self::Class::field});
+  self::Extension|set#setterWithClosure(#this, 2.{core::int::unary-}());
+  self::expect(2, #this.{self::Class::field});
   self::expect(3, let final core::int* #t9 = 3 in let final void #t10 = self::Extension|set#setterWithClosure(#this, #t9) in #t9);
-  self::expect(3, #this.{self::Class::field}{core::int*});
-  self::expect(4.{core::int::unary-}(){() →* core::int*}, let final core::int* #t11 = 4.{core::int::unary-}(){() →* core::int*} in let final void #t12 = self::Extension|set#setterWithClosure(#this, #t11) in #t11);
-  self::expect(4, #this.{self::Class::field}{core::int*});
+  self::expect(3, #this.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final core::int* #t11 = 4.{core::int::unary-}() in let final void #t12 = self::Extension|set#setterWithClosure(#this, #t11) in #t11);
+  self::expect(4, #this.{self::Class::field});
 }
 static method Extension|get#testInternal(lowered final self::Class* #this) → () →* dynamic
   return () → dynamic => self::Extension|testInternal(#this);
 static method GenericExtension|set#setter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T*>* #this, self::GenericExtension|set#setter::T* value) → void {}
 static method main() → dynamic {
   self::Class* c = new self::Class::•();
-  self::expect(null, c.{self::Class::field}{core::int*});
+  self::expect(null, c.{self::Class::field});
   self::Extension|set#simpleSetter(c, 0);
-  self::expect(0, c.{self::Class::field}{core::int*});
+  self::expect(0, c.{self::Class::field});
   self::expect(1, let final core::int* #t13 = 1 in let final void #t14 = self::Extension|set#simpleSetter(c, #t13) in #t13);
   self::Extension|set#simpleSetter(c, 2);
-  self::expect(2, c.{self::Class::field}{core::int*});
+  self::expect(2, c.{self::Class::field});
   self::expect(3, let final self::Class* #t15 = c in let final core::int* #t16 = 3 in let final void #t17 = self::Extension|set#simpleSetter(#t15, #t16) in #t16);
   self::Extension|set#mutatingSetter(c, 0);
-  self::expect(1, c.{self::Class::field}{core::int*});
+  self::expect(1, c.{self::Class::field});
   self::expect(2, let final core::int* #t18 = 2 in let final void #t19 = self::Extension|set#mutatingSetter(c, #t18) in #t18);
-  self::expect(3, c.{self::Class::field}{core::int*});
+  self::expect(3, c.{self::Class::field});
   self::Extension|set#mutatingSetter(c, 4);
-  self::expect(5, c.{self::Class::field}{core::int*});
+  self::expect(5, c.{self::Class::field});
   self::expect(6, let final self::Class* #t20 = c in let final core::int* #t21 = 6 in let final void #t22 = self::Extension|set#mutatingSetter(#t20, #t21) in #t21);
-  self::expect(7, c.{self::Class::field}{core::int*});
+  self::expect(7, c.{self::Class::field});
   self::Extension|set#setterWithReturn(c, 1);
-  self::expect(1, c.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithReturn(c, 2.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, c.{self::Class::field}{core::int*});
+  self::expect(1, c.{self::Class::field});
+  self::Extension|set#setterWithReturn(c, 2.{core::int::unary-}());
+  self::expect(2, c.{self::Class::field});
   self::expect(3, let final core::int* #t23 = 3 in let final void #t24 = self::Extension|set#setterWithReturn(c, #t23) in #t23);
-  self::expect(3, c.{self::Class::field}{core::int*});
-  self::expect(4.{core::int::unary-}(){() →* core::int*}, let final core::int* #t25 = 4.{core::int::unary-}(){() →* core::int*} in let final void #t26 = self::Extension|set#setterWithReturn(c, #t25) in #t25);
-  self::expect(4, c.{self::Class::field}{core::int*});
+  self::expect(3, c.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final core::int* #t25 = 4.{core::int::unary-}() in let final void #t26 = self::Extension|set#setterWithReturn(c, #t25) in #t25);
+  self::expect(4, c.{self::Class::field});
   self::Extension|set#setterWithReturn(c, 5);
-  self::expect(5, c.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}(){() →* core::int*});
-  self::expect(6, c.{self::Class::field}{core::int*});
+  self::expect(5, c.{self::Class::field});
+  self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}());
+  self::expect(6, c.{self::Class::field});
   self::expect(7, let final self::Class* #t27 = c in let final core::int* #t28 = 7 in let final void #t29 = self::Extension|set#setterWithReturn(#t27, #t28) in #t28);
-  self::expect(7, c.{self::Class::field}{core::int*});
-  self::expect(8.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t30 = c in let final core::int* #t31 = 8.{core::int::unary-}(){() →* core::int*} in let final void #t32 = self::Extension|set#setterWithReturn(#t30, #t31) in #t31);
-  self::expect(8, c.{self::Class::field}{core::int*});
+  self::expect(7, c.{self::Class::field});
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t30 = c in let final core::int* #t31 = 8.{core::int::unary-}() in let final void #t32 = self::Extension|set#setterWithReturn(#t30, #t31) in #t31);
+  self::expect(8, c.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 1);
-  self::expect(1, c.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithClosure(c, 2.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, c.{self::Class::field}{core::int*});
+  self::expect(1, c.{self::Class::field});
+  self::Extension|set#setterWithClosure(c, 2.{core::int::unary-}());
+  self::expect(2, c.{self::Class::field});
   self::expect(3, let final core::int* #t33 = 3 in let final void #t34 = self::Extension|set#setterWithClosure(c, #t33) in #t33);
-  self::expect(3, c.{self::Class::field}{core::int*});
-  self::expect(4.{core::int::unary-}(){() →* core::int*}, let final core::int* #t35 = 4.{core::int::unary-}(){() →* core::int*} in let final void #t36 = self::Extension|set#setterWithClosure(c, #t35) in #t35);
-  self::expect(4, c.{self::Class::field}{core::int*});
+  self::expect(3, c.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final core::int* #t35 = 4.{core::int::unary-}() in let final void #t36 = self::Extension|set#setterWithClosure(c, #t35) in #t35);
+  self::expect(4, c.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 5);
-  self::expect(5, c.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}(){() →* core::int*});
-  self::expect(6, c.{self::Class::field}{core::int*});
+  self::expect(5, c.{self::Class::field});
+  self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}());
+  self::expect(6, c.{self::Class::field});
   self::expect(7, let final self::Class* #t37 = c in let final core::int* #t38 = 7 in let final void #t39 = self::Extension|set#setterWithClosure(#t37, #t38) in #t38);
-  self::expect(7, c.{self::Class::field}{core::int*});
-  self::expect(8.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t40 = c in let final core::int* #t41 = 8.{core::int::unary-}(){() →* core::int*} in let final void #t42 = self::Extension|set#setterWithClosure(#t40, #t41) in #t41);
-  self::expect(8, c.{self::Class::field}{core::int*});
+  self::expect(7, c.{self::Class::field});
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t40 = c in let final core::int* #t41 = 8.{core::int::unary-}() in let final void #t42 = self::Extension|set#setterWithClosure(#t40, #t41) in #t41);
+  self::expect(8, c.{self::Class::field});
   self::Extension|set#simpleSetter(c, 0);
-  self::expect(0, let final self::Class* #t43 = c in #t43 == null ?{core::int*} null : #t43.{self::Class::field}{core::int*});
-  self::expect(1, let final self::Class* #t44 = c in #t44 == null ?{core::int*} null : let final core::int* #t45 = 1 in let final void #t46 = self::Extension|set#simpleSetter(#t44, #t45) in #t45);
+  self::expect(0, let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{core::int*} null : #t43.{self::Class::field});
+  self::expect(1, let final self::Class* #t44 = c in #t44.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t45 = 1 in let final void #t46 = self::Extension|set#simpleSetter(#t44, #t45) in #t45);
   self::Extension|set#simpleSetter(c, 2);
-  self::expect(2, let final self::Class* #t47 = c in #t47 == null ?{core::int*} null : #t47.{self::Class::field}{core::int*});
+  self::expect(2, let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{core::int*} null : #t47.{self::Class::field});
   self::expect(3, let final self::Class* #t48 = c in let final core::int* #t49 = 3 in let final void #t50 = self::Extension|set#simpleSetter(#t48, #t49) in #t49);
   self::Extension|set#mutatingSetter(c, 0);
-  self::expect(1, let final self::Class* #t51 = c in #t51 == null ?{core::int*} null : #t51.{self::Class::field}{core::int*});
-  self::expect(2, let final self::Class* #t52 = c in #t52 == null ?{core::int*} null : let final core::int* #t53 = 2 in let final void #t54 = self::Extension|set#mutatingSetter(#t52, #t53) in #t53);
-  self::expect(3, let final self::Class* #t55 = c in #t55 == null ?{core::int*} null : #t55.{self::Class::field}{core::int*});
+  self::expect(1, let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{core::int*} null : #t51.{self::Class::field});
+  self::expect(2, let final self::Class* #t52 = c in #t52.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t53 = 2 in let final void #t54 = self::Extension|set#mutatingSetter(#t52, #t53) in #t53);
+  self::expect(3, let final self::Class* #t55 = c in #t55.{self::Class::==}(null) ?{core::int*} null : #t55.{self::Class::field});
   self::Extension|set#mutatingSetter(c, 4);
-  self::expect(5, let final self::Class* #t56 = c in #t56 == null ?{core::int*} null : #t56.{self::Class::field}{core::int*});
+  self::expect(5, let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{core::int*} null : #t56.{self::Class::field});
   self::expect(6, let final self::Class* #t57 = c in let final core::int* #t58 = 6 in let final void #t59 = self::Extension|set#mutatingSetter(#t57, #t58) in #t58);
-  self::expect(7, let final self::Class* #t60 = c in #t60 == null ?{core::int*} null : #t60.{self::Class::field}{core::int*});
-  let final self::Class* #t61 = c in #t61 == null ?{core::int*} null : self::Extension|set#setterWithReturn(#t61, 1);
-  self::expect(1, let final self::Class* #t62 = c in #t62 == null ?{core::int*} null : #t62.{self::Class::field}{core::int*});
-  let final self::Class* #t63 = c in #t63 == null ?{core::int*} null : self::Extension|set#setterWithReturn(#t63, 2.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, let final self::Class* #t64 = c in #t64 == null ?{core::int*} null : #t64.{self::Class::field}{core::int*});
-  self::expect(3, let final self::Class* #t65 = c in #t65 == null ?{core::int*} null : let final core::int* #t66 = 3 in let final void #t67 = self::Extension|set#setterWithReturn(#t65, #t66) in #t66);
-  self::expect(3, let final self::Class* #t68 = c in #t68 == null ?{core::int*} null : #t68.{self::Class::field}{core::int*});
-  self::expect(4.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t69 = c in #t69 == null ?{core::int*} null : let final core::int* #t70 = 4.{core::int::unary-}(){() →* core::int*} in let final void #t71 = self::Extension|set#setterWithReturn(#t69, #t70) in #t70);
-  self::expect(4, let final self::Class* #t72 = c in #t72 == null ?{core::int*} null : #t72.{self::Class::field}{core::int*});
+  self::expect(7, let final self::Class* #t60 = c in #t60.{self::Class::==}(null) ?{core::int*} null : #t60.{self::Class::field});
+  let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithReturn(#t61, 1);
+  self::expect(1, let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{core::int*} null : #t62.{self::Class::field});
+  let final self::Class* #t63 = c in #t63.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithReturn(#t63, 2.{core::int::unary-}());
+  self::expect(2, let final self::Class* #t64 = c in #t64.{self::Class::==}(null) ?{core::int*} null : #t64.{self::Class::field});
+  self::expect(3, let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t66 = 3 in let final void #t67 = self::Extension|set#setterWithReturn(#t65, #t66) in #t66);
+  self::expect(3, let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{core::int*} null : #t68.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final self::Class* #t69 = c in #t69.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t70 = 4.{core::int::unary-}() in let final void #t71 = self::Extension|set#setterWithReturn(#t69, #t70) in #t70);
+  self::expect(4, let final self::Class* #t72 = c in #t72.{self::Class::==}(null) ?{core::int*} null : #t72.{self::Class::field});
   self::Extension|set#setterWithReturn(c, 5);
-  self::expect(5, let final self::Class* #t73 = c in #t73 == null ?{core::int*} null : #t73.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}(){() →* core::int*});
-  self::expect(6, let final self::Class* #t74 = c in #t74 == null ?{core::int*} null : #t74.{self::Class::field}{core::int*});
+  self::expect(5, let final self::Class* #t73 = c in #t73.{self::Class::==}(null) ?{core::int*} null : #t73.{self::Class::field});
+  self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}());
+  self::expect(6, let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{core::int*} null : #t74.{self::Class::field});
   self::expect(7, let final self::Class* #t75 = c in let final core::int* #t76 = 7 in let final void #t77 = self::Extension|set#setterWithReturn(#t75, #t76) in #t76);
-  self::expect(7, let final self::Class* #t78 = c in #t78 == null ?{core::int*} null : #t78.{self::Class::field}{core::int*});
-  self::expect(8.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t79 = c in let final core::int* #t80 = 8.{core::int::unary-}(){() →* core::int*} in let final void #t81 = self::Extension|set#setterWithReturn(#t79, #t80) in #t80);
-  self::expect(8, let final self::Class* #t82 = c in #t82 == null ?{core::int*} null : #t82.{self::Class::field}{core::int*});
-  let final self::Class* #t83 = c in #t83 == null ?{core::int*} null : self::Extension|set#setterWithClosure(#t83, 1);
-  self::expect(1, let final self::Class* #t84 = c in #t84 == null ?{core::int*} null : #t84.{self::Class::field}{core::int*});
-  let final self::Class* #t85 = c in #t85 == null ?{core::int*} null : self::Extension|set#setterWithClosure(#t85, 2.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, let final self::Class* #t86 = c in #t86 == null ?{core::int*} null : #t86.{self::Class::field}{core::int*});
-  self::expect(3, let final self::Class* #t87 = c in #t87 == null ?{core::int*} null : let final core::int* #t88 = 3 in let final void #t89 = self::Extension|set#setterWithClosure(#t87, #t88) in #t88);
-  self::expect(3, let final self::Class* #t90 = c in #t90 == null ?{core::int*} null : #t90.{self::Class::field}{core::int*});
-  self::expect(4.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t91 = c in #t91 == null ?{core::int*} null : let final core::int* #t92 = 4.{core::int::unary-}(){() →* core::int*} in let final void #t93 = self::Extension|set#setterWithClosure(#t91, #t92) in #t92);
-  self::expect(4, let final self::Class* #t94 = c in #t94 == null ?{core::int*} null : #t94.{self::Class::field}{core::int*});
+  self::expect(7, let final self::Class* #t78 = c in #t78.{self::Class::==}(null) ?{core::int*} null : #t78.{self::Class::field});
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t79 = c in let final core::int* #t80 = 8.{core::int::unary-}() in let final void #t81 = self::Extension|set#setterWithReturn(#t79, #t80) in #t80);
+  self::expect(8, let final self::Class* #t82 = c in #t82.{self::Class::==}(null) ?{core::int*} null : #t82.{self::Class::field});
+  let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithClosure(#t83, 1);
+  self::expect(1, let final self::Class* #t84 = c in #t84.{self::Class::==}(null) ?{core::int*} null : #t84.{self::Class::field});
+  let final self::Class* #t85 = c in #t85.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithClosure(#t85, 2.{core::int::unary-}());
+  self::expect(2, let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{core::int*} null : #t86.{self::Class::field});
+  self::expect(3, let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t88 = 3 in let final void #t89 = self::Extension|set#setterWithClosure(#t87, #t88) in #t88);
+  self::expect(3, let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{core::int*} null : #t90.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final self::Class* #t91 = c in #t91.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t92 = 4.{core::int::unary-}() in let final void #t93 = self::Extension|set#setterWithClosure(#t91, #t92) in #t92);
+  self::expect(4, let final self::Class* #t94 = c in #t94.{self::Class::==}(null) ?{core::int*} null : #t94.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 5);
-  self::expect(5, let final self::Class* #t95 = c in #t95 == null ?{core::int*} null : #t95.{self::Class::field}{core::int*});
-  self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}(){() →* core::int*});
-  self::expect(6, let final self::Class* #t96 = c in #t96 == null ?{core::int*} null : #t96.{self::Class::field}{core::int*});
+  self::expect(5, let final self::Class* #t95 = c in #t95.{self::Class::==}(null) ?{core::int*} null : #t95.{self::Class::field});
+  self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}());
+  self::expect(6, let final self::Class* #t96 = c in #t96.{self::Class::==}(null) ?{core::int*} null : #t96.{self::Class::field});
   self::expect(7, let final self::Class* #t97 = c in let final core::int* #t98 = 7 in let final void #t99 = self::Extension|set#setterWithClosure(#t97, #t98) in #t98);
-  self::expect(7, let final self::Class* #t100 = c in #t100 == null ?{core::int*} null : #t100.{self::Class::field}{core::int*});
-  self::expect(8.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t101 = c in let final core::int* #t102 = 8.{core::int::unary-}(){() →* core::int*} in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102);
-  self::expect(8, let final self::Class* #t104 = c in #t104 == null ?{core::int*} null : #t104.{self::Class::field}{core::int*});
+  self::expect(7, let final self::Class* #t100 = c in #t100.{self::Class::==}(null) ?{core::int*} null : #t100.{self::Class::field});
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t101 = c in let final core::int* #t102 = 8.{core::int::unary-}() in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102);
+  self::expect(8, let final self::Class* #t104 = c in #t104.{self::Class::==}(null) ?{core::int*} null : #t104.{self::Class::field});
   c.{self::Class::field} = null;
-  let final self::Class* #t105 = c in self::Extension|get#simpleSetter(#t105) == null ?{core::int*} self::Extension|set#simpleSetter(#t105, 1) : null;
-  self::expect(1, c.{self::Class::field}{core::int*});
-  self::expect(1, let final self::Class* #t106 = c in let final core::int* #t107 = self::Extension|get#simpleSetter(#t106) in #t107 == null ?{core::int*} let final core::int* #t108 = 2 in let final void #t109 = self::Extension|set#simpleSetter(#t106, #t108) in #t108 : #t107);
+  let final self::Class* #t105 = c in self::Extension|get#simpleSetter(#t105).{core::num::==}(null) ?{core::int*} self::Extension|set#simpleSetter(#t105, 1) : null;
+  self::expect(1, c.{self::Class::field});
+  self::expect(1, let final self::Class* #t106 = c in let final core::int* #t107 = self::Extension|get#simpleSetter(#t106) in #t107.{core::num::==}(null) ?{core::int*} let final core::int* #t108 = 2 in let final void #t109 = self::Extension|set#simpleSetter(#t106, #t108) in #t108 : #t107);
   c.{self::Class::field} = null;
-  self::expect(2, let final self::Class* #t110 = c in let final core::int* #t111 = self::Extension|get#simpleSetter(#t110) in #t111 == null ?{core::int*} let final core::int* #t112 = 2 in let final void #t113 = self::Extension|set#simpleSetter(#t110, #t112) in #t112 : #t111);
-  let final self::Class* #t114 = c in #t114 == null ?{Null} null : #t114.{self::Class::field} = null;
-  let final self::Class* #t115 = c in #t115 == null ?{core::int*} null : self::Extension|get#simpleSetter(#t115) == null ?{core::int*} self::Extension|set#simpleSetter(#t115, 1) : null;
-  self::expect(1, let final self::Class* #t116 = c in #t116 == null ?{core::int*} null : #t116.{self::Class::field}{core::int*});
-  self::expect(1, let final self::Class* #t117 = c in #t117 == null ?{core::int*} null : let final core::int* #t118 = self::Extension|get#simpleSetter(#t117) in #t118 == null ?{core::int*} let final core::int* #t119 = 2 in let final void #t120 = self::Extension|set#simpleSetter(#t117, #t119) in #t119 : #t118);
-  let final self::Class* #t121 = c in #t121 == null ?{Null} null : #t121.{self::Class::field} = null;
-  self::expect(2, let final self::Class* #t122 = c in #t122 == null ?{core::int*} null : let final core::int* #t123 = self::Extension|get#simpleSetter(#t122) in #t123 == null ?{core::int*} let final core::int* #t124 = 2 in let final void #t125 = self::Extension|set#simpleSetter(#t122, #t124) in #t124 : #t123);
+  self::expect(2, let final self::Class* #t110 = c in let final core::int* #t111 = self::Extension|get#simpleSetter(#t110) in #t111.{core::num::==}(null) ?{core::int*} let final core::int* #t112 = 2 in let final void #t113 = self::Extension|set#simpleSetter(#t110, #t112) in #t112 : #t111);
+  let final self::Class* #t114 = c in #t114.{self::Class::==}(null) ?{Null} null : #t114.{self::Class::field} = null;
+  let final self::Class* #t115 = c in #t115.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#simpleSetter(#t115).{core::num::==}(null) ?{core::int*} self::Extension|set#simpleSetter(#t115, 1) : null;
+  self::expect(1, let final self::Class* #t116 = c in #t116.{self::Class::==}(null) ?{core::int*} null : #t116.{self::Class::field});
+  self::expect(1, let final self::Class* #t117 = c in #t117.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t118 = self::Extension|get#simpleSetter(#t117) in #t118.{core::num::==}(null) ?{core::int*} let final core::int* #t119 = 2 in let final void #t120 = self::Extension|set#simpleSetter(#t117, #t119) in #t119 : #t118);
+  let final self::Class* #t121 = c in #t121.{self::Class::==}(null) ?{Null} null : #t121.{self::Class::field} = null;
+  self::expect(2, let final self::Class* #t122 = c in #t122.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t123 = self::Extension|get#simpleSetter(#t122) in #t123.{core::num::==}(null) ?{core::int*} let final core::int* #t124 = 2 in let final void #t125 = self::Extension|set#simpleSetter(#t122, #t124) in #t124 : #t123);
   self::Extension|testInternal(new self::Class::•());
   self::GenericClass<core::int*>* genericClass = new self::GenericClass::•<core::int*>();
   self::expect(1, let final self::GenericClass<core::int*>* #t126 = genericClass in let final core::int* #t127 = 1 in let final void #t128 = self::GenericExtension|set#setter<core::int*>(#t126, #t127) in #t127);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
@@ -228,18 +228,18 @@
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:47:30 -> IntConstant(1)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:51:32 -> IntConstant(2)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:51:32 -> IntConstant(2)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:56:24 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:56:24 -> IntConstant(-2)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:58:34 -> IntConstant(3)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:58:34 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:60:12 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:60:35 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:60:12 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:60:35 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:60:35 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:60:35 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:65:25 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:65:25 -> IntConstant(-2)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:67:35 -> IntConstant(3)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:67:35 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:69:12 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:69:36 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:69:12 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:69:36 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:69:36 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:69:36 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:86:30 -> IntConstant(1)
@@ -250,32 +250,32 @@
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:93:32 -> IntConstant(2)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:97:43 -> IntConstant(6)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:97:43 -> IntConstant(6)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:102:24 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:102:24 -> IntConstant(-2)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:104:34 -> IntConstant(3)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:104:34 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:106:10 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:106:35 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:106:10 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:106:35 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:106:35 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:106:35 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:110:35 -> IntConstant(-6)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:110:35 -> IntConstant(-6)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:112:45 -> IntConstant(7)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:112:45 -> IntConstant(7)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:114:10 -> IntConstant(-8)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:114:46 -> IntConstant(-8)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:114:10 -> IntConstant(-8)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:114:46 -> IntConstant(-8)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:114:46 -> IntConstant(-8)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:114:46 -> IntConstant(-8)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:119:25 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:119:25 -> IntConstant(-2)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:121:35 -> IntConstant(3)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:121:35 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:123:10 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:123:36 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:123:10 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:123:36 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:123:36 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:123:36 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:127:36 -> IntConstant(-6)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:127:36 -> IntConstant(-6)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:129:46 -> IntConstant(7)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:129:46 -> IntConstant(7)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:131:10 -> IntConstant(-8)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:131:47 -> IntConstant(-8)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:131:10 -> IntConstant(-8)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:131:47 -> IntConstant(-8)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:131:47 -> IntConstant(-8)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:131:47 -> IntConstant(-8)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:136:31 -> IntConstant(1)
@@ -286,32 +286,32 @@
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:143:33 -> IntConstant(2)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:147:43 -> IntConstant(6)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:147:43 -> IntConstant(6)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:152:25 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:152:25 -> IntConstant(-2)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:154:35 -> IntConstant(3)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:154:35 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:156:10 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:156:36 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:156:10 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:156:36 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:156:36 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:156:36 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:160:35 -> IntConstant(-6)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:160:35 -> IntConstant(-6)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:162:45 -> IntConstant(7)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:162:45 -> IntConstant(7)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:164:10 -> IntConstant(-8)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:164:46 -> IntConstant(-8)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:164:10 -> IntConstant(-8)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:164:46 -> IntConstant(-8)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:164:46 -> IntConstant(-8)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:164:46 -> IntConstant(-8)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:169:26 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:169:26 -> IntConstant(-2)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:171:36 -> IntConstant(3)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:171:36 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:173:10 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:173:37 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:173:10 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:173:37 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:173:37 -> IntConstant(-4)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:173:37 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:177:36 -> IntConstant(-6)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:177:36 -> IntConstant(-6)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:179:46 -> IntConstant(7)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:179:46 -> IntConstant(7)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:181:10 -> IntConstant(-8)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:181:47 -> IntConstant(-8)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:181:10 -> IntConstant(-8)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///extension_setter.dart:181:47 -> IntConstant(-8)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:181:47 -> IntConstant(-8)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:181:47 -> IntConstant(-8)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:187:32 -> IntConstant(2)
@@ -324,4 +324,4 @@
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:196:33 -> IntConstant(2)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:201:53 -> IntConstant(1)
 Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:201:53 -> IntConstant(1)
-Extra constant evaluation: evaluated: 835, effectively constant: 100
+Extra constant evaluation: evaluated: 836, effectively constant: 100
diff --git a/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.expect
index 9f115ce..5bf824a 100644
--- a/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.expect
@@ -37,7 +37,7 @@
                                         ^" in genericClass as{TypeError} self::GenericClass<core::double*>* in let final Null #t3 = null in let final void #t4 = self::GenericExtension|set#setter<core::double*>(#t1, #t3) in #t3);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.expect b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.expect
index 47243334..e351a9e 100644
--- a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.expect
@@ -26,5 +26,5 @@
 static method Extension|get#method<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#method::T*>* #this) → <R extends core::Object* = dynamic>(self::Extension|get#method::T*) →* R*
   return <R extends core::Object* = dynamic>(self::Extension|get#method::T* t) → R* => self::Extension|method<self::Extension|get#method::T*, R*>(#this, t);
 static method main() → dynamic {
-  let final dynamic #t1 = self::Extension|method<core::int*, dynamic>(new self::Class::•<core::int*>(), 0) in #t1 == null ?{core::String*} null : #t1.{core::Object::toString}(){() →* core::String*};
+  let final dynamic #t1 = self::Extension|method<core::int*, dynamic>(new self::Class::•<core::int*>(), 0) in #t1.{core::Object::==}(null) ?{core::String*} null : #t1.{core::Object::toString}();
 }
diff --git a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.transformed.expect
index 47243334..e351a9e 100644
--- a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.transformed.expect
@@ -26,5 +26,5 @@
 static method Extension|get#method<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#method::T*>* #this) → <R extends core::Object* = dynamic>(self::Extension|get#method::T*) →* R*
   return <R extends core::Object* = dynamic>(self::Extension|get#method::T* t) → R* => self::Extension|method<self::Extension|get#method::T*, R*>(#this, t);
 static method main() → dynamic {
-  let final dynamic #t1 = self::Extension|method<core::int*, dynamic>(new self::Class::•<core::int*>(), 0) in #t1 == null ?{core::String*} null : #t1.{core::Object::toString}(){() →* core::String*};
+  let final dynamic #t1 = self::Extension|method<core::int*, dynamic>(new self::Class::•<core::int*>(), 0) in #t1.{core::Object::==}(null) ?{core::String*} null : #t1.{core::Object::toString}();
 }
diff --git a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.expect b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.expect
index 9ae037b..4c0c516 100644
--- a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.expect
@@ -104,7 +104,7 @@
 static method Extension1|set#m4(lowered final self::Class* #this, core::int* x) → void {}
 static method main() → dynamic {
   self::Class* c = new self::Class::•();
-  self::expect(0, c.{self::Class::m1}{core::int*});
+  self::expect(0, c.{self::Class::m1});
   c.{self::Class::m2} = 2;
 }
 static method errors() → dynamic {
@@ -141,7 +141,7 @@
     ^^";
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.transformed.expect
index 9ae037b..4c0c516 100644
--- a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.transformed.expect
@@ -104,7 +104,7 @@
 static method Extension1|set#m4(lowered final self::Class* #this, core::int* x) → void {}
 static method main() → dynamic {
   self::Class* c = new self::Class::•();
-  self::expect(0, c.{self::Class::m1}{core::int*});
+  self::expect(0, c.{self::Class::m1});
   c.{self::Class::m2} = 2;
 }
 static method errors() → dynamic {
@@ -141,7 +141,7 @@
     ^^";
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/if_null.dart.weak.expect b/pkg/front_end/testcases/extensions/if_null.dart.weak.expect
index 34aa9aa..e4d6312 100644
--- a/pkg/front_end/testcases/extensions/if_null.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/if_null.dart.weak.expect
@@ -25,25 +25,25 @@
   set property = self::Extension|set#property;
 }
 static method Extension|get#property(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|set#property(lowered final self::Class* #this, core::int* value) → void {
   #this.{self::Class::field} = value;
 }
 static method Extension|method(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|get#method(lowered final self::Class* #this) → () →* core::int*
   return () → core::int* => self::Extension|method(#this);
 static method main() → dynamic {
   self::Class* c;
-  let final core::int* #t1 = let final self::Class* #t2 = c in #t2 == null ?{core::int*} null : self::Extension|get#property(#t2) in #t1 == null ?{core::int*} 0 : #t1;
-  let final core::int* #t3 = let final self::Class* #t4 = c in #t4 == null ?{core::int*} null : self::Extension|get#property(#t4) in #t3 == null ?{core::int*} 0 : #t3;
-  let final self::Class* #t5 = c in #t5 == null ?{core::int*} null : self::Extension|set#property(#t5, let final core::int* #t6 = 42 in #t6 == null ?{core::int*} 0 : #t6);
-  let final self::Class* #t7 = c in #t7 == null ?{core::int*} null : self::Extension|set#property(#t7, let final core::int* #t8 = 42 in #t8 == null ?{core::int*} 0 : #t8);
-  let final core::int* #t9 = let final self::Class* #t10 = c in #t10 == null ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11 in #t9 == null ?{core::int*} 0 : #t9;
-  let final core::int* #t13 = let final self::Class* #t14 = c in #t14 == null ?{core::int*} null : let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t14, #t15) in #t15 in #t13 == null ?{core::int*} 0 : #t13;
-  let final core::int* #t17 = let final self::Class* #t18 = c in #t18 == null ?{core::int*} null : self::Extension|method(#t18) in #t17 == null ?{core::int*} 0 : #t17;
-  let final core::int* #t19 = let final self::Class* #t20 = c in #t20 == null ?{core::int*} null : self::Extension|method(#t20) in #t19 == null ?{core::int*} 0 : #t19;
+  let final core::int* #t1 = let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t2) in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
+  let final core::int* #t3 = let final self::Class* #t4 = c in #t4.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t4) in #t3.{core::num::==}(null) ?{core::int*} 0 : #t3;
+  let final self::Class* #t5 = c in #t5.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#property(#t5, let final core::int* #t6 = 42 in #t6.{core::num::==}(null) ?{core::int*} 0 : #t6);
+  let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#property(#t7, let final core::int* #t8 = 42 in #t8.{core::num::==}(null) ?{core::int*} 0 : #t8);
+  let final core::int* #t9 = let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11 in #t9.{core::num::==}(null) ?{core::int*} 0 : #t9;
+  let final core::int* #t13 = let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t14, #t15) in #t15 in #t13.{core::num::==}(null) ?{core::int*} 0 : #t13;
+  let final core::int* #t17 = let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t18) in #t17.{core::num::==}(null) ?{core::int*} 0 : #t17;
+  let final core::int* #t19 = let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t20) in #t19.{core::num::==}(null) ?{core::int*} 0 : #t19;
   c = new self::Class::•();
-  let final core::int* #t21 = self::Extension|get#property(c) in #t21 == null ?{core::int*} 0 : #t21;
-  let final core::int* #t22 = self::Extension|get#property(c) in #t22 == null ?{core::int*} 0 : #t22;
+  let final core::int* #t21 = self::Extension|get#property(c) in #t21.{core::num::==}(null) ?{core::int*} 0 : #t21;
+  let final core::int* #t22 = self::Extension|get#property(c) in #t22.{core::num::==}(null) ?{core::int*} 0 : #t22;
 }
diff --git a/pkg/front_end/testcases/extensions/if_null.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/if_null.dart.weak.transformed.expect
index c98287f..f3e6b96 100644
--- a/pkg/front_end/testcases/extensions/if_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/if_null.dart.weak.transformed.expect
@@ -25,27 +25,27 @@
   set property = self::Extension|set#property;
 }
 static method Extension|get#property(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|set#property(lowered final self::Class* #this, core::int* value) → void {
   #this.{self::Class::field} = value;
 }
 static method Extension|method(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|get#method(lowered final self::Class* #this) → () →* core::int*
   return () → core::int* => self::Extension|method(#this);
 static method main() → dynamic {
   self::Class* c;
-  let final core::int* #t1 = let final self::Class* #t2 = c in #t2 == null ?{core::int*} null : self::Extension|get#property(#t2) in #t1 == null ?{core::int*} 0 : #t1;
-  let final core::int* #t3 = let final self::Class* #t4 = c in #t4 == null ?{core::int*} null : self::Extension|get#property(#t4) in #t3 == null ?{core::int*} 0 : #t3;
-  let final self::Class* #t5 = c in #t5 == null ?{core::int*} null : self::Extension|set#property(#t5, let final core::int* #t6 = 42 in #t6 == null ?{core::int*} 0 : #t6);
-  let final self::Class* #t7 = c in #t7 == null ?{core::int*} null : self::Extension|set#property(#t7, let final core::int* #t8 = 42 in #t8 == null ?{core::int*} 0 : #t8);
-  let final core::int* #t9 = let final self::Class* #t10 = c in #t10 == null ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11 in #t9 == null ?{core::int*} 0 : #t9;
-  let final core::int* #t13 = let final self::Class* #t14 = c in #t14 == null ?{core::int*} null : let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t14, #t15) in #t15 in #t13 == null ?{core::int*} 0 : #t13;
-  let final core::int* #t17 = let final self::Class* #t18 = c in #t18 == null ?{core::int*} null : self::Extension|method(#t18) in #t17 == null ?{core::int*} 0 : #t17;
-  let final core::int* #t19 = let final self::Class* #t20 = c in #t20 == null ?{core::int*} null : self::Extension|method(#t20) in #t19 == null ?{core::int*} 0 : #t19;
+  let final core::int* #t1 = let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t2) in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
+  let final core::int* #t3 = let final self::Class* #t4 = c in #t4.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t4) in #t3.{core::num::==}(null) ?{core::int*} 0 : #t3;
+  let final self::Class* #t5 = c in #t5.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#property(#t5, let final core::int* #t6 = 42 in #t6.{core::num::==}(null) ?{core::int*} 0 : #t6);
+  let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#property(#t7, let final core::int* #t8 = 42 in #t8.{core::num::==}(null) ?{core::int*} 0 : #t8);
+  let final core::int* #t9 = let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11 in #t9.{core::num::==}(null) ?{core::int*} 0 : #t9;
+  let final core::int* #t13 = let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t14, #t15) in #t15 in #t13.{core::num::==}(null) ?{core::int*} 0 : #t13;
+  let final core::int* #t17 = let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t18) in #t17.{core::num::==}(null) ?{core::int*} 0 : #t17;
+  let final core::int* #t19 = let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t20) in #t19.{core::num::==}(null) ?{core::int*} 0 : #t19;
   c = new self::Class::•();
-  let final core::int* #t21 = self::Extension|get#property(c) in #t21 == null ?{core::int*} 0 : #t21;
-  let final core::int* #t22 = self::Extension|get#property(c) in #t22 == null ?{core::int*} 0 : #t22;
+  let final core::int* #t21 = self::Extension|get#property(c) in #t21.{core::num::==}(null) ?{core::int*} 0 : #t21;
+  let final core::int* #t22 = self::Extension|get#property(c) in #t22.{core::num::==}(null) ?{core::int*} 0 : #t22;
 }
 
 
diff --git a/pkg/front_end/testcases/extensions/implicit_this.dart.weak.expect b/pkg/front_end/testcases/extensions/implicit_this.dart.weak.expect
index 9328ef6..f13b8bd 100644
--- a/pkg/front_end/testcases/extensions/implicit_this.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/implicit_this.dart.weak.expect
@@ -28,11 +28,11 @@
   tearoff method4 = self::A2|get#method4;
 }
 static method A2|method2(lowered final self::A1* #this) → void
-  return #this.{self::A1::method1}(){() →* void};
+  return #this.{self::A1::method1}();
 static method A2|get#method2(lowered final self::A1* #this) → () →* void
   return () → void => self::A2|method2(#this);
 static method A2|method3(lowered final self::A1* #this) → core::Object*
-  return #this.{self::A1::field}{core::Object*};
+  return #this.{self::A1::field};
 static method A2|get#method3(lowered final self::A1* #this) → () →* core::Object*
   return () → core::Object* => self::A2|method3(#this);
 static method A2|method4(lowered final self::A1* #this, core::Object* o) → void {
diff --git a/pkg/front_end/testcases/extensions/implicit_this.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/implicit_this.dart.weak.transformed.expect
index 9328ef6..f13b8bd 100644
--- a/pkg/front_end/testcases/extensions/implicit_this.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/implicit_this.dart.weak.transformed.expect
@@ -28,11 +28,11 @@
   tearoff method4 = self::A2|get#method4;
 }
 static method A2|method2(lowered final self::A1* #this) → void
-  return #this.{self::A1::method1}(){() →* void};
+  return #this.{self::A1::method1}();
 static method A2|get#method2(lowered final self::A1* #this) → () →* void
   return () → void => self::A2|method2(#this);
 static method A2|method3(lowered final self::A1* #this) → core::Object*
-  return #this.{self::A1::field}{core::Object*};
+  return #this.{self::A1::field};
 static method A2|get#method3(lowered final self::A1* #this) → () →* core::Object*
   return () → core::Object* => self::A2|method3(#this);
 static method A2|method4(lowered final self::A1* #this, core::Object* o) → void {
diff --git a/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.expect b/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.expect
index 0b2f376..6ffdbd7 100644
--- a/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.expect
@@ -9,7 +9,7 @@
   self::expect(3, imp::Extension|method("foo"));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
@@ -22,6 +22,6 @@
   tearoff method = imp::Extension|get#method;
 }
 static method Extension|method(lowered final core::String* #this) → core::int*
-  return #this.{core::String::length}{core::int*};
+  return #this.{core::String::length};
 static method Extension|get#method(lowered final core::String* #this) → () →* core::int*
   return () → core::int* => imp::Extension|method(#this);
diff --git a/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.transformed.expect
index 0b2f376..6ffdbd7 100644
--- a/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
   self::expect(3, imp::Extension|method("foo"));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
@@ -22,6 +22,6 @@
   tearoff method = imp::Extension|get#method;
 }
 static method Extension|method(lowered final core::String* #this) → core::int*
-  return #this.{core::String::length}{core::int*};
+  return #this.{core::String::length};
 static method Extension|get#method(lowered final core::String* #this) → () →* core::int*
   return () → core::int* => imp::Extension|method(#this);
diff --git a/pkg/front_end/testcases/extensions/index.dart.weak.expect b/pkg/front_end/testcases/extensions/index.dart.weak.expect
index d141d5b..81557be 100644
--- a/pkg/front_end/testcases/extensions/index.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/index.dart.weak.expect
@@ -8,9 +8,9 @@
     : super core::Object::•()
     ;
   method get(core::Object* key) → self::MapLike::V*
-    return this.{self::MapLike::_map}{core::Map<self::MapLike::K*, self::MapLike::V*>*}.{core::Map::[]}(key){(core::Object*) →* self::MapLike::V*};
+    return this.{self::MapLike::_map}.{core::Map::[]}(key);
   method put(generic-covariant-impl self::MapLike::K* key, generic-covariant-impl self::MapLike::V* value) → self::MapLike::V*
-    return let final core::Map<self::MapLike::K*, self::MapLike::V*>* #t1 = this.{self::MapLike::_map}{core::Map<self::MapLike::K*, self::MapLike::V*>*} in let final self::MapLike::K* #t2 = key in let final self::MapLike::V* #t3 = value in let final void #t4 = #t1.{core::Map::[]=}(#t2, #t3){(self::MapLike::K*, self::MapLike::V*) →* void} in #t3;
+    return let final core::Map<self::MapLike::K*, self::MapLike::V*>* #t1 = this.{self::MapLike::_map} in let final self::MapLike::K* #t2 = key in let final self::MapLike::V* #t3 = value in let final void #t4 = #t1.{core::Map::[]=}(#t2, #t3) in #t3;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -27,9 +27,9 @@
   operator []= = self::Extension|[]=;
 }
 static method Extension|[]<K extends core::Object* = dynamic, V extends core::Object* = dynamic>(lowered final self::MapLike<self::Extension|[]::K*, self::Extension|[]::V*>* #this, core::Object* key) → self::Extension|[]::V*
-  return #this.{self::MapLike::get}(key){(core::Object*) →* self::Extension|[]::V*};
+  return #this.{self::MapLike::get}(key);
 static method Extension|[]=<K extends core::Object* = dynamic, V extends core::Object* = dynamic>(lowered final self::MapLike<self::Extension|[]=::K*, self::Extension|[]=::V*>* #this, self::Extension|[]=::K* key, self::Extension|[]=::V* value) → void
-  return #this.{self::MapLike::put}(key, value){(self::Extension|[]=::K*, self::Extension|[]=::V*) →* self::Extension|[]=::V*};
+  return #this.{self::MapLike::put}(key, value);
 static method main() → dynamic {
   self::implicit();
   self::explicitWithTypeArguments();
@@ -38,86 +38,86 @@
 static method implicit() → dynamic {
   self::MapLike<core::int*, core::String*>* map1 = new self::MapLike::•<core::int*, core::String*>();
   self::expect(null, self::Extension|[]<core::int*, core::String*>(map1, 0));
-  map1.{self::MapLike::put}(0, "0"){(core::int*, core::String*) →* core::String*};
+  map1.{self::MapLike::put}(0, "0");
   self::expect("0", self::Extension|[]<core::int*, core::String*>(map1, 0));
   self::expect(null, self::Extension|[]<core::int*, core::String*>(map1, 1));
   self::Extension|[]=<core::int*, core::String*>(map1, 1, "1");
   self::expect("1", self::Extension|[]<core::int*, core::String*>(map1, 1));
   self::expect("2", let final self::MapLike<core::int*, core::String*>* #t5 = map1 in let final core::int* #t6 = 1 in let final core::String* #t7 = "2" in let final void #t8 = self::Extension|[]=<core::int*, core::String*>(#t5, #t6, #t7) in #t7);
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  let final self::MapLike<core::int*, core::String*>* #t9 = map1 in let final core::int* #t10 = 1 in self::Extension|[]<core::int*, core::String*>(#t9, #t10) == null ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t9, #t10, "3") : null;
+  let final self::MapLike<core::int*, core::String*>* #t9 = map1 in let final core::int* #t10 = 1 in self::Extension|[]<core::int*, core::String*>(#t9, #t10).{core::String::==}(null) ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t9, #t10, "3") : null;
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  self::expect("2", let final self::MapLike<core::int*, core::String*>* #t11 = map1 in let final core::int* #t12 = 1 in let final core::String* #t13 = self::Extension|[]<core::int*, core::String*>(#t11, #t12) in #t13 == null ?{core::String*} let final core::String* #t14 = "4" in let final void #t15 = self::Extension|[]=<core::int*, core::String*>(#t11, #t12, #t14) in #t14 : #t13);
+  self::expect("2", let final self::MapLike<core::int*, core::String*>* #t11 = map1 in let final core::int* #t12 = 1 in let final core::String* #t13 = self::Extension|[]<core::int*, core::String*>(#t11, #t12) in #t13.{core::String::==}(null) ?{core::String*} let final core::String* #t14 = "4" in let final void #t15 = self::Extension|[]=<core::int*, core::String*>(#t11, #t12, #t14) in #t14 : #t13);
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  let final self::MapLike<core::int*, core::String*>* #t16 = map1 in let final core::int* #t17 = 2 in self::Extension|[]<core::int*, core::String*>(#t16, #t17) == null ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t16, #t17, "2") : null;
+  let final self::MapLike<core::int*, core::String*>* #t16 = map1 in let final core::int* #t17 = 2 in self::Extension|[]<core::int*, core::String*>(#t16, #t17).{core::String::==}(null) ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t16, #t17, "2") : null;
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 2));
-  self::expect("3", let final self::MapLike<core::int*, core::String*>* #t18 = map1 in let final core::int* #t19 = 3 in let final core::String* #t20 = self::Extension|[]<core::int*, core::String*>(#t18, #t19) in #t20 == null ?{core::String*} let final core::String* #t21 = "3" in let final void #t22 = self::Extension|[]=<core::int*, core::String*>(#t18, #t19, #t21) in #t21 : #t20);
+  self::expect("3", let final self::MapLike<core::int*, core::String*>* #t18 = map1 in let final core::int* #t19 = 3 in let final core::String* #t20 = self::Extension|[]<core::int*, core::String*>(#t18, #t19) in #t20.{core::String::==}(null) ?{core::String*} let final core::String* #t21 = "3" in let final void #t22 = self::Extension|[]=<core::int*, core::String*>(#t18, #t19, #t21) in #t21 : #t20);
   self::expect("3", self::Extension|[]<core::int*, core::String*>(map1, 3));
   self::MapLike<core::int*, core::int*>* map2 = new self::MapLike::•<core::int*, core::int*>();
   self::expect(1, let final self::MapLike<core::int*, core::int*>* #t23 = map2 in let final core::int* #t24 = 0 in let final core::int* #t25 = 1 in let final void #t26 = self::Extension|[]=<core::int*, core::int*>(#t23, #t24, #t25) in #t25);
-  self::expect(3, let final self::MapLike<core::int*, core::int*>* #t27 = map2 in let final core::int* #t28 = 0 in let final core::int* #t29 = self::Extension|[]<core::int*, core::int*>(#t27, #t28).{core::num::+}(2){(core::num*) →* core::int*} in let final void #t30 = self::Extension|[]=<core::int*, core::int*>(#t27, #t28, #t29) in #t29);
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t31 = map2 in let final core::int* #t32 = 0 in let final core::int* #t33 = self::Extension|[]<core::int*, core::int*>(#t31, #t32).{core::num::+}(2){(core::num*) →* core::int*} in let final void #t34 = self::Extension|[]=<core::int*, core::int*>(#t31, #t32, #t33) in #t33);
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t35 = map2 in let final core::int* #t36 = 0 in let final core::int* #t37 = self::Extension|[]<core::int*, core::int*>(#t35, #t36) in let final void #t38 = self::Extension|[]=<core::int*, core::int*>(#t35, #t36, #t37.{core::num::+}(1){(core::num*) →* core::int*}) in #t37);
+  self::expect(3, let final self::MapLike<core::int*, core::int*>* #t27 = map2 in let final core::int* #t28 = 0 in let final core::int* #t29 = self::Extension|[]<core::int*, core::int*>(#t27, #t28).{core::num::+}(2) in let final void #t30 = self::Extension|[]=<core::int*, core::int*>(#t27, #t28, #t29) in #t29);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t31 = map2 in let final core::int* #t32 = 0 in let final core::int* #t33 = self::Extension|[]<core::int*, core::int*>(#t31, #t32).{core::num::+}(2) in let final void #t34 = self::Extension|[]=<core::int*, core::int*>(#t31, #t32, #t33) in #t33);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t35 = map2 in let final core::int* #t36 = 0 in let final core::int* #t37 = self::Extension|[]<core::int*, core::int*>(#t35, #t36) in let final void #t38 = self::Extension|[]=<core::int*, core::int*>(#t35, #t36, #t37.{core::num::+}(1)) in #t37);
   self::expect(6, self::Extension|[]<core::int*, core::int*>(map2, 0));
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t39 = map2 in let final core::int* #t40 = 0 in let final core::int* #t41 = self::Extension|[]<core::int*, core::int*>(#t39, #t40).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t42 = self::Extension|[]=<core::int*, core::int*>(#t39, #t40, #t41) in #t41);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t39 = map2 in let final core::int* #t40 = 0 in let final core::int* #t41 = self::Extension|[]<core::int*, core::int*>(#t39, #t40).{core::num::-}(1) in let final void #t42 = self::Extension|[]=<core::int*, core::int*>(#t39, #t40, #t41) in #t41);
   self::expect(5, self::Extension|[]<core::int*, core::int*>(map2, 0));
 }
 static method explicitWithTypeArguments() → dynamic {
   self::MapLike<core::int*, core::String*>* map1 = new self::MapLike::•<core::int*, core::String*>();
   self::expect(null, self::Extension|[]<core::int*, core::String*>(map1, 0));
-  map1.{self::MapLike::put}(0, "0"){(core::int*, core::String*) →* core::String*};
+  map1.{self::MapLike::put}(0, "0");
   self::expect("0", self::Extension|[]<core::int*, core::String*>(map1, 0));
   self::expect(null, self::Extension|[]<core::int*, core::String*>(map1, 1));
   self::Extension|[]=<core::int*, core::String*>(map1, 1, "1");
   self::expect("1", self::Extension|[]<core::int*, core::String*>(map1, 1));
   self::expect("2", let final self::MapLike<core::int*, core::String*>* #t43 = map1 in let final core::String* #t44 = "2" in let final void #t45 = self::Extension|[]=<core::int*, core::String*>(#t43, 1, #t44) in #t44);
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  let final self::MapLike<core::int*, core::String*>* #t46 = map1 in let final core::int* #t47 = 1 in self::Extension|[]<core::int*, core::String*>(#t46, #t47) == null ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t46, #t47, "3") : null;
+  let final self::MapLike<core::int*, core::String*>* #t46 = map1 in let final core::int* #t47 = 1 in self::Extension|[]<core::int*, core::String*>(#t46, #t47).{core::String::==}(null) ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t46, #t47, "3") : null;
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  self::expect("2", let final self::MapLike<core::int*, core::String*>* #t48 = map1 in let final core::int* #t49 = 1 in let final core::String* #t50 = self::Extension|[]<core::int*, core::String*>(#t48, #t49) in #t50 == null ?{core::String*} let final core::String* #t51 = "4" in let final void #t52 = self::Extension|[]=<core::int*, core::String*>(#t48, #t49, #t51) in #t51 : #t50);
+  self::expect("2", let final self::MapLike<core::int*, core::String*>* #t48 = map1 in let final core::int* #t49 = 1 in let final core::String* #t50 = self::Extension|[]<core::int*, core::String*>(#t48, #t49) in #t50.{core::String::==}(null) ?{core::String*} let final core::String* #t51 = "4" in let final void #t52 = self::Extension|[]=<core::int*, core::String*>(#t48, #t49, #t51) in #t51 : #t50);
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  let final self::MapLike<core::int*, core::String*>* #t53 = map1 in let final core::int* #t54 = 2 in self::Extension|[]<core::int*, core::String*>(#t53, #t54) == null ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t53, #t54, "2") : null;
+  let final self::MapLike<core::int*, core::String*>* #t53 = map1 in let final core::int* #t54 = 2 in self::Extension|[]<core::int*, core::String*>(#t53, #t54).{core::String::==}(null) ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t53, #t54, "2") : null;
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 2));
-  self::expect("3", let final self::MapLike<core::int*, core::String*>* #t55 = map1 in let final core::int* #t56 = 3 in let final core::String* #t57 = self::Extension|[]<core::int*, core::String*>(#t55, #t56) in #t57 == null ?{core::String*} let final core::String* #t58 = "3" in let final void #t59 = self::Extension|[]=<core::int*, core::String*>(#t55, #t56, #t58) in #t58 : #t57);
+  self::expect("3", let final self::MapLike<core::int*, core::String*>* #t55 = map1 in let final core::int* #t56 = 3 in let final core::String* #t57 = self::Extension|[]<core::int*, core::String*>(#t55, #t56) in #t57.{core::String::==}(null) ?{core::String*} let final core::String* #t58 = "3" in let final void #t59 = self::Extension|[]=<core::int*, core::String*>(#t55, #t56, #t58) in #t58 : #t57);
   self::expect("3", self::Extension|[]<core::int*, core::String*>(map1, 3));
   self::MapLike<core::int*, core::int*>* map2 = new self::MapLike::•<core::int*, core::int*>();
   self::expect(1, let final self::MapLike<core::int*, core::int*>* #t60 = map2 in let final core::int* #t61 = 1 in let final void #t62 = self::Extension|[]=<core::int*, core::int*>(#t60, 0, #t61) in #t61);
-  self::expect(3, let final self::MapLike<core::int*, core::int*>* #t63 = map2 in let final core::int* #t64 = 0 in let final core::int* #t65 = self::Extension|[]<core::int*, core::int*>(#t63, #t64).{core::num::+}(2){(core::num*) →* core::int*} in let final void #t66 = self::Extension|[]=<core::int*, core::int*>(#t63, #t64, #t65) in #t65);
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t67 = map2 in let final core::int* #t68 = 0 in let final core::int* #t69 = self::Extension|[]<core::int*, core::int*>(#t67, #t68).{core::num::+}(2){(core::num*) →* core::int*} in let final void #t70 = self::Extension|[]=<core::int*, core::int*>(#t67, #t68, #t69) in #t69);
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t71 = map2 in let final core::int* #t72 = 0 in let final core::int* #t73 = self::Extension|[]<core::int*, core::int*>(#t71, #t72) in let final void #t74 = self::Extension|[]=<core::int*, core::int*>(#t71, #t72, #t73.{core::num::+}(1){(core::num*) →* core::int*}) in #t73);
+  self::expect(3, let final self::MapLike<core::int*, core::int*>* #t63 = map2 in let final core::int* #t64 = 0 in let final core::int* #t65 = self::Extension|[]<core::int*, core::int*>(#t63, #t64).{core::num::+}(2) in let final void #t66 = self::Extension|[]=<core::int*, core::int*>(#t63, #t64, #t65) in #t65);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t67 = map2 in let final core::int* #t68 = 0 in let final core::int* #t69 = self::Extension|[]<core::int*, core::int*>(#t67, #t68).{core::num::+}(2) in let final void #t70 = self::Extension|[]=<core::int*, core::int*>(#t67, #t68, #t69) in #t69);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t71 = map2 in let final core::int* #t72 = 0 in let final core::int* #t73 = self::Extension|[]<core::int*, core::int*>(#t71, #t72) in let final void #t74 = self::Extension|[]=<core::int*, core::int*>(#t71, #t72, #t73.{core::num::+}(1)) in #t73);
   self::expect(6, self::Extension|[]<core::int*, core::int*>(map2, 0));
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t75 = map2 in let final core::int* #t76 = 0 in let final core::int* #t77 = self::Extension|[]<core::int*, core::int*>(#t75, #t76).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t78 = self::Extension|[]=<core::int*, core::int*>(#t75, #t76, #t77) in #t77);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t75 = map2 in let final core::int* #t76 = 0 in let final core::int* #t77 = self::Extension|[]<core::int*, core::int*>(#t75, #t76).{core::num::-}(1) in let final void #t78 = self::Extension|[]=<core::int*, core::int*>(#t75, #t76, #t77) in #t77);
   self::expect(5, self::Extension|[]<core::int*, core::int*>(map2, 0));
 }
 static method explicitInferredTypeArguments() → dynamic {
   self::MapLike<core::int*, core::String*>* map1 = new self::MapLike::•<core::int*, core::String*>();
   self::expect(null, self::Extension|[]<core::int*, core::String*>(map1, 0));
-  map1.{self::MapLike::put}(0, "0"){(core::int*, core::String*) →* core::String*};
+  map1.{self::MapLike::put}(0, "0");
   self::expect("0", self::Extension|[]<core::int*, core::String*>(map1, 0));
   self::expect(null, self::Extension|[]<core::int*, core::String*>(map1, 1));
   self::Extension|[]=<core::int*, core::String*>(map1, 1, "1");
   self::expect("1", self::Extension|[]<core::int*, core::String*>(map1, 1));
   self::expect("2", let final self::MapLike<core::int*, core::String*>* #t79 = map1 in let final core::String* #t80 = "2" in let final void #t81 = self::Extension|[]=<core::int*, core::String*>(#t79, 1, #t80) in #t80);
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  let final self::MapLike<core::int*, core::String*>* #t82 = map1 in let final core::int* #t83 = 1 in self::Extension|[]<core::int*, core::String*>(#t82, #t83) == null ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t82, #t83, "3") : null;
+  let final self::MapLike<core::int*, core::String*>* #t82 = map1 in let final core::int* #t83 = 1 in self::Extension|[]<core::int*, core::String*>(#t82, #t83).{core::String::==}(null) ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t82, #t83, "3") : null;
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  self::expect("2", let final self::MapLike<core::int*, core::String*>* #t84 = map1 in let final core::int* #t85 = 1 in let final core::String* #t86 = self::Extension|[]<core::int*, core::String*>(#t84, #t85) in #t86 == null ?{core::String*} let final core::String* #t87 = "4" in let final void #t88 = self::Extension|[]=<core::int*, core::String*>(#t84, #t85, #t87) in #t87 : #t86);
+  self::expect("2", let final self::MapLike<core::int*, core::String*>* #t84 = map1 in let final core::int* #t85 = 1 in let final core::String* #t86 = self::Extension|[]<core::int*, core::String*>(#t84, #t85) in #t86.{core::String::==}(null) ?{core::String*} let final core::String* #t87 = "4" in let final void #t88 = self::Extension|[]=<core::int*, core::String*>(#t84, #t85, #t87) in #t87 : #t86);
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  let final self::MapLike<core::int*, core::String*>* #t89 = map1 in let final core::int* #t90 = 2 in self::Extension|[]<core::int*, core::String*>(#t89, #t90) == null ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t89, #t90, "2") : null;
+  let final self::MapLike<core::int*, core::String*>* #t89 = map1 in let final core::int* #t90 = 2 in self::Extension|[]<core::int*, core::String*>(#t89, #t90).{core::String::==}(null) ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t89, #t90, "2") : null;
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 2));
-  self::expect("3", let final self::MapLike<core::int*, core::String*>* #t91 = map1 in let final core::int* #t92 = 3 in let final core::String* #t93 = self::Extension|[]<core::int*, core::String*>(#t91, #t92) in #t93 == null ?{core::String*} let final core::String* #t94 = "3" in let final void #t95 = self::Extension|[]=<core::int*, core::String*>(#t91, #t92, #t94) in #t94 : #t93);
+  self::expect("3", let final self::MapLike<core::int*, core::String*>* #t91 = map1 in let final core::int* #t92 = 3 in let final core::String* #t93 = self::Extension|[]<core::int*, core::String*>(#t91, #t92) in #t93.{core::String::==}(null) ?{core::String*} let final core::String* #t94 = "3" in let final void #t95 = self::Extension|[]=<core::int*, core::String*>(#t91, #t92, #t94) in #t94 : #t93);
   self::expect("3", self::Extension|[]<core::int*, core::String*>(map1, 3));
   self::MapLike<core::int*, core::int*>* map2 = new self::MapLike::•<core::int*, core::int*>();
   self::expect(1, let final self::MapLike<core::int*, core::int*>* #t96 = map2 in let final core::int* #t97 = 1 in let final void #t98 = self::Extension|[]=<core::int*, core::int*>(#t96, 0, #t97) in #t97);
-  self::expect(3, let final self::MapLike<core::int*, core::int*>* #t99 = map2 in let final core::int* #t100 = 0 in let final core::int* #t101 = self::Extension|[]<core::int*, core::int*>(#t99, #t100).{core::num::+}(2){(core::num*) →* core::int*} in let final void #t102 = self::Extension|[]=<core::int*, core::int*>(#t99, #t100, #t101) in #t101);
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t103 = map2 in let final core::int* #t104 = 0 in let final core::int* #t105 = self::Extension|[]<core::int*, core::int*>(#t103, #t104).{core::num::+}(2){(core::num*) →* core::int*} in let final void #t106 = self::Extension|[]=<core::int*, core::int*>(#t103, #t104, #t105) in #t105);
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t107 = map2 in let final core::int* #t108 = 0 in let final core::int* #t109 = self::Extension|[]<core::int*, core::int*>(#t107, #t108) in let final void #t110 = self::Extension|[]=<core::int*, core::int*>(#t107, #t108, #t109.{core::num::+}(1){(core::num*) →* core::int*}) in #t109);
+  self::expect(3, let final self::MapLike<core::int*, core::int*>* #t99 = map2 in let final core::int* #t100 = 0 in let final core::int* #t101 = self::Extension|[]<core::int*, core::int*>(#t99, #t100).{core::num::+}(2) in let final void #t102 = self::Extension|[]=<core::int*, core::int*>(#t99, #t100, #t101) in #t101);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t103 = map2 in let final core::int* #t104 = 0 in let final core::int* #t105 = self::Extension|[]<core::int*, core::int*>(#t103, #t104).{core::num::+}(2) in let final void #t106 = self::Extension|[]=<core::int*, core::int*>(#t103, #t104, #t105) in #t105);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t107 = map2 in let final core::int* #t108 = 0 in let final core::int* #t109 = self::Extension|[]<core::int*, core::int*>(#t107, #t108) in let final void #t110 = self::Extension|[]=<core::int*, core::int*>(#t107, #t108, #t109.{core::num::+}(1)) in #t109);
   self::expect(6, self::Extension|[]<core::int*, core::int*>(map2, 0));
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t111 = map2 in let final core::int* #t112 = 0 in let final core::int* #t113 = self::Extension|[]<core::int*, core::int*>(#t111, #t112).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t114 = self::Extension|[]=<core::int*, core::int*>(#t111, #t112, #t113) in #t113);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t111 = map2 in let final core::int* #t112 = 0 in let final core::int* #t113 = self::Extension|[]<core::int*, core::int*>(#t111, #t112).{core::num::-}(1) in let final void #t114 = self::Extension|[]=<core::int*, core::int*>(#t111, #t112, #t113) in #t113);
   self::expect(5, self::Extension|[]<core::int*, core::int*>(map2, 0));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/index.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/index.dart.weak.transformed.expect
index fd7413f..e570b06 100644
--- a/pkg/front_end/testcases/extensions/index.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/index.dart.weak.transformed.expect
@@ -8,9 +8,9 @@
     : super core::Object::•()
     ;
   method get(core::Object* key) → self::MapLike::V*
-    return this.{self::MapLike::_map}{core::Map<self::MapLike::K*, self::MapLike::V*>*}.{core::Map::[]}(key){(core::Object*) →* self::MapLike::V*};
+    return this.{self::MapLike::_map}.{core::Map::[]}(key);
   method put(generic-covariant-impl self::MapLike::K* key, generic-covariant-impl self::MapLike::V* value) → self::MapLike::V*
-    return let final core::Map<self::MapLike::K*, self::MapLike::V*>* #t1 = this.{self::MapLike::_map}{core::Map<self::MapLike::K*, self::MapLike::V*>*} in let final self::MapLike::K* #t2 = key in let final self::MapLike::V* #t3 = value in let final void #t4 = #t1.{core::Map::[]=}(#t2, #t3){(self::MapLike::K*, self::MapLike::V*) →* void} in #t3;
+    return let final core::Map<self::MapLike::K*, self::MapLike::V*>* #t1 = this.{self::MapLike::_map} in let final self::MapLike::K* #t2 = key in let final self::MapLike::V* #t3 = value in let final void #t4 = #t1.{core::Map::[]=}(#t2, #t3) in #t3;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -27,9 +27,9 @@
   operator []= = self::Extension|[]=;
 }
 static method Extension|[]<K extends core::Object* = dynamic, V extends core::Object* = dynamic>(lowered final self::MapLike<self::Extension|[]::K*, self::Extension|[]::V*>* #this, core::Object* key) → self::Extension|[]::V*
-  return #this.{self::MapLike::get}(key){(core::Object*) →* self::Extension|[]::V*};
+  return #this.{self::MapLike::get}(key);
 static method Extension|[]=<K extends core::Object* = dynamic, V extends core::Object* = dynamic>(lowered final self::MapLike<self::Extension|[]=::K*, self::Extension|[]=::V*>* #this, self::Extension|[]=::K* key, self::Extension|[]=::V* value) → void
-  return #this.{self::MapLike::put}(key, value){(self::Extension|[]=::K*, self::Extension|[]=::V*) →* self::Extension|[]=::V*};
+  return #this.{self::MapLike::put}(key, value);
 static method main() → dynamic {
   self::implicit();
   self::explicitWithTypeArguments();
@@ -38,86 +38,86 @@
 static method implicit() → dynamic {
   self::MapLike<core::int*, core::String*>* map1 = new self::MapLike::•<core::int*, core::String*>();
   self::expect(null, self::Extension|[]<core::int*, core::String*>(map1, 0));
-  map1.{self::MapLike::put}(0, "0"){(core::int*, core::String*) →* core::String*};
+  map1.{self::MapLike::put}(0, "0");
   self::expect("0", self::Extension|[]<core::int*, core::String*>(map1, 0));
   self::expect(null, self::Extension|[]<core::int*, core::String*>(map1, 1));
   self::Extension|[]=<core::int*, core::String*>(map1, 1, "1");
   self::expect("1", self::Extension|[]<core::int*, core::String*>(map1, 1));
   self::expect("2", let final self::MapLike<core::int*, core::String*>* #t5 = map1 in let final core::int* #t6 = 1 in let final core::String* #t7 = "2" in let final void #t8 = self::Extension|[]=<core::int*, core::String*>(#t5, #t6, #t7) in #t7);
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  let final self::MapLike<core::int*, core::String*>* #t9 = map1 in let final core::int* #t10 = 1 in self::Extension|[]<core::int*, core::String*>(#t9, #t10) == null ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t9, #t10, "3") : null;
+  let final self::MapLike<core::int*, core::String*>* #t9 = map1 in let final core::int* #t10 = 1 in self::Extension|[]<core::int*, core::String*>(#t9, #t10).{core::String::==}(null) ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t9, #t10, "3") : null;
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  self::expect("2", let final self::MapLike<core::int*, core::String*>* #t11 = map1 in let final core::int* #t12 = 1 in let final core::String* #t13 = self::Extension|[]<core::int*, core::String*>(#t11, #t12) in #t13 == null ?{core::String*} let final core::String* #t14 = "4" in let final void #t15 = self::Extension|[]=<core::int*, core::String*>(#t11, #t12, #t14) in #t14 : #t13);
+  self::expect("2", let final self::MapLike<core::int*, core::String*>* #t11 = map1 in let final core::int* #t12 = 1 in let final core::String* #t13 = self::Extension|[]<core::int*, core::String*>(#t11, #t12) in #t13.{core::String::==}(null) ?{core::String*} let final core::String* #t14 = "4" in let final void #t15 = self::Extension|[]=<core::int*, core::String*>(#t11, #t12, #t14) in #t14 : #t13);
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  let final self::MapLike<core::int*, core::String*>* #t16 = map1 in let final core::int* #t17 = 2 in self::Extension|[]<core::int*, core::String*>(#t16, #t17) == null ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t16, #t17, "2") : null;
+  let final self::MapLike<core::int*, core::String*>* #t16 = map1 in let final core::int* #t17 = 2 in self::Extension|[]<core::int*, core::String*>(#t16, #t17).{core::String::==}(null) ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t16, #t17, "2") : null;
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 2));
-  self::expect("3", let final self::MapLike<core::int*, core::String*>* #t18 = map1 in let final core::int* #t19 = 3 in let final core::String* #t20 = self::Extension|[]<core::int*, core::String*>(#t18, #t19) in #t20 == null ?{core::String*} let final core::String* #t21 = "3" in let final void #t22 = self::Extension|[]=<core::int*, core::String*>(#t18, #t19, #t21) in #t21 : #t20);
+  self::expect("3", let final self::MapLike<core::int*, core::String*>* #t18 = map1 in let final core::int* #t19 = 3 in let final core::String* #t20 = self::Extension|[]<core::int*, core::String*>(#t18, #t19) in #t20.{core::String::==}(null) ?{core::String*} let final core::String* #t21 = "3" in let final void #t22 = self::Extension|[]=<core::int*, core::String*>(#t18, #t19, #t21) in #t21 : #t20);
   self::expect("3", self::Extension|[]<core::int*, core::String*>(map1, 3));
   self::MapLike<core::int*, core::int*>* map2 = new self::MapLike::•<core::int*, core::int*>();
   self::expect(1, let final self::MapLike<core::int*, core::int*>* #t23 = map2 in let final core::int* #t24 = 0 in let final core::int* #t25 = 1 in let final void #t26 = self::Extension|[]=<core::int*, core::int*>(#t23, #t24, #t25) in #t25);
-  self::expect(3, let final self::MapLike<core::int*, core::int*>* #t27 = map2 in let final core::int* #t28 = 0 in let final core::int* #t29 = self::Extension|[]<core::int*, core::int*>(#t27, #t28).{core::num::+}(2){(core::num*) →* core::int*} in let final void #t30 = self::Extension|[]=<core::int*, core::int*>(#t27, #t28, #t29) in #t29);
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t31 = map2 in let final core::int* #t32 = 0 in let final core::int* #t33 = self::Extension|[]<core::int*, core::int*>(#t31, #t32).{core::num::+}(2){(core::num*) →* core::int*} in let final void #t34 = self::Extension|[]=<core::int*, core::int*>(#t31, #t32, #t33) in #t33);
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t35 = map2 in let final core::int* #t36 = 0 in let final core::int* #t37 = self::Extension|[]<core::int*, core::int*>(#t35, #t36) in let final void #t38 = self::Extension|[]=<core::int*, core::int*>(#t35, #t36, #t37.{core::num::+}(1){(core::num*) →* core::int*}) in #t37);
+  self::expect(3, let final self::MapLike<core::int*, core::int*>* #t27 = map2 in let final core::int* #t28 = 0 in let final core::int* #t29 = self::Extension|[]<core::int*, core::int*>(#t27, #t28).{core::num::+}(2) in let final void #t30 = self::Extension|[]=<core::int*, core::int*>(#t27, #t28, #t29) in #t29);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t31 = map2 in let final core::int* #t32 = 0 in let final core::int* #t33 = self::Extension|[]<core::int*, core::int*>(#t31, #t32).{core::num::+}(2) in let final void #t34 = self::Extension|[]=<core::int*, core::int*>(#t31, #t32, #t33) in #t33);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t35 = map2 in let final core::int* #t36 = 0 in let final core::int* #t37 = self::Extension|[]<core::int*, core::int*>(#t35, #t36) in let final void #t38 = self::Extension|[]=<core::int*, core::int*>(#t35, #t36, #t37.{core::num::+}(1)) in #t37);
   self::expect(6, self::Extension|[]<core::int*, core::int*>(map2, 0));
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t39 = map2 in let final core::int* #t40 = 0 in let final core::int* #t41 = self::Extension|[]<core::int*, core::int*>(#t39, #t40).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t42 = self::Extension|[]=<core::int*, core::int*>(#t39, #t40, #t41) in #t41);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t39 = map2 in let final core::int* #t40 = 0 in let final core::int* #t41 = self::Extension|[]<core::int*, core::int*>(#t39, #t40).{core::num::-}(1) in let final void #t42 = self::Extension|[]=<core::int*, core::int*>(#t39, #t40, #t41) in #t41);
   self::expect(5, self::Extension|[]<core::int*, core::int*>(map2, 0));
 }
 static method explicitWithTypeArguments() → dynamic {
   self::MapLike<core::int*, core::String*>* map1 = new self::MapLike::•<core::int*, core::String*>();
   self::expect(null, self::Extension|[]<core::int*, core::String*>(map1, 0));
-  map1.{self::MapLike::put}(0, "0"){(core::int*, core::String*) →* core::String*};
+  map1.{self::MapLike::put}(0, "0");
   self::expect("0", self::Extension|[]<core::int*, core::String*>(map1, 0));
   self::expect(null, self::Extension|[]<core::int*, core::String*>(map1, 1));
   self::Extension|[]=<core::int*, core::String*>(map1, 1, "1");
   self::expect("1", self::Extension|[]<core::int*, core::String*>(map1, 1));
   self::expect("2", let final self::MapLike<core::int*, core::String*>* #t43 = map1 in let final core::String* #t44 = "2" in let final void #t45 = self::Extension|[]=<core::int*, core::String*>(#t43, 1, #t44) in #t44);
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  let final self::MapLike<core::int*, core::String*>* #t46 = map1 in let final core::int* #t47 = 1 in self::Extension|[]<core::int*, core::String*>(#t46, #t47) == null ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t46, #t47, "3") : null;
+  let final self::MapLike<core::int*, core::String*>* #t46 = map1 in let final core::int* #t47 = 1 in self::Extension|[]<core::int*, core::String*>(#t46, #t47).{core::String::==}(null) ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t46, #t47, "3") : null;
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  self::expect("2", let final self::MapLike<core::int*, core::String*>* #t48 = map1 in let final core::int* #t49 = 1 in let final core::String* #t50 = self::Extension|[]<core::int*, core::String*>(#t48, #t49) in #t50 == null ?{core::String*} let final core::String* #t51 = "4" in let final void #t52 = self::Extension|[]=<core::int*, core::String*>(#t48, #t49, #t51) in #t51 : #t50);
+  self::expect("2", let final self::MapLike<core::int*, core::String*>* #t48 = map1 in let final core::int* #t49 = 1 in let final core::String* #t50 = self::Extension|[]<core::int*, core::String*>(#t48, #t49) in #t50.{core::String::==}(null) ?{core::String*} let final core::String* #t51 = "4" in let final void #t52 = self::Extension|[]=<core::int*, core::String*>(#t48, #t49, #t51) in #t51 : #t50);
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  let final self::MapLike<core::int*, core::String*>* #t53 = map1 in let final core::int* #t54 = 2 in self::Extension|[]<core::int*, core::String*>(#t53, #t54) == null ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t53, #t54, "2") : null;
+  let final self::MapLike<core::int*, core::String*>* #t53 = map1 in let final core::int* #t54 = 2 in self::Extension|[]<core::int*, core::String*>(#t53, #t54).{core::String::==}(null) ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t53, #t54, "2") : null;
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 2));
-  self::expect("3", let final self::MapLike<core::int*, core::String*>* #t55 = map1 in let final core::int* #t56 = 3 in let final core::String* #t57 = self::Extension|[]<core::int*, core::String*>(#t55, #t56) in #t57 == null ?{core::String*} let final core::String* #t58 = "3" in let final void #t59 = self::Extension|[]=<core::int*, core::String*>(#t55, #t56, #t58) in #t58 : #t57);
+  self::expect("3", let final self::MapLike<core::int*, core::String*>* #t55 = map1 in let final core::int* #t56 = 3 in let final core::String* #t57 = self::Extension|[]<core::int*, core::String*>(#t55, #t56) in #t57.{core::String::==}(null) ?{core::String*} let final core::String* #t58 = "3" in let final void #t59 = self::Extension|[]=<core::int*, core::String*>(#t55, #t56, #t58) in #t58 : #t57);
   self::expect("3", self::Extension|[]<core::int*, core::String*>(map1, 3));
   self::MapLike<core::int*, core::int*>* map2 = new self::MapLike::•<core::int*, core::int*>();
   self::expect(1, let final self::MapLike<core::int*, core::int*>* #t60 = map2 in let final core::int* #t61 = 1 in let final void #t62 = self::Extension|[]=<core::int*, core::int*>(#t60, 0, #t61) in #t61);
-  self::expect(3, let final self::MapLike<core::int*, core::int*>* #t63 = map2 in let final core::int* #t64 = 0 in let final core::int* #t65 = self::Extension|[]<core::int*, core::int*>(#t63, #t64).{core::num::+}(2){(core::num*) →* core::int*} in let final void #t66 = self::Extension|[]=<core::int*, core::int*>(#t63, #t64, #t65) in #t65);
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t67 = map2 in let final core::int* #t68 = 0 in let final core::int* #t69 = self::Extension|[]<core::int*, core::int*>(#t67, #t68).{core::num::+}(2){(core::num*) →* core::int*} in let final void #t70 = self::Extension|[]=<core::int*, core::int*>(#t67, #t68, #t69) in #t69);
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t71 = map2 in let final core::int* #t72 = 0 in let final core::int* #t73 = self::Extension|[]<core::int*, core::int*>(#t71, #t72) in let final void #t74 = self::Extension|[]=<core::int*, core::int*>(#t71, #t72, #t73.{core::num::+}(1){(core::num*) →* core::int*}) in #t73);
+  self::expect(3, let final self::MapLike<core::int*, core::int*>* #t63 = map2 in let final core::int* #t64 = 0 in let final core::int* #t65 = self::Extension|[]<core::int*, core::int*>(#t63, #t64).{core::num::+}(2) in let final void #t66 = self::Extension|[]=<core::int*, core::int*>(#t63, #t64, #t65) in #t65);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t67 = map2 in let final core::int* #t68 = 0 in let final core::int* #t69 = self::Extension|[]<core::int*, core::int*>(#t67, #t68).{core::num::+}(2) in let final void #t70 = self::Extension|[]=<core::int*, core::int*>(#t67, #t68, #t69) in #t69);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t71 = map2 in let final core::int* #t72 = 0 in let final core::int* #t73 = self::Extension|[]<core::int*, core::int*>(#t71, #t72) in let final void #t74 = self::Extension|[]=<core::int*, core::int*>(#t71, #t72, #t73.{core::num::+}(1)) in #t73);
   self::expect(6, self::Extension|[]<core::int*, core::int*>(map2, 0));
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t75 = map2 in let final core::int* #t76 = 0 in let final core::int* #t77 = self::Extension|[]<core::int*, core::int*>(#t75, #t76).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t78 = self::Extension|[]=<core::int*, core::int*>(#t75, #t76, #t77) in #t77);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t75 = map2 in let final core::int* #t76 = 0 in let final core::int* #t77 = self::Extension|[]<core::int*, core::int*>(#t75, #t76).{core::num::-}(1) in let final void #t78 = self::Extension|[]=<core::int*, core::int*>(#t75, #t76, #t77) in #t77);
   self::expect(5, self::Extension|[]<core::int*, core::int*>(map2, 0));
 }
 static method explicitInferredTypeArguments() → dynamic {
   self::MapLike<core::int*, core::String*>* map1 = new self::MapLike::•<core::int*, core::String*>();
   self::expect(null, self::Extension|[]<core::int*, core::String*>(map1, 0));
-  map1.{self::MapLike::put}(0, "0"){(core::int*, core::String*) →* core::String*};
+  map1.{self::MapLike::put}(0, "0");
   self::expect("0", self::Extension|[]<core::int*, core::String*>(map1, 0));
   self::expect(null, self::Extension|[]<core::int*, core::String*>(map1, 1));
   self::Extension|[]=<core::int*, core::String*>(map1, 1, "1");
   self::expect("1", self::Extension|[]<core::int*, core::String*>(map1, 1));
   self::expect("2", let final self::MapLike<core::int*, core::String*>* #t79 = map1 in let final core::String* #t80 = "2" in let final void #t81 = self::Extension|[]=<core::int*, core::String*>(#t79, 1, #t80) in #t80);
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  let final self::MapLike<core::int*, core::String*>* #t82 = map1 in let final core::int* #t83 = 1 in self::Extension|[]<core::int*, core::String*>(#t82, #t83) == null ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t82, #t83, "3") : null;
+  let final self::MapLike<core::int*, core::String*>* #t82 = map1 in let final core::int* #t83 = 1 in self::Extension|[]<core::int*, core::String*>(#t82, #t83).{core::String::==}(null) ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t82, #t83, "3") : null;
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  self::expect("2", let final self::MapLike<core::int*, core::String*>* #t84 = map1 in let final core::int* #t85 = 1 in let final core::String* #t86 = self::Extension|[]<core::int*, core::String*>(#t84, #t85) in #t86 == null ?{core::String*} let final core::String* #t87 = "4" in let final void #t88 = self::Extension|[]=<core::int*, core::String*>(#t84, #t85, #t87) in #t87 : #t86);
+  self::expect("2", let final self::MapLike<core::int*, core::String*>* #t84 = map1 in let final core::int* #t85 = 1 in let final core::String* #t86 = self::Extension|[]<core::int*, core::String*>(#t84, #t85) in #t86.{core::String::==}(null) ?{core::String*} let final core::String* #t87 = "4" in let final void #t88 = self::Extension|[]=<core::int*, core::String*>(#t84, #t85, #t87) in #t87 : #t86);
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 1));
-  let final self::MapLike<core::int*, core::String*>* #t89 = map1 in let final core::int* #t90 = 2 in self::Extension|[]<core::int*, core::String*>(#t89, #t90) == null ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t89, #t90, "2") : null;
+  let final self::MapLike<core::int*, core::String*>* #t89 = map1 in let final core::int* #t90 = 2 in self::Extension|[]<core::int*, core::String*>(#t89, #t90).{core::String::==}(null) ?{core::String*} self::Extension|[]=<core::int*, core::String*>(#t89, #t90, "2") : null;
   self::expect("2", self::Extension|[]<core::int*, core::String*>(map1, 2));
-  self::expect("3", let final self::MapLike<core::int*, core::String*>* #t91 = map1 in let final core::int* #t92 = 3 in let final core::String* #t93 = self::Extension|[]<core::int*, core::String*>(#t91, #t92) in #t93 == null ?{core::String*} let final core::String* #t94 = "3" in let final void #t95 = self::Extension|[]=<core::int*, core::String*>(#t91, #t92, #t94) in #t94 : #t93);
+  self::expect("3", let final self::MapLike<core::int*, core::String*>* #t91 = map1 in let final core::int* #t92 = 3 in let final core::String* #t93 = self::Extension|[]<core::int*, core::String*>(#t91, #t92) in #t93.{core::String::==}(null) ?{core::String*} let final core::String* #t94 = "3" in let final void #t95 = self::Extension|[]=<core::int*, core::String*>(#t91, #t92, #t94) in #t94 : #t93);
   self::expect("3", self::Extension|[]<core::int*, core::String*>(map1, 3));
   self::MapLike<core::int*, core::int*>* map2 = new self::MapLike::•<core::int*, core::int*>();
   self::expect(1, let final self::MapLike<core::int*, core::int*>* #t96 = map2 in let final core::int* #t97 = 1 in let final void #t98 = self::Extension|[]=<core::int*, core::int*>(#t96, 0, #t97) in #t97);
-  self::expect(3, let final self::MapLike<core::int*, core::int*>* #t99 = map2 in let final core::int* #t100 = 0 in let final core::int* #t101 = self::Extension|[]<core::int*, core::int*>(#t99, #t100).{core::num::+}(2){(core::num*) →* core::int*} in let final void #t102 = self::Extension|[]=<core::int*, core::int*>(#t99, #t100, #t101) in #t101);
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t103 = map2 in let final core::int* #t104 = 0 in let final core::int* #t105 = self::Extension|[]<core::int*, core::int*>(#t103, #t104).{core::num::+}(2){(core::num*) →* core::int*} in let final void #t106 = self::Extension|[]=<core::int*, core::int*>(#t103, #t104, #t105) in #t105);
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t107 = map2 in let final core::int* #t108 = 0 in let final core::int* #t109 = self::Extension|[]<core::int*, core::int*>(#t107, #t108) in let final void #t110 = self::Extension|[]=<core::int*, core::int*>(#t107, #t108, #t109.{core::num::+}(1){(core::num*) →* core::int*}) in #t109);
+  self::expect(3, let final self::MapLike<core::int*, core::int*>* #t99 = map2 in let final core::int* #t100 = 0 in let final core::int* #t101 = self::Extension|[]<core::int*, core::int*>(#t99, #t100).{core::num::+}(2) in let final void #t102 = self::Extension|[]=<core::int*, core::int*>(#t99, #t100, #t101) in #t101);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t103 = map2 in let final core::int* #t104 = 0 in let final core::int* #t105 = self::Extension|[]<core::int*, core::int*>(#t103, #t104).{core::num::+}(2) in let final void #t106 = self::Extension|[]=<core::int*, core::int*>(#t103, #t104, #t105) in #t105);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t107 = map2 in let final core::int* #t108 = 0 in let final core::int* #t109 = self::Extension|[]<core::int*, core::int*>(#t107, #t108) in let final void #t110 = self::Extension|[]=<core::int*, core::int*>(#t107, #t108, #t109.{core::num::+}(1)) in #t109);
   self::expect(6, self::Extension|[]<core::int*, core::int*>(map2, 0));
-  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t111 = map2 in let final core::int* #t112 = 0 in let final core::int* #t113 = self::Extension|[]<core::int*, core::int*>(#t111, #t112).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t114 = self::Extension|[]=<core::int*, core::int*>(#t111, #t112, #t113) in #t113);
+  self::expect(5, let final self::MapLike<core::int*, core::int*>* #t111 = map2 in let final core::int* #t112 = 0 in let final core::int* #t113 = self::Extension|[]<core::int*, core::int*>(#t111, #t112).{core::num::-}(1) in let final void #t114 = self::Extension|[]=<core::int*, core::int*>(#t111, #t112, #t113) in #t113);
   self::expect(5, self::Extension|[]<core::int*, core::int*>(map2, 0));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/instance_access.dart.weak.expect b/pkg/front_end/testcases/extensions/instance_access.dart.weak.expect
index 215028e..acfd4c8 100644
--- a/pkg/front_end/testcases/extensions/instance_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/instance_access.dart.weak.expect
@@ -8,7 +8,7 @@
     : self::Class1::field = field, super core::Object::•()
     ;
   method toString() → core::String*
-    return "Class1(${this.{self::Class1::field}{core::int*}})";
+    return "Class1(${this.{self::Class1::field}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -25,7 +25,7 @@
     : self::Class2::field = field, super core::Object::•()
     ;
   method toString() → core::String*
-    return "Class2(${this.{self::Class2::field}{core::int*}})";
+    return "Class2(${this.{self::Class2::field}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -54,44 +54,44 @@
 }
 static method Extension1|method(lowered final self::Class1* #this) → core::int* {
   core::print("Extension1.method on ${#this}");
-  return #this.{self::Class1::field}{core::int*};
+  return #this.{self::Class1::field};
 }
 static method Extension1|get#method(lowered final self::Class1* #this) → () →* core::int*
   return () → core::int* => self::Extension1|method(#this);
 static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::Extension1|genericMethod::T* t) → core::int* {
   core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T*}>(${t}) on ${#this}");
-  return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class1::field}.{core::num::+}(t) as{TypeError} core::int*;
 }
 static method Extension1|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
 static method Extension1|get#property(lowered final self::Class1* #this) → core::int* {
   core::print("Extension1.property get on ${#this}");
-  return #this.{self::Class1::field}{core::int*};
+  return #this.{self::Class1::field};
 }
 static method Extension1|set#property(lowered final self::Class1* #this, core::int* value) → void {
   #this.{self::Class1::field} = value;
   core::print("Extension1.property set(${value}) on ${#this}");
-  value = value.{core::num::+}(1){(core::num*) →* core::int*};
+  value = value.{core::num::+}(1);
 }
 static method Extension2|method(lowered final self::Class2* #this) → core::int* {
   core::print("Extension2.method on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*};
+  return #this.{self::Class2::field}.{core::num::+}(3);
 }
 static method Extension2|get#method(lowered final self::Class2* #this) → () →* core::int*
   return () → core::int* => self::Extension2|method(#this);
 static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::Extension2|genericMethod::T* t) → core::int* {
   core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T*}>(${t}) on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(4){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class2::field}.{core::num::+}(t).{core::num::+}(4) as{TypeError} core::int*;
 }
 static method Extension2|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
 static method Extension2|get#property(lowered final self::Class2* #this) → core::int* {
   core::print("Extension2.property get on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(5){(core::num*) →* core::int*};
+  return #this.{self::Class2::field}.{core::num::+}(5);
 }
 static method Extension2|set#property(lowered final self::Class2* #this, core::int* value) → void {
   core::print("Extension2.property set(${value}) on ${#this}");
-  value = value.{core::num::+}(1){(core::num*) →* core::int*};
+  value = value.{core::num::+}(1);
   #this.{self::Class2::field} = value;
 }
 static method main() → dynamic {
@@ -103,13 +103,13 @@
   self::Class1* c1 = new self::Class1::•(1);
   self::expect(0, self::Extension1|method(c0));
   self::expect(1, self::Extension1|method(c1));
-  self::expect(1, let final self::Class1* #t1 = c1 in #t1 == null ?{core::int*} null : self::Extension1|method(#t1));
+  self::expect(1, let final self::Class1* #t1 = c1 in #t1.{self::Class1::==}(null) ?{core::int*} null : self::Extension1|method(#t1));
   self::expect(42, self::Extension1|genericMethod<core::int*>(c0, 42));
   self::expect(43, self::Extension1|genericMethod<core::num*>(c0, 43));
   self::expect(88, self::Extension1|genericMethod<core::int*>(c1, 87));
   self::expect(89, self::Extension1|genericMethod<core::num*>(c1, 88));
   self::expect(0, self::Extension1|get#property(c0));
-  self::expect(0, let final self::Class1* #t2 = c0 in #t2 == null ?{core::int*} null : self::Extension1|get#property(#t2));
+  self::expect(0, let final self::Class1* #t2 = c0 in #t2.{self::Class1::==}(null) ?{core::int*} null : self::Extension1|get#property(#t2));
   self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::Extension1|set#property(c0, #t3) in #t3);
   self::expect(1, self::Extension1|get#property(c1));
   self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::Extension1|set#property(c0, #t5) in #t5);
@@ -122,14 +122,14 @@
   self::Class2* c0 = new self::Class2::•(0);
   self::Class2* c1 = new self::Class2::•(1);
   self::expect(3, self::Extension2|method(c0));
-  self::expect(3, let final self::Class2* #t27 = c0 in #t27 == null ?{core::int*} null : self::Extension2|method(#t27));
+  self::expect(3, let final self::Class2* #t27 = c0 in #t27.{self::Class2::==}(null) ?{core::int*} null : self::Extension2|method(#t27));
   self::expect(4, self::Extension2|method(c1));
   self::expect(46, self::Extension2|genericMethod<core::int*>(c0, 42));
   self::expect(47, self::Extension2|genericMethod<core::num*>(c0, 43));
   self::expect(92, self::Extension2|genericMethod<core::int*>(c1, 87));
   self::expect(93, self::Extension2|genericMethod<core::num*>(c1, 88));
   self::expect(5, self::Extension2|get#property(c0));
-  self::expect(5, let final self::Class2* #t28 = c0 in #t28 == null ?{core::int*} null : self::Extension2|get#property(#t28));
+  self::expect(5, let final self::Class2* #t28 = c0 in #t28.{self::Class2::==}(null) ?{core::int*} null : self::Extension2|get#property(#t28));
   self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::Extension2|set#property(c0, #t29) in #t29);
   self::expect(48, self::Extension2|get#property(c0));
   self::expect(6, self::Extension2|get#property(c1));
@@ -141,7 +141,7 @@
   self::expect(67, let final core::int* #t41 = let final core::int* #t42 = self::Extension2|get#property(c0) in let final void #t43 = self::Extension2|set#property(c1, #t42) in #t42 in let final void #t44 = self::Extension2|set#property(c0, #t41) in #t41);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/instance_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/instance_access.dart.weak.transformed.expect
index a0cad7e..c022d12 100644
--- a/pkg/front_end/testcases/extensions/instance_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/instance_access.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
     : self::Class1::field = field, super core::Object::•()
     ;
   method toString() → core::String*
-    return "Class1(${this.{self::Class1::field}{core::int*}})";
+    return "Class1(${this.{self::Class1::field}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -25,7 +25,7 @@
     : self::Class2::field = field, super core::Object::•()
     ;
   method toString() → core::String*
-    return "Class2(${this.{self::Class2::field}{core::int*}})";
+    return "Class2(${this.{self::Class2::field}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -54,44 +54,44 @@
 }
 static method Extension1|method(lowered final self::Class1* #this) → core::int* {
   core::print("Extension1.method on ${#this}");
-  return #this.{self::Class1::field}{core::int*};
+  return #this.{self::Class1::field};
 }
 static method Extension1|get#method(lowered final self::Class1* #this) → () →* core::int*
   return () → core::int* => self::Extension1|method(#this);
 static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::Extension1|genericMethod::T* t) → core::int* {
   core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T*}>(${t}) on ${#this}");
-  return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class1::field}.{core::num::+}(t) as{TypeError} core::int*;
 }
 static method Extension1|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
 static method Extension1|get#property(lowered final self::Class1* #this) → core::int* {
   core::print("Extension1.property get on ${#this}");
-  return #this.{self::Class1::field}{core::int*};
+  return #this.{self::Class1::field};
 }
 static method Extension1|set#property(lowered final self::Class1* #this, core::int* value) → void {
   #this.{self::Class1::field} = value;
   core::print("Extension1.property set(${value}) on ${#this}");
-  value = value.{core::num::+}(1){(core::num*) →* core::int*};
+  value = value.{core::num::+}(1);
 }
 static method Extension2|method(lowered final self::Class2* #this) → core::int* {
   core::print("Extension2.method on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*};
+  return #this.{self::Class2::field}.{core::num::+}(3);
 }
 static method Extension2|get#method(lowered final self::Class2* #this) → () →* core::int*
   return () → core::int* => self::Extension2|method(#this);
 static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::Extension2|genericMethod::T* t) → core::int* {
   core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T*}>(${t}) on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(4){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class2::field}.{core::num::+}(t).{core::num::+}(4) as{TypeError} core::int*;
 }
 static method Extension2|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
 static method Extension2|get#property(lowered final self::Class2* #this) → core::int* {
   core::print("Extension2.property get on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(5){(core::num*) →* core::int*};
+  return #this.{self::Class2::field}.{core::num::+}(5);
 }
 static method Extension2|set#property(lowered final self::Class2* #this, core::int* value) → void {
   core::print("Extension2.property set(${value}) on ${#this}");
-  value = value.{core::num::+}(1){(core::num*) →* core::int*};
+  value = value.{core::num::+}(1);
   #this.{self::Class2::field} = value;
 }
 static method main() → dynamic {
@@ -103,13 +103,13 @@
   self::Class1* c1 = new self::Class1::•(1);
   self::expect(0, self::Extension1|method(c0));
   self::expect(1, self::Extension1|method(c1));
-  self::expect(1, let final self::Class1* #t1 = c1 in #t1 == null ?{core::int*} null : self::Extension1|method(#t1));
+  self::expect(1, let final self::Class1* #t1 = c1 in #t1.{self::Class1::==}(null) ?{core::int*} null : self::Extension1|method(#t1));
   self::expect(42, self::Extension1|genericMethod<core::int*>(c0, 42));
   self::expect(43, self::Extension1|genericMethod<core::num*>(c0, 43));
   self::expect(88, self::Extension1|genericMethod<core::int*>(c1, 87));
   self::expect(89, self::Extension1|genericMethod<core::num*>(c1, 88));
   self::expect(0, self::Extension1|get#property(c0));
-  self::expect(0, let final self::Class1* #t2 = c0 in #t2 == null ?{core::int*} null : self::Extension1|get#property(#t2));
+  self::expect(0, let final self::Class1* #t2 = c0 in #t2.{self::Class1::==}(null) ?{core::int*} null : self::Extension1|get#property(#t2));
   self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::Extension1|set#property(c0, #t3) in #t3);
   self::expect(1, self::Extension1|get#property(c1));
   self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::Extension1|set#property(c0, #t5) in #t5);
@@ -122,14 +122,14 @@
   self::Class2* c0 = new self::Class2::•(0);
   self::Class2* c1 = new self::Class2::•(1);
   self::expect(3, self::Extension2|method(c0));
-  self::expect(3, let final self::Class2* #t27 = c0 in #t27 == null ?{core::int*} null : self::Extension2|method(#t27));
+  self::expect(3, let final self::Class2* #t27 = c0 in #t27.{self::Class2::==}(null) ?{core::int*} null : self::Extension2|method(#t27));
   self::expect(4, self::Extension2|method(c1));
   self::expect(46, self::Extension2|genericMethod<core::int*>(c0, 42));
   self::expect(47, self::Extension2|genericMethod<core::num*>(c0, 43));
   self::expect(92, self::Extension2|genericMethod<core::int*>(c1, 87));
   self::expect(93, self::Extension2|genericMethod<core::num*>(c1, 88));
   self::expect(5, self::Extension2|get#property(c0));
-  self::expect(5, let final self::Class2* #t28 = c0 in #t28 == null ?{core::int*} null : self::Extension2|get#property(#t28));
+  self::expect(5, let final self::Class2* #t28 = c0 in #t28.{self::Class2::==}(null) ?{core::int*} null : self::Extension2|get#property(#t28));
   self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::Extension2|set#property(c0, #t29) in #t29);
   self::expect(48, self::Extension2|get#property(c0));
   self::expect(6, self::Extension2|get#property(c1));
@@ -141,7 +141,7 @@
   self::expect(67, let final core::int* #t41 = let final core::int* #t42 = self::Extension2|get#property(c0) in let final void #t43 = self::Extension2|set#property(c1, #t42) in #t42 in let final void #t44 = self::Extension2|set#property(c0, #t41) in #t41);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.expect b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.expect
index 42cf217..948d21b 100644
--- a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.expect
@@ -71,7 +71,7 @@
 }
 static set Extension1|staticProperty(core::int* value) → void {
   core::print("Extension1.staticProperty(${value})");
-  value = value.{core::num::+}(1){(core::num*) →* core::int*};
+  value = value.{core::num::+}(1);
 }
 static method main() → dynamic {
   self::Class1* c = new self::Class1::•();
diff --git a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.transformed.expect
index 42cf217..948d21b 100644
--- a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.transformed.expect
@@ -71,7 +71,7 @@
 }
 static set Extension1|staticProperty(core::int* value) → void {
   core::print("Extension1.staticProperty(${value})");
-  value = value.{core::num::+}(1){(core::num*) →* core::int*};
+  value = value.{core::num::+}(1);
 }
 static method main() → dynamic {
   self::Class1* c = new self::Class1::•();
diff --git a/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.expect b/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.expect
index 1240994..7ff18f4 100644
--- a/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.expect
@@ -8,7 +8,7 @@
     : self::Class1::field = field, super core::Object::•()
     ;
   method toString() → core::String*
-    return "Class1(${this.{self::Class1::field}{core::int*}})";
+    return "Class1(${this.{self::Class1::field}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -25,7 +25,7 @@
     : self::Class2::field = field, super core::Object::•()
     ;
   method toString() → core::String*
-    return "Class2(${this.{self::Class2::field}{core::int*}})";
+    return "Class2(${this.{self::Class2::field}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -50,25 +50,25 @@
 }
 static method Extension1|method(lowered final self::Class1* #this) → core::int* {
   core::print("Extension1.method on ${#this}");
-  return #this.{self::Class1::field}{core::int*};
+  return #this.{self::Class1::field};
 }
 static method Extension1|get#method(lowered final self::Class1* #this) → () →* core::int*
   return () → core::int* => self::Extension1|method(#this);
 static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::Extension1|genericMethod::T* t) → core::int* {
   core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T*}>(${t}) on ${#this}");
-  return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class1::field}.{core::num::+}(t) as{TypeError} core::int*;
 }
 static method Extension1|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
 static method Extension2|method(lowered final self::Class2* #this) → core::int* {
   core::print("Extension2.method on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(2){(core::num*) →* core::int*};
+  return #this.{self::Class2::field}.{core::num::+}(2);
 }
 static method Extension2|get#method(lowered final self::Class2* #this) → () →* core::int*
   return () → core::int* => self::Extension2|method(#this);
 static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::Extension2|genericMethod::T* t) → core::int* {
   core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T*}>(${t}) on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(3){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class2::field}.{core::num::+}(t).{core::num::+}(3) as{TypeError} core::int*;
 }
 static method Extension2|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
@@ -80,40 +80,40 @@
   self::Class1* c0 = new self::Class1::•(0);
   self::Class1* c1 = new self::Class1::•(1);
   () →* core::int* tearOff0 = self::Extension1|get#method(c0);
-  self::expect(0, tearOff0(){() →* core::int*});
-  c0 = new self::Class1::•(4.{core::int::unary-}(){() →* core::int*});
-  self::expect(0, tearOff0(){() →* core::int*});
+  self::expect(0, tearOff0.call());
+  c0 = new self::Class1::•(4.{core::int::unary-}());
+  self::expect(0, tearOff0.call());
   () →* core::int* tearOff1 = self::Extension1|get#method(c1);
-  self::expect(1, tearOff1(){() →* core::int*});
-  c1 = new self::Class1::•(7.{core::int::unary-}(){() →* core::int*});
-  self::expect(1, tearOff1(){() →* core::int*});
+  self::expect(1, tearOff1.call());
+  c1 = new self::Class1::•(7.{core::int::unary-}());
+  self::expect(1, tearOff1.call());
   <T extends core::num*>(T*) →* core::int* genericTearOff0 = self::Extension1|get#genericMethod(c0);
-  self::expect(38, genericTearOff0<core::int*>(42){(core::int*) →* core::int*});
-  self::expect(38, genericTearOff0<core::num*>(42){(core::num*) →* core::int*});
+  self::expect(38, genericTearOff0.call<core::int*>(42));
+  self::expect(38, genericTearOff0.call<core::num*>(42));
   <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension1|get#genericMethod(c1);
-  self::expect(35, genericTearOff1<core::int*>(42){(core::int*) →* core::int*});
-  self::expect(35, genericTearOff1<core::num*>(42){(core::num*) →* core::int*});
+  self::expect(35, genericTearOff1.call<core::int*>(42));
+  self::expect(35, genericTearOff1.call<core::num*>(42));
 }
 static method testExtension2() → dynamic {
   self::Class2* c0 = new self::Class2::•(0);
   self::Class2* c1 = new self::Class2::•(1);
   () →* core::int* tearOff0 = self::Extension2|get#method(c0);
-  self::expect(2, tearOff0(){() →* core::int*});
-  c0 = new self::Class2::•(4.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, tearOff0(){() →* core::int*});
+  self::expect(2, tearOff0.call());
+  c0 = new self::Class2::•(4.{core::int::unary-}());
+  self::expect(2, tearOff0.call());
   () →* core::int* tearOff1 = self::Extension2|get#method(c1);
-  self::expect(3, tearOff1(){() →* core::int*});
-  c1 = new self::Class2::•(7.{core::int::unary-}(){() →* core::int*});
-  self::expect(3, tearOff1(){() →* core::int*});
+  self::expect(3, tearOff1.call());
+  c1 = new self::Class2::•(7.{core::int::unary-}());
+  self::expect(3, tearOff1.call());
   <T extends core::num*>(T*) →* core::int* genericTearOff0 = self::Extension2|get#genericMethod(c0);
-  self::expect(41, genericTearOff0<core::int*>(42){(core::int*) →* core::int*});
-  self::expect(41, genericTearOff0<core::num*>(42){(core::num*) →* core::int*});
+  self::expect(41, genericTearOff0.call<core::int*>(42));
+  self::expect(41, genericTearOff0.call<core::num*>(42));
   <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension2|get#genericMethod(c1);
-  self::expect(38, genericTearOff1<core::int*>(42){(core::int*) →* core::int*});
-  self::expect(38, genericTearOff1<core::num*>(42){(core::num*) →* core::int*});
+  self::expect(38, genericTearOff1.call<core::int*>(42));
+  self::expect(38, genericTearOff1.call<core::num*>(42));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.transformed.expect
index c14a689..1c79b12 100644
--- a/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
     : self::Class1::field = field, super core::Object::•()
     ;
   method toString() → core::String*
-    return "Class1(${this.{self::Class1::field}{core::int*}})";
+    return "Class1(${this.{self::Class1::field}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -25,7 +25,7 @@
     : self::Class2::field = field, super core::Object::•()
     ;
   method toString() → core::String*
-    return "Class2(${this.{self::Class2::field}{core::int*}})";
+    return "Class2(${this.{self::Class2::field}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -50,25 +50,25 @@
 }
 static method Extension1|method(lowered final self::Class1* #this) → core::int* {
   core::print("Extension1.method on ${#this}");
-  return #this.{self::Class1::field}{core::int*};
+  return #this.{self::Class1::field};
 }
 static method Extension1|get#method(lowered final self::Class1* #this) → () →* core::int*
   return () → core::int* => self::Extension1|method(#this);
 static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::Extension1|genericMethod::T* t) → core::int* {
   core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T*}>(${t}) on ${#this}");
-  return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class1::field}.{core::num::+}(t) as{TypeError} core::int*;
 }
 static method Extension1|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
 static method Extension2|method(lowered final self::Class2* #this) → core::int* {
   core::print("Extension2.method on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(2){(core::num*) →* core::int*};
+  return #this.{self::Class2::field}.{core::num::+}(2);
 }
 static method Extension2|get#method(lowered final self::Class2* #this) → () →* core::int*
   return () → core::int* => self::Extension2|method(#this);
 static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::Extension2|genericMethod::T* t) → core::int* {
   core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T*}>(${t}) on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(3){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class2::field}.{core::num::+}(t).{core::num::+}(3) as{TypeError} core::int*;
 }
 static method Extension2|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
@@ -80,48 +80,48 @@
   self::Class1* c0 = new self::Class1::•(0);
   self::Class1* c1 = new self::Class1::•(1);
   () →* core::int* tearOff0 = self::Extension1|get#method(c0);
-  self::expect(0, tearOff0(){() →* core::int*});
-  c0 = new self::Class1::•(4.{core::int::unary-}(){() →* core::int*});
-  self::expect(0, tearOff0(){() →* core::int*});
+  self::expect(0, tearOff0.call());
+  c0 = new self::Class1::•(4.{core::int::unary-}());
+  self::expect(0, tearOff0.call());
   () →* core::int* tearOff1 = self::Extension1|get#method(c1);
-  self::expect(1, tearOff1(){() →* core::int*});
-  c1 = new self::Class1::•(7.{core::int::unary-}(){() →* core::int*});
-  self::expect(1, tearOff1(){() →* core::int*});
+  self::expect(1, tearOff1.call());
+  c1 = new self::Class1::•(7.{core::int::unary-}());
+  self::expect(1, tearOff1.call());
   <T extends core::num*>(T*) →* core::int* genericTearOff0 = self::Extension1|get#genericMethod(c0);
-  self::expect(38, genericTearOff0<core::int*>(42){(core::int*) →* core::int*});
-  self::expect(38, genericTearOff0<core::num*>(42){(core::num*) →* core::int*});
+  self::expect(38, genericTearOff0.call<core::int*>(42));
+  self::expect(38, genericTearOff0.call<core::num*>(42));
   <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension1|get#genericMethod(c1);
-  self::expect(35, genericTearOff1<core::int*>(42){(core::int*) →* core::int*});
-  self::expect(35, genericTearOff1<core::num*>(42){(core::num*) →* core::int*});
+  self::expect(35, genericTearOff1.call<core::int*>(42));
+  self::expect(35, genericTearOff1.call<core::num*>(42));
 }
 static method testExtension2() → dynamic {
   self::Class2* c0 = new self::Class2::•(0);
   self::Class2* c1 = new self::Class2::•(1);
   () →* core::int* tearOff0 = self::Extension2|get#method(c0);
-  self::expect(2, tearOff0(){() →* core::int*});
-  c0 = new self::Class2::•(4.{core::int::unary-}(){() →* core::int*});
-  self::expect(2, tearOff0(){() →* core::int*});
+  self::expect(2, tearOff0.call());
+  c0 = new self::Class2::•(4.{core::int::unary-}());
+  self::expect(2, tearOff0.call());
   () →* core::int* tearOff1 = self::Extension2|get#method(c1);
-  self::expect(3, tearOff1(){() →* core::int*});
-  c1 = new self::Class2::•(7.{core::int::unary-}(){() →* core::int*});
-  self::expect(3, tearOff1(){() →* core::int*});
+  self::expect(3, tearOff1.call());
+  c1 = new self::Class2::•(7.{core::int::unary-}());
+  self::expect(3, tearOff1.call());
   <T extends core::num*>(T*) →* core::int* genericTearOff0 = self::Extension2|get#genericMethod(c0);
-  self::expect(41, genericTearOff0<core::int*>(42){(core::int*) →* core::int*});
-  self::expect(41, genericTearOff0<core::num*>(42){(core::num*) →* core::int*});
+  self::expect(41, genericTearOff0.call<core::int*>(42));
+  self::expect(41, genericTearOff0.call<core::num*>(42));
   <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension2|get#genericMethod(c1);
-  self::expect(38, genericTearOff1<core::int*>(42){(core::int*) →* core::int*});
-  self::expect(38, genericTearOff1<core::num*>(42){(core::num*) →* core::int*});
+  self::expect(38, genericTearOff1.call<core::int*>(42));
+  self::expect(38, genericTearOff1.call<core::num*>(42));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///instance_tearoff.dart:54:19 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///instance_tearoff.dart:58:19 -> IntConstant(-7)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///instance_tearoff.dart:73:19 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///instance_tearoff.dart:77:19 -> IntConstant(-7)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///instance_tearoff.dart:54:19 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///instance_tearoff.dart:58:19 -> IntConstant(-7)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///instance_tearoff.dart:73:19 -> IntConstant(-4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///instance_tearoff.dart:77:19 -> IntConstant(-7)
 Extra constant evaluation: evaluated: 144, effectively constant: 4
diff --git a/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.expect b/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.expect
index 80f8e09..810c73b 100644
--- a/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.expect
@@ -31,7 +31,7 @@
 static method _extension#0|set#property1(lowered final self::Class* #this, core::int* value) → void
   return #this.{self::Class::field} = value;
 static method _extension#1|get#property2(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method _extension#1|set#property2(lowered final self::Class* #this, core::int* value) → void
   return let final core::int* #t1 = value in let final void #t2 = self::_extension#0|set#property1(#this, #t1) in #t1;
 static method main() → dynamic {
@@ -44,7 +44,7 @@
   self::expect(87, self::_extension#0|get#property1(c));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.transformed.expect
index faaf375..ee08d45 100644
--- a/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.transformed.expect
@@ -31,7 +31,7 @@
 static method _extension#0|set#property1(lowered final self::Class* #this, core::int* value) → void
   return #this.{self::Class::field} = value;
 static method _extension#1|get#property2(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method _extension#1|set#property2(lowered final self::Class* #this, core::int* value) → void
   return let final core::int* #t1 = value in let final void #t2 = self::_extension#0|set#property1(#this, #t1) in #t1;
 static method main() → dynamic {
@@ -44,7 +44,7 @@
   self::expect(87, self::_extension#0|get#property1(c));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect
index b85efb2..3dfc9a6 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect
@@ -173,19 +173,19 @@
   self::Class* c1 = new self::Class::•();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:23:3: Error: Explicit extension application requires exactly 1 positional argument.
   Extension().method(null);
-  ^^^^^^^^^"{dynamic}.method(null);
+  ^^^^^^^^^".method(null);
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:24:3: Error: Explicit extension application requires exactly 1 positional argument.
   Extension(c1, null).method(null);
-  ^^^^^^^^^"{dynamic}.method(null);
+  ^^^^^^^^^".method(null);
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:25:3: Error: Explicit extension application requires exactly 1 positional argument.
   Extension(receiver: c1).method(null);
-  ^^^^^^^^^"{dynamic}.method(null);
+  ^^^^^^^^^".method(null);
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:26:3: Error: Explicit extension application requires exactly 1 positional argument.
   Extension(c1, receiver: null).method(null);
-  ^^^^^^^^^"{dynamic}.method(null);
+  ^^^^^^^^^".method(null);
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:27:3: Error: Explicit extension application of extension 'Extension' takes '0' type argument(s).
   Extension<int>(c1).method(null);
-  ^^^^^^^^^"{dynamic}.method(null);
+  ^^^^^^^^^".method(null);
   self::Extension|method(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:28:13: Error: The argument type 'String' can't be assigned to the parameter type 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
   Extension(s).method(null);
@@ -218,31 +218,31 @@
   self::GenericClass<core::int*>* c2 = new self::GenericClass::•<core::int*>();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:42:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension().method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:43:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension<int>().method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:44:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension(c2, null).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:45:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension<int>(c2, null).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:46:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension(receiver: c2).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:47:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension<int>(receiver: c2).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:48:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension(c2, receiver: null).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:49:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension<int>(c2, receiver: null).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:50:3: Error: Explicit extension application of extension 'GenericExtension' takes '1' type argument(s).
   GenericExtension<int, String>(c2).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   self::GenericExtension|method<dynamic>(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:51:20: Error: The argument type 'String' can't be assigned to the parameter type 'GenericClass<dynamic>'.
  - 'GenericClass' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
   GenericExtension(s).method();
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect
index b85efb2..3dfc9a6 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect
@@ -173,19 +173,19 @@
   self::Class* c1 = new self::Class::•();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:23:3: Error: Explicit extension application requires exactly 1 positional argument.
   Extension().method(null);
-  ^^^^^^^^^"{dynamic}.method(null);
+  ^^^^^^^^^".method(null);
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:24:3: Error: Explicit extension application requires exactly 1 positional argument.
   Extension(c1, null).method(null);
-  ^^^^^^^^^"{dynamic}.method(null);
+  ^^^^^^^^^".method(null);
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:25:3: Error: Explicit extension application requires exactly 1 positional argument.
   Extension(receiver: c1).method(null);
-  ^^^^^^^^^"{dynamic}.method(null);
+  ^^^^^^^^^".method(null);
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:26:3: Error: Explicit extension application requires exactly 1 positional argument.
   Extension(c1, receiver: null).method(null);
-  ^^^^^^^^^"{dynamic}.method(null);
+  ^^^^^^^^^".method(null);
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:27:3: Error: Explicit extension application of extension 'Extension' takes '0' type argument(s).
   Extension<int>(c1).method(null);
-  ^^^^^^^^^"{dynamic}.method(null);
+  ^^^^^^^^^".method(null);
   self::Extension|method(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:28:13: Error: The argument type 'String' can't be assigned to the parameter type 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
   Extension(s).method(null);
@@ -218,31 +218,31 @@
   self::GenericClass<core::int*>* c2 = new self::GenericClass::•<core::int*>();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:42:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension().method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:43:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension<int>().method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:44:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension(c2, null).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:45:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension<int>(c2, null).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:46:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension(receiver: c2).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:47:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension<int>(receiver: c2).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:48:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension(c2, receiver: null).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:49:3: Error: Explicit extension application requires exactly 1 positional argument.
   GenericExtension<int>(c2, receiver: null).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:50:3: Error: Explicit extension application of extension 'GenericExtension' takes '1' type argument(s).
   GenericExtension<int, String>(c2).method();
-  ^^^^^^^^^^^^^^^^"{dynamic}.method();
+  ^^^^^^^^^^^^^^^^".method();
   self::GenericExtension|method<dynamic>(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:51:20: Error: The argument type 'String' can't be assigned to the parameter type 'GenericClass<dynamic>'.
  - 'GenericClass' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
   GenericExtension(s).method();
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.weak.expect b/pkg/front_end/testcases/extensions/issue38750.dart.weak.expect
index 1a16509..3935f4db 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.weak.expect
@@ -35,7 +35,7 @@
   invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Method not found: 'C._staticFoo'.
   C._staticFoo();
     ^^^^^^^^^^";
-  c.{iss::C::foo}(){() →* dynamic};
+  c.{iss::C::foo}();
   iss::C::staticFoo();
   invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:16:5: Error: The method '_bar' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/extensions/issue38750_lib1.dart'.
@@ -53,7 +53,7 @@
     : super core::Object::•()
     ;
   method foo() → dynamic
-    return this.{iss::C::_foo}(){() →* dynamic};
+    return this.{iss::C::_foo}();
   method _foo() → dynamic {
     try {
       throw "producing a stack trace";
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue38750.dart.weak.transformed.expect
index 1a16509..3935f4db 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.weak.transformed.expect
@@ -35,7 +35,7 @@
   invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Method not found: 'C._staticFoo'.
   C._staticFoo();
     ^^^^^^^^^^";
-  c.{iss::C::foo}(){() →* dynamic};
+  c.{iss::C::foo}();
   iss::C::staticFoo();
   invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:16:5: Error: The method '_bar' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/extensions/issue38750_lib1.dart'.
@@ -53,7 +53,7 @@
     : super core::Object::•()
     ;
   method foo() → dynamic
-    return this.{iss::C::_foo}(){() →* dynamic};
+    return this.{iss::C::_foo}();
   method _foo() → dynamic {
     try {
       throw "producing a stack trace";
diff --git a/pkg/front_end/testcases/extensions/issue38755.dart.weak.expect b/pkg/front_end/testcases/extensions/issue38755.dart.weak.expect
index 8be9036..724ef26 100644
--- a/pkg/front_end/testcases/extensions/issue38755.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue38755.dart.weak.expect
@@ -8,7 +8,7 @@
 }
 static final field core::List<core::String*>* list = self::A|myMap<core::String*, core::String*>(<core::String*>["a", "b", "c"], (core::String* it) → core::String* => it);
 static method A|myMap<T extends core::Object* = dynamic, R extends core::Object* = dynamic>(lowered final core::List<self::A|myMap::T*>* #this, (self::A|myMap::T*) →* self::A|myMap::R* block) → core::List<self::A|myMap::R*>* {
-  return #this.{core::Iterable::map}<self::A|myMap::R*>(block){((self::A|myMap::T*) →* self::A|myMap::R*) →* core::Iterable<self::A|myMap::R*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<self::A|myMap::R*>*};
+  return #this.{core::Iterable::map}<self::A|myMap::R*>(block).{core::Iterable::toList}();
 }
 static method A|get#myMap<T extends core::Object* = dynamic>(lowered final core::List<self::A|get#myMap::T*>* #this) → <R extends core::Object* = dynamic>((self::A|get#myMap::T*) →* R*) →* core::List<R*>*
   return <R extends core::Object* = dynamic>((self::A|get#myMap::T*) →* R* block) → core::List<R*>* => self::A|myMap<self::A|get#myMap::T*, R*>(#this, block);
diff --git a/pkg/front_end/testcases/extensions/issue38755.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue38755.dart.weak.transformed.expect
index b5537fa..a04ed8e 100644
--- a/pkg/front_end/testcases/extensions/issue38755.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38755.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
 }
 static final field core::List<core::String*>* list = self::A|myMap<core::String*, core::String*>(core::_GrowableList::_literal3<core::String*>("a", "b", "c"), (core::String* it) → core::String* => it);
 static method A|myMap<T extends core::Object* = dynamic, R extends core::Object* = dynamic>(lowered final core::List<self::A|myMap::T*>* #this, (self::A|myMap::T*) →* self::A|myMap::R* block) → core::List<self::A|myMap::R*>* {
-  return #this.{core::Iterable::map}<self::A|myMap::R*>(block){((self::A|myMap::T*) →* self::A|myMap::R*) →* core::Iterable<self::A|myMap::R*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<self::A|myMap::R*>*};
+  return #this.{core::Iterable::map}<self::A|myMap::R*>(block).{core::Iterable::toList}();
 }
 static method A|get#myMap<T extends core::Object* = dynamic>(lowered final core::List<self::A|get#myMap::T*>* #this) → <R extends core::Object* = dynamic>((self::A|get#myMap::T*) →* R*) →* core::List<R*>*
   return <R extends core::Object* = dynamic>((self::A|get#myMap::T*) →* R* block) → core::List<R*>* => self::A|myMap<self::A|get#myMap::T*, R*>(#this, block);
diff --git a/pkg/front_end/testcases/extensions/issue39527.dart.weak.expect b/pkg/front_end/testcases/extensions/issue39527.dart.weak.expect
index 7d9415b..16896b4 100644
--- a/pkg/front_end/testcases/extensions/issue39527.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue39527.dart.weak.expect
@@ -25,10 +25,10 @@
 }
 static method Extension1|[](lowered final self::C* #this, core::int* index) → self::C*
   return let final self::C* #t1 = #this in block {
-    #t1.{self::C::value} = #t1.{self::C::value}{core::int*}.{core::num::+}(index.{core::num::+}(1){(core::num*) →* core::int*}){(core::num*) →* core::int*};
+    #t1.{self::C::value} = #t1.{self::C::value}.{core::num::+}(index.{core::num::+}(1));
   } =>#t1;
 static method Extension1|[]=(lowered final self::C* #this, core::int* index, self::C* other) → void
-  return #this.{self::C::value} = #this.{self::C::value}{core::int*}.{core::num::+}(other.{self::C::value}{core::int*}.{core::num::+}(index){(core::num*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*}){(core::num*) →* core::int*};
+  return #this.{self::C::value} = #this.{self::C::value}.{core::num::+}(other.{self::C::value}.{core::num::+}(index).{core::num::+}(1));
 static method Extension1|-(lowered final self::C* #this, core::int* val) → self::C*
   return #this;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/extensions/issue39527.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue39527.dart.weak.transformed.expect
index f952880..59b0317 100644
--- a/pkg/front_end/testcases/extensions/issue39527.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue39527.dart.weak.transformed.expect
@@ -25,10 +25,10 @@
 }
 static method Extension1|[](lowered final self::C* #this, core::int* index) → self::C*
   return let final self::C* #t1 = #this in block {
-    #t1.{self::C::value} = #t1.{self::C::value}{core::int*}.{core::num::+}(index.{core::num::+}(1){(core::num*) →* core::int*}){(core::num*) →* core::int*};
+    #t1.{self::C::value} = #t1.{self::C::value}.{core::num::+}(index.{core::num::+}(1));
   } =>#t1;
 static method Extension1|[]=(lowered final self::C* #this, core::int* index, self::C* other) → void
-  return #this.{self::C::value} = #this.{self::C::value}{core::int*}.{core::num::+}(other.{self::C::value}{core::int*}.{core::num::+}(index){(core::num*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*}){(core::num*) →* core::int*};
+  return #this.{self::C::value} = #this.{self::C::value}.{core::num::+}(other.{self::C::value}.{core::num::+}(index).{core::num::+}(1));
 static method Extension1|-(lowered final self::C* #this, core::int* val) → self::C*
   return #this;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.expect b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.expect
index aef46a0..687f686 100644
--- a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.expect
@@ -16,7 +16,7 @@
   self::expect(false, iss::Extension|+(false, false));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}.";
 }
 
@@ -28,4 +28,4 @@
   operator + = iss::Extension|+;
 }
 static method Extension|+(lowered final core::bool* #this, core::bool* other) → core::bool*
-  return #this.{core::bool::|}(other){(core::bool*) →* core::bool*};
+  return #this.{core::bool::|}(other);
diff --git a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.transformed.expect
index aef46a0..687f686 100644
--- a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
   self::expect(false, iss::Extension|+(false, false));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}.";
 }
 
@@ -28,4 +28,4 @@
   operator + = iss::Extension|+;
 }
 static method Extension|+(lowered final core::bool* #this, core::bool* other) → core::bool*
-  return #this.{core::bool::|}(other){(core::bool*) →* core::bool*};
+  return #this.{core::bool::|}(other);
diff --git a/pkg/front_end/testcases/extensions/issue40596.dart.weak.expect b/pkg/front_end/testcases/extensions/issue40596.dart.weak.expect
index 4f80fad..7a2fd83 100644
--- a/pkg/front_end/testcases/extensions/issue40596.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue40596.dart.weak.expect
@@ -13,12 +13,12 @@
   asy::StreamController<core::String*>* controller = asy::StreamController::•<core::String*>();
   let final asy::StreamController<core::String*>* #t1 = controller in let final (dynamic) →* Null #t2 = (dynamic s) → Null {
     core::print(s);
-  } in self::Extension|call<core::String*>(#t1.{asy::StreamController::stream}{asy::Stream<core::String*>*}, #t2);
+  } in self::Extension|call<core::String*>(#t1.{asy::StreamController::stream}, #t2);
 }
 static method Extension|call<T extends core::Object* = dynamic>(lowered final asy::Stream<self::Extension|call::T*>* #this, core::Function* onData) → asy::StreamSubscription<self::Extension|call::T*>* {
   return #this.{asy::Stream::listen}((self::Extension|call::T* d) → Null {
-    onData(d);
-  }){((self::Extension|call::T*) →* void, {cancelOnError: core::bool*, onDone: () →* void, onError: core::Function*}) →* asy::StreamSubscription<self::Extension|call::T*>*};
+    onData.call(d);
+  });
 }
 static method Extension|get#call<T extends core::Object* = dynamic>(lowered final asy::Stream<self::Extension|get#call::T*>* #this) → (core::Function*) →* asy::StreamSubscription<self::Extension|get#call::T*>*
   return (core::Function* onData) → asy::StreamSubscription<self::Extension|get#call::T*>* => self::Extension|call<self::Extension|get#call::T*>(#this, onData);
diff --git a/pkg/front_end/testcases/extensions/issue40596.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue40596.dart.weak.transformed.expect
index 4f80fad..7a2fd83 100644
--- a/pkg/front_end/testcases/extensions/issue40596.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue40596.dart.weak.transformed.expect
@@ -13,12 +13,12 @@
   asy::StreamController<core::String*>* controller = asy::StreamController::•<core::String*>();
   let final asy::StreamController<core::String*>* #t1 = controller in let final (dynamic) →* Null #t2 = (dynamic s) → Null {
     core::print(s);
-  } in self::Extension|call<core::String*>(#t1.{asy::StreamController::stream}{asy::Stream<core::String*>*}, #t2);
+  } in self::Extension|call<core::String*>(#t1.{asy::StreamController::stream}, #t2);
 }
 static method Extension|call<T extends core::Object* = dynamic>(lowered final asy::Stream<self::Extension|call::T*>* #this, core::Function* onData) → asy::StreamSubscription<self::Extension|call::T*>* {
   return #this.{asy::Stream::listen}((self::Extension|call::T* d) → Null {
-    onData(d);
-  }){((self::Extension|call::T*) →* void, {cancelOnError: core::bool*, onDone: () →* void, onError: core::Function*}) →* asy::StreamSubscription<self::Extension|call::T*>*};
+    onData.call(d);
+  });
 }
 static method Extension|get#call<T extends core::Object* = dynamic>(lowered final asy::Stream<self::Extension|get#call::T*>* #this) → (core::Function*) →* asy::StreamSubscription<self::Extension|get#call::T*>*
   return (core::Function* onData) → asy::StreamSubscription<self::Extension|get#call::T*>* => self::Extension|call<self::Extension|get#call::T*>(#this, onData);
diff --git a/pkg/front_end/testcases/extensions/issue40713.dart.weak.expect b/pkg/front_end/testcases/extensions/issue40713.dart.weak.expect
index 5609379..f44a847 100644
--- a/pkg/front_end/testcases/extensions/issue40713.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue40713.dart.weak.expect
@@ -17,14 +17,14 @@
   get safeFirst = self::SafeAccess|get#safeFirst;
 }
 static method SafeAccess|get#safeFirst<T extends core::Object* = dynamic>(lowered final core::Iterable<self::SafeAccess|get#safeFirst::T*>* #this) → self::SafeAccess|get#safeFirst::T* {
-  return #this.{core::Iterable::isNotEmpty}{core::bool*} ?{self::SafeAccess|get#safeFirst::T*} #this.{core::Iterable::first}{self::SafeAccess|get#safeFirst::T*} : null;
+  return #this.{core::Iterable::isNotEmpty} ?{self::SafeAccess|get#safeFirst::T*} #this.{core::Iterable::first} : null;
 }
 static method main() → dynamic {}
 static method test() → void {
   final core::List<dynamic>* list = <dynamic>[];
-  self::SafeAccess|get#safeFirst<dynamic>(list){dynamic}.call();
+  self::SafeAccess|get#safeFirst<dynamic>(list).call();
   final core::List<(core::int*) →* void>* list2 = <(core::int*) →* void>[];
-  self::SafeAccess|get#safeFirst<(core::int*) →* void>(list2)(0){(core::int*) →* void};
+  self::SafeAccess|get#safeFirst<(core::int*) →* void>(list2).call(0);
 }
 static method errors() → void {
   final core::List<core::Object*>* list = <core::Object*>[];
@@ -34,5 +34,5 @@
   final core::List<(core::int*) →* void>* list2 = <(core::int*) →* void>[];
   let final Never* #t1 = invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
   list2.safeFirst();
-                 ^" in self::SafeAccess|get#safeFirst<(core::int*) →* void>(list2){<inapplicable>}.();
+                 ^" in self::SafeAccess|get#safeFirst<(core::int*) →* void>(list2).call();
 }
diff --git a/pkg/front_end/testcases/extensions/issue40713.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue40713.dart.weak.transformed.expect
deleted file mode 100644
index 4627c59..0000000
--- a/pkg/front_end/testcases/extensions/issue40713.dart.weak.transformed.expect
+++ /dev/null
@@ -1,38 +0,0 @@
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/extensions/issue40713.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
-//   list.safeFirst();
-//        ^^^^^^^^^
-//
-// pkg/front_end/testcases/extensions/issue40713.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
-//   list2.safeFirst();
-//                  ^
-//
-import self as self;
-import "dart:core" as core;
-
-extension SafeAccess<T extends core::Object* = dynamic> on core::Iterable<T*>* {
-  get safeFirst = self::SafeAccess|get#safeFirst;
-}
-static method SafeAccess|get#safeFirst<T extends core::Object* = dynamic>(lowered final core::Iterable<self::SafeAccess|get#safeFirst::T*>* #this) → self::SafeAccess|get#safeFirst::T* {
-  return #this.{core::Iterable::isNotEmpty}{core::bool*} ?{self::SafeAccess|get#safeFirst::T*} #this.{core::Iterable::first}{self::SafeAccess|get#safeFirst::T*} : null;
-}
-static method main() → dynamic {}
-static method test() → void {
-  final core::List<dynamic>* list = core::_GrowableList::•<dynamic>(0);
-  self::SafeAccess|get#safeFirst<dynamic>(list){dynamic}.call();
-  final core::List<(core::int*) →* void>* list2 = core::_GrowableList::•<(core::int*) →* void>(0);
-  self::SafeAccess|get#safeFirst<(core::int*) →* void>(list2)(0){(core::int*) →* void};
-}
-static method errors() → void {
-  final core::List<core::Object*>* list = core::_GrowableList::•<core::Object*>(0);
-  invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
-  list.safeFirst();
-       ^^^^^^^^^";
-  final core::List<(core::int*) →* void>* list2 = core::_GrowableList::•<(core::int*) →* void>(0);
-  let final Never* #t1 = invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
-  list2.safeFirst();
-                 ^" in self::SafeAccess|get#safeFirst<(core::int*) →* void>(list2){<inapplicable>}.();
-}
diff --git a/pkg/front_end/testcases/extensions/issue43218.dart.weak.expect b/pkg/front_end/testcases/extensions/issue43218.dart.weak.expect
index 26ad712..fd80b29 100644
--- a/pkg/front_end/testcases/extensions/issue43218.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue43218.dart.weak.expect
@@ -18,7 +18,7 @@
     this.{self::C::value} = 0;
   }
   get id() → core::int*
-    return this.{self::C::value}{core::int*};
+    return this.{self::C::value};
   set id(core::int* v) → void {
     this.{self::C::value} = v;
   }
@@ -37,7 +37,7 @@
   get id = self::Ext|get#id;
 }
 static method Ext|get#id(lowered final self::C* #this) → core::int*
-  return #this.{self::C::value}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
+  return #this.{self::C::value}.{core::num::+}(1);
 static method test() → dynamic {
   self::C* c = new self::C::•();
   let final self::C* #t1 = c in invalid-expression "pkg/front_end/testcases/extensions/issue43218.dart:24:10: Error: The setter 'id' isn't defined for the class 'int'.
diff --git a/pkg/front_end/testcases/extensions/issue43218.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue43218.dart.weak.transformed.expect
index 26ad712..fd80b29 100644
--- a/pkg/front_end/testcases/extensions/issue43218.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue43218.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
     this.{self::C::value} = 0;
   }
   get id() → core::int*
-    return this.{self::C::value}{core::int*};
+    return this.{self::C::value};
   set id(core::int* v) → void {
     this.{self::C::value} = v;
   }
@@ -37,7 +37,7 @@
   get id = self::Ext|get#id;
 }
 static method Ext|get#id(lowered final self::C* #this) → core::int*
-  return #this.{self::C::value}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
+  return #this.{self::C::value}.{core::num::+}(1);
 static method test() → dynamic {
   self::C* c = new self::C::•();
   let final self::C* #t1 = c in invalid-expression "pkg/front_end/testcases/extensions/issue43218.dart:24:10: Error: The setter 'id' isn't defined for the class 'int'.
diff --git a/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.expect b/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.expect
index e492265..c79acde 100644
--- a/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.expect
@@ -34,6 +34,6 @@
  - 'Class' is from 'pkg/front_end/testcases/extensions/missing_toplevel.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'setter'.
 var missingGetter = c.setter += 42;
-                      ^^^^^^"{dynamic}.+(42) as{TypeError,ForDynamic} core::int* in let final void #t3 = self::Extension|set#setter(#t1, #t2) in #t2;
+                      ^^^^^^".+(42) as{TypeError,ForDynamic} core::int* in let final void #t3 = self::Extension|set#setter(#t1, #t2) in #t2;
 static method Extension|set#setter(lowered final self::Class* #this, core::int* value) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.transformed.expect
index d71c075..0a31620 100644
--- a/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.transformed.expect
@@ -34,6 +34,6 @@
  - 'Class' is from 'pkg/front_end/testcases/extensions/missing_toplevel.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'setter'.
 var missingGetter = c.setter += 42;
-                      ^^^^^^"{dynamic}.+(42) as{TypeError,ForDynamic} core::int* in let final void #t3 = self::Extension|set#setter(#t1, #t2) in #t2;
+                      ^^^^^^".+(42) as{TypeError,ForDynamic} core::int* in let final void #t3 = self::Extension|set#setter(#t1, #t2) in #t2;
 static method Extension|set#setter(lowered final self::Class* #this, core::int* value) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/null_aware.dart.weak.expect b/pkg/front_end/testcases/extensions/null_aware.dart.weak.expect
index 31cc462..9cff1f1 100644
--- a/pkg/front_end/testcases/extensions/null_aware.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/null_aware.dart.weak.expect
@@ -27,61 +27,61 @@
   set property = self::Extension|set#property;
 }
 static method Extension|get#property(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|set#property(lowered final self::Class* #this, core::int* value) → void {
   #this.{self::Class::field} = value;
 }
 static method Extension|method(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|get#method(lowered final self::Class* #this) → () →* core::int*
   return () → core::int* => self::Extension|method(#this);
 static method Extension|testImplicitThis(lowered final self::Class* #this) → dynamic {
   self::expect(null, self::Extension|get#property(#this));
-  self::expect(42, let final core::int* #t1 = self::Extension|get#property(#this) in #t1 == null ?{core::int*} let final core::int* #t2 = 42 in let final void #t3 = self::Extension|set#property(#this, #t2) in #t2 : #t1);
-  self::expect(42, let final core::int* #t4 = self::Extension|get#property(#this) in #t4 == null ?{core::int*} let final core::int* #t5 = 87 in let final void #t6 = self::Extension|set#property(#this, #t5) in #t5 : #t4);
+  self::expect(42, let final core::int* #t1 = self::Extension|get#property(#this) in #t1.{core::num::==}(null) ?{core::int*} let final core::int* #t2 = 42 in let final void #t3 = self::Extension|set#property(#this, #t2) in #t2 : #t1);
+  self::expect(42, let final core::int* #t4 = self::Extension|get#property(#this) in #t4.{core::num::==}(null) ?{core::int*} let final core::int* #t5 = 87 in let final void #t6 = self::Extension|set#property(#this, #t5) in #t5 : #t4);
 }
 static method Extension|get#testImplicitThis(lowered final self::Class* #this) → () →* dynamic
   return () → dynamic => self::Extension|testImplicitThis(#this);
 static method main() → dynamic {
   self::Class* c;
-  self::expect(null, let final self::Class* #t7 = c in #t7 == null ?{core::int*} null : self::Extension|get#property(#t7));
-  self::expect(null, let final self::Class* #t8 = c in #t8 == null ?{() →* core::int*} null : self::Extension|get#method(#t8));
-  self::expect(null, let final self::Class* #t9 = c in #t9 == null ?{core::int*} null : self::Extension|method(#t9));
-  self::expect(null, let final self::Class* #t10 = c in #t10 == null ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11);
-  self::expect(null, let final self::Class* #t13 = c in #t13 == null ?{core::int*} null : let final core::int* #t14 = self::Extension|get#property(#t13) in #t14 == null ?{core::int*} let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13, #t15) in #t15 : #t14);
+  self::expect(null, let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t7));
+  self::expect(null, let final self::Class* #t8 = c in #t8.{self::Class::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t8));
+  self::expect(null, let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t9));
+  self::expect(null, let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11);
+  self::expect(null, let final self::Class* #t13 = c in #t13.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t14 = self::Extension|get#property(#t13) in #t14.{core::num::==}(null) ?{core::int*} let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13, #t15) in #t15 : #t14);
   c = new self::Class::•();
-  self::expect(null, let final self::Class* #t17 = c in #t17 == null ?{core::int*} null : self::Extension|get#property(#t17));
-  self::expect(null, let final self::Class* #t18 = c in #t18 == null ?{core::int*} null : self::Extension|method(#t18));
-  () →* core::int* tearOff = let final self::Class* #t19 = c in #t19 == null ?{() →* core::int*} null : self::Extension|get#method(#t19);
-  self::expect(null, tearOff(){() →* core::int*});
-  self::expect(42, let final self::Class* #t20 = c in #t20 == null ?{core::int*} null : let final core::int* #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20, #t21) in #t21);
-  self::expect(42, tearOff(){() →* core::int*});
-  self::expect(null, let final self::Class* #t23 = c in #t23 == null ?{Null} null : let final Null #t24 = null in let final void #t25 = self::Extension|set#property(#t23, #t24) in #t24);
-  self::expect(42, let final self::Class* #t26 = c in #t26 == null ?{core::int*} null : let final core::int* #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26, #t27) in #t27);
-  let final self::Class* #t29 = c in #t29 == null ?{Null} null : self::Extension|set#property(#t29, null);
-  self::expect(null, let final self::Class* #t30 = c in #t30 == null ?{core::int*} null : self::Extension|get#property(#t30));
-  self::expect(42, let final self::Class* #t31 = c in let final core::int* #t32 = self::Extension|get#property(#t31) in #t32 == null ?{core::int*} let final core::int* #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32);
-  self::expect(42, let final self::Class* #t35 = c in let final core::int* #t36 = self::Extension|get#property(#t35) in #t36 == null ?{core::int*} let final core::int* #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36);
-  self::expect(null, let final self::Class* #t39 = c in #t39 == null ?{Null} null : let final Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39, #t40) in #t40);
-  let final self::Class* #t42 = c in self::Extension|get#property(#t42) == null ?{core::int*} self::Extension|set#property(#t42, 42) : null;
-  self::expect(42, let final self::Class* #t43 = c in #t43 == null ?{core::int*} null : self::Extension|get#property(#t43));
-  let final self::Class* #t44 = c in self::Extension|get#property(#t44) == null ?{core::int*} self::Extension|set#property(#t44, 87) : null;
-  self::expect(42, let final self::Class* #t45 = c in #t45 == null ?{core::int*} null : self::Extension|get#property(#t45));
-  let final self::Class* #t46 = c in #t46 == null ?{Null} null : self::Extension|set#property(#t46, null);
-  self::expect(null, let final self::Class* #t47 = c in #t47 == null ?{core::int*} null : self::Extension|get#property(#t47));
-  self::expect(42, let final self::Class* #t48 = c in let final core::int* #t49 = self::Extension|get#property(#t48) in #t49 == null ?{core::int*} let final core::int* #t50 = 42 in let final void #t51 = self::Extension|set#property(#t48, #t50) in #t50 : #t49);
-  self::expect(42, let final self::Class* #t52 = c in let final core::int* #t53 = self::Extension|get#property(#t52) in #t53 == null ?{core::int*} let final core::int* #t54 = 87 in let final void #t55 = self::Extension|set#property(#t52, #t54) in #t54 : #t53);
-  let final self::Class* #t56 = c in #t56 == null ?{Null} null : self::Extension|set#property(#t56, null);
-  self::expect(null, let final self::Class* #t57 = c in #t57 == null ?{core::int*} null : self::Extension|get#property(#t57));
-  let final self::Class* #t58 = c in self::Extension|get#property(#t58) == null ?{core::int*} self::Extension|set#property(#t58, 42) : null;
-  self::expect(42, let final self::Class* #t59 = c in #t59 == null ?{core::int*} null : self::Extension|get#property(#t59));
-  let final self::Class* #t60 = c in self::Extension|get#property(#t60) == null ?{core::int*} self::Extension|set#property(#t60, 87) : null;
-  self::expect(42, let final self::Class* #t61 = c in #t61 == null ?{core::int*} null : self::Extension|get#property(#t61));
-  let final self::Class* #t62 = c in #t62 == null ?{Null} null : self::Extension|set#property(#t62, null);
+  self::expect(null, let final self::Class* #t17 = c in #t17.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t17));
+  self::expect(null, let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t18));
+  () →* core::int* tearOff = let final self::Class* #t19 = c in #t19.{self::Class::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t19);
+  self::expect(null, tearOff.call());
+  self::expect(42, let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20, #t21) in #t21);
+  self::expect(42, tearOff.call());
+  self::expect(null, let final self::Class* #t23 = c in #t23.{self::Class::==}(null) ?{Null} null : let final Null #t24 = null in let final void #t25 = self::Extension|set#property(#t23, #t24) in #t24);
+  self::expect(42, let final self::Class* #t26 = c in #t26.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26, #t27) in #t27);
+  let final self::Class* #t29 = c in #t29.{self::Class::==}(null) ?{Null} null : self::Extension|set#property(#t29, null);
+  self::expect(null, let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t30));
+  self::expect(42, let final self::Class* #t31 = c in let final core::int* #t32 = self::Extension|get#property(#t31) in #t32.{core::num::==}(null) ?{core::int*} let final core::int* #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32);
+  self::expect(42, let final self::Class* #t35 = c in let final core::int* #t36 = self::Extension|get#property(#t35) in #t36.{core::num::==}(null) ?{core::int*} let final core::int* #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36);
+  self::expect(null, let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{Null} null : let final Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39, #t40) in #t40);
+  let final self::Class* #t42 = c in self::Extension|get#property(#t42).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t42, 42) : null;
+  self::expect(42, let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t43));
+  let final self::Class* #t44 = c in self::Extension|get#property(#t44).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t44, 87) : null;
+  self::expect(42, let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t45));
+  let final self::Class* #t46 = c in #t46.{self::Class::==}(null) ?{Null} null : self::Extension|set#property(#t46, null);
+  self::expect(null, let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t47));
+  self::expect(42, let final self::Class* #t48 = c in let final core::int* #t49 = self::Extension|get#property(#t48) in #t49.{core::num::==}(null) ?{core::int*} let final core::int* #t50 = 42 in let final void #t51 = self::Extension|set#property(#t48, #t50) in #t50 : #t49);
+  self::expect(42, let final self::Class* #t52 = c in let final core::int* #t53 = self::Extension|get#property(#t52) in #t53.{core::num::==}(null) ?{core::int*} let final core::int* #t54 = 87 in let final void #t55 = self::Extension|set#property(#t52, #t54) in #t54 : #t53);
+  let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{Null} null : self::Extension|set#property(#t56, null);
+  self::expect(null, let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t57));
+  let final self::Class* #t58 = c in self::Extension|get#property(#t58).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t58, 42) : null;
+  self::expect(42, let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t59));
+  let final self::Class* #t60 = c in self::Extension|get#property(#t60).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t60, 87) : null;
+  self::expect(42, let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t61));
+  let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{Null} null : self::Extension|set#property(#t62, null);
   self::Extension|testImplicitThis(c);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/null_aware.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/null_aware.dart.weak.transformed.expect
index 6ea809e..afe8026 100644
--- a/pkg/front_end/testcases/extensions/null_aware.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/null_aware.dart.weak.transformed.expect
@@ -27,61 +27,61 @@
   set property = self::Extension|set#property;
 }
 static method Extension|get#property(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|set#property(lowered final self::Class* #this, core::int* value) → void {
   #this.{self::Class::field} = value;
 }
 static method Extension|method(lowered final self::Class* #this) → core::int*
-  return #this.{self::Class::field}{core::int*};
+  return #this.{self::Class::field};
 static method Extension|get#method(lowered final self::Class* #this) → () →* core::int*
   return () → core::int* => self::Extension|method(#this);
 static method Extension|testImplicitThis(lowered final self::Class* #this) → dynamic {
   self::expect(null, self::Extension|get#property(#this));
-  self::expect(42, let final core::int* #t1 = self::Extension|get#property(#this) in #t1 == null ?{core::int*} let final core::int* #t2 = 42 in let final void #t3 = self::Extension|set#property(#this, #t2) in #t2 : #t1);
-  self::expect(42, let final core::int* #t4 = self::Extension|get#property(#this) in #t4 == null ?{core::int*} let final core::int* #t5 = 87 in let final void #t6 = self::Extension|set#property(#this, #t5) in #t5 : #t4);
+  self::expect(42, let final core::int* #t1 = self::Extension|get#property(#this) in #t1.{core::num::==}(null) ?{core::int*} let final core::int* #t2 = 42 in let final void #t3 = self::Extension|set#property(#this, #t2) in #t2 : #t1);
+  self::expect(42, let final core::int* #t4 = self::Extension|get#property(#this) in #t4.{core::num::==}(null) ?{core::int*} let final core::int* #t5 = 87 in let final void #t6 = self::Extension|set#property(#this, #t5) in #t5 : #t4);
 }
 static method Extension|get#testImplicitThis(lowered final self::Class* #this) → () →* dynamic
   return () → dynamic => self::Extension|testImplicitThis(#this);
 static method main() → dynamic {
   self::Class* c;
-  self::expect(null, let final self::Class* #t7 = c in #t7 == null ?{core::int*} null : self::Extension|get#property(#t7));
-  self::expect(null, let final self::Class* #t8 = c in #t8 == null ?{() →* core::int*} null : self::Extension|get#method(#t8));
-  self::expect(null, let final self::Class* #t9 = c in #t9 == null ?{core::int*} null : self::Extension|method(#t9));
-  self::expect(null, let final self::Class* #t10 = c in #t10 == null ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11);
-  self::expect(null, let final self::Class* #t13 = c in #t13 == null ?{core::int*} null : let final core::int* #t14 = self::Extension|get#property(#t13) in #t14 == null ?{core::int*} let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13, #t15) in #t15 : #t14);
+  self::expect(null, let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t7));
+  self::expect(null, let final self::Class* #t8 = c in #t8.{self::Class::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t8));
+  self::expect(null, let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t9));
+  self::expect(null, let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11);
+  self::expect(null, let final self::Class* #t13 = c in #t13.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t14 = self::Extension|get#property(#t13) in #t14.{core::num::==}(null) ?{core::int*} let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13, #t15) in #t15 : #t14);
   c = new self::Class::•();
-  self::expect(null, let final self::Class* #t17 = c in #t17 == null ?{core::int*} null : self::Extension|get#property(#t17));
-  self::expect(null, let final self::Class* #t18 = c in #t18 == null ?{core::int*} null : self::Extension|method(#t18));
-  () →* core::int* tearOff = let final self::Class* #t19 = c in #t19 == null ?{() →* core::int*} null : self::Extension|get#method(#t19);
-  self::expect(null, tearOff(){() →* core::int*});
-  self::expect(42, let final self::Class* #t20 = c in #t20 == null ?{core::int*} null : let final core::int* #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20, #t21) in #t21);
-  self::expect(42, tearOff(){() →* core::int*});
-  self::expect(null, let final self::Class* #t23 = c in #t23 == null ?{Null} null : let final Null #t24 = null in let final void #t25 = self::Extension|set#property(#t23, #t24) in #t24);
-  self::expect(42, let final self::Class* #t26 = c in #t26 == null ?{core::int*} null : let final core::int* #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26, #t27) in #t27);
-  let final self::Class* #t29 = c in #t29 == null ?{Null} null : self::Extension|set#property(#t29, null);
-  self::expect(null, let final self::Class* #t30 = c in #t30 == null ?{core::int*} null : self::Extension|get#property(#t30));
-  self::expect(42, let final self::Class* #t31 = c in let final core::int* #t32 = self::Extension|get#property(#t31) in #t32 == null ?{core::int*} let final core::int* #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32);
-  self::expect(42, let final self::Class* #t35 = c in let final core::int* #t36 = self::Extension|get#property(#t35) in #t36 == null ?{core::int*} let final core::int* #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36);
-  self::expect(null, let final self::Class* #t39 = c in #t39 == null ?{Null} null : let final Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39, #t40) in #t40);
-  let final self::Class* #t42 = c in self::Extension|get#property(#t42) == null ?{core::int*} self::Extension|set#property(#t42, 42) : null;
-  self::expect(42, let final self::Class* #t43 = c in #t43 == null ?{core::int*} null : self::Extension|get#property(#t43));
-  let final self::Class* #t44 = c in self::Extension|get#property(#t44) == null ?{core::int*} self::Extension|set#property(#t44, 87) : null;
-  self::expect(42, let final self::Class* #t45 = c in #t45 == null ?{core::int*} null : self::Extension|get#property(#t45));
-  let final self::Class* #t46 = c in #t46 == null ?{Null} null : self::Extension|set#property(#t46, null);
-  self::expect(null, let final self::Class* #t47 = c in #t47 == null ?{core::int*} null : self::Extension|get#property(#t47));
-  self::expect(42, let final self::Class* #t48 = c in let final core::int* #t49 = self::Extension|get#property(#t48) in #t49 == null ?{core::int*} let final core::int* #t50 = 42 in let final void #t51 = self::Extension|set#property(#t48, #t50) in #t50 : #t49);
-  self::expect(42, let final self::Class* #t52 = c in let final core::int* #t53 = self::Extension|get#property(#t52) in #t53 == null ?{core::int*} let final core::int* #t54 = 87 in let final void #t55 = self::Extension|set#property(#t52, #t54) in #t54 : #t53);
-  let final self::Class* #t56 = c in #t56 == null ?{Null} null : self::Extension|set#property(#t56, null);
-  self::expect(null, let final self::Class* #t57 = c in #t57 == null ?{core::int*} null : self::Extension|get#property(#t57));
-  let final self::Class* #t58 = c in self::Extension|get#property(#t58) == null ?{core::int*} self::Extension|set#property(#t58, 42) : null;
-  self::expect(42, let final self::Class* #t59 = c in #t59 == null ?{core::int*} null : self::Extension|get#property(#t59));
-  let final self::Class* #t60 = c in self::Extension|get#property(#t60) == null ?{core::int*} self::Extension|set#property(#t60, 87) : null;
-  self::expect(42, let final self::Class* #t61 = c in #t61 == null ?{core::int*} null : self::Extension|get#property(#t61));
-  let final self::Class* #t62 = c in #t62 == null ?{Null} null : self::Extension|set#property(#t62, null);
+  self::expect(null, let final self::Class* #t17 = c in #t17.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t17));
+  self::expect(null, let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t18));
+  () →* core::int* tearOff = let final self::Class* #t19 = c in #t19.{self::Class::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t19);
+  self::expect(null, tearOff.call());
+  self::expect(42, let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20, #t21) in #t21);
+  self::expect(42, tearOff.call());
+  self::expect(null, let final self::Class* #t23 = c in #t23.{self::Class::==}(null) ?{Null} null : let final Null #t24 = null in let final void #t25 = self::Extension|set#property(#t23, #t24) in #t24);
+  self::expect(42, let final self::Class* #t26 = c in #t26.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26, #t27) in #t27);
+  let final self::Class* #t29 = c in #t29.{self::Class::==}(null) ?{Null} null : self::Extension|set#property(#t29, null);
+  self::expect(null, let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t30));
+  self::expect(42, let final self::Class* #t31 = c in let final core::int* #t32 = self::Extension|get#property(#t31) in #t32.{core::num::==}(null) ?{core::int*} let final core::int* #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32);
+  self::expect(42, let final self::Class* #t35 = c in let final core::int* #t36 = self::Extension|get#property(#t35) in #t36.{core::num::==}(null) ?{core::int*} let final core::int* #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36);
+  self::expect(null, let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{Null} null : let final Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39, #t40) in #t40);
+  let final self::Class* #t42 = c in self::Extension|get#property(#t42).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t42, 42) : null;
+  self::expect(42, let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t43));
+  let final self::Class* #t44 = c in self::Extension|get#property(#t44).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t44, 87) : null;
+  self::expect(42, let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t45));
+  let final self::Class* #t46 = c in #t46.{self::Class::==}(null) ?{Null} null : self::Extension|set#property(#t46, null);
+  self::expect(null, let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t47));
+  self::expect(42, let final self::Class* #t48 = c in let final core::int* #t49 = self::Extension|get#property(#t48) in #t49.{core::num::==}(null) ?{core::int*} let final core::int* #t50 = 42 in let final void #t51 = self::Extension|set#property(#t48, #t50) in #t50 : #t49);
+  self::expect(42, let final self::Class* #t52 = c in let final core::int* #t53 = self::Extension|get#property(#t52) in #t53.{core::num::==}(null) ?{core::int*} let final core::int* #t54 = 87 in let final void #t55 = self::Extension|set#property(#t52, #t54) in #t54 : #t53);
+  let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{Null} null : self::Extension|set#property(#t56, null);
+  self::expect(null, let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t57));
+  let final self::Class* #t58 = c in self::Extension|get#property(#t58).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t58, 42) : null;
+  self::expect(42, let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t59));
+  let final self::Class* #t60 = c in self::Extension|get#property(#t60).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t60, 87) : null;
+  self::expect(42, let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t61));
+  let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{Null} null : self::Extension|set#property(#t62, null);
   self::Extension|testImplicitThis(c);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/operators.dart.weak.expect b/pkg/front_end/testcases/extensions/operators.dart.weak.expect
index d97d9f4..271cbb1 100644
--- a/pkg/front_end/testcases/extensions/operators.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/operators.dart.weak.expect
@@ -20,23 +20,23 @@
     : self::Complex::real = real, self::Complex::imaginary = imaginary, super core::Object::•()
     ;
   method add(self::Complex* other) → self::Complex* {
-    return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::+}(other.{self::Complex::real}{core::double*}){(core::num*) →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::+}(other.{self::Complex::imaginary}{core::double*}){(core::num*) →* core::double*});
+    return new self::Complex::•(this.{self::Complex::real}.{core::double::+}(other.{self::Complex::real}), this.{self::Complex::imaginary}.{core::double::+}(other.{self::Complex::imaginary}));
   }
   method sub(self::Complex* other) → self::Complex* {
-    return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::-}(other.{self::Complex::real}{core::double*}){(core::num*) →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::-}(other.{self::Complex::imaginary}{core::double*}){(core::num*) →* core::double*});
+    return new self::Complex::•(this.{self::Complex::real}.{core::double::-}(other.{self::Complex::real}), this.{self::Complex::imaginary}.{core::double::-}(other.{self::Complex::imaginary}));
   }
   method negate() → self::Complex* {
-    return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::unary-}(){() →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::unary-}(){() →* core::double*});
+    return new self::Complex::•(this.{self::Complex::real}.{core::double::unary-}(), this.{self::Complex::imaginary}.{core::double::unary-}());
   }
   get hashCode() → core::int*
-    return this.{self::Complex::real}{core::double*}.{core::num::hashCode}{core::int*}.{core::num::*}(13){(core::num*) →* core::int*}.{core::num::+}(this.{self::Complex::imaginary}{core::double*}.{core::num::hashCode}{core::int*}.{core::num::*}(19){(core::num*) →* core::int*}){(core::num*) →* core::int*};
+    return this.{self::Complex::real}.{core::num::hashCode}.{core::num::*}(13).{core::num::+}(this.{self::Complex::imaginary}.{core::num::hashCode}.{core::num::*}(19));
   operator ==(core::Object* other) → core::bool* {
     if(core::identical(this, other))
       return true;
-    return other is self::Complex* && this.{self::Complex::real}{core::double*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Complex*}.{self::Complex::real}{core::double*} && this.{self::Complex::imaginary}{core::double*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Complex*}.{self::Complex::imaginary}{core::double*};
+    return other is self::Complex* && this.{self::Complex::real}.{core::num::==}(other{self::Complex*}.{self::Complex::real}) && this.{self::Complex::imaginary}.{core::num::==}(other{self::Complex*}.{self::Complex::imaginary});
   }
   method toString() → core::String*
-    return "Complex(${this.{self::Complex::real}{core::double*}},${this.{self::Complex::imaginary}{core::double*}})";
+    return "Complex(${this.{self::Complex::real}},${this.{self::Complex::imaginary}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -51,11 +51,11 @@
   operator unary- = self::Operators|unary-;
 }
 static method Operators|+(lowered final self::Complex* #this, self::Complex* other) → self::Complex*
-  return #this.{self::Complex::add}(other){(self::Complex*) →* self::Complex*};
+  return #this.{self::Complex::add}(other);
 static method Operators|-(lowered final self::Complex* #this, self::Complex* other) → self::Complex*
-  return #this.{self::Complex::sub}(other){(self::Complex*) →* self::Complex*};
+  return #this.{self::Complex::sub}(other);
 static method Operators|unary-(lowered final self::Complex* #this) → self::Complex*
-  return #this.{self::Complex::negate}(){() →* self::Complex*};
+  return #this.{self::Complex::negate}();
 static method main() → dynamic {
   self::implicit();
   self::explicit();
@@ -135,13 +135,13 @@
 static method errors(self::Complex* c) → void {
   invalid-expression "pkg/front_end/testcases/extensions/operators.dart:125:3: Error: Explicit extension application cannot be used as an expression.
   Operators(c) == c;
-  ^^^^^^^^^" =={core::Object::==}{(core::Object*) →* core::bool*} c;
-  !(invalid-expression "pkg/front_end/testcases/extensions/operators.dart:126:3: Error: Explicit extension application cannot be used as an expression.
+  ^^^^^^^^^".{core::Object::==}(c);
+  !invalid-expression "pkg/front_end/testcases/extensions/operators.dart:126:3: Error: Explicit extension application cannot be used as an expression.
   Operators(c) != c;
-  ^^^^^^^^^" =={core::Object::==}{(core::Object*) →* core::bool*} c);
+  ^^^^^^^^^".{core::Object::==}(c);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/operators.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/operators.dart.weak.transformed.expect
index d97d9f4..271cbb1 100644
--- a/pkg/front_end/testcases/extensions/operators.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/operators.dart.weak.transformed.expect
@@ -20,23 +20,23 @@
     : self::Complex::real = real, self::Complex::imaginary = imaginary, super core::Object::•()
     ;
   method add(self::Complex* other) → self::Complex* {
-    return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::+}(other.{self::Complex::real}{core::double*}){(core::num*) →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::+}(other.{self::Complex::imaginary}{core::double*}){(core::num*) →* core::double*});
+    return new self::Complex::•(this.{self::Complex::real}.{core::double::+}(other.{self::Complex::real}), this.{self::Complex::imaginary}.{core::double::+}(other.{self::Complex::imaginary}));
   }
   method sub(self::Complex* other) → self::Complex* {
-    return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::-}(other.{self::Complex::real}{core::double*}){(core::num*) →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::-}(other.{self::Complex::imaginary}{core::double*}){(core::num*) →* core::double*});
+    return new self::Complex::•(this.{self::Complex::real}.{core::double::-}(other.{self::Complex::real}), this.{self::Complex::imaginary}.{core::double::-}(other.{self::Complex::imaginary}));
   }
   method negate() → self::Complex* {
-    return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::unary-}(){() →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::unary-}(){() →* core::double*});
+    return new self::Complex::•(this.{self::Complex::real}.{core::double::unary-}(), this.{self::Complex::imaginary}.{core::double::unary-}());
   }
   get hashCode() → core::int*
-    return this.{self::Complex::real}{core::double*}.{core::num::hashCode}{core::int*}.{core::num::*}(13){(core::num*) →* core::int*}.{core::num::+}(this.{self::Complex::imaginary}{core::double*}.{core::num::hashCode}{core::int*}.{core::num::*}(19){(core::num*) →* core::int*}){(core::num*) →* core::int*};
+    return this.{self::Complex::real}.{core::num::hashCode}.{core::num::*}(13).{core::num::+}(this.{self::Complex::imaginary}.{core::num::hashCode}.{core::num::*}(19));
   operator ==(core::Object* other) → core::bool* {
     if(core::identical(this, other))
       return true;
-    return other is self::Complex* && this.{self::Complex::real}{core::double*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Complex*}.{self::Complex::real}{core::double*} && this.{self::Complex::imaginary}{core::double*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Complex*}.{self::Complex::imaginary}{core::double*};
+    return other is self::Complex* && this.{self::Complex::real}.{core::num::==}(other{self::Complex*}.{self::Complex::real}) && this.{self::Complex::imaginary}.{core::num::==}(other{self::Complex*}.{self::Complex::imaginary});
   }
   method toString() → core::String*
-    return "Complex(${this.{self::Complex::real}{core::double*}},${this.{self::Complex::imaginary}{core::double*}})";
+    return "Complex(${this.{self::Complex::real}},${this.{self::Complex::imaginary}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -51,11 +51,11 @@
   operator unary- = self::Operators|unary-;
 }
 static method Operators|+(lowered final self::Complex* #this, self::Complex* other) → self::Complex*
-  return #this.{self::Complex::add}(other){(self::Complex*) →* self::Complex*};
+  return #this.{self::Complex::add}(other);
 static method Operators|-(lowered final self::Complex* #this, self::Complex* other) → self::Complex*
-  return #this.{self::Complex::sub}(other){(self::Complex*) →* self::Complex*};
+  return #this.{self::Complex::sub}(other);
 static method Operators|unary-(lowered final self::Complex* #this) → self::Complex*
-  return #this.{self::Complex::negate}(){() →* self::Complex*};
+  return #this.{self::Complex::negate}();
 static method main() → dynamic {
   self::implicit();
   self::explicit();
@@ -135,13 +135,13 @@
 static method errors(self::Complex* c) → void {
   invalid-expression "pkg/front_end/testcases/extensions/operators.dart:125:3: Error: Explicit extension application cannot be used as an expression.
   Operators(c) == c;
-  ^^^^^^^^^" =={core::Object::==}{(core::Object*) →* core::bool*} c;
-  !(invalid-expression "pkg/front_end/testcases/extensions/operators.dart:126:3: Error: Explicit extension application cannot be used as an expression.
+  ^^^^^^^^^".{core::Object::==}(c);
+  !invalid-expression "pkg/front_end/testcases/extensions/operators.dart:126:3: Error: Explicit extension application cannot be used as an expression.
   Operators(c) != c;
-  ^^^^^^^^^" =={core::Object::==}{(core::Object*) →* core::bool*} c);
+  ^^^^^^^^^".{core::Object::==}(c);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/other_kinds.dart.weak.expect b/pkg/front_end/testcases/extensions/other_kinds.dart.weak.expect
index 5a567f7..c83a5d1 100644
--- a/pkg/front_end/testcases/extensions/other_kinds.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/other_kinds.dart.weak.expect
@@ -9,7 +9,7 @@
     : super core::Object::•()
     ;
   method getInstanceField() → core::int*
-    return this.{self::A1::_instanceField}{core::int*};
+    return this.{self::A1::_instanceField};
   method setInstanceField(core::int* value) → void {
     this.{self::A1::_instanceField} = value;
   }
@@ -41,18 +41,18 @@
 }
 static field core::int* A2|staticField = self::A1::getStaticField();
 static method A2|get#instanceProperty(lowered final self::A1* #this) → core::int*
-  return #this.{self::A1::getInstanceField}(){() →* core::int*};
+  return #this.{self::A1::getInstanceField}();
 static method A2|set#instanceProperty(lowered final self::A1* #this, core::int* value) → void {
-  #this.{self::A1::setInstanceField}(value){(core::int*) →* void};
+  #this.{self::A1::setInstanceField}(value);
 }
 static method A2|+(lowered final self::A1* #this, core::int* value) → core::int* {
-  return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::num::+}(value){(core::num*) →* core::int*};
+  return #this.{self::A1::getInstanceField}().{core::num::+}(value);
 }
 static method A2|-(lowered final self::A1* #this, core::int* value) → core::int* {
-  return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::num::-}(value){(core::num*) →* core::int*};
+  return #this.{self::A1::getInstanceField}().{core::num::-}(value);
 }
 static method A2|unary-(lowered final self::A1* #this) → core::int* {
-  return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::int::unary-}(){() →* core::int*};
+  return #this.{self::A1::getInstanceField}().{core::int::unary-}();
 }
 static get A2|staticProperty() → core::int*
   return self::A1::getStaticField();
diff --git a/pkg/front_end/testcases/extensions/other_kinds.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/other_kinds.dart.weak.transformed.expect
index 5a567f7..c83a5d1 100644
--- a/pkg/front_end/testcases/extensions/other_kinds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/other_kinds.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     : super core::Object::•()
     ;
   method getInstanceField() → core::int*
-    return this.{self::A1::_instanceField}{core::int*};
+    return this.{self::A1::_instanceField};
   method setInstanceField(core::int* value) → void {
     this.{self::A1::_instanceField} = value;
   }
@@ -41,18 +41,18 @@
 }
 static field core::int* A2|staticField = self::A1::getStaticField();
 static method A2|get#instanceProperty(lowered final self::A1* #this) → core::int*
-  return #this.{self::A1::getInstanceField}(){() →* core::int*};
+  return #this.{self::A1::getInstanceField}();
 static method A2|set#instanceProperty(lowered final self::A1* #this, core::int* value) → void {
-  #this.{self::A1::setInstanceField}(value){(core::int*) →* void};
+  #this.{self::A1::setInstanceField}(value);
 }
 static method A2|+(lowered final self::A1* #this, core::int* value) → core::int* {
-  return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::num::+}(value){(core::num*) →* core::int*};
+  return #this.{self::A1::getInstanceField}().{core::num::+}(value);
 }
 static method A2|-(lowered final self::A1* #this, core::int* value) → core::int* {
-  return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::num::-}(value){(core::num*) →* core::int*};
+  return #this.{self::A1::getInstanceField}().{core::num::-}(value);
 }
 static method A2|unary-(lowered final self::A1* #this) → core::int* {
-  return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::int::unary-}(){() →* core::int*};
+  return #this.{self::A1::getInstanceField}().{core::int::unary-}();
 }
 static get A2|staticProperty() → core::int*
   return self::A1::getStaticField();
diff --git a/pkg/front_end/testcases/extensions/private_members.dart.weak.expect b/pkg/front_end/testcases/extensions/private_members.dart.weak.expect
index 4a003d0..344b0e7 100644
--- a/pkg/front_end/testcases/extensions/private_members.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/private_members.dart.weak.expect
@@ -85,19 +85,19 @@
                  ^^^^^^^^^^^^^^^");
   pri::expect(42, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:23:14: Error: Method not found: '_PrivateExtension'.
   expect(42, _PrivateExtension(\"\").publicMethod1());
-             ^^^^^^^^^^^^^^^^^"{dynamic}.publicMethod1());
+             ^^^^^^^^^^^^^^^^^".publicMethod1());
   pri::expect(87, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:24:14: Error: Method not found: '_PrivateExtension'.
   expect(87, _PrivateExtension(\"\")._privateMethod1());
-             ^^^^^^^^^^^^^^^^^"{dynamic}._privateMethod1());
+             ^^^^^^^^^^^^^^^^^"._privateMethod1());
   pri::expect(237, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:25:35: Error: Method not found: '_privateMethod2'.
   expect(237, PublicExtension(\"\")._privateMethod2());
                                   ^^^^^^^^^^^^^^^");
   pri::expect(24, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:27:14: Error: Getter not found: '_PrivateExtension'.
   expect(24, _PrivateExtension.publicStaticMethod1());
-             ^^^^^^^^^^^^^^^^^"{dynamic}.publicStaticMethod1());
+             ^^^^^^^^^^^^^^^^^".publicStaticMethod1());
   pri::expect(78, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:28:14: Error: Getter not found: '_PrivateExtension'.
   expect(78, _PrivateExtension._privateStaticMethod1());
-             ^^^^^^^^^^^^^^^^^"{dynamic}._privateStaticMethod1());
+             ^^^^^^^^^^^^^^^^^"._privateStaticMethod1());
   pri::expect(732, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:29:31: Error: Method not found: 'PublicExtension._privateStaticMethod2'.
   expect(732, PublicExtension._privateStaticMethod2());
                               ^^^^^^^^^^^^^^^^^^^^^");
@@ -217,7 +217,7 @@
   pri::_extension#0|test3("");
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/private_members.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/private_members.dart.weak.transformed.expect
index 4a003d0..344b0e7 100644
--- a/pkg/front_end/testcases/extensions/private_members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/private_members.dart.weak.transformed.expect
@@ -85,19 +85,19 @@
                  ^^^^^^^^^^^^^^^");
   pri::expect(42, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:23:14: Error: Method not found: '_PrivateExtension'.
   expect(42, _PrivateExtension(\"\").publicMethod1());
-             ^^^^^^^^^^^^^^^^^"{dynamic}.publicMethod1());
+             ^^^^^^^^^^^^^^^^^".publicMethod1());
   pri::expect(87, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:24:14: Error: Method not found: '_PrivateExtension'.
   expect(87, _PrivateExtension(\"\")._privateMethod1());
-             ^^^^^^^^^^^^^^^^^"{dynamic}._privateMethod1());
+             ^^^^^^^^^^^^^^^^^"._privateMethod1());
   pri::expect(237, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:25:35: Error: Method not found: '_privateMethod2'.
   expect(237, PublicExtension(\"\")._privateMethod2());
                                   ^^^^^^^^^^^^^^^");
   pri::expect(24, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:27:14: Error: Getter not found: '_PrivateExtension'.
   expect(24, _PrivateExtension.publicStaticMethod1());
-             ^^^^^^^^^^^^^^^^^"{dynamic}.publicStaticMethod1());
+             ^^^^^^^^^^^^^^^^^".publicStaticMethod1());
   pri::expect(78, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:28:14: Error: Getter not found: '_PrivateExtension'.
   expect(78, _PrivateExtension._privateStaticMethod1());
-             ^^^^^^^^^^^^^^^^^"{dynamic}._privateStaticMethod1());
+             ^^^^^^^^^^^^^^^^^"._privateStaticMethod1());
   pri::expect(732, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:29:31: Error: Method not found: 'PublicExtension._privateStaticMethod2'.
   expect(732, PublicExtension._privateStaticMethod2());
                               ^^^^^^^^^^^^^^^^^^^^^");
@@ -217,7 +217,7 @@
   pri::_extension#0|test3("");
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/type_variable_bound.dart.weak.expect b/pkg/front_end/testcases/extensions/type_variable_bound.dart.weak.expect
index 20bfb57..5b11e7e 100644
--- a/pkg/front_end/testcases/extensions/type_variable_bound.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/type_variable_bound.dart.weak.expect
@@ -45,7 +45,7 @@
   return new self::Class::•();
 }
 static method test2<T extends self::Class*>(self::test2::T* t2) → dynamic {
-  if(self::test2::T* =={core::Type::==}{(core::Object*) →* core::bool*} (#C1)) {
+  if(self::test2::T*.{core::Type::==}(#C1)) {
     self::SubClass* subClass = self::BoundExtension|method2<self::Class*>(t2) as{TypeError} self::SubClass*;
   }
 }
diff --git a/pkg/front_end/testcases/extensions/type_variable_bound.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/type_variable_bound.dart.weak.transformed.expect
index 20bfb57..5b11e7e 100644
--- a/pkg/front_end/testcases/extensions/type_variable_bound.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/type_variable_bound.dart.weak.transformed.expect
@@ -45,7 +45,7 @@
   return new self::Class::•();
 }
 static method test2<T extends self::Class*>(self::test2::T* t2) → dynamic {
-  if(self::test2::T* =={core::Type::==}{(core::Object*) →* core::bool*} (#C1)) {
+  if(self::test2::T*.{core::Type::==}(#C1)) {
     self::SubClass* subClass = self::BoundExtension|method2<self::Class*>(t2) as{TypeError} self::SubClass*;
   }
 }
diff --git a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.expect b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.expect
index 6532400..932e48a 100644
--- a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.expect
@@ -8,7 +8,7 @@
     : self::Class1::field = field, super core::Object::•()
     ;
   method toString() → core::String*
-    return "Class1(${this.{self::Class1::field}{core::int*}})";
+    return "Class1(${this.{self::Class1::field}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -25,7 +25,7 @@
     : self::Class2::field = field, super core::Object::•()
     ;
   method toString() → core::String*
-    return "Class2(${this.{self::Class2::field}{core::int*}})";
+    return "Class2(${this.{self::Class2::field}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -54,44 +54,44 @@
 }
 static method _extension#0|method(lowered final self::Class1* #this) → core::int* {
   core::print("Extension1.method on ${#this}");
-  return #this.{self::Class1::field}{core::int*};
+  return #this.{self::Class1::field};
 }
 static method _extension#0|get#method(lowered final self::Class1* #this) → () →* core::int*
   return () → core::int* => self::_extension#0|method(#this);
 static method _extension#0|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::_extension#0|genericMethod::T* t) → core::int* {
   core::print("Extension1.genericMethod<${self::_extension#0|genericMethod::T*}>(${t}) on ${#this}");
-  return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class1::field}.{core::num::+}(t) as{TypeError} core::int*;
 }
 static method _extension#0|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::_extension#0|genericMethod<T*>(#this, t);
 static method _extension#0|get#property(lowered final self::Class1* #this) → core::int* {
   core::print("Extension1.property get on ${#this}");
-  return #this.{self::Class1::field}{core::int*};
+  return #this.{self::Class1::field};
 }
 static method _extension#0|set#property(lowered final self::Class1* #this, core::int* value) → void {
   #this.{self::Class1::field} = value;
   core::print("Extension1.property set(${value}) on ${#this}");
-  value = value.{core::num::+}(1){(core::num*) →* core::int*};
+  value = value.{core::num::+}(1);
 }
 static method _extension#1|method(lowered final self::Class2* #this) → core::int* {
   core::print("Extension2.method on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*};
+  return #this.{self::Class2::field}.{core::num::+}(3);
 }
 static method _extension#1|get#method(lowered final self::Class2* #this) → () →* core::int*
   return () → core::int* => self::_extension#1|method(#this);
 static method _extension#1|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::_extension#1|genericMethod::T* t) → core::int* {
   core::print("Extension2.genericMethod<${self::_extension#1|genericMethod::T*}>(${t}) on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(4){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class2::field}.{core::num::+}(t).{core::num::+}(4) as{TypeError} core::int*;
 }
 static method _extension#1|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::_extension#1|genericMethod<T*>(#this, t);
 static method _extension#1|get#property(lowered final self::Class2* #this) → core::int* {
   core::print("Extension2.property get on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(5){(core::num*) →* core::int*};
+  return #this.{self::Class2::field}.{core::num::+}(5);
 }
 static method _extension#1|set#property(lowered final self::Class2* #this, core::int* value) → void {
   core::print("Extension2.property set(${value}) on ${#this}");
-  value = value.{core::num::+}(1){(core::num*) →* core::int*};
+  value = value.{core::num::+}(1);
   #this.{self::Class2::field} = value;
 }
 static method main() → dynamic {
@@ -103,13 +103,13 @@
   self::Class1* c1 = new self::Class1::•(1);
   self::expect(0, self::_extension#0|method(c0));
   self::expect(1, self::_extension#0|method(c1));
-  self::expect(1, let final self::Class1* #t1 = c1 in #t1 == null ?{core::int*} null : self::_extension#0|method(#t1));
+  self::expect(1, let final self::Class1* #t1 = c1 in #t1.{self::Class1::==}(null) ?{core::int*} null : self::_extension#0|method(#t1));
   self::expect(42, self::_extension#0|genericMethod<core::int*>(c0, 42));
   self::expect(43, self::_extension#0|genericMethod<core::num*>(c0, 43));
   self::expect(88, self::_extension#0|genericMethod<core::int*>(c1, 87));
   self::expect(89, self::_extension#0|genericMethod<core::num*>(c1, 88));
   self::expect(0, self::_extension#0|get#property(c0));
-  self::expect(0, let final self::Class1* #t2 = c0 in #t2 == null ?{core::int*} null : self::_extension#0|get#property(#t2));
+  self::expect(0, let final self::Class1* #t2 = c0 in #t2.{self::Class1::==}(null) ?{core::int*} null : self::_extension#0|get#property(#t2));
   self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::_extension#0|set#property(c0, #t3) in #t3);
   self::expect(1, self::_extension#0|get#property(c1));
   self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::_extension#0|set#property(c0, #t5) in #t5);
@@ -122,14 +122,14 @@
   self::Class2* c0 = new self::Class2::•(0);
   self::Class2* c1 = new self::Class2::•(1);
   self::expect(3, self::_extension#1|method(c0));
-  self::expect(3, let final self::Class2* #t27 = c0 in #t27 == null ?{core::int*} null : self::_extension#1|method(#t27));
+  self::expect(3, let final self::Class2* #t27 = c0 in #t27.{self::Class2::==}(null) ?{core::int*} null : self::_extension#1|method(#t27));
   self::expect(4, self::_extension#1|method(c1));
   self::expect(46, self::_extension#1|genericMethod<core::int*>(c0, 42));
   self::expect(47, self::_extension#1|genericMethod<core::num*>(c0, 43));
   self::expect(92, self::_extension#1|genericMethod<core::int*>(c1, 87));
   self::expect(93, self::_extension#1|genericMethod<core::num*>(c1, 88));
   self::expect(5, self::_extension#1|get#property(c0));
-  self::expect(5, let final self::Class2* #t28 = c0 in #t28 == null ?{core::int*} null : self::_extension#1|get#property(#t28));
+  self::expect(5, let final self::Class2* #t28 = c0 in #t28.{self::Class2::==}(null) ?{core::int*} null : self::_extension#1|get#property(#t28));
   self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::_extension#1|set#property(c0, #t29) in #t29);
   self::expect(48, self::_extension#1|get#property(c0));
   self::expect(6, self::_extension#1|get#property(c1));
@@ -141,7 +141,7 @@
   self::expect(67, let final core::int* #t41 = let final core::int* #t42 = self::_extension#1|get#property(c0) in let final void #t43 = self::_extension#1|set#property(c1, #t42) in #t42 in let final void #t44 = self::_extension#1|set#property(c0, #t41) in #t41);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.transformed.expect
index f3b4c97..bfc173d 100644
--- a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
     : self::Class1::field = field, super core::Object::•()
     ;
   method toString() → core::String*
-    return "Class1(${this.{self::Class1::field}{core::int*}})";
+    return "Class1(${this.{self::Class1::field}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -25,7 +25,7 @@
     : self::Class2::field = field, super core::Object::•()
     ;
   method toString() → core::String*
-    return "Class2(${this.{self::Class2::field}{core::int*}})";
+    return "Class2(${this.{self::Class2::field}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -54,44 +54,44 @@
 }
 static method _extension#0|method(lowered final self::Class1* #this) → core::int* {
   core::print("Extension1.method on ${#this}");
-  return #this.{self::Class1::field}{core::int*};
+  return #this.{self::Class1::field};
 }
 static method _extension#0|get#method(lowered final self::Class1* #this) → () →* core::int*
   return () → core::int* => self::_extension#0|method(#this);
 static method _extension#0|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::_extension#0|genericMethod::T* t) → core::int* {
   core::print("Extension1.genericMethod<${self::_extension#0|genericMethod::T*}>(${t}) on ${#this}");
-  return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class1::field}.{core::num::+}(t) as{TypeError} core::int*;
 }
 static method _extension#0|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::_extension#0|genericMethod<T*>(#this, t);
 static method _extension#0|get#property(lowered final self::Class1* #this) → core::int* {
   core::print("Extension1.property get on ${#this}");
-  return #this.{self::Class1::field}{core::int*};
+  return #this.{self::Class1::field};
 }
 static method _extension#0|set#property(lowered final self::Class1* #this, core::int* value) → void {
   #this.{self::Class1::field} = value;
   core::print("Extension1.property set(${value}) on ${#this}");
-  value = value.{core::num::+}(1){(core::num*) →* core::int*};
+  value = value.{core::num::+}(1);
 }
 static method _extension#1|method(lowered final self::Class2* #this) → core::int* {
   core::print("Extension2.method on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*};
+  return #this.{self::Class2::field}.{core::num::+}(3);
 }
 static method _extension#1|get#method(lowered final self::Class2* #this) → () →* core::int*
   return () → core::int* => self::_extension#1|method(#this);
 static method _extension#1|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::_extension#1|genericMethod::T* t) → core::int* {
   core::print("Extension2.genericMethod<${self::_extension#1|genericMethod::T*}>(${t}) on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(4){(core::num*) →* core::num*} as{TypeError} core::int*;
+  return #this.{self::Class2::field}.{core::num::+}(t).{core::num::+}(4) as{TypeError} core::int*;
 }
 static method _extension#1|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
   return <T extends core::num*>(T* t) → core::int* => self::_extension#1|genericMethod<T*>(#this, t);
 static method _extension#1|get#property(lowered final self::Class2* #this) → core::int* {
   core::print("Extension2.property get on ${#this}");
-  return #this.{self::Class2::field}{core::int*}.{core::num::+}(5){(core::num*) →* core::int*};
+  return #this.{self::Class2::field}.{core::num::+}(5);
 }
 static method _extension#1|set#property(lowered final self::Class2* #this, core::int* value) → void {
   core::print("Extension2.property set(${value}) on ${#this}");
-  value = value.{core::num::+}(1){(core::num*) →* core::int*};
+  value = value.{core::num::+}(1);
   #this.{self::Class2::field} = value;
 }
 static method main() → dynamic {
@@ -103,13 +103,13 @@
   self::Class1* c1 = new self::Class1::•(1);
   self::expect(0, self::_extension#0|method(c0));
   self::expect(1, self::_extension#0|method(c1));
-  self::expect(1, let final self::Class1* #t1 = c1 in #t1 == null ?{core::int*} null : self::_extension#0|method(#t1));
+  self::expect(1, let final self::Class1* #t1 = c1 in #t1.{self::Class1::==}(null) ?{core::int*} null : self::_extension#0|method(#t1));
   self::expect(42, self::_extension#0|genericMethod<core::int*>(c0, 42));
   self::expect(43, self::_extension#0|genericMethod<core::num*>(c0, 43));
   self::expect(88, self::_extension#0|genericMethod<core::int*>(c1, 87));
   self::expect(89, self::_extension#0|genericMethod<core::num*>(c1, 88));
   self::expect(0, self::_extension#0|get#property(c0));
-  self::expect(0, let final self::Class1* #t2 = c0 in #t2 == null ?{core::int*} null : self::_extension#0|get#property(#t2));
+  self::expect(0, let final self::Class1* #t2 = c0 in #t2.{self::Class1::==}(null) ?{core::int*} null : self::_extension#0|get#property(#t2));
   self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::_extension#0|set#property(c0, #t3) in #t3);
   self::expect(1, self::_extension#0|get#property(c1));
   self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::_extension#0|set#property(c0, #t5) in #t5);
@@ -122,14 +122,14 @@
   self::Class2* c0 = new self::Class2::•(0);
   self::Class2* c1 = new self::Class2::•(1);
   self::expect(3, self::_extension#1|method(c0));
-  self::expect(3, let final self::Class2* #t27 = c0 in #t27 == null ?{core::int*} null : self::_extension#1|method(#t27));
+  self::expect(3, let final self::Class2* #t27 = c0 in #t27.{self::Class2::==}(null) ?{core::int*} null : self::_extension#1|method(#t27));
   self::expect(4, self::_extension#1|method(c1));
   self::expect(46, self::_extension#1|genericMethod<core::int*>(c0, 42));
   self::expect(47, self::_extension#1|genericMethod<core::num*>(c0, 43));
   self::expect(92, self::_extension#1|genericMethod<core::int*>(c1, 87));
   self::expect(93, self::_extension#1|genericMethod<core::num*>(c1, 88));
   self::expect(5, self::_extension#1|get#property(c0));
-  self::expect(5, let final self::Class2* #t28 = c0 in #t28 == null ?{core::int*} null : self::_extension#1|get#property(#t28));
+  self::expect(5, let final self::Class2* #t28 = c0 in #t28.{self::Class2::==}(null) ?{core::int*} null : self::_extension#1|get#property(#t28));
   self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::_extension#1|set#property(c0, #t29) in #t29);
   self::expect(48, self::_extension#1|get#property(c0));
   self::expect(6, self::_extension#1|get#property(c1));
@@ -141,7 +141,7 @@
   self::expect(67, let final core::int* #t41 = let final core::int* #t42 = self::_extension#1|get#property(c0) in let final void #t43 = self::_extension#1|set#property(c1, #t42) in #t42 in let final void #t44 = self::_extension#1|set#property(c0, #t41) in #t41);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/general/DeltaBlue.dart.weak.expect b/pkg/front_end/testcases/general/DeltaBlue.dart.weak.expect
index 5754a1b..9e26317 100644
--- a/pkg/front_end/testcases/general/DeltaBlue.dart.weak.expect
+++ b/pkg/front_end/testcases/general/DeltaBlue.dart.weak.expect
@@ -28,12 +28,12 @@
     : self::Strength::value = value, self::Strength::name = name, super core::Object::•()
     ;
   method nextWeaker() → self::Strength*
-    return (#C19).{core::List::[]}(this.{self::Strength::value}{core::int*}){(core::int*) →* self::Strength*};
+    return (#C19).{core::List::[]}(this.{self::Strength::value});
   static method stronger(self::Strength* s1, self::Strength* s2) → core::bool* {
-    return s1.{self::Strength::value}{core::int*}.{core::num::<}(s2.{self::Strength::value}{core::int*}){(core::num*) →* core::bool*};
+    return s1.{self::Strength::value}.{core::num::<}(s2.{self::Strength::value});
   }
   static method weaker(self::Strength* s1, self::Strength* s2) → core::bool* {
-    return s1.{self::Strength::value}{core::int*}.{core::num::>}(s2.{self::Strength::value}{core::int*}){(core::num*) →* core::bool*};
+    return s1.{self::Strength::value}.{core::num::>}(s2.{self::Strength::value});
   }
   static method weakest(self::Strength* s1, self::Strength* s2) → self::Strength* {
     return self::Strength::weaker(s1, s2) ?{self::Strength*} s1 : s2;
@@ -68,32 +68,32 @@
   abstract method execute() → void;
   abstract method recalculate() → void;
   method addConstraint() → void {
-    this.{self::Constraint::addToGraph}(){() →* void};
-    self::planner.{self::Planner::incrementalAdd}(this){(self::Constraint*) →* void};
+    this.{self::Constraint::addToGraph}();
+    self::planner.{self::Planner::incrementalAdd}(this);
   }
   method satisfy(dynamic mark) → self::Constraint* {
-    this.{self::Constraint::chooseMethod}(mark as{TypeError,ForDynamic} core::int*){(core::int*) →* void};
-    if(!this.{self::Constraint::isSatisfied}(){() →* core::bool*}) {
-      if(this.{self::Constraint::strength}{self::Strength*} =={self::Strength::==}{(dynamic) →* core::bool*} (#C22)) {
+    this.{self::Constraint::chooseMethod}(mark as{TypeError,ForDynamic} core::int*);
+    if(!this.{self::Constraint::isSatisfied}()) {
+      if(this.{self::Constraint::strength}.{self::Strength::==}(#C22)) {
         core::print("Could not satisfy a required constraint!");
       }
       return null;
     }
-    this.{self::Constraint::markInputs}(mark as{TypeError,ForDynamic} core::int*){(core::int*) →* void};
-    self::Variable* out = this.{self::Constraint::output}(){() →* self::Variable*};
-    self::Constraint* overridden = out.{self::Variable::determinedBy}{self::Constraint*};
-    if(!(overridden == null))
-      overridden.{self::Constraint::markUnsatisfied}(){() →* void};
+    this.{self::Constraint::markInputs}(mark as{TypeError,ForDynamic} core::int*);
+    self::Variable* out = this.{self::Constraint::output}();
+    self::Constraint* overridden = out.{self::Variable::determinedBy};
+    if(!overridden.{self::Constraint::==}(null))
+      overridden.{self::Constraint::markUnsatisfied}();
     out.{self::Variable::determinedBy} = this;
-    if(!self::planner.{self::Planner::addPropagate}(this, mark as{TypeError,ForDynamic} core::int*){(self::Constraint*, core::int*) →* core::bool*})
+    if(!self::planner.{self::Planner::addPropagate}(this, mark as{TypeError,ForDynamic} core::int*))
       core::print("Cycle encountered");
     out.{self::Variable::mark} = mark as{TypeError,ForDynamic} core::int*;
     return overridden;
   }
   method destroyConstraint() → void {
-    if(this.{self::Constraint::isSatisfied}(){() →* core::bool*})
-      self::planner.{self::Planner::incrementalRemove}(this){(self::Constraint*) →* void};
-    this.{self::Constraint::removeFromGraph}(){() →* void};
+    if(this.{self::Constraint::isSatisfied}())
+      self::planner.{self::Planner::incrementalRemove}(this);
+    this.{self::Constraint::removeFromGraph}();
   }
   method isInput() → core::bool*
     return false;
@@ -113,25 +113,25 @@
   field core::bool* satisfied = false;
   constructor •(self::Variable* myOutput, self::Strength* strength) → self::UnaryConstraint*
     : self::UnaryConstraint::myOutput = myOutput, super self::Constraint::•(strength) {
-    this.{self::Constraint::addConstraint}(){() →* void};
+    this.{self::Constraint::addConstraint}();
   }
   method addToGraph() → void {
-    this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::addConstraint}(this){(self::Constraint*) →* void};
+    this.{self::UnaryConstraint::myOutput}.{self::Variable::addConstraint}(this);
     this.{self::UnaryConstraint::satisfied} = false;
   }
   method chooseMethod(core::int* mark) → void {
-    this.{self::UnaryConstraint::satisfied} = !(this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) && self::Strength::stronger(this.{self::Constraint::strength}{self::Strength*}, this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*});
+    this.{self::UnaryConstraint::satisfied} = !this.{self::UnaryConstraint::myOutput}.{self::Variable::mark}.{core::num::==}(mark) && self::Strength::stronger(this.{self::Constraint::strength}, this.{self::UnaryConstraint::myOutput}.{self::Variable::walkStrength});
   }
   method isSatisfied() → core::bool*
-    return this.{self::UnaryConstraint::satisfied}{core::bool*};
+    return this.{self::UnaryConstraint::satisfied};
   method markInputs(core::int* mark) → void {}
   method output() → self::Variable*
-    return this.{self::UnaryConstraint::myOutput}{self::Variable*};
+    return this.{self::UnaryConstraint::myOutput};
   method recalculate() → void {
-    this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::walkStrength} = this.{self::Constraint::strength}{self::Strength*};
-    this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::stay} = !this.{self::Constraint::isInput}(){() →* core::bool*};
-    if(this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::stay}{core::bool*})
-      this.{self::Constraint::execute}(){() →* void};
+    this.{self::UnaryConstraint::myOutput}.{self::Variable::walkStrength} = this.{self::Constraint::strength};
+    this.{self::UnaryConstraint::myOutput}.{self::Variable::stay} = !this.{self::Constraint::isInput}();
+    if(this.{self::UnaryConstraint::myOutput}.{self::Variable::stay})
+      this.{self::Constraint::execute}();
   }
   method markUnsatisfied() → void {
     this.{self::UnaryConstraint::satisfied} = false;
@@ -139,8 +139,8 @@
   method inputsKnown(core::int* mark) → core::bool*
     return true;
   method removeFromGraph() → void {
-    if(!(this.{self::UnaryConstraint::myOutput}{self::Variable*} == null))
-      this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::removeConstraint}(this){(self::Constraint*) →* void};
+    if(!this.{self::UnaryConstraint::myOutput}.{self::Variable::==}(null))
+      this.{self::UnaryConstraint::myOutput}.{self::Variable::removeConstraint}(this);
     this.{self::UnaryConstraint::satisfied} = false;
   }
 }
@@ -164,56 +164,56 @@
   field core::int* direction = #C1;
   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}(){() →* void};
+    this.{self::Constraint::addConstraint}();
   }
   method chooseMethod(core::int* mark) → void {
-    if(this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) {
-      this.{self::BinaryConstraint::direction} = !(this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) && self::Strength::stronger(this.{self::Constraint::strength}{self::Strength*}, this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*}) ?{core::int*} #C4 : #C1;
+    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;
     }
-    if(this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) {
-      this.{self::BinaryConstraint::direction} = !(this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) && self::Strength::stronger(this.{self::Constraint::strength}{self::Strength*}, this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*}) ?{core::int*} #C20 : #C1;
+    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;
     }
-    if(self::Strength::weaker(this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*}, this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*})) {
-      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}{self::Strength*}, this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*}) ?{core::int*} #C20 : #C1;
+    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;
     }
     else {
-      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}{self::Strength*}, this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*}) ?{core::int*} #C4 : #C20;
+      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v2}.{self::Variable::walkStrength}) ?{core::int*} #C4 : #C20;
     }
   }
   method addToGraph() → void {
-    this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::addConstraint}(this){(self::Constraint*) →* void};
-    this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::addConstraint}(this){(self::Constraint*) →* void};
+    this.{self::BinaryConstraint::v1}.{self::Variable::addConstraint}(this);
+    this.{self::BinaryConstraint::v2}.{self::Variable::addConstraint}(this);
     this.{self::BinaryConstraint::direction} = #C1;
   }
   method isSatisfied() → core::bool*
-    return !(this.{self::BinaryConstraint::direction}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} (#C1));
+    return !this.{self::BinaryConstraint::direction}.{core::num::==}(#C1);
   method markInputs(core::int* mark) → void {
-    this.{self::BinaryConstraint::input}(){() →* self::Variable*}.{self::Variable::mark} = mark;
+    this.{self::BinaryConstraint::input}().{self::Variable::mark} = mark;
   }
   method input() → self::Variable*
-    return this.{self::BinaryConstraint::direction}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} (#C4) ?{self::Variable*} this.{self::BinaryConstraint::v1}{self::Variable*} : this.{self::BinaryConstraint::v2}{self::Variable*};
+    return this.{self::BinaryConstraint::direction}.{core::num::==}(#C4) ?{self::Variable*} this.{self::BinaryConstraint::v1} : this.{self::BinaryConstraint::v2};
   method output() → self::Variable*
-    return this.{self::BinaryConstraint::direction}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} (#C4) ?{self::Variable*} this.{self::BinaryConstraint::v2}{self::Variable*} : this.{self::BinaryConstraint::v1}{self::Variable*};
+    return this.{self::BinaryConstraint::direction}.{core::num::==}(#C4) ?{self::Variable*} this.{self::BinaryConstraint::v2} : this.{self::BinaryConstraint::v1};
   method recalculate() → void {
-    self::Variable* ihn = this.{self::BinaryConstraint::input}(){() →* self::Variable*};
-    self::Variable* out = this.{self::BinaryConstraint::output}(){() →* self::Variable*};
-    out.{self::Variable::walkStrength} = self::Strength::weakest(this.{self::Constraint::strength}{self::Strength*}, ihn.{self::Variable::walkStrength}{self::Strength*});
-    out.{self::Variable::stay} = ihn.{self::Variable::stay}{core::bool*};
-    if(out.{self::Variable::stay}{core::bool*})
-      this.{self::Constraint::execute}(){() →* void};
+    self::Variable* ihn = this.{self::BinaryConstraint::input}();
+    self::Variable* out = this.{self::BinaryConstraint::output}();
+    out.{self::Variable::walkStrength} = self::Strength::weakest(this.{self::Constraint::strength}, ihn.{self::Variable::walkStrength});
+    out.{self::Variable::stay} = ihn.{self::Variable::stay};
+    if(out.{self::Variable::stay})
+      this.{self::Constraint::execute}();
   }
   method markUnsatisfied() → void {
     this.{self::BinaryConstraint::direction} = #C1;
   }
   method inputsKnown(core::int* mark) → core::bool* {
-    self::Variable* i = this.{self::BinaryConstraint::input}(){() →* self::Variable*};
-    return i.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark || i.{self::Variable::stay}{core::bool*} || i.{self::Variable::determinedBy}{self::Constraint*} == null;
+    self::Variable* i = this.{self::BinaryConstraint::input}();
+    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{self::Constraint::==}(null);
   }
   method removeFromGraph() → void {
-    if(!(this.{self::BinaryConstraint::v1}{self::Variable*} == null))
-      this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::removeConstraint}(this){(self::Constraint*) →* void};
-    if(!(this.{self::BinaryConstraint::v2}{self::Variable*} == null))
-      this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::removeConstraint}(this){(self::Constraint*) →* void};
+    if(!this.{self::BinaryConstraint::v1}.{self::Variable::==}(null))
+      this.{self::BinaryConstraint::v1}.{self::Variable::removeConstraint}(this);
+    if(!this.{self::BinaryConstraint::v2}.{self::Variable::==}(null))
+      this.{self::BinaryConstraint::v2}.{self::Variable::removeConstraint}(this);
     this.{self::BinaryConstraint::direction} = #C1;
   }
 }
@@ -225,35 +225,35 @@
     ;
   method addToGraph() → void {
     super.{self::BinaryConstraint::addToGraph}();
-    this.{self::ScaleConstraint::scale}{self::Variable*}.{self::Variable::addConstraint}(this){(self::Constraint*) →* void};
-    this.{self::ScaleConstraint::offset}{self::Variable*}.{self::Variable::addConstraint}(this){(self::Constraint*) →* void};
+    this.{self::ScaleConstraint::scale}.{self::Variable::addConstraint}(this);
+    this.{self::ScaleConstraint::offset}.{self::Variable::addConstraint}(this);
   }
   method removeFromGraph() → void {
     super.{self::BinaryConstraint::removeFromGraph}();
-    if(!(this.{self::ScaleConstraint::scale}{self::Variable*} == null))
-      this.{self::ScaleConstraint::scale}{self::Variable*}.{self::Variable::removeConstraint}(this){(self::Constraint*) →* void};
-    if(!(this.{self::ScaleConstraint::offset}{self::Variable*} == null))
-      this.{self::ScaleConstraint::offset}{self::Variable*}.{self::Variable::removeConstraint}(this){(self::Constraint*) →* void};
+    if(!this.{self::ScaleConstraint::scale}.{self::Variable::==}(null))
+      this.{self::ScaleConstraint::scale}.{self::Variable::removeConstraint}(this);
+    if(!this.{self::ScaleConstraint::offset}.{self::Variable::==}(null))
+      this.{self::ScaleConstraint::offset}.{self::Variable::removeConstraint}(this);
   }
   method markInputs(core::int* mark) → void {
     super.{self::BinaryConstraint::markInputs}(mark);
-    this.{self::ScaleConstraint::scale}{self::Variable*}.{self::Variable::mark} = this.{self::ScaleConstraint::offset}{self::Variable*}.{self::Variable::mark} = mark;
+    this.{self::ScaleConstraint::scale}.{self::Variable::mark} = this.{self::ScaleConstraint::offset}.{self::Variable::mark} = mark;
   }
   method execute() → void {
-    if(this.{self::BinaryConstraint::direction}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} (#C4)) {
-      this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::value} = this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::value}{core::int*}.{core::num::*}(this.{self::ScaleConstraint::scale}{self::Variable*}.{self::Variable::value}{core::int*}){(core::num*) →* core::int*}.{core::num::+}(this.{self::ScaleConstraint::offset}{self::Variable*}.{self::Variable::value}{core::int*}){(core::num*) →* core::int*};
+    if(this.{self::BinaryConstraint::direction}.{core::num::==}(#C4)) {
+      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 {
-      this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::value} = this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::value}{core::int*}.{core::num::-}(this.{self::ScaleConstraint::offset}{self::Variable*}.{self::Variable::value}{core::int*}){(core::num*) →* core::int*}.{core::num::~/}(this.{self::ScaleConstraint::scale}{self::Variable*}.{self::Variable::value}{core::int*}){(core::num*) →* core::int*};
+      this.{self::BinaryConstraint::v1}.{self::Variable::value} = this.{self::BinaryConstraint::v2}.{self::Variable::value}.{core::num::-}(this.{self::ScaleConstraint::offset}.{self::Variable::value}).{core::num::~/}(this.{self::ScaleConstraint::scale}.{self::Variable::value});
     }
   }
   method recalculate() → void {
-    self::Variable* ihn = this.{self::BinaryConstraint::input}(){() →* self::Variable*};
-    self::Variable* out = this.{self::BinaryConstraint::output}(){() →* self::Variable*};
-    out.{self::Variable::walkStrength} = self::Strength::weakest(this.{self::Constraint::strength}{self::Strength*}, ihn.{self::Variable::walkStrength}{self::Strength*});
-    out.{self::Variable::stay} = ihn.{self::Variable::stay}{core::bool*} && this.{self::ScaleConstraint::scale}{self::Variable*}.{self::Variable::stay}{core::bool*} && this.{self::ScaleConstraint::offset}{self::Variable*}.{self::Variable::stay}{core::bool*};
-    if(out.{self::Variable::stay}{core::bool*})
-      this.{self::ScaleConstraint::execute}(){() →* void};
+    self::Variable* ihn = this.{self::BinaryConstraint::input}();
+    self::Variable* out = this.{self::BinaryConstraint::output}();
+    out.{self::Variable::walkStrength} = self::Strength::weakest(this.{self::Constraint::strength}, ihn.{self::Variable::walkStrength});
+    out.{self::Variable::stay} = ihn.{self::Variable::stay} && this.{self::ScaleConstraint::scale}.{self::Variable::stay} && this.{self::ScaleConstraint::offset}.{self::Variable::stay};
+    if(out.{self::Variable::stay})
+      this.{self::ScaleConstraint::execute}();
   }
 }
 class EqualityConstraint extends self::BinaryConstraint {
@@ -261,7 +261,7 @@
     : super self::BinaryConstraint::•(v1, v2, strength)
     ;
   method execute() → void {
-    this.{self::BinaryConstraint::output}(){() →* self::Variable*}.{self::Variable::value} = this.{self::BinaryConstraint::input}(){() →* self::Variable*}.{self::Variable::value}{core::int*};
+    this.{self::BinaryConstraint::output}().{self::Variable::value} = this.{self::BinaryConstraint::input}().{self::Variable::value};
   }
 }
 class Variable extends core::Object {
@@ -276,11 +276,11 @@
     : self::Variable::name = name, self::Variable::value = value, super core::Object::•()
     ;
   method addConstraint(self::Constraint* c) → void {
-    this.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::add}(c){(self::Constraint*) →* void};
+    this.{self::Variable::constraints}.{core::List::add}(c);
   }
   method removeConstraint(self::Constraint* c) → void {
-    this.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::remove}(c){(core::Object*) →* core::bool*};
-    if(this.{self::Variable::determinedBy}{self::Constraint*} =={self::Constraint::==}{(dynamic) →* core::bool*} c)
+    this.{self::Variable::constraints}.{core::List::remove}(c);
+    if(this.{self::Variable::determinedBy}.{self::Constraint::==}(c))
       this.{self::Variable::determinedBy} = null;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -300,61 +300,61 @@
     : super core::Object::•()
     ;
   method incrementalAdd(self::Constraint* c) → void {
-    core::int* mark = this.{self::Planner::newMark}(){() →* core::int*};
-    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark){(dynamic) →* self::Constraint*}; !(overridden == null); overridden = overridden.{self::Constraint::satisfy}(mark){(dynamic) →* self::Constraint*})
+    core::int* mark = this.{self::Planner::newMark}();
+    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{self::Constraint::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
       ;
   }
   method incrementalRemove(self::Constraint* c) → void {
-    self::Variable* out = c.{self::Constraint::output}(){() →* self::Variable*};
-    c.{self::Constraint::markUnsatisfied}(){() →* void};
-    c.{self::Constraint::removeFromGraph}(){() →* void};
-    core::List<self::Constraint*>* unsatisfied = this.{self::Planner::removePropagateFrom}(out){(self::Variable*) →* core::List<self::Constraint*>*};
+    self::Variable* out = c.{self::Constraint::output}();
+    c.{self::Constraint::markUnsatisfied}();
+    c.{self::Constraint::removeFromGraph}();
+    core::List<self::Constraint*>* unsatisfied = this.{self::Planner::removePropagateFrom}(out);
     self::Strength* strength = #C22;
     do {
-      for (core::int* i = 0; i.{core::num::<}(unsatisfied.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-        self::Constraint* u = unsatisfied.{core::List::[]}(i){(core::int*) →* self::Constraint*};
-        if(u.{self::Constraint::strength}{self::Strength*} =={self::Strength::==}{(dynamic) →* core::bool*} strength)
-          this.{self::Planner::incrementalAdd}(u){(self::Constraint*) →* void};
+      for (core::int* i = 0; i.{core::num::<}(unsatisfied.{core::List::length}); i = i.{core::num::+}(1)) {
+        self::Constraint* u = unsatisfied.{core::List::[]}(i);
+        if(u.{self::Constraint::strength}.{self::Strength::==}(strength))
+          this.{self::Planner::incrementalAdd}(u);
       }
-      strength = strength.{self::Strength::nextWeaker}(){() →* self::Strength*};
+      strength = strength.{self::Strength::nextWeaker}();
     }
-    while (!(strength =={self::Strength::==}{(dynamic) →* core::bool*} (#C18)))
+    while (!strength.{self::Strength::==}(#C18))
   }
   method newMark() → core::int*
-    return this.{self::Planner::currentMark} = this.{self::Planner::currentMark}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
+    return this.{self::Planner::currentMark} = this.{self::Planner::currentMark}.{core::num::+}(1);
   method makePlan(core::List<self::Constraint*>* sources) → self::Plan* {
-    core::int* mark = this.{self::Planner::newMark}(){() →* core::int*};
+    core::int* mark = this.{self::Planner::newMark}();
     self::Plan* plan = new self::Plan::•();
     core::List<self::Constraint*>* todo = sources;
-    while (todo.{core::List::length}{core::int*}.{core::num::>}(0){(core::num*) →* core::bool*}) {
-      self::Constraint* c = todo.{core::List::removeLast}(){() →* self::Constraint*};
-      if(!(c.{self::Constraint::output}(){() →* self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) && c.{self::Constraint::inputsKnown}(mark){(core::int*) →* core::bool*}) {
-        plan.{self::Plan::addConstraint}(c){(self::Constraint*) →* void};
-        c.{self::Constraint::output}(){() →* self::Variable*}.{self::Variable::mark} = mark;
-        this.{self::Planner::addConstraintsConsumingTo}(c.{self::Constraint::output}(){() →* self::Variable*}, todo){(self::Variable*, core::List<self::Constraint*>*) →* void};
+    while (todo.{core::List::length}.{core::num::>}(0)) {
+      self::Constraint* c = todo.{core::List::removeLast}();
+      if(!c.{self::Constraint::output}().{self::Variable::mark}.{core::num::==}(mark) && c.{self::Constraint::inputsKnown}(mark)) {
+        plan.{self::Plan::addConstraint}(c);
+        c.{self::Constraint::output}().{self::Variable::mark} = mark;
+        this.{self::Planner::addConstraintsConsumingTo}(c.{self::Constraint::output}(), todo);
       }
     }
     return plan;
   }
   method extractPlanFromConstraints(core::List<self::Constraint*>* constraints) → self::Plan* {
     core::List<self::Constraint*>* sources = <self::Constraint*>[];
-    for (core::int* i = 0; i.{core::num::<}(constraints.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      self::Constraint* c = constraints.{core::List::[]}(i){(core::int*) →* self::Constraint*};
-      if(c.{self::Constraint::isInput}(){() →* core::bool*} && c.{self::Constraint::isSatisfied}(){() →* core::bool*})
-        sources.{core::List::add}(c){(self::Constraint*) →* void};
+    for (core::int* i = 0; i.{core::num::<}(constraints.{core::List::length}); i = i.{core::num::+}(1)) {
+      self::Constraint* c = constraints.{core::List::[]}(i);
+      if(c.{self::Constraint::isInput}() && c.{self::Constraint::isSatisfied}())
+        sources.{core::List::add}(c);
     }
-    return this.{self::Planner::makePlan}(sources){(core::List<self::Constraint*>*) →* self::Plan*};
+    return this.{self::Planner::makePlan}(sources);
   }
   method addPropagate(self::Constraint* c, core::int* mark) → core::bool* {
     core::List<self::Constraint*>* todo = <self::Constraint*>[c];
-    while (todo.{core::List::length}{core::int*}.{core::num::>}(0){(core::num*) →* core::bool*}) {
-      self::Constraint* d = todo.{core::List::removeLast}(){() →* self::Constraint*};
-      if(d.{self::Constraint::output}(){() →* self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) {
-        this.{self::Planner::incrementalRemove}(c){(self::Constraint*) →* void};
+    while (todo.{core::List::length}.{core::num::>}(0)) {
+      self::Constraint* d = todo.{core::List::removeLast}();
+      if(d.{self::Constraint::output}().{self::Variable::mark}.{core::num::==}(mark)) {
+        this.{self::Planner::incrementalRemove}(c);
         return false;
       }
-      d.{self::Constraint::recalculate}(){() →* void};
-      this.{self::Planner::addConstraintsConsumingTo}(d.{self::Constraint::output}(){() →* self::Variable*}, todo){(self::Variable*, core::List<self::Constraint*>*) →* void};
+      d.{self::Constraint::recalculate}();
+      this.{self::Planner::addConstraintsConsumingTo}(d.{self::Constraint::output}(), todo);
     }
     return true;
   }
@@ -364,30 +364,30 @@
     out.{self::Variable::stay} = true;
     core::List<self::Constraint*>* unsatisfied = <self::Constraint*>[];
     core::List<self::Variable*>* todo = <self::Variable*>[out];
-    while (todo.{core::List::length}{core::int*}.{core::num::>}(0){(core::num*) →* core::bool*}) {
-      self::Variable* v = todo.{core::List::removeLast}(){() →* self::Variable*};
-      for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-        self::Constraint* c = v.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::[]}(i){(core::int*) →* self::Constraint*};
-        if(!c.{self::Constraint::isSatisfied}(){() →* core::bool*})
-          unsatisfied.{core::List::add}(c){(self::Constraint*) →* void};
+    while (todo.{core::List::length}.{core::num::>}(0)) {
+      self::Variable* v = todo.{core::List::removeLast}();
+      for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
+        self::Constraint* c = v.{self::Variable::constraints}.{core::List::[]}(i);
+        if(!c.{self::Constraint::isSatisfied}())
+          unsatisfied.{core::List::add}(c);
       }
-      self::Constraint* determining = v.{self::Variable::determinedBy}{self::Constraint*};
-      for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-        self::Constraint* next = v.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::[]}(i){(core::int*) →* self::Constraint*};
-        if(!(next =={self::Constraint::==}{(dynamic) →* core::bool*} determining) && next.{self::Constraint::isSatisfied}(){() →* core::bool*}) {
-          next.{self::Constraint::recalculate}(){() →* void};
-          todo.{core::List::add}(next.{self::Constraint::output}(){() →* self::Variable*}){(self::Variable*) →* void};
+      self::Constraint* determining = v.{self::Variable::determinedBy};
+      for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
+        self::Constraint* next = v.{self::Variable::constraints}.{core::List::[]}(i);
+        if(!next.{self::Constraint::==}(determining) && next.{self::Constraint::isSatisfied}()) {
+          next.{self::Constraint::recalculate}();
+          todo.{core::List::add}(next.{self::Constraint::output}());
         }
       }
     }
     return unsatisfied;
   }
   method addConstraintsConsumingTo(self::Variable* v, core::List<self::Constraint*>* coll) → void {
-    self::Constraint* determining = v.{self::Variable::determinedBy}{self::Constraint*};
-    for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      self::Constraint* c = v.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::[]}(i){(core::int*) →* self::Constraint*};
-      if(!(c =={self::Constraint::==}{(dynamic) →* core::bool*} determining) && c.{self::Constraint::isSatisfied}(){() →* core::bool*})
-        coll.{core::List::add}(c){(self::Constraint*) →* void};
+    self::Constraint* determining = v.{self::Variable::determinedBy};
+    for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
+      self::Constraint* c = v.{self::Variable::constraints}.{core::List::[]}(i);
+      if(!c.{self::Constraint::==}(determining) && c.{self::Constraint::isSatisfied}())
+        coll.{core::List::add}(c);
     }
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -407,13 +407,13 @@
     : super core::Object::•()
     ;
   method addConstraint(self::Constraint* c) → void {
-    this.{self::Plan::list}{core::List<self::Constraint*>*}.{core::List::add}(c){(self::Constraint*) →* void};
+    this.{self::Plan::list}.{core::List::add}(c);
   }
   method size() → core::int*
-    return this.{self::Plan::list}{core::List<self::Constraint*>*}.{core::List::length}{core::int*};
+    return this.{self::Plan::list}.{core::List::length};
   method execute() → void {
-    for (core::int* i = 0; i.{core::num::<}(this.{self::Plan::list}{core::List<self::Constraint*>*}.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      this.{self::Plan::list}{core::List<self::Constraint*>*}.{core::List::[]}(i){(core::int*) →* self::Constraint*}.{self::Constraint::execute}(){() →* void};
+    for (core::int* i = 0; i.{core::num::<}(this.{self::Plan::list}.{core::List::length}); i = i.{core::num::+}(1)) {
+      this.{self::Plan::list}.{core::List::[]}(i).{self::Constraint::execute}();
     }
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -439,32 +439,32 @@
 static const field core::int* BACKWARD = #C20;
 static field self::Planner* planner;
 static method main() → dynamic {
-  new self::DeltaBlue::•().{self::DeltaBlue::run}(){() →* void};
+  new self::DeltaBlue::•().{self::DeltaBlue::run}();
 }
 static method chainTest(core::int* n) → void {
   self::planner = new self::Planner::•();
   self::Variable* prev = null;
   self::Variable* first = null;
   self::Variable* last = null;
-  for (core::int* i = 0; i.{core::num::<=}(n){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  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 == null))
+    if(!prev.{self::Variable::==}(null))
       new self::EqualityConstraint::•(prev, v, #C22);
-    if(i =={core::num::==}{(core::Object*) →* core::bool*} 0)
+    if(i.{core::num::==}(0))
       first = v;
-    if(i =={core::num::==}{(core::Object*) →* core::bool*} n)
+    if(i.{core::num::==}(n))
       last = v;
     prev = v;
   }
   new self::StayConstraint::•(last, #C9);
   self::EditConstraint* edit = new self::EditConstraint::•(first, #C6);
-  self::Plan* plan = self::planner.{self::Planner::extractPlanFromConstraints}(<self::Constraint*>[edit]){(core::List<self::Constraint*>*) →* self::Plan*};
-  for (core::int* i = 0; i.{core::num::<}(100){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  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;
-    plan.{self::Plan::execute}(){() →* void};
-    if(!(last.{self::Variable::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} i)) {
+    plan.{self::Plan::execute}();
+    if(!last.{self::Variable::value}.{core::num::==}(i)) {
       core::print("Chain test failed:");
-      core::print("Expected last value to be ${i} but it was ${last.{self::Variable::value}{core::int*}}.");
+      core::print("Expected last value to be ${i} but it was ${last.{self::Variable::value}}.");
     }
   }
 }
@@ -475,38 +475,38 @@
   self::Variable* src = null;
   self::Variable* dst = null;
   core::List<self::Variable*>* dests = <self::Variable*>[];
-  for (core::int* i = 0; i.{core::num::<}(n){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (core::int* i = 0; i.{core::num::<}(n); i = i.{core::num::+}(1)) {
     src = new self::Variable::•("src", i);
     dst = new self::Variable::•("dst", i);
-    dests.{core::List::add}(dst){(self::Variable*) →* void};
+    dests.{core::List::add}(dst);
     new self::StayConstraint::•(src, #C12);
     new self::ScaleConstraint::•(src, scale, offset, dst, #C22);
   }
   self::change(src, 17);
-  if(!(dst.{self::Variable::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 1170))
+  if(!dst.{self::Variable::value}.{core::num::==}(1170))
     core::print("Projection 1 failed");
   self::change(dst, 1050);
-  if(!(src.{self::Variable::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 5))
+  if(!src.{self::Variable::value}.{core::num::==}(5))
     core::print("Projection 2 failed");
   self::change(scale, 5);
-  for (core::int* i = 0; i.{core::num::<}(n.{core::num::-}(1){(core::num*) →* core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    if(!(dests.{core::List::[]}(i){(core::int*) →* self::Variable*}.{self::Variable::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} i.{core::num::*}(5){(core::num*) →* core::int*}.{core::num::+}(1000){(core::num*) →* core::int*}))
+  for (core::int* i = 0; i.{core::num::<}(n.{core::num::-}(1)); i = i.{core::num::+}(1)) {
+    if(!dests.{core::List::[]}(i).{self::Variable::value}.{core::num::==}(i.{core::num::*}(5).{core::num::+}(1000)))
       core::print("Projection 3 failed");
   }
   self::change(offset, 2000);
-  for (core::int* i = 0; i.{core::num::<}(n.{core::num::-}(1){(core::num*) →* core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    if(!(dests.{core::List::[]}(i){(core::int*) →* self::Variable*}.{self::Variable::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} i.{core::num::*}(5){(core::num*) →* core::int*}.{core::num::+}(2000){(core::num*) →* core::int*}))
+  for (core::int* i = 0; i.{core::num::<}(n.{core::num::-}(1)); i = i.{core::num::+}(1)) {
+    if(!dests.{core::List::[]}(i).{self::Variable::value}.{core::num::==}(i.{core::num::*}(5).{core::num::+}(2000)))
       core::print("Projection 4 failed");
   }
 }
 static method change(self::Variable* v, core::int* newValue) → void {
   self::EditConstraint* edit = new self::EditConstraint::•(v, #C6);
-  self::Plan* plan = self::planner.{self::Planner::extractPlanFromConstraints}(<self::EditConstraint*>[edit]){(core::List<self::Constraint*>*) →* self::Plan*};
-  for (core::int* i = 0; i.{core::num::<}(10){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  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;
-    plan.{self::Plan::execute}(){() →* void};
+    plan.{self::Plan::execute}();
   }
-  edit.{self::Constraint::destroyConstraint}(){() →* void};
+  edit.{self::Constraint::destroyConstraint}();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/DeltaBlue.dart.weak.transformed.expect b/pkg/front_end/testcases/general/DeltaBlue.dart.weak.transformed.expect
index 8ce41ca..a21d5791 100644
--- a/pkg/front_end/testcases/general/DeltaBlue.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/DeltaBlue.dart.weak.transformed.expect
@@ -28,12 +28,12 @@
     : self::Strength::value = value, self::Strength::name = name, super core::Object::•()
     ;
   method nextWeaker() → self::Strength*
-    return (#C19).{core::List::[]}(this.{self::Strength::value}{core::int*}){(core::int*) →* self::Strength*};
+    return (#C19).{core::List::[]}(this.{self::Strength::value});
   static method stronger(self::Strength* s1, self::Strength* s2) → core::bool* {
-    return s1.{self::Strength::value}{core::int*}.{core::num::<}(s2.{self::Strength::value}{core::int*}){(core::num*) →* core::bool*};
+    return s1.{self::Strength::value}.{core::num::<}(s2.{self::Strength::value});
   }
   static method weaker(self::Strength* s1, self::Strength* s2) → core::bool* {
-    return s1.{self::Strength::value}{core::int*}.{core::num::>}(s2.{self::Strength::value}{core::int*}){(core::num*) →* core::bool*};
+    return s1.{self::Strength::value}.{core::num::>}(s2.{self::Strength::value});
   }
   static method weakest(self::Strength* s1, self::Strength* s2) → self::Strength* {
     return self::Strength::weaker(s1, s2) ?{self::Strength*} s1 : s2;
@@ -68,32 +68,32 @@
   abstract method execute() → void;
   abstract method recalculate() → void;
   method addConstraint() → void {
-    this.{self::Constraint::addToGraph}(){() →* void};
-    self::planner.{self::Planner::incrementalAdd}(this){(self::Constraint*) →* void};
+    this.{self::Constraint::addToGraph}();
+    self::planner.{self::Planner::incrementalAdd}(this);
   }
   method satisfy(dynamic mark) → self::Constraint* {
-    this.{self::Constraint::chooseMethod}(mark as{TypeError,ForDynamic} core::int*){(core::int*) →* void};
-    if(!this.{self::Constraint::isSatisfied}(){() →* core::bool*}) {
-      if(this.{self::Constraint::strength}{self::Strength*} =={self::Strength::==}{(dynamic) →* core::bool*} (#C22)) {
+    this.{self::Constraint::chooseMethod}(mark as{TypeError,ForDynamic} core::int*);
+    if(!this.{self::Constraint::isSatisfied}()) {
+      if(this.{self::Constraint::strength}.{self::Strength::==}(#C22)) {
         core::print("Could not satisfy a required constraint!");
       }
       return null;
     }
-    this.{self::Constraint::markInputs}(mark as{TypeError,ForDynamic} core::int*){(core::int*) →* void};
-    self::Variable* out = this.{self::Constraint::output}(){() →* self::Variable*};
-    self::Constraint* overridden = out.{self::Variable::determinedBy}{self::Constraint*};
-    if(!(overridden == null))
-      overridden.{self::Constraint::markUnsatisfied}(){() →* void};
+    this.{self::Constraint::markInputs}(mark as{TypeError,ForDynamic} core::int*);
+    self::Variable* out = this.{self::Constraint::output}();
+    self::Constraint* overridden = out.{self::Variable::determinedBy};
+    if(!overridden.{self::Constraint::==}(null))
+      overridden.{self::Constraint::markUnsatisfied}();
     out.{self::Variable::determinedBy} = this;
-    if(!self::planner.{self::Planner::addPropagate}(this, mark as{TypeError,ForDynamic} core::int*){(self::Constraint*, core::int*) →* core::bool*})
+    if(!self::planner.{self::Planner::addPropagate}(this, mark as{TypeError,ForDynamic} core::int*))
       core::print("Cycle encountered");
     out.{self::Variable::mark} = mark as{TypeError,ForDynamic} core::int*;
     return overridden;
   }
   method destroyConstraint() → void {
-    if(this.{self::Constraint::isSatisfied}(){() →* core::bool*})
-      self::planner.{self::Planner::incrementalRemove}(this){(self::Constraint*) →* void};
-    this.{self::Constraint::removeFromGraph}(){() →* void};
+    if(this.{self::Constraint::isSatisfied}())
+      self::planner.{self::Planner::incrementalRemove}(this);
+    this.{self::Constraint::removeFromGraph}();
   }
   method isInput() → core::bool*
     return false;
@@ -113,25 +113,25 @@
   field core::bool* satisfied = false;
   constructor •(self::Variable* myOutput, self::Strength* strength) → self::UnaryConstraint*
     : self::UnaryConstraint::myOutput = myOutput, super self::Constraint::•(strength) {
-    this.{self::Constraint::addConstraint}(){() →* void};
+    this.{self::Constraint::addConstraint}();
   }
   method addToGraph() → void {
-    this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::addConstraint}(this){(self::Constraint*) →* void};
+    this.{self::UnaryConstraint::myOutput}.{self::Variable::addConstraint}(this);
     this.{self::UnaryConstraint::satisfied} = false;
   }
   method chooseMethod(core::int* mark) → void {
-    this.{self::UnaryConstraint::satisfied} = !(this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) && self::Strength::stronger(this.{self::Constraint::strength}{self::Strength*}, this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*});
+    this.{self::UnaryConstraint::satisfied} = !this.{self::UnaryConstraint::myOutput}.{self::Variable::mark}.{core::num::==}(mark) && self::Strength::stronger(this.{self::Constraint::strength}, this.{self::UnaryConstraint::myOutput}.{self::Variable::walkStrength});
   }
   method isSatisfied() → core::bool*
-    return this.{self::UnaryConstraint::satisfied}{core::bool*};
+    return this.{self::UnaryConstraint::satisfied};
   method markInputs(core::int* mark) → void {}
   method output() → self::Variable*
-    return this.{self::UnaryConstraint::myOutput}{self::Variable*};
+    return this.{self::UnaryConstraint::myOutput};
   method recalculate() → void {
-    this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::walkStrength} = this.{self::Constraint::strength}{self::Strength*};
-    this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::stay} = !this.{self::Constraint::isInput}(){() →* core::bool*};
-    if(this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::stay}{core::bool*})
-      this.{self::Constraint::execute}(){() →* void};
+    this.{self::UnaryConstraint::myOutput}.{self::Variable::walkStrength} = this.{self::Constraint::strength};
+    this.{self::UnaryConstraint::myOutput}.{self::Variable::stay} = !this.{self::Constraint::isInput}();
+    if(this.{self::UnaryConstraint::myOutput}.{self::Variable::stay})
+      this.{self::Constraint::execute}();
   }
   method markUnsatisfied() → void {
     this.{self::UnaryConstraint::satisfied} = false;
@@ -139,8 +139,8 @@
   method inputsKnown(core::int* mark) → core::bool*
     return true;
   method removeFromGraph() → void {
-    if(!(this.{self::UnaryConstraint::myOutput}{self::Variable*} == null))
-      this.{self::UnaryConstraint::myOutput}{self::Variable*}.{self::Variable::removeConstraint}(this){(self::Constraint*) →* void};
+    if(!this.{self::UnaryConstraint::myOutput}.{self::Variable::==}(null))
+      this.{self::UnaryConstraint::myOutput}.{self::Variable::removeConstraint}(this);
     this.{self::UnaryConstraint::satisfied} = false;
   }
 }
@@ -164,56 +164,56 @@
   field core::int* direction = #C1;
   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}(){() →* void};
+    this.{self::Constraint::addConstraint}();
   }
   method chooseMethod(core::int* mark) → void {
-    if(this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) {
-      this.{self::BinaryConstraint::direction} = !(this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) && self::Strength::stronger(this.{self::Constraint::strength}{self::Strength*}, this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*}) ?{core::int*} #C4 : #C1;
+    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;
     }
-    if(this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) {
-      this.{self::BinaryConstraint::direction} = !(this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) && self::Strength::stronger(this.{self::Constraint::strength}{self::Strength*}, this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*}) ?{core::int*} #C20 : #C1;
+    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;
     }
-    if(self::Strength::weaker(this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*}, this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*})) {
-      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}{self::Strength*}, this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*}) ?{core::int*} #C20 : #C1;
+    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;
     }
     else {
-      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}{self::Strength*}, this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::walkStrength}{self::Strength*}) ?{core::int*} #C4 : #C20;
+      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v2}.{self::Variable::walkStrength}) ?{core::int*} #C4 : #C20;
     }
   }
   method addToGraph() → void {
-    this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::addConstraint}(this){(self::Constraint*) →* void};
-    this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::addConstraint}(this){(self::Constraint*) →* void};
+    this.{self::BinaryConstraint::v1}.{self::Variable::addConstraint}(this);
+    this.{self::BinaryConstraint::v2}.{self::Variable::addConstraint}(this);
     this.{self::BinaryConstraint::direction} = #C1;
   }
   method isSatisfied() → core::bool*
-    return !(this.{self::BinaryConstraint::direction}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} (#C1));
+    return !this.{self::BinaryConstraint::direction}.{core::num::==}(#C1);
   method markInputs(core::int* mark) → void {
-    this.{self::BinaryConstraint::input}(){() →* self::Variable*}.{self::Variable::mark} = mark;
+    this.{self::BinaryConstraint::input}().{self::Variable::mark} = mark;
   }
   method input() → self::Variable*
-    return this.{self::BinaryConstraint::direction}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} (#C4) ?{self::Variable*} this.{self::BinaryConstraint::v1}{self::Variable*} : this.{self::BinaryConstraint::v2}{self::Variable*};
+    return this.{self::BinaryConstraint::direction}.{core::num::==}(#C4) ?{self::Variable*} this.{self::BinaryConstraint::v1} : this.{self::BinaryConstraint::v2};
   method output() → self::Variable*
-    return this.{self::BinaryConstraint::direction}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} (#C4) ?{self::Variable*} this.{self::BinaryConstraint::v2}{self::Variable*} : this.{self::BinaryConstraint::v1}{self::Variable*};
+    return this.{self::BinaryConstraint::direction}.{core::num::==}(#C4) ?{self::Variable*} this.{self::BinaryConstraint::v2} : this.{self::BinaryConstraint::v1};
   method recalculate() → void {
-    self::Variable* ihn = this.{self::BinaryConstraint::input}(){() →* self::Variable*};
-    self::Variable* out = this.{self::BinaryConstraint::output}(){() →* self::Variable*};
-    out.{self::Variable::walkStrength} = self::Strength::weakest(this.{self::Constraint::strength}{self::Strength*}, ihn.{self::Variable::walkStrength}{self::Strength*});
-    out.{self::Variable::stay} = ihn.{self::Variable::stay}{core::bool*};
-    if(out.{self::Variable::stay}{core::bool*})
-      this.{self::Constraint::execute}(){() →* void};
+    self::Variable* ihn = this.{self::BinaryConstraint::input}();
+    self::Variable* out = this.{self::BinaryConstraint::output}();
+    out.{self::Variable::walkStrength} = self::Strength::weakest(this.{self::Constraint::strength}, ihn.{self::Variable::walkStrength});
+    out.{self::Variable::stay} = ihn.{self::Variable::stay};
+    if(out.{self::Variable::stay})
+      this.{self::Constraint::execute}();
   }
   method markUnsatisfied() → void {
     this.{self::BinaryConstraint::direction} = #C1;
   }
   method inputsKnown(core::int* mark) → core::bool* {
-    self::Variable* i = this.{self::BinaryConstraint::input}(){() →* self::Variable*};
-    return i.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark || i.{self::Variable::stay}{core::bool*} || i.{self::Variable::determinedBy}{self::Constraint*} == null;
+    self::Variable* i = this.{self::BinaryConstraint::input}();
+    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{self::Constraint::==}(null);
   }
   method removeFromGraph() → void {
-    if(!(this.{self::BinaryConstraint::v1}{self::Variable*} == null))
-      this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::removeConstraint}(this){(self::Constraint*) →* void};
-    if(!(this.{self::BinaryConstraint::v2}{self::Variable*} == null))
-      this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::removeConstraint}(this){(self::Constraint*) →* void};
+    if(!this.{self::BinaryConstraint::v1}.{self::Variable::==}(null))
+      this.{self::BinaryConstraint::v1}.{self::Variable::removeConstraint}(this);
+    if(!this.{self::BinaryConstraint::v2}.{self::Variable::==}(null))
+      this.{self::BinaryConstraint::v2}.{self::Variable::removeConstraint}(this);
     this.{self::BinaryConstraint::direction} = #C1;
   }
 }
@@ -225,35 +225,35 @@
     ;
   method addToGraph() → void {
     super.{self::BinaryConstraint::addToGraph}();
-    this.{self::ScaleConstraint::scale}{self::Variable*}.{self::Variable::addConstraint}(this){(self::Constraint*) →* void};
-    this.{self::ScaleConstraint::offset}{self::Variable*}.{self::Variable::addConstraint}(this){(self::Constraint*) →* void};
+    this.{self::ScaleConstraint::scale}.{self::Variable::addConstraint}(this);
+    this.{self::ScaleConstraint::offset}.{self::Variable::addConstraint}(this);
   }
   method removeFromGraph() → void {
     super.{self::BinaryConstraint::removeFromGraph}();
-    if(!(this.{self::ScaleConstraint::scale}{self::Variable*} == null))
-      this.{self::ScaleConstraint::scale}{self::Variable*}.{self::Variable::removeConstraint}(this){(self::Constraint*) →* void};
-    if(!(this.{self::ScaleConstraint::offset}{self::Variable*} == null))
-      this.{self::ScaleConstraint::offset}{self::Variable*}.{self::Variable::removeConstraint}(this){(self::Constraint*) →* void};
+    if(!this.{self::ScaleConstraint::scale}.{self::Variable::==}(null))
+      this.{self::ScaleConstraint::scale}.{self::Variable::removeConstraint}(this);
+    if(!this.{self::ScaleConstraint::offset}.{self::Variable::==}(null))
+      this.{self::ScaleConstraint::offset}.{self::Variable::removeConstraint}(this);
   }
   method markInputs(core::int* mark) → void {
     super.{self::BinaryConstraint::markInputs}(mark);
-    this.{self::ScaleConstraint::scale}{self::Variable*}.{self::Variable::mark} = this.{self::ScaleConstraint::offset}{self::Variable*}.{self::Variable::mark} = mark;
+    this.{self::ScaleConstraint::scale}.{self::Variable::mark} = this.{self::ScaleConstraint::offset}.{self::Variable::mark} = mark;
   }
   method execute() → void {
-    if(this.{self::BinaryConstraint::direction}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} (#C4)) {
-      this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::value} = this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::value}{core::int*}.{core::num::*}(this.{self::ScaleConstraint::scale}{self::Variable*}.{self::Variable::value}{core::int*}){(core::num*) →* core::int*}.{core::num::+}(this.{self::ScaleConstraint::offset}{self::Variable*}.{self::Variable::value}{core::int*}){(core::num*) →* core::int*};
+    if(this.{self::BinaryConstraint::direction}.{core::num::==}(#C4)) {
+      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 {
-      this.{self::BinaryConstraint::v1}{self::Variable*}.{self::Variable::value} = this.{self::BinaryConstraint::v2}{self::Variable*}.{self::Variable::value}{core::int*}.{core::num::-}(this.{self::ScaleConstraint::offset}{self::Variable*}.{self::Variable::value}{core::int*}){(core::num*) →* core::int*}.{core::num::~/}(this.{self::ScaleConstraint::scale}{self::Variable*}.{self::Variable::value}{core::int*}){(core::num*) →* core::int*};
+      this.{self::BinaryConstraint::v1}.{self::Variable::value} = this.{self::BinaryConstraint::v2}.{self::Variable::value}.{core::num::-}(this.{self::ScaleConstraint::offset}.{self::Variable::value}).{core::num::~/}(this.{self::ScaleConstraint::scale}.{self::Variable::value});
     }
   }
   method recalculate() → void {
-    self::Variable* ihn = this.{self::BinaryConstraint::input}(){() →* self::Variable*};
-    self::Variable* out = this.{self::BinaryConstraint::output}(){() →* self::Variable*};
-    out.{self::Variable::walkStrength} = self::Strength::weakest(this.{self::Constraint::strength}{self::Strength*}, ihn.{self::Variable::walkStrength}{self::Strength*});
-    out.{self::Variable::stay} = ihn.{self::Variable::stay}{core::bool*} && this.{self::ScaleConstraint::scale}{self::Variable*}.{self::Variable::stay}{core::bool*} && this.{self::ScaleConstraint::offset}{self::Variable*}.{self::Variable::stay}{core::bool*};
-    if(out.{self::Variable::stay}{core::bool*})
-      this.{self::ScaleConstraint::execute}(){() →* void};
+    self::Variable* ihn = this.{self::BinaryConstraint::input}();
+    self::Variable* out = this.{self::BinaryConstraint::output}();
+    out.{self::Variable::walkStrength} = self::Strength::weakest(this.{self::Constraint::strength}, ihn.{self::Variable::walkStrength});
+    out.{self::Variable::stay} = ihn.{self::Variable::stay} && this.{self::ScaleConstraint::scale}.{self::Variable::stay} && this.{self::ScaleConstraint::offset}.{self::Variable::stay};
+    if(out.{self::Variable::stay})
+      this.{self::ScaleConstraint::execute}();
   }
 }
 class EqualityConstraint extends self::BinaryConstraint {
@@ -261,7 +261,7 @@
     : super self::BinaryConstraint::•(v1, v2, strength)
     ;
   method execute() → void {
-    this.{self::BinaryConstraint::output}(){() →* self::Variable*}.{self::Variable::value} = this.{self::BinaryConstraint::input}(){() →* self::Variable*}.{self::Variable::value}{core::int*};
+    this.{self::BinaryConstraint::output}().{self::Variable::value} = this.{self::BinaryConstraint::input}().{self::Variable::value};
   }
 }
 class Variable extends core::Object {
@@ -276,11 +276,11 @@
     : self::Variable::name = name, self::Variable::value = value, super core::Object::•()
     ;
   method addConstraint(self::Constraint* c) → void {
-    this.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::add}(c){(self::Constraint*) →* void};
+    this.{self::Variable::constraints}.{core::List::add}(c);
   }
   method removeConstraint(self::Constraint* c) → void {
-    this.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::remove}(c){(core::Object*) →* core::bool*};
-    if(this.{self::Variable::determinedBy}{self::Constraint*} =={self::Constraint::==}{(dynamic) →* core::bool*} c)
+    this.{self::Variable::constraints}.{core::List::remove}(c);
+    if(this.{self::Variable::determinedBy}.{self::Constraint::==}(c))
       this.{self::Variable::determinedBy} = null;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -300,61 +300,61 @@
     : super core::Object::•()
     ;
   method incrementalAdd(self::Constraint* c) → void {
-    core::int* mark = this.{self::Planner::newMark}(){() →* core::int*};
-    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark){(dynamic) →* self::Constraint*}; !(overridden == null); overridden = overridden.{self::Constraint::satisfy}(mark){(dynamic) →* self::Constraint*})
+    core::int* mark = this.{self::Planner::newMark}();
+    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{self::Constraint::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
       ;
   }
   method incrementalRemove(self::Constraint* c) → void {
-    self::Variable* out = c.{self::Constraint::output}(){() →* self::Variable*};
-    c.{self::Constraint::markUnsatisfied}(){() →* void};
-    c.{self::Constraint::removeFromGraph}(){() →* void};
-    core::List<self::Constraint*>* unsatisfied = this.{self::Planner::removePropagateFrom}(out){(self::Variable*) →* core::List<self::Constraint*>*};
+    self::Variable* out = c.{self::Constraint::output}();
+    c.{self::Constraint::markUnsatisfied}();
+    c.{self::Constraint::removeFromGraph}();
+    core::List<self::Constraint*>* unsatisfied = this.{self::Planner::removePropagateFrom}(out);
     self::Strength* strength = #C22;
     do {
-      for (core::int* i = 0; i.{core::num::<}(unsatisfied.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-        self::Constraint* u = unsatisfied.{core::List::[]}(i){(core::int*) →* self::Constraint*};
-        if(u.{self::Constraint::strength}{self::Strength*} =={self::Strength::==}{(dynamic) →* core::bool*} strength)
-          this.{self::Planner::incrementalAdd}(u){(self::Constraint*) →* void};
+      for (core::int* i = 0; i.{core::num::<}(unsatisfied.{core::List::length}); i = i.{core::num::+}(1)) {
+        self::Constraint* u = unsatisfied.{core::List::[]}(i);
+        if(u.{self::Constraint::strength}.{self::Strength::==}(strength))
+          this.{self::Planner::incrementalAdd}(u);
       }
-      strength = strength.{self::Strength::nextWeaker}(){() →* self::Strength*};
+      strength = strength.{self::Strength::nextWeaker}();
     }
-    while (!(strength =={self::Strength::==}{(dynamic) →* core::bool*} (#C18)))
+    while (!strength.{self::Strength::==}(#C18))
   }
   method newMark() → core::int*
-    return this.{self::Planner::currentMark} = this.{self::Planner::currentMark}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
+    return this.{self::Planner::currentMark} = this.{self::Planner::currentMark}.{core::num::+}(1);
   method makePlan(core::List<self::Constraint*>* sources) → self::Plan* {
-    core::int* mark = this.{self::Planner::newMark}(){() →* core::int*};
+    core::int* mark = this.{self::Planner::newMark}();
     self::Plan* plan = new self::Plan::•();
     core::List<self::Constraint*>* todo = sources;
-    while (todo.{core::List::length}{core::int*}.{core::num::>}(0){(core::num*) →* core::bool*}) {
-      self::Constraint* c = todo.{core::List::removeLast}(){() →* self::Constraint*};
-      if(!(c.{self::Constraint::output}(){() →* self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) && c.{self::Constraint::inputsKnown}(mark){(core::int*) →* core::bool*}) {
-        plan.{self::Plan::addConstraint}(c){(self::Constraint*) →* void};
-        c.{self::Constraint::output}(){() →* self::Variable*}.{self::Variable::mark} = mark;
-        this.{self::Planner::addConstraintsConsumingTo}(c.{self::Constraint::output}(){() →* self::Variable*}, todo){(self::Variable*, core::List<self::Constraint*>*) →* void};
+    while (todo.{core::List::length}.{core::num::>}(0)) {
+      self::Constraint* c = todo.{core::List::removeLast}();
+      if(!c.{self::Constraint::output}().{self::Variable::mark}.{core::num::==}(mark) && c.{self::Constraint::inputsKnown}(mark)) {
+        plan.{self::Plan::addConstraint}(c);
+        c.{self::Constraint::output}().{self::Variable::mark} = mark;
+        this.{self::Planner::addConstraintsConsumingTo}(c.{self::Constraint::output}(), todo);
       }
     }
     return plan;
   }
   method extractPlanFromConstraints(core::List<self::Constraint*>* constraints) → self::Plan* {
     core::List<self::Constraint*>* sources = core::_GrowableList::•<self::Constraint*>(0);
-    for (core::int* i = 0; i.{core::num::<}(constraints.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      self::Constraint* c = constraints.{core::List::[]}(i){(core::int*) →* self::Constraint*};
-      if(c.{self::Constraint::isInput}(){() →* core::bool*} && c.{self::Constraint::isSatisfied}(){() →* core::bool*})
-        sources.{core::List::add}(c){(self::Constraint*) →* void};
+    for (core::int* i = 0; i.{core::num::<}(constraints.{core::List::length}); i = i.{core::num::+}(1)) {
+      self::Constraint* c = constraints.{core::List::[]}(i);
+      if(c.{self::Constraint::isInput}() && c.{self::Constraint::isSatisfied}())
+        sources.{core::List::add}(c);
     }
-    return this.{self::Planner::makePlan}(sources){(core::List<self::Constraint*>*) →* self::Plan*};
+    return this.{self::Planner::makePlan}(sources);
   }
   method addPropagate(self::Constraint* c, core::int* mark) → core::bool* {
     core::List<self::Constraint*>* todo = core::_GrowableList::_literal1<self::Constraint*>(c);
-    while (todo.{core::List::length}{core::int*}.{core::num::>}(0){(core::num*) →* core::bool*}) {
-      self::Constraint* d = todo.{core::List::removeLast}(){() →* self::Constraint*};
-      if(d.{self::Constraint::output}(){() →* self::Variable*}.{self::Variable::mark}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} mark) {
-        this.{self::Planner::incrementalRemove}(c){(self::Constraint*) →* void};
+    while (todo.{core::List::length}.{core::num::>}(0)) {
+      self::Constraint* d = todo.{core::List::removeLast}();
+      if(d.{self::Constraint::output}().{self::Variable::mark}.{core::num::==}(mark)) {
+        this.{self::Planner::incrementalRemove}(c);
         return false;
       }
-      d.{self::Constraint::recalculate}(){() →* void};
-      this.{self::Planner::addConstraintsConsumingTo}(d.{self::Constraint::output}(){() →* self::Variable*}, todo){(self::Variable*, core::List<self::Constraint*>*) →* void};
+      d.{self::Constraint::recalculate}();
+      this.{self::Planner::addConstraintsConsumingTo}(d.{self::Constraint::output}(), todo);
     }
     return true;
   }
@@ -364,30 +364,30 @@
     out.{self::Variable::stay} = true;
     core::List<self::Constraint*>* unsatisfied = core::_GrowableList::•<self::Constraint*>(0);
     core::List<self::Variable*>* todo = core::_GrowableList::_literal1<self::Variable*>(out);
-    while (todo.{core::List::length}{core::int*}.{core::num::>}(0){(core::num*) →* core::bool*}) {
-      self::Variable* v = todo.{core::List::removeLast}(){() →* self::Variable*};
-      for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-        self::Constraint* c = v.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::[]}(i){(core::int*) →* self::Constraint*};
-        if(!c.{self::Constraint::isSatisfied}(){() →* core::bool*})
-          unsatisfied.{core::List::add}(c){(self::Constraint*) →* void};
+    while (todo.{core::List::length}.{core::num::>}(0)) {
+      self::Variable* v = todo.{core::List::removeLast}();
+      for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
+        self::Constraint* c = v.{self::Variable::constraints}.{core::List::[]}(i);
+        if(!c.{self::Constraint::isSatisfied}())
+          unsatisfied.{core::List::add}(c);
       }
-      self::Constraint* determining = v.{self::Variable::determinedBy}{self::Constraint*};
-      for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-        self::Constraint* next = v.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::[]}(i){(core::int*) →* self::Constraint*};
-        if(!(next =={self::Constraint::==}{(dynamic) →* core::bool*} determining) && next.{self::Constraint::isSatisfied}(){() →* core::bool*}) {
-          next.{self::Constraint::recalculate}(){() →* void};
-          todo.{core::List::add}(next.{self::Constraint::output}(){() →* self::Variable*}){(self::Variable*) →* void};
+      self::Constraint* determining = v.{self::Variable::determinedBy};
+      for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
+        self::Constraint* next = v.{self::Variable::constraints}.{core::List::[]}(i);
+        if(!next.{self::Constraint::==}(determining) && next.{self::Constraint::isSatisfied}()) {
+          next.{self::Constraint::recalculate}();
+          todo.{core::List::add}(next.{self::Constraint::output}());
         }
       }
     }
     return unsatisfied;
   }
   method addConstraintsConsumingTo(self::Variable* v, core::List<self::Constraint*>* coll) → void {
-    self::Constraint* determining = v.{self::Variable::determinedBy}{self::Constraint*};
-    for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      self::Constraint* c = v.{self::Variable::constraints}{core::List<self::Constraint*>*}.{core::List::[]}(i){(core::int*) →* self::Constraint*};
-      if(!(c =={self::Constraint::==}{(dynamic) →* core::bool*} determining) && c.{self::Constraint::isSatisfied}(){() →* core::bool*})
-        coll.{core::List::add}(c){(self::Constraint*) →* void};
+    self::Constraint* determining = v.{self::Variable::determinedBy};
+    for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
+      self::Constraint* c = v.{self::Variable::constraints}.{core::List::[]}(i);
+      if(!c.{self::Constraint::==}(determining) && c.{self::Constraint::isSatisfied}())
+        coll.{core::List::add}(c);
     }
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -407,13 +407,13 @@
     : super core::Object::•()
     ;
   method addConstraint(self::Constraint* c) → void {
-    this.{self::Plan::list}{core::List<self::Constraint*>*}.{core::List::add}(c){(self::Constraint*) →* void};
+    this.{self::Plan::list}.{core::List::add}(c);
   }
   method size() → core::int*
-    return this.{self::Plan::list}{core::List<self::Constraint*>*}.{core::List::length}{core::int*};
+    return this.{self::Plan::list}.{core::List::length};
   method execute() → void {
-    for (core::int* i = 0; i.{core::num::<}(this.{self::Plan::list}{core::List<self::Constraint*>*}.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      this.{self::Plan::list}{core::List<self::Constraint*>*}.{core::List::[]}(i){(core::int*) →* self::Constraint*}.{self::Constraint::execute}(){() →* void};
+    for (core::int* i = 0; i.{core::num::<}(this.{self::Plan::list}.{core::List::length}); i = i.{core::num::+}(1)) {
+      this.{self::Plan::list}.{core::List::[]}(i).{self::Constraint::execute}();
     }
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -439,32 +439,32 @@
 static const field core::int* BACKWARD = #C20;
 static field self::Planner* planner;
 static method main() → dynamic {
-  new self::DeltaBlue::•().{self::DeltaBlue::run}(){() →* void};
+  new self::DeltaBlue::•().{self::DeltaBlue::run}();
 }
 static method chainTest(core::int* n) → void {
   self::planner = new self::Planner::•();
   self::Variable* prev = null;
   self::Variable* first = null;
   self::Variable* last = null;
-  for (core::int* i = 0; i.{core::num::<=}(n){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  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 == null))
+    if(!prev.{self::Variable::==}(null))
       new self::EqualityConstraint::•(prev, v, #C22);
-    if(i =={core::num::==}{(core::Object*) →* core::bool*} 0)
+    if(i.{core::num::==}(0))
       first = v;
-    if(i =={core::num::==}{(core::Object*) →* core::bool*} n)
+    if(i.{core::num::==}(n))
       last = v;
     prev = v;
   }
   new self::StayConstraint::•(last, #C9);
   self::EditConstraint* edit = new self::EditConstraint::•(first, #C6);
-  self::Plan* plan = self::planner.{self::Planner::extractPlanFromConstraints}(core::_GrowableList::_literal1<self::Constraint*>(edit)){(core::List<self::Constraint*>*) →* self::Plan*};
-  for (core::int* i = 0; i.{core::num::<}(100){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  self::Plan* plan = self::planner.{self::Planner::extractPlanFromConstraints}(core::_GrowableList::_literal1<self::Constraint*>(edit));
+  for (core::int* i = 0; i.{core::num::<}(100); i = i.{core::num::+}(1)) {
     first.{self::Variable::value} = i;
-    plan.{self::Plan::execute}(){() →* void};
-    if(!(last.{self::Variable::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} i)) {
+    plan.{self::Plan::execute}();
+    if(!last.{self::Variable::value}.{core::num::==}(i)) {
       core::print("Chain test failed:");
-      core::print("Expected last value to be ${i} but it was ${last.{self::Variable::value}{core::int*}}.");
+      core::print("Expected last value to be ${i} but it was ${last.{self::Variable::value}}.");
     }
   }
 }
@@ -475,38 +475,38 @@
   self::Variable* src = null;
   self::Variable* dst = null;
   core::List<self::Variable*>* dests = core::_GrowableList::•<self::Variable*>(0);
-  for (core::int* i = 0; i.{core::num::<}(n){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (core::int* i = 0; i.{core::num::<}(n); i = i.{core::num::+}(1)) {
     src = new self::Variable::•("src", i);
     dst = new self::Variable::•("dst", i);
-    dests.{core::List::add}(dst){(self::Variable*) →* void};
+    dests.{core::List::add}(dst);
     new self::StayConstraint::•(src, #C12);
     new self::ScaleConstraint::•(src, scale, offset, dst, #C22);
   }
   self::change(src, 17);
-  if(!(dst.{self::Variable::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 1170))
+  if(!dst.{self::Variable::value}.{core::num::==}(1170))
     core::print("Projection 1 failed");
   self::change(dst, 1050);
-  if(!(src.{self::Variable::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 5))
+  if(!src.{self::Variable::value}.{core::num::==}(5))
     core::print("Projection 2 failed");
   self::change(scale, 5);
-  for (core::int* i = 0; i.{core::num::<}(n.{core::num::-}(1){(core::num*) →* core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    if(!(dests.{core::List::[]}(i){(core::int*) →* self::Variable*}.{self::Variable::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} i.{core::num::*}(5){(core::num*) →* core::int*}.{core::num::+}(1000){(core::num*) →* core::int*}))
+  for (core::int* i = 0; i.{core::num::<}(n.{core::num::-}(1)); i = i.{core::num::+}(1)) {
+    if(!dests.{core::List::[]}(i).{self::Variable::value}.{core::num::==}(i.{core::num::*}(5).{core::num::+}(1000)))
       core::print("Projection 3 failed");
   }
   self::change(offset, 2000);
-  for (core::int* i = 0; i.{core::num::<}(n.{core::num::-}(1){(core::num*) →* core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    if(!(dests.{core::List::[]}(i){(core::int*) →* self::Variable*}.{self::Variable::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} i.{core::num::*}(5){(core::num*) →* core::int*}.{core::num::+}(2000){(core::num*) →* core::int*}))
+  for (core::int* i = 0; i.{core::num::<}(n.{core::num::-}(1)); i = i.{core::num::+}(1)) {
+    if(!dests.{core::List::[]}(i).{self::Variable::value}.{core::num::==}(i.{core::num::*}(5).{core::num::+}(2000)))
       core::print("Projection 4 failed");
   }
 }
 static method change(self::Variable* v, core::int* newValue) → void {
   self::EditConstraint* edit = new self::EditConstraint::•(v, #C6);
-  self::Plan* plan = self::planner.{self::Planner::extractPlanFromConstraints}(core::_GrowableList::_literal1<self::EditConstraint*>(edit)){(core::List<self::Constraint*>*) →* self::Plan*};
-  for (core::int* i = 0; i.{core::num::<}(10){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  self::Plan* plan = self::planner.{self::Planner::extractPlanFromConstraints}(core::_GrowableList::_literal1<self::EditConstraint*>(edit));
+  for (core::int* i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     v.{self::Variable::value} = newValue;
-    plan.{self::Plan::execute}(){() →* void};
+    plan.{self::Plan::execute}();
   }
-  edit.{self::Constraint::destroyConstraint}(){() →* void};
+  edit.{self::Constraint::destroyConstraint}();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/abstract_members.dart.weak.expect b/pkg/front_end/testcases/general/abstract_members.dart.weak.expect
index b4b8531..a798711 100644
--- a/pkg/front_end/testcases/general/abstract_members.dart.weak.expect
+++ b/pkg/front_end/testcases/general/abstract_members.dart.weak.expect
@@ -279,21 +279,21 @@
   method noSuchMethod(core::Invocation* _) → dynamic
     return null;
   no-such-method-forwarder method interfaceMethod2() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder method abstractMethod() → dynamic
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method interfaceMethod1() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder method interfaceMethod3() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder set property3(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   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))){(core::Invocation*) →* dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class MyMock2 extends self::MyMock1 {
   synthetic constructor •() → self::MyMock2*
diff --git a/pkg/front_end/testcases/general/abstract_members.dart.weak.outline.expect b/pkg/front_end/testcases/general/abstract_members.dart.weak.outline.expect
index e5153b7..d4b2ca4 100644
--- a/pkg/front_end/testcases/general/abstract_members.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/abstract_members.dart.weak.outline.expect
@@ -282,21 +282,21 @@
   method noSuchMethod(core::Invocation* _) → dynamic
     ;
   no-such-method-forwarder method interfaceMethod2() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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(#abstractMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} dynamic;
   no-such-method-forwarder method interfaceMethod1() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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(#interfaceMethod3, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    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(#property3=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    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(#interfaceMethod1=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    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(#property1=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    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(#property2=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    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*
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.expect
index da16394..c52e1a4 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.expect
@@ -46,7 +46,7 @@
     : super self::C::•()
     ;
   no-such-method-forwarder method foo() → self::B*
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} self::B*;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} self::B*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.outline.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.outline.expect
index db26f68..c9348b9 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.outline.expect
@@ -42,7 +42,7 @@
   synthetic constructor •() → self::D*
     ;
   no-such-method-forwarder method foo() → self::B*
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} self::B*;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} self::B*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.transformed.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.transformed.expect
index da16394..c52e1a4 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.transformed.expect
@@ -46,7 +46,7 @@
     : super self::C::•()
     ;
   no-such-method-forwarder method foo() → self::B*
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} self::B*;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} self::B*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/accessors.dart.weak.expect b/pkg/front_end/testcases/general/accessors.dart.weak.expect
index b57abd58..cd1b3ea 100644
--- a/pkg/front_end/testcases/general/accessors.dart.weak.expect
+++ b/pkg/front_end/testcases/general/accessors.dart.weak.expect
@@ -85,6 +85,6 @@
     core::print("Expected error: ${e}");
   }
   self::onlySetter = "fisk";
-  new self::C::•().{self::C::testC}(){() →* dynamic};
-  new self::D::•().{self::C::testD}(){() →* dynamic};
+  new self::C::•().{self::C::testC}();
+  new self::D::•().{self::C::testD}();
 }
diff --git a/pkg/front_end/testcases/general/accessors.dart.weak.transformed.expect b/pkg/front_end/testcases/general/accessors.dart.weak.transformed.expect
index b57abd58..cd1b3ea 100644
--- a/pkg/front_end/testcases/general/accessors.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/accessors.dart.weak.transformed.expect
@@ -85,6 +85,6 @@
     core::print("Expected error: ${e}");
   }
   self::onlySetter = "fisk";
-  new self::C::•().{self::C::testC}(){() →* dynamic};
-  new self::D::•().{self::C::testD}(){() →* dynamic};
+  new self::C::•().{self::C::testC}();
+  new self::D::•().{self::C::testD}();
 }
diff --git a/pkg/front_end/testcases/general/argument.dart.weak.expect b/pkg/front_end/testcases/general/argument.dart.weak.expect
index 90b185e..4afa1a6 100644
--- a/pkg/front_end/testcases/general/argument.dart.weak.expect
+++ b/pkg/front_end/testcases/general/argument.dart.weak.expect
@@ -37,7 +37,7 @@
 static method foo_escaped(dynamic x) → void {}
 static method bar_escaped(dynamic x) → void {}
 static method escape(dynamic fn) → void {
-  fn{dynamic}.call(new self::Baz::•());
+  fn.call(new self::Baz::•());
 }
 static method main() → dynamic {
   self::foo(new self::Foo::•());
diff --git a/pkg/front_end/testcases/general/argument.dart.weak.transformed.expect b/pkg/front_end/testcases/general/argument.dart.weak.transformed.expect
index 90b185e..4afa1a6 100644
--- a/pkg/front_end/testcases/general/argument.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/argument.dart.weak.transformed.expect
@@ -37,7 +37,7 @@
 static method foo_escaped(dynamic x) → void {}
 static method bar_escaped(dynamic x) → void {}
 static method escape(dynamic fn) → void {
-  fn{dynamic}.call(new self::Baz::•());
+  fn.call(new self::Baz::•());
 }
 static method main() → dynamic {
   self::foo(new self::Foo::•());
diff --git a/pkg/front_end/testcases/general/arithmetic.dart.weak.expect b/pkg/front_end/testcases/general/arithmetic.dart.weak.expect
index 0e703fd..ed95ed2 100644
--- a/pkg/front_end/testcases/general/arithmetic.dart.weak.expect
+++ b/pkg/front_end/testcases/general/arithmetic.dart.weak.expect
@@ -3,12 +3,12 @@
 import "dart:core" as core;
 
 static method foo(core::int* x, core::int* y) → core::int* {
-  core::int* z = x.{core::num::+}(y){(core::num*) →* core::int*};
-  return z.{core::int::<<}(4){(core::int*) →* core::int*};
+  core::int* z = x.{core::num::+}(y);
+  return z.{core::int::<<}(4);
 }
 static method loop(core::List<dynamic>* xs) → void {
-  core::int* _ = xs.{core::List::length}{core::int*};
-  for (core::int* i = 0; i.{core::num::<}(xs.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  core::int* _ = xs.{core::List::length};
+  for (core::int* i = 0; i.{core::num::<}(xs.{core::List::length}); i = i.{core::num::+}(1)) {
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/arithmetic.dart.weak.transformed.expect b/pkg/front_end/testcases/general/arithmetic.dart.weak.transformed.expect
index 595172d..0f2a3e1 100644
--- a/pkg/front_end/testcases/general/arithmetic.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/arithmetic.dart.weak.transformed.expect
@@ -3,12 +3,12 @@
 import "dart:core" as core;
 
 static method foo(core::int* x, core::int* y) → core::int* {
-  core::int* z = x.{core::num::+}(y){(core::num*) →* core::int*};
-  return z.{core::int::<<}(4){(core::int*) →* core::int*};
+  core::int* z = x.{core::num::+}(y);
+  return z.{core::int::<<}(4);
 }
 static method loop(core::List<dynamic>* xs) → void {
-  core::int* _ = xs.{core::List::length}{core::int*};
-  for (core::int* i = 0; i.{core::num::<}(xs.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  core::int* _ = xs.{core::List::length};
+  for (core::int* i = 0; i.{core::num::<}(xs.{core::List::length}); i = i.{core::num::+}(1)) {
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.expect b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.expect
index 5472a32..92b2ed2 100644
--- a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.expect
+++ b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.expect
@@ -10,7 +10,7 @@
 
 static method foo() → dynamic async {
   invalid-type x;
-  for (dynamic y in x{<invalid>}.z) {
+  for (dynamic y in x.z) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.transformed.expect
index fc34d1a..c6b4aa6 100644
--- a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.transformed.expect
@@ -23,6 +23,13 @@
       #L1:
       {
         invalid-type x;
+        {
+          core::Iterator<invalid-type>* :sync-for-iterator = x.z.{core::Iterable::iterator};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
+            dynamic y = :sync-for-iterator.{core::Iterator::current};
+            {}
+          }
+        }
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
       return;
diff --git a/pkg/front_end/testcases/general/async_nested.dart.weak.expect b/pkg/front_end/testcases/general/async_nested.dart.weak.expect
index 48269f1..25bc8dc 100644
--- a/pkg/front_end/testcases/general/async_nested.dart.weak.expect
+++ b/pkg/front_end/testcases/general/async_nested.dart.weak.expect
@@ -11,10 +11,10 @@
   constructor •(core::String* name, [core::List<self::Node*>* nested = #C1]) → self::Node*
     : self::Node::name = name, self::Node::nested = nested, super core::Object::•() {}
   method toString() → core::String*
-    return "<${this.{self::Node::name}{core::String*}}:[${let final core::List<self::Node*>* #t1 = this.{self::Node::nested}{core::List<self::Node*>*} in #t1 == null ?{core::String*} null : #t1.{core::Iterable::join}(", "){([core::String*]) →* core::String*}}]>";
+    return "<${this.{self::Node::name}}:[${let final core::List<self::Node*>* #t1 = this.{self::Node::nested} in #t1.{core::List::==}(null) ?{core::String*} null : #t1.{core::Iterable::join}(", ")}]>";
   method toSimpleString() → dynamic {
-    core::Iterable<dynamic>* tmp = let final core::List<self::Node*>* #t2 = this.{self::Node::nested}{core::List<self::Node*>*} in #t2 == null ?{core::Iterable<dynamic>*} null : #t2.{core::Iterable::map}<dynamic>((self::Node* child) → dynamic => child.{self::Node::toSimpleString}(){() →* dynamic}){((self::Node*) →* dynamic) →* core::Iterable<dynamic>*};
-    return "${this.{self::Node::name}{core::String*}} ${let final core::Iterable<dynamic>* #t3 = tmp in #t3 == null ?{core::String*} null : #t3.{core::Iterable::join}(" "){([core::String*]) →* core::String*}}".{core::String::trim}(){() →* core::String*};
+    core::Iterable<dynamic>* tmp = let final core::List<self::Node*>* #t2 = this.{self::Node::nested} in #t2.{core::List::==}(null) ?{core::Iterable<dynamic>*} null : #t2.{core::Iterable::map}<dynamic>((self::Node* child) → dynamic => child.{self::Node::toSimpleString}());
+    return "${this.{self::Node::name}} ${let final core::Iterable<dynamic>* #t3 = tmp in #t3.{core::Object::==}(null) ?{core::String*} null : #t3.{core::Iterable::join}(" ")}".{core::String::trim}();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -29,9 +29,9 @@
 static method main() → void async {
   core::String* expected = "1 2 3 4 5 6 7 8 9 10";
   self::Node* node = new self::Node::•("1", <self::Node*>[new self::Node::•("2", <self::Node*>[]), await asy::Future::value<self::Node*>(new self::Node::•("3", <self::Node*>[await asy::Future::value<self::Node*>(new self::Node::•("4", <self::Node*>[new self::Node::•("5", <self::Node*>[await asy::Future::value<self::Node*>(new self::Node::•("6", <self::Node*>[await asy::Future::value<self::Node*>(new self::Node::•("7", <self::Node*>[]))])), await asy::Future::value<self::Node*>(new self::Node::•("8", <self::Node*>[])), await asy::Future::value<self::Node*>(new self::Node::•("9", <self::Node*>[]))])]))])), await asy::Future::value<self::Node*>(new self::Node::•("10", <self::Node*>[]))]);
-  core::String* actual = node.{self::Node::toSimpleString}(){() →* dynamic} as{TypeError,ForDynamic} core::String*;
+  core::String* actual = node.{self::Node::toSimpleString}() as{TypeError,ForDynamic} core::String*;
   core::print(actual);
-  if(!(actual =={core::String::==}{(core::Object*) →* core::bool*} expected)) {
+  if(!actual.{core::String::==}(expected)) {
     throw "Expected '${expected}' but got '${actual}'";
   }
 }
diff --git a/pkg/front_end/testcases/general/async_nested.dart.weak.transformed.expect b/pkg/front_end/testcases/general/async_nested.dart.weak.transformed.expect
index 8b7a059..760f00e 100644
--- a/pkg/front_end/testcases/general/async_nested.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/async_nested.dart.weak.transformed.expect
@@ -12,10 +12,10 @@
   constructor •(core::String* name, [core::List<self::Node*>* nested = #C1]) → self::Node*
     : self::Node::name = name, self::Node::nested = nested, super core::Object::•() {}
   method toString() → core::String*
-    return "<${this.{self::Node::name}{core::String*}}:[${let final core::List<self::Node*>* #t1 = this.{self::Node::nested}{core::List<self::Node*>*} in #t1 == null ?{core::String*} null : #t1.{core::Iterable::join}(", "){([core::String*]) →* core::String*}}]>";
+    return "<${this.{self::Node::name}}:[${let final core::List<self::Node*>* #t1 = this.{self::Node::nested} in #t1.{core::List::==}(null) ?{core::String*} null : #t1.{core::Iterable::join}(", ")}]>";
   method toSimpleString() → dynamic {
-    core::Iterable<dynamic>* tmp = let final core::List<self::Node*>* #t2 = this.{self::Node::nested}{core::List<self::Node*>*} in #t2 == null ?{core::Iterable<dynamic>*} null : #t2.{core::Iterable::map}<dynamic>((self::Node* child) → dynamic => child.{self::Node::toSimpleString}(){() →* dynamic}){((self::Node*) →* dynamic) →* core::Iterable<dynamic>*};
-    return "${this.{self::Node::name}{core::String*}} ${let final core::Iterable<dynamic>* #t3 = tmp in #t3 == null ?{core::String*} null : #t3.{core::Iterable::join}(" "){([core::String*]) →* core::String*}}".{core::String::trim}(){() →* core::String*};
+    core::Iterable<dynamic>* tmp = let final core::List<self::Node*>* #t2 = this.{self::Node::nested} in #t2.{core::List::==}(null) ?{core::Iterable<dynamic>*} null : #t2.{core::Iterable::map}<dynamic>((self::Node* child) → dynamic => child.{self::Node::toSimpleString}());
+    return "${this.{self::Node::name}} ${let final core::Iterable<dynamic>* #t3 = tmp in #t3.{core::Object::==}(null) ?{core::String*} null : #t3.{core::Iterable::join}(" ")}".{core::String::trim}();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -56,9 +56,9 @@
         :async_temporary_0 = _in::unsafeCast<self::Node*>(:result);
         [yield] let dynamic #t10 = asy::_awaitHelper(asy::Future::value<self::Node*>(new self::Node::•("10", core::_GrowableList::•<self::Node*>(0))), :async_op_then, :async_op_error, :async_op) in null;
         self::Node* node = new self::Node::•("1", core::_GrowableList::_literal3<self::Node*>(_in::unsafeCast<self::Node*>(:async_temporary_2), _in::unsafeCast<self::Node*>(:async_temporary_0), _in::unsafeCast<self::Node*>(:result)));
-        core::String* actual = node.{self::Node::toSimpleString}(){() →* dynamic} as{TypeError,ForDynamic} core::String*;
+        core::String* actual = node.{self::Node::toSimpleString}() as{TypeError,ForDynamic} core::String*;
         core::print(actual);
-        if(!(actual =={core::String::==}{(core::Object*) →* core::bool*} expected)) {
+        if(!actual.{core::String::==}(expected)) {
           throw "Expected '${expected}' but got '${actual}'";
         }
       }
diff --git a/pkg/front_end/testcases/general/await_complex.dart.weak.expect b/pkg/front_end/testcases/general/await_complex.dart.weak.expect
index df8fc27..efab03a 100644
--- a/pkg/front_end/testcases/general/await_complex.dart.weak.expect
+++ b/pkg/front_end/testcases/general/await_complex.dart.weak.expect
@@ -19,7 +19,7 @@
   static method staticFoo(core::int* param) → core::int*
     return param;
   get getter() → core::int*
-    return this.{self::C::field}{core::int*};
+    return this.{self::C::field};
   set setter(dynamic val) → void {
     this.{self::C::field} = val as{TypeError,ForDynamic} core::int*;
   }
@@ -45,7 +45,7 @@
   on dynamic catch(final dynamic _) {
     return true;
   }
-})(){() →* core::bool*};
+}).call();
 static method topLevelFoo(core::int* param) → core::int*
   return 1;
 static get topLevelGetter() → core::int*
@@ -56,54 +56,54 @@
 static method dummy() → dynamic
   return 1;
 static method staticMembers() → dynamic async {
-  core::num* a = self::C::staticField.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* a = self::C::staticField.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, a);
-  core::num* f = (self::C::staticField = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* f = (self::C::staticField = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, f);
-  core::num* b = self::C::staticGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* b = self::C::staticGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, b);
-  core::num* c = (self::C::staticSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* c = (self::C::staticSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, c);
-  core::num* d = self::C::staticFoo(2).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* d = self::C::staticFoo(2).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(3, d);
-  core::num* e = self::C::staticField.{core::num::+}(self::C::staticGetter){(core::num*) →* core::int*}.{core::num::+}(self::C::staticSetter = 1){(core::num*) →* core::int*}.{core::num::+}(self::C::staticFoo(1)){(core::num*) →* core::int*}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* e = self::C::staticField.{core::num::+}(self::C::staticGetter).{core::num::+}(self::C::staticSetter = 1).{core::num::+}(self::C::staticFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(5, e);
 }
 static method topLevelMembers() → dynamic async {
-  core::num* a = self::globalVariable.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* a = self::globalVariable.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, a);
-  core::num* b = self::topLevelGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* b = self::topLevelGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, b);
-  core::num* c = (self::topLevelSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* c = (self::topLevelSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, c);
-  core::num* d = self::topLevelFoo(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* d = self::topLevelFoo(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, d);
-  core::num* e = self::globalVariable.{core::num::+}(self::topLevelGetter){(core::num*) →* core::int*}.{core::num::+}(self::topLevelSetter = 1){(core::num*) →* core::int*}.{core::num::+}(self::topLevelFoo(1)){(core::num*) →* core::int*}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* e = self::globalVariable.{core::num::+}(self::topLevelGetter).{core::num::+}(self::topLevelSetter = 1).{core::num::+}(self::topLevelFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(5, e);
 }
 static method instanceMembers() → dynamic async {
   self::C* inst = new self::C::•();
-  core::num* a = inst.{self::C::field}{core::int*}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* a = inst.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, a);
-  core::num* b = inst.{self::C::getter}{core::int*}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* b = inst.{self::C::getter}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, b);
-  core::num* c = (inst.{self::C::setter} = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* c = (inst.{self::C::setter} = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, c);
-  core::num* d = inst.{self::C::foo}(1){(core::int*) →* core::int*}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* d = inst.{self::C::foo}(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, d);
-  core::num* e = inst.{self::C::field}{core::int*}.{core::num::+}(inst.{self::C::getter}{core::int*}){(core::num*) →* core::int*}.{core::num::+}(inst.{self::C::setter} = 1){(core::num*) →* core::int*}.{core::num::+}(inst.{self::C::foo}(1){(core::int*) →* core::int*}){(core::num*) →* core::int*}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* e = inst.{self::C::field}.{core::num::+}(inst.{self::C::getter}).{core::num::+}(inst.{self::C::setter} = 1).{core::num::+}(inst.{self::C::foo}(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(5, e);
 }
 static method others() → dynamic async {
-  core::String* a = "${self::globalVariable} ${await self::dummy()} ".{core::String::+}(await "someString"){(core::String*) →* core::String*};
+  core::String* a = "${self::globalVariable} ${await self::dummy()} ".{core::String::+}(await "someString");
   self::expect("1 1 someString", a);
   self::C* c = new self::C::•();
-  core::num* d = c.{self::C::field}{core::int*}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  core::num* d = c.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   core::int* cnt = 2;
   core::List<core::int*>* b = <core::int*>[1, 2, 3];
-  b.{core::List::[]=}(cnt, await self::dummy() as{TypeError,ForDynamic} core::int*){(core::int*, core::int*) →* void};
-  self::expect(1, b.{core::List::[]}(cnt){(core::int*) →* core::int*});
-  core::num* e = b.{core::List::[]}(0){(core::int*) →* core::int*}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+  b.{core::List::[]=}(cnt, await self::dummy() as{TypeError,ForDynamic} core::int*);
+  self::expect(1, b.{core::List::[]}(cnt));
+  core::num* e = b.{core::List::[]}(0).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
   self::expect(2, e);
 }
 static method conditionals() → dynamic async {
@@ -124,16 +124,16 @@
 static method asserts() → dynamic async {
   for (final core::Function* #t1 in <core::Function*>[#C1, #C2]) {
     final <T extends core::Object* = dynamic>(T*) →* FutureOr<T*>* func = #t1 as{TypeError} <T extends core::Object* = dynamic>(T*) →* FutureOr<T*>*;
-    assert(await func<core::bool*>(true){(core::bool*) →* FutureOr<core::bool*>*});
-    assert(self::id<core::bool*>(true) as{TypeError} core::bool*, await func<core::String*>("message"){(core::String*) →* FutureOr<core::String*>*});
-    assert(await func<core::bool*>(true){(core::bool*) →* FutureOr<core::bool*>*}, await func<core::String*>("message"){(core::String*) →* FutureOr<core::String*>*});
+    assert(await func.call<core::bool*>(true));
+    assert(self::id<core::bool*>(true) as{TypeError} core::bool*, await func.call<core::String*>("message"));
+    assert(await func.call<core::bool*>(true), await func.call<core::String*>("message"));
     try {
-      assert(await func<core::bool*>(false){(core::bool*) →* FutureOr<core::bool*>*}, await func<core::String*>("message"){(core::String*) →* FutureOr<core::String*>*});
+      assert(await func.call<core::bool*>(false), await func.call<core::String*>("message"));
       if(self::assertStatementsEnabled)
         throw "Didn't throw";
     }
     on core::AssertionError* catch(final core::AssertionError* e) {
-      self::expect("message", e.{core::AssertionError::message}{core::Object*});
+      self::expect("message", e.{core::AssertionError::message});
     }
   }
 }
@@ -141,28 +141,28 @@
   for (final core::Function* #t2 in <core::Function*>[#C1, #C2]) {
     final <T extends core::Object* = dynamic>(T*) →* FutureOr<T*>* func = #t2 as{TypeError} <T extends core::Object* = dynamic>(T*) →* FutureOr<T*>*;
     core::int* c = 0;
-    for (core::int* i = await func<core::int*>(0){(core::int*) →* FutureOr<core::int*>*}; await func<core::bool*>(i.{core::num::<}(5){(core::num*) →* core::bool*}){(core::bool*) →* FutureOr<core::bool*>*}; await func<core::int*>(let final core::int* #t3 = i in let final core::int* #t4 = i = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3){(core::int*) →* FutureOr<core::int*>*}) {
-      c = c.{core::num::+}(1){(core::num*) →* core::int*};
+    for (core::int* i = await func.call<core::int*>(0); await func.call<core::bool*>(i.{core::num::<}(5)); await func.call<core::int*>(let final core::int* #t3 = i in let final core::int* #t4 = i = #t3.{core::num::+}(1) in #t3)) {
+      c = c.{core::num::+}(1);
     }
     self::expect(5, c);
     c = 0;
-    while (await func<core::bool*>(c.{core::num::<}(5){(core::num*) →* core::bool*}){(core::bool*) →* FutureOr<core::bool*>*})
-      c = c.{core::num::+}(1){(core::num*) →* core::int*};
+    while (await func.call<core::bool*>(c.{core::num::<}(5)))
+      c = c.{core::num::+}(1);
     self::expect(5, c);
     c = 0;
     do {
-      c = c.{core::num::+}(1){(core::num*) →* core::int*};
+      c = c.{core::num::+}(1);
     }
-    while (await func<core::bool*>(c.{core::num::<}(5){(core::num*) →* core::bool*}){(core::bool*) →* FutureOr<core::bool*>*})
+    while (await func.call<core::bool*>(c.{core::num::<}(5)))
     self::expect(5, c);
-    if(await func<core::bool*>(c =={core::num::==}{(core::Object*) →* core::bool*} 5){(core::bool*) →* FutureOr<core::bool*>*}) {
+    if(await func.call<core::bool*>(c.{core::num::==}(5))) {
       self::expect(5, c);
     }
     else {
       throw "unreachable";
     }
     try {
-      throw await func<core::String*>("string"){(core::String*) →* FutureOr<core::String*>*};
+      throw await func.call<core::String*>("string");
     }
     on core::String* catch(no-exception-var) {
     }
@@ -179,22 +179,22 @@
           }
           on dynamic catch(final dynamic e) {
             self::expect("string", e);
-            self::expect(0, await func<core::int*>(0){(core::int*) →* FutureOr<core::int*>*});
+            self::expect(0, await func.call<core::int*>(0));
             rethrow;
           }
         finally {
-          self::expect(0, await func<core::int*>(0){(core::int*) →* FutureOr<core::int*>*});
+          self::expect(0, await func.call<core::int*>(0));
         }
       }
       on dynamic catch(final dynamic e) {
-        self::expect(0, await func<core::int*>(0){(core::int*) →* FutureOr<core::int*>*});
+        self::expect(0, await func.call<core::int*>(0));
         self::expect("string", e);
       }
     finally {
-      self::expect(0, await func<core::int*>(0){(core::int*) →* FutureOr<core::int*>*});
+      self::expect(0, await func.call<core::int*>(0));
     }
     #L1:
-    switch(await func<core::int*>(2){(core::int*) →* FutureOr<core::int*>*}) {
+    switch(await func.call<core::int*>(2)) {
       #L2:
       case #C3:
         {
@@ -207,19 +207,19 @@
         }
     }
     self::expect(42, await(() → asy::Future<dynamic>* async {
-      return await func<dynamic>(42){(dynamic) →* FutureOr<dynamic>*};
-    })(){() →* asy::Future<dynamic>*});
+      return await func.call<dynamic>(42);
+    }).call());
     self::expect(42, await(() → asy::Future<dynamic>* async {
-      return func<dynamic>(42){(dynamic) →* FutureOr<dynamic>*};
-    })(){() →* asy::Future<dynamic>*});
+      return func.call<dynamic>(42);
+    }).call());
     function testStream1() → asy::Stream<core::int*>* async* {
-      yield await func<core::int*>(42){(core::int*) →* FutureOr<core::int*>*};
+      yield await func.call<core::int*>(42);
     }
-    self::expectList(<dynamic>[42], await testStream1(){() →* asy::Stream<core::int*>*}.{asy::Stream::toList}(){() →* asy::Future<core::List<core::int*>*>*});
+    self::expectList(<dynamic>[42], await testStream1.call().{asy::Stream::toList}());
     function testStream2() → asy::Stream<core::int*>* async* {
-      yield* await func<asy::Stream<core::int*>*>(self::intStream()){(asy::Stream<core::int*>*) →* FutureOr<asy::Stream<core::int*>*>*};
+      yield* await func.call<asy::Stream<core::int*>*>(self::intStream());
     }
-    self::expectList(<dynamic>[42], await testStream2(){() →* asy::Stream<core::int*>*}.{asy::Stream::toList}(){() →* asy::Future<core::List<core::int*>*>*});
+    self::expectList(<dynamic>[42], await testStream2.call().{asy::Stream::toList}());
   }
 }
 static method future<T extends core::Object* = dynamic>(self::future::T* value) → FutureOr<self::future::T*>* async 
@@ -230,7 +230,7 @@
   yield 42;
 }
 static method main() → dynamic async {
-  for (core::int* i = 0; i.{core::num::<}(11){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (core::int* i = 0; i.{core::num::<}(11); i = i.{core::num::+}(1)) {
     await self::staticMembers();
     await self::topLevelMembers();
     await self::instanceMembers();
@@ -241,15 +241,15 @@
   }
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method expectList(core::List<dynamic>* expected, core::List<dynamic>* actual) → dynamic {
-  if(!(expected.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} actual.{core::List::length}{core::int*})) {
+  if(!expected.{core::List::length}.{core::num::==}(actual.{core::List::length})) {
     throw "Expected ${expected}, actual ${actual}";
   }
-  for (core::int* i = 0; i.{core::num::<}(expected.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    self::expect(expected.{core::List::[]}(i){(core::int*) →* dynamic}, actual.{core::List::[]}(i){(core::int*) →* dynamic});
+  for (core::int* i = 0; i.{core::num::<}(expected.{core::List::length}); i = i.{core::num::+}(1)) {
+    self::expect(expected.{core::List::[]}(i), actual.{core::List::[]}(i));
   }
 }
 
diff --git a/pkg/front_end/testcases/general/await_complex.dart.weak.transformed.expect b/pkg/front_end/testcases/general/await_complex.dart.weak.transformed.expect
index 42aed06..48306e5 100644
--- a/pkg/front_end/testcases/general/await_complex.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/await_complex.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
   static method staticFoo(core::int* param) → core::int*
     return param;
   get getter() → core::int*
-    return this.{self::C::field}{core::int*};
+    return this.{self::C::field};
   set setter(dynamic val) → void {
     this.{self::C::field} = val as{TypeError,ForDynamic} core::int*;
   }
@@ -46,7 +46,7 @@
   on dynamic catch(final dynamic _) {
     return true;
   }
-})(){() →* core::bool*};
+}).call();
 static method topLevelFoo(core::int* param) → core::int*
   return 1;
 static get topLevelGetter() → core::int*
@@ -77,27 +77,27 @@
       {
         :async_temporary_0 = self::C::staticField;
         [yield] let dynamic #t1 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, a);
         :async_temporary_1 = self::C::staticField = 1;
         [yield] let dynamic #t2 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* f = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* f = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, f);
         :async_temporary_2 = self::C::staticGetter;
         [yield] let dynamic #t3 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, b);
         :async_temporary_3 = self::C::staticSetter = 1;
         [yield] let dynamic #t4 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, c);
         :async_temporary_4 = self::C::staticFoo(2);
         [yield] let dynamic #t5 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(3, d);
-        :async_temporary_5 = self::C::staticField.{core::num::+}(self::C::staticGetter){(core::num*) →* core::int*}.{core::num::+}(self::C::staticSetter = 1){(core::num*) →* core::int*}.{core::num::+}(self::C::staticFoo(1)){(core::num*) →* core::int*};
+        :async_temporary_5 = self::C::staticField.{core::num::+}(self::C::staticGetter).{core::num::+}(self::C::staticSetter = 1).{core::num::+}(self::C::staticFoo(1));
         [yield] let dynamic #t6 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_5).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_5).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(5, e);
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
@@ -132,23 +132,23 @@
       {
         :async_temporary_0 = self::globalVariable;
         [yield] let dynamic #t7 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, a);
         :async_temporary_1 = self::topLevelGetter;
         [yield] let dynamic #t8 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, b);
         :async_temporary_2 = self::topLevelSetter = 1;
         [yield] let dynamic #t9 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, c);
         :async_temporary_3 = self::topLevelFoo(1);
         [yield] let dynamic #t10 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, d);
-        :async_temporary_4 = self::globalVariable.{core::num::+}(self::topLevelGetter){(core::num*) →* core::int*}.{core::num::+}(self::topLevelSetter = 1){(core::num*) →* core::int*}.{core::num::+}(self::topLevelFoo(1)){(core::num*) →* core::int*};
+        :async_temporary_4 = self::globalVariable.{core::num::+}(self::topLevelGetter).{core::num::+}(self::topLevelSetter = 1).{core::num::+}(self::topLevelFoo(1));
         [yield] let dynamic #t11 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(5, e);
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
@@ -182,25 +182,25 @@
       #L3:
       {
         self::C* inst = new self::C::•();
-        :async_temporary_0 = inst.{self::C::field}{core::int*};
+        :async_temporary_0 = inst.{self::C::field};
         [yield] let dynamic #t12 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, a);
-        :async_temporary_1 = inst.{self::C::getter}{core::int*};
+        :async_temporary_1 = inst.{self::C::getter};
         [yield] let dynamic #t13 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, b);
         :async_temporary_2 = inst.{self::C::setter} = 1;
         [yield] let dynamic #t14 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, c);
-        :async_temporary_3 = inst.{self::C::foo}(1){(core::int*) →* core::int*};
+        :async_temporary_3 = inst.{self::C::foo}(1);
         [yield] let dynamic #t15 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, d);
-        :async_temporary_4 = inst.{self::C::field}{core::int*}.{core::num::+}(inst.{self::C::getter}{core::int*}){(core::num*) →* core::int*}.{core::num::+}(inst.{self::C::setter} = 1){(core::num*) →* core::int*}.{core::num::+}(inst.{self::C::foo}(1){(core::int*) →* core::int*}){(core::num*) →* core::int*};
+        :async_temporary_4 = inst.{self::C::field}.{core::num::+}(inst.{self::C::getter}).{core::num::+}(inst.{self::C::setter} = 1).{core::num::+}(inst.{self::C::foo}(1));
         [yield] let dynamic #t16 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(5, e);
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
@@ -237,22 +237,22 @@
         [yield] let dynamic #t17 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
         :async_temporary_0 = "${_in::unsafeCast<core::int*>(:async_temporary_0)} ${:result} ";
         [yield] let dynamic #t18 = asy::_awaitHelper("someString", :async_op_then, :async_op_error, :async_op) in null;
-        core::String* a = _in::unsafeCast<core::String*>(:async_temporary_0).{core::String::+}(_in::unsafeCast<core::String*>(:result)){(core::String*) →* core::String*};
+        core::String* a = _in::unsafeCast<core::String*>(:async_temporary_0).{core::String::+}(_in::unsafeCast<core::String*>(:result));
         self::expect("1 1 someString", a);
         self::C* c = new self::C::•();
-        :async_temporary_1 = c.{self::C::field}{core::int*};
+        :async_temporary_1 = c.{self::C::field};
         [yield] let dynamic #t19 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         core::int* cnt = 2;
         core::List<core::int*>* b = core::_GrowableList::_literal3<core::int*>(1, 2, 3);
         :async_temporary_3 = b;
         :async_temporary_2 = cnt;
         [yield] let dynamic #t20 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        _in::unsafeCast<core::List<core::int*>*>(:async_temporary_3).{core::List::[]=}(_in::unsafeCast<core::int*>(:async_temporary_2), :result as{TypeError,ForDynamic} core::int*){(core::int*, core::int*) →* void};
-        self::expect(1, b.{core::List::[]}(cnt){(core::int*) →* core::int*});
-        :async_temporary_4 = b.{core::List::[]}(0){(core::int*) →* core::int*};
+        _in::unsafeCast<core::List<core::int*>*>(:async_temporary_3).{core::List::[]=}(_in::unsafeCast<core::int*>(:async_temporary_2), :result as{TypeError,ForDynamic} core::int*);
+        self::expect(1, b.{core::List::[]}(cnt));
+        :async_temporary_4 = b.{core::List::[]}(0);
         [yield] let dynamic #t21 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
         self::expect(2, e);
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
@@ -360,33 +360,33 @@
             {
               final <T extends core::Object* = dynamic>(T*) →* FutureOr<T*>* func = #t26 as{TypeError} <T extends core::Object* = dynamic>(T*) →* FutureOr<T*>*;
               assert {
-                [yield] let dynamic #t27 = asy::_awaitHelper(func<core::bool*>(true){(core::bool*) →* FutureOr<core::bool*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                [yield] let dynamic #t27 = asy::_awaitHelper(func.call<core::bool*>(true), :async_op_then, :async_op_error, :async_op) in null;
                 assert(_in::unsafeCast<core::bool*>(:result));
               }
               assert {
                 if(self::id<core::bool*>(true) as{TypeError} core::bool*)
                   ;
                 else {
-                  [yield] let dynamic #t28 = asy::_awaitHelper(func<core::String*>("message"){(core::String*) →* FutureOr<core::String*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                  [yield] let dynamic #t28 = asy::_awaitHelper(func.call<core::String*>("message"), :async_op_then, :async_op_error, :async_op) in null;
                   assert(false, _in::unsafeCast<core::String*>(:result));
                 }
               }
               assert {
-                [yield] let dynamic #t29 = asy::_awaitHelper(func<core::bool*>(true){(core::bool*) →* FutureOr<core::bool*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                [yield] let dynamic #t29 = asy::_awaitHelper(func.call<core::bool*>(true), :async_op_then, :async_op_error, :async_op) in null;
                 if(_in::unsafeCast<core::bool*>(:result))
                   ;
                 else {
-                  [yield] let dynamic #t30 = asy::_awaitHelper(func<core::String*>("message"){(core::String*) →* FutureOr<core::String*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                  [yield] let dynamic #t30 = asy::_awaitHelper(func.call<core::String*>("message"), :async_op_then, :async_op_error, :async_op) in null;
                   assert(false, _in::unsafeCast<core::String*>(:result));
                 }
               }
               try {
                 assert {
-                  [yield] let dynamic #t31 = asy::_awaitHelper(func<core::bool*>(false){(core::bool*) →* FutureOr<core::bool*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                  [yield] let dynamic #t31 = asy::_awaitHelper(func.call<core::bool*>(false), :async_op_then, :async_op_error, :async_op) in null;
                   if(_in::unsafeCast<core::bool*>(:result))
                     ;
                   else {
-                    [yield] let dynamic #t32 = asy::_awaitHelper(func<core::String*>("message"){(core::String*) →* FutureOr<core::String*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                    [yield] let dynamic #t32 = asy::_awaitHelper(func.call<core::String*>("message"), :async_op_then, :async_op_error, :async_op) in null;
                     assert(false, _in::unsafeCast<core::String*>(:result));
                   }
                 }
@@ -394,7 +394,7 @@
                   throw "Didn't throw";
               }
               on core::AssertionError* catch(final core::AssertionError* e) {
-                self::expect("message", e.{core::AssertionError::message}{core::Object*});
+                self::expect("message", e.{core::AssertionError::message});
               }
             }
           }
@@ -447,18 +447,18 @@
                   core::int* i;
                   if(#t34) {
                     #t34 = false;
-                    [yield] let dynamic #t36 = asy::_awaitHelper(func<core::int*>(0){(core::int*) →* FutureOr<core::int*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                    [yield] let dynamic #t36 = asy::_awaitHelper(func.call<core::int*>(0), :async_op_then, :async_op_error, :async_op) in null;
                     i = _in::unsafeCast<core::int*>(:result);
                   }
                   else {
                     i = #t35;
-                    [yield] let dynamic #t37 = asy::_awaitHelper(func<core::int*>(let final core::int* #t38 = i in let final core::int* #t39 = i = #t38.{core::num::+}(1){(core::num*) →* core::int*} in #t38){(core::int*) →* FutureOr<core::int*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                    [yield] let dynamic #t37 = asy::_awaitHelper(func.call<core::int*>(let final core::int* #t38 = i in let final core::int* #t39 = i = #t38.{core::num::+}(1) in #t38), :async_op_then, :async_op_error, :async_op) in null;
                     _in::unsafeCast<core::int*>(:result);
                   }
-                  [yield] let dynamic #t40 = asy::_awaitHelper(func<core::bool*>(i.{core::num::<}(5){(core::num*) →* core::bool*}){(core::bool*) →* FutureOr<core::bool*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                  [yield] let dynamic #t40 = asy::_awaitHelper(func.call<core::bool*>(i.{core::num::<}(5)), :async_op_then, :async_op_error, :async_op) in null;
                   if(_in::unsafeCast<core::bool*>(:result)) {
                     {
-                      c = c.{core::num::+}(1){(core::num*) →* core::int*};
+                      c = c.{core::num::+}(1);
                     }
                     #t35 = i;
                   }
@@ -470,21 +470,21 @@
               c = 0;
               #L9:
               while (true) {
-                [yield] let dynamic #t41 = asy::_awaitHelper(func<core::bool*>(c.{core::num::<}(5){(core::num*) →* core::bool*}){(core::bool*) →* FutureOr<core::bool*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                [yield] let dynamic #t41 = asy::_awaitHelper(func.call<core::bool*>(c.{core::num::<}(5)), :async_op_then, :async_op_error, :async_op) in null;
                 if(_in::unsafeCast<core::bool*>(:result))
-                  c = c.{core::num::+}(1){(core::num*) →* core::int*};
+                  c = c.{core::num::+}(1);
                 else
                   break #L9;
               }
               self::expect(5, c);
               c = 0;
               do {
-                c = c.{core::num::+}(1){(core::num*) →* core::int*};
-                [yield] let dynamic #t42 = asy::_awaitHelper(func<core::bool*>(c.{core::num::<}(5){(core::num*) →* core::bool*}){(core::bool*) →* FutureOr<core::bool*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                c = c.{core::num::+}(1);
+                [yield] let dynamic #t42 = asy::_awaitHelper(func.call<core::bool*>(c.{core::num::<}(5)), :async_op_then, :async_op_error, :async_op) in null;
               }
               while (_in::unsafeCast<core::bool*>(:result))
               self::expect(5, c);
-              [yield] let dynamic #t43 = asy::_awaitHelper(func<core::bool*>(c =={core::num::==}{(core::Object*) →* core::bool*} 5){(core::bool*) →* FutureOr<core::bool*>*}, :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t43 = asy::_awaitHelper(func.call<core::bool*>(c.{core::num::==}(5)), :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool*>(:result)) {
                 self::expect(5, c);
               }
@@ -492,7 +492,7 @@
                 throw "unreachable";
               }
               try {
-                [yield] let dynamic #t44 = asy::_awaitHelper(func<core::String*>("string"){(core::String*) →* FutureOr<core::String*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                [yield] let dynamic #t44 = asy::_awaitHelper(func.call<core::String*>("string"), :async_op_then, :async_op_error, :async_op) in null;
                 throw _in::unsafeCast<core::String*>(:result);
               }
               on core::String* catch(no-exception-var) {
@@ -511,27 +511,27 @@
                     }
                     on dynamic catch(final dynamic e) {
                       self::expect("string", e);
-                      [yield] let dynamic #t46 = asy::_awaitHelper(func<core::int*>(0){(core::int*) →* FutureOr<core::int*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                      [yield] let dynamic #t46 = asy::_awaitHelper(func.call<core::int*>(0), :async_op_then, :async_op_error, :async_op) in null;
                       self::expect(0, _in::unsafeCast<core::int*>(:result));
                       rethrow;
                     }
                   finally {
-                    [yield] let dynamic #t47 = asy::_awaitHelper(func<core::int*>(0){(core::int*) →* FutureOr<core::int*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                    [yield] let dynamic #t47 = asy::_awaitHelper(func.call<core::int*>(0), :async_op_then, :async_op_error, :async_op) in null;
                     self::expect(0, _in::unsafeCast<core::int*>(:result));
                   }
                 }
                 on dynamic catch(final dynamic e) {
-                  [yield] let dynamic #t48 = asy::_awaitHelper(func<core::int*>(0){(core::int*) →* FutureOr<core::int*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                  [yield] let dynamic #t48 = asy::_awaitHelper(func.call<core::int*>(0), :async_op_then, :async_op_error, :async_op) in null;
                   self::expect(0, _in::unsafeCast<core::int*>(:result));
                   self::expect("string", e);
                 }
               finally {
-                [yield] let dynamic #t49 = asy::_awaitHelper(func<core::int*>(0){(core::int*) →* FutureOr<core::int*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                [yield] let dynamic #t49 = asy::_awaitHelper(func.call<core::int*>(0), :async_op_then, :async_op_error, :async_op) in null;
                 self::expect(0, _in::unsafeCast<core::int*>(:result));
               }
               #L10:
               {
-                [yield] let dynamic #t50 = asy::_awaitHelper(func<core::int*>(2){(core::int*) →* FutureOr<core::int*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                [yield] let dynamic #t50 = asy::_awaitHelper(func.call<core::int*>(2), :async_op_then, :async_op_error, :async_op) in null;
                 switch(_in::unsafeCast<core::int*>(:result)) {
                   #L11:
                   case #C3:
@@ -558,7 +558,7 @@
                   try {
                     #L13:
                     {
-                      [yield] let dynamic #t52 = asy::_awaitHelper(func<dynamic>(42){(dynamic) →* FutureOr<dynamic>*}, :async_op_then, :async_op_error, :async_op) in null;
+                      [yield] let dynamic #t52 = asy::_awaitHelper(func.call<dynamic>(42), :async_op_then, :async_op_error, :async_op) in null;
                       :return_value = :result;
                       break #L13;
                     }
@@ -573,7 +573,7 @@
                 :async_op.call();
                 :is_sync = true;
                 return :async_future;
-              })(){() →* asy::Future<dynamic>*}, :async_op_then, :async_op_error, :async_op) in null;
+              }).call(), :async_op_then, :async_op_error, :async_op) in null;
               self::expect(42, :result);
               [yield] let dynamic #t53 = asy::_awaitHelper((() → asy::Future<dynamic>* /* originally async */ {
                 final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
@@ -587,7 +587,7 @@
                   try {
                     #L14:
                     {
-                      :return_value = func<dynamic>(42){(dynamic) →* FutureOr<dynamic>*};
+                      :return_value = func.call<dynamic>(42);
                       break #L14;
                     }
                     asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
@@ -601,7 +601,7 @@
                 :async_op.call();
                 :is_sync = true;
                 return :async_future;
-              })(){() →* asy::Future<dynamic>*}, :async_op_then, :async_op_error, :async_op) in null;
+              }).call(), :async_op_then, :async_op_error, :async_op) in null;
               self::expect(42, :result);
               function testStream1() → asy::Stream<core::int*>* /* originally async* */ {
                 asy::_AsyncStarStreamController<core::int*>* :controller;
@@ -617,7 +617,7 @@
                     try {
                       #L15:
                       {
-                        [yield] let dynamic #t54 = asy::_awaitHelper(func<core::int*>(42){(core::int*) →* FutureOr<core::int*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                        [yield] let dynamic #t54 = asy::_awaitHelper(func.call<core::int*>(42), :async_op_then, :async_op_error, :async_op) in null;
                         if(:controller.{asy::_AsyncStarStreamController::add}(_in::unsafeCast<core::int*>(:result)))
                           return null;
                         else
@@ -638,8 +638,8 @@
                 return :controller_stream;
               }
               :async_temporary_0 = core::_GrowableList::_literal1<dynamic>(42);
-              [yield] let dynamic #t55 = asy::_awaitHelper(testStream1(){() →* asy::Stream<core::int*>*}.{asy::Stream::toList}(){() →* asy::Future<core::List<core::int*>*>*}, :async_op_then, :async_op_error, :async_op) in null;
-              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_0), _in::unsafeCast<core::List<core::int*>*>(:result));
+              [yield] let dynamic #t55 = asy::_awaitHelper(testStream1.call().{asy::Stream::toList}(), :async_op_then, :async_op_error, :async_op) in null;
+              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_0), _in::unsafeCast<core::List<core::int*>>(:result));
               function testStream2() → asy::Stream<core::int*>* /* originally async* */ {
                 asy::_AsyncStarStreamController<core::int*>* :controller;
                 dynamic :controller_stream;
@@ -654,7 +654,7 @@
                     try {
                       #L16:
                       {
-                        [yield] let dynamic #t56 = asy::_awaitHelper(func<asy::Stream<core::int*>*>(self::intStream()){(asy::Stream<core::int*>*) →* FutureOr<asy::Stream<core::int*>*>*}, :async_op_then, :async_op_error, :async_op) in null;
+                        [yield] let dynamic #t56 = asy::_awaitHelper(func.call<asy::Stream<core::int*>*>(self::intStream()), :async_op_then, :async_op_error, :async_op) in null;
                         if(:controller.{asy::_AsyncStarStreamController::addStream}(_in::unsafeCast<asy::Stream<core::int*>*>(:result)))
                           return null;
                         else
@@ -675,8 +675,8 @@
                 return :controller_stream;
               }
               :async_temporary_1 = core::_GrowableList::_literal1<dynamic>(42);
-              [yield] let dynamic #t57 = asy::_awaitHelper(testStream2(){() →* asy::Stream<core::int*>*}.{asy::Stream::toList}(){() →* asy::Future<core::List<core::int*>*>*}, :async_op_then, :async_op_error, :async_op) in null;
-              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_1), _in::unsafeCast<core::List<core::int*>*>(:result));
+              [yield] let dynamic #t57 = asy::_awaitHelper(testStream2.call().{asy::Stream::toList}(), :async_op_then, :async_op_error, :async_op) in null;
+              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_1), _in::unsafeCast<core::List<core::int*>>(:result));
             }
           }
         }
@@ -768,7 +768,7 @@
     try {
       #L19:
       {
-        for (core::int* i = 0; i.{core::num::<}(11){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+        for (core::int* i = 0; i.{core::num::<}(11); i = i.{core::num::+}(1)) {
           [yield] let dynamic #t58 = asy::_awaitHelper(self::staticMembers(), :async_op_then, :async_op_error, :async_op) in null;
           :result;
           [yield] let dynamic #t59 = asy::_awaitHelper(self::topLevelMembers(), :async_op_then, :async_op_error, :async_op) in null;
@@ -798,15 +798,15 @@
   return :async_future;
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method expectList(core::List<dynamic>* expected, core::List<dynamic>* actual) → dynamic {
-  if(!(expected.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} actual.{core::List::length}{core::int*})) {
+  if(!expected.{core::List::length}.{core::num::==}(actual.{core::List::length})) {
     throw "Expected ${expected}, actual ${actual}";
   }
-  for (core::int* i = 0; i.{core::num::<}(expected.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    self::expect(expected.{core::List::[]}(i){(core::int*) →* dynamic}, actual.{core::List::[]}(i){(core::int*) →* dynamic});
+  for (core::int* i = 0; i.{core::num::<}(expected.{core::List::length}); i = i.{core::num::+}(1)) {
+    self::expect(expected.{core::List::[]}(i), actual.{core::List::[]}(i));
   }
 }
 
diff --git a/pkg/front_end/testcases/general/await_in_cascade.dart.weak.expect b/pkg/front_end/testcases/general/await_in_cascade.dart.weak.expect
index 8a57698..6042b1f 100644
--- a/pkg/front_end/testcases/general/await_in_cascade.dart.weak.expect
+++ b/pkg/front_end/testcases/general/await_in_cascade.dart.weak.expect
@@ -11,7 +11,7 @@
     ;
   method m() → asy::Future<core::List<core::int*>*>* async 
     return let final core::List<core::int*>* #t1 = <core::int*>[] in block {
-      #t1.{core::List::add}(await this.{self::C::_m}(){() →* asy::Future<core::int*>*}){(core::int*) →* void};
+      #t1.{core::List::add}(await this.{self::C::_m}());
     } =>#t1;
   method _m() → asy::Future<core::int*>* async 
     return 42;
@@ -27,9 +27,9 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic async {
-  self::expect(42, (await new self::C::•().{self::C::m}(){() →* asy::Future<core::List<core::int*>*>*}).{core::Iterable::first}{core::int*});
+  self::expect(42, (await new self::C::•().{self::C::m}()).{core::Iterable::first});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/general/await_in_cascade.dart.weak.transformed.expect b/pkg/front_end/testcases/general/await_in_cascade.dart.weak.transformed.expect
index 744e8a3..c96fec3e 100644
--- a/pkg/front_end/testcases/general/await_in_cascade.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/await_in_cascade.dart.weak.transformed.expect
@@ -24,8 +24,8 @@
         #L1:
         {
           final core::List<core::int*>* #t1 = core::_GrowableList::•<core::int*>(0);
-          [yield] let dynamic #t2 = asy::_awaitHelper(this.{self::C::_m}(){() →* asy::Future<core::int*>*}, :async_op_then, :async_op_error, :async_op) in null;
-          #t1.{core::List::add}(_in::unsafeCast<core::int*>(:result)){(core::int*) →* void};
+          [yield] let dynamic #t2 = asy::_awaitHelper(this.{self::C::_m}(), :async_op_then, :async_op_error, :async_op) in null;
+          #t1.{core::List::add}(_in::unsafeCast<core::int*>(:result));
           :return_value = block {} =>#t1;
           break #L1;
         }
@@ -92,8 +92,8 @@
     try {
       #L3:
       {
-        [yield] let dynamic #t3 = asy::_awaitHelper(new self::C::•().{self::C::m}(){() →* asy::Future<core::List<core::int*>*>*}, :async_op_then, :async_op_error, :async_op) in null;
-        self::expect(42, _in::unsafeCast<core::List<core::int*>*>(:result).{core::Iterable::first}{core::int*});
+        [yield] let dynamic #t3 = asy::_awaitHelper(new self::C::•().{self::C::m}(), :async_op_then, :async_op_error, :async_op) in null;
+        self::expect(42, _in::unsafeCast<core::List<core::int*>*>(:result).{core::Iterable::first});
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
       return;
@@ -108,6 +108,6 @@
   return :async_future;
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/general/bad_store.dart.weak.expect b/pkg/front_end/testcases/general/bad_store.dart.weak.expect
index f25c04b..0567f70 100644
--- a/pkg/front_end/testcases/general/bad_store.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bad_store.dart.weak.expect
@@ -23,12 +23,12 @@
 static method use(dynamic x) → void {}
 static method main(core::List<core::String*>* args) → dynamic {
   dynamic foo = self::identity(new self::Foo::•());
-  if(args.{core::List::length}{core::int*}.{core::num::>}(1){(core::num*) →* core::bool*}) {
-    foo{dynamic}.field = "string";
-    dynamic first = foo{dynamic}.field;
+  if(args.{core::List::length}.{core::num::>}(1)) {
+    foo.field = "string";
+    dynamic first = foo.field;
     self::use(first);
-    foo{dynamic}.noField = "string";
-    dynamic second = foo{dynamic}.noField;
+    foo.noField = "string";
+    dynamic second = foo.noField;
     self::use(second);
   }
 }
diff --git a/pkg/front_end/testcases/general/bad_store.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bad_store.dart.weak.transformed.expect
index f25c04b..0567f70 100644
--- a/pkg/front_end/testcases/general/bad_store.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bad_store.dart.weak.transformed.expect
@@ -23,12 +23,12 @@
 static method use(dynamic x) → void {}
 static method main(core::List<core::String*>* args) → dynamic {
   dynamic foo = self::identity(new self::Foo::•());
-  if(args.{core::List::length}{core::int*}.{core::num::>}(1){(core::num*) →* core::bool*}) {
-    foo{dynamic}.field = "string";
-    dynamic first = foo{dynamic}.field;
+  if(args.{core::List::length}.{core::num::>}(1)) {
+    foo.field = "string";
+    dynamic first = foo.field;
     self::use(first);
-    foo{dynamic}.noField = "string";
-    dynamic second = foo{dynamic}.noField;
+    foo.noField = "string";
+    dynamic second = foo.noField;
     self::use(second);
   }
 }
diff --git a/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.weak.expect b/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.weak.expect
index 8ca1bc7..cd1a183 100644
--- a/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.weak.expect
@@ -37,6 +37,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method baz() → dynamic {
-  self::B::foo<core::Object*>().{self::A::bar}<core::String*>(){() →* dynamic};
+  self::B::foo<core::Object*>().{self::A::bar}<core::String*>();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.weak.transformed.expect
index 8ca1bc7..cd1a183 100644
--- a/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.weak.transformed.expect
@@ -37,6 +37,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method baz() → dynamic {
-  self::B::foo<core::Object*>().{self::A::bar}<core::String*>(){() →* dynamic};
+  self::B::foo<core::Object*>().{self::A::bar}<core::String*>();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bug21938.dart.weak.expect b/pkg/front_end/testcases/general/bug21938.dart.weak.expect
index 0fce68f..5a51904 100644
--- a/pkg/front_end/testcases/general/bug21938.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bug21938.dart.weak.expect
@@ -36,13 +36,13 @@
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   x(3);
    ^";
-  f(5, 2);
+  f.call(5, 2);
   invalid-expression "pkg/front_end/testcases/general/bug21938.dart:11:5: Error: The method 'call' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   x.call();
     ^^^^";
   f.call;
-  f(5, 2);
+  f.call(5, 2);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bug21938.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug21938.dart.weak.transformed.expect
index 0fce68f..5a51904 100644
--- a/pkg/front_end/testcases/general/bug21938.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug21938.dart.weak.transformed.expect
@@ -36,13 +36,13 @@
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   x(3);
    ^";
-  f(5, 2);
+  f.call(5, 2);
   invalid-expression "pkg/front_end/testcases/general/bug21938.dart:11:5: Error: The method 'call' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   x.call();
     ^^^^";
   f.call;
-  f(5, 2);
+  f.call(5, 2);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bug32414a.dart.weak.expect b/pkg/front_end/testcases/general/bug32414a.dart.weak.expect
index a688e6b..4176ad4 100644
--- a/pkg/front_end/testcases/general/bug32414a.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bug32414a.dart.weak.expect
@@ -11,7 +11,7 @@
 
 static method test() → void {
   dynamic a = 5;
-  core::String* b = a.{core::Object::toString}(){() →* core::String*};
+  core::String* b = a.{core::Object::toString}();
   b = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/bug32414a.dart:10:7: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   b = 42;
       ^" in 42 as{TypeError} core::String*;
diff --git a/pkg/front_end/testcases/general/bug32414a.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug32414a.dart.weak.transformed.expect
index a688e6b..4176ad4 100644
--- a/pkg/front_end/testcases/general/bug32414a.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug32414a.dart.weak.transformed.expect
@@ -11,7 +11,7 @@
 
 static method test() → void {
   dynamic a = 5;
-  core::String* b = a.{core::Object::toString}(){() →* core::String*};
+  core::String* b = a.{core::Object::toString}();
   b = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/bug32414a.dart:10:7: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   b = 42;
       ^" in 42 as{TypeError} core::String*;
diff --git a/pkg/front_end/testcases/general/bug32414b.dart.weak.expect b/pkg/front_end/testcases/general/bug32414b.dart.weak.expect
index f09b3fe..1422239 100644
--- a/pkg/front_end/testcases/general/bug32414b.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bug32414b.dart.weak.expect
@@ -4,6 +4,6 @@
 
 static method test() → void {
   core::List<dynamic>* l = <dynamic>[1, "hello"];
-  core::List<core::String*>* l2 = l.{core::Iterable::map}<core::String*>((dynamic element) → core::String* => element.{core::Object::toString}(){() →* core::String*}){((dynamic) →* core::String*) →* core::Iterable<core::String*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
+  core::List<core::String*>* l2 = l.{core::Iterable::map}<core::String*>((dynamic element) → core::String* => element.{core::Object::toString}()).{core::Iterable::toList}();
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general/bug32414b.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug32414b.dart.weak.transformed.expect
index 474232b..6378088 100644
--- a/pkg/front_end/testcases/general/bug32414b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug32414b.dart.weak.transformed.expect
@@ -4,6 +4,6 @@
 
 static method test() → void {
   core::List<dynamic>* l = core::_GrowableList::_literal2<dynamic>(1, "hello");
-  core::List<core::String*>* l2 = l.{core::Iterable::map}<core::String*>((dynamic element) → core::String* => element.{core::Object::toString}(){() →* core::String*}){((dynamic) →* core::String*) →* core::Iterable<core::String*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
+  core::List<core::String*>* l2 = l.{core::Iterable::map}<core::String*>((dynamic element) → core::String* => element.{core::Object::toString}()).{core::Iterable::toList}();
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general/bug32426.dart.weak.expect b/pkg/front_end/testcases/general/bug32426.dart.weak.expect
index 5a79b65..cb6d7d6 100644
--- a/pkg/front_end/testcases/general/bug32426.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bug32426.dart.weak.expect
@@ -36,7 +36,7 @@
 }
 static method main() → dynamic {
   self::I* i = new self::C::•();
-  ([core::int*]) →* void f = (let final self::I* #t1 = i in #t1 == null ?{() →* void} null : #t1.{self::I::call}) as{TypeError} ([core::int*]) →* void;
+  ([core::int*]) →* void f = (let final self::I* #t1 = i in #t1.==(null) ?{() →* void} null : #t1.{self::I::call}) as{TypeError} ([core::int*]) →* void;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/bug32426.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug32426.dart.weak.transformed.expect
index 5a79b65..cb6d7d6 100644
--- a/pkg/front_end/testcases/general/bug32426.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug32426.dart.weak.transformed.expect
@@ -36,7 +36,7 @@
 }
 static method main() → dynamic {
   self::I* i = new self::C::•();
-  ([core::int*]) →* void f = (let final self::I* #t1 = i in #t1 == null ?{() →* void} null : #t1.{self::I::call}) as{TypeError} ([core::int*]) →* void;
+  ([core::int*]) →* void f = (let final self::I* #t1 = i in #t1.==(null) ?{() →* void} null : #t1.{self::I::call}) as{TypeError} ([core::int*]) →* void;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/bug32629.dart.weak.expect b/pkg/front_end/testcases/general/bug32629.dart.weak.expect
index 4965806..15d74a5 100644
--- a/pkg/front_end/testcases/general/bug32629.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bug32629.dart.weak.expect
@@ -32,6 +32,6 @@
 static method test() → void {
   self::foo<core::String*>(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/bug32629.dart:16:19: Error: The argument type 'dynamic Function(dynamic, dynamic)' can't be assigned to the parameter type 'String Function(String, dynamic)'.
   foo<String>(new A());
-                  ^" in (let final self::A* #t2 = new self::A::•() in #t2 == null ?{(dynamic, dynamic) →* dynamic} null : #t2.{self::A::call}) as{TypeError} (core::String*, dynamic) →* core::String*);
+                  ^" in (let final self::A* #t2 = new self::A::•() in #t2.==(null) ?{(dynamic, dynamic) →* dynamic} null : #t2.{self::A::call}) as{TypeError} (core::String*, dynamic) →* core::String*);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bug32629.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug32629.dart.weak.transformed.expect
index 4965806..15d74a5 100644
--- a/pkg/front_end/testcases/general/bug32629.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug32629.dart.weak.transformed.expect
@@ -32,6 +32,6 @@
 static method test() → void {
   self::foo<core::String*>(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/bug32629.dart:16:19: Error: The argument type 'dynamic Function(dynamic, dynamic)' can't be assigned to the parameter type 'String Function(String, dynamic)'.
   foo<String>(new A());
-                  ^" in (let final self::A* #t2 = new self::A::•() in #t2 == null ?{(dynamic, dynamic) →* dynamic} null : #t2.{self::A::call}) as{TypeError} (core::String*, dynamic) →* core::String*);
+                  ^" in (let final self::A* #t2 = new self::A::•() in #t2.==(null) ?{(dynamic, dynamic) →* dynamic} null : #t2.{self::A::call}) as{TypeError} (core::String*, dynamic) →* core::String*);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bug33099.dart.weak.expect b/pkg/front_end/testcases/general/bug33099.dart.weak.expect
index 5df3838..7fb694a 100644
--- a/pkg/front_end/testcases/general/bug33099.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bug33099.dart.weak.expect
@@ -62,12 +62,12 @@
 static const field self::_FailingTest* failingTest = #C1;
 static method main() → dynamic {
   mir::ClassMirror* classMirror = mir::reflectClass(#C2);
-  classMirror.{mir::ClassMirror::instanceMembers}{core::Map<core::Symbol*, mir::MethodMirror*>*}.{core::Map::forEach}((core::Symbol* symbol, mir::MethodMirror* memberMirror) → Null {
-    if(memberMirror.{mir::DeclarationMirror::simpleName}{core::Symbol*} =={core::Symbol::==}{(core::Object*) →* core::bool*} (#C3)) {
+  classMirror.{mir::ClassMirror::instanceMembers}.{core::Map::forEach}((core::Symbol* symbol, mir::MethodMirror* memberMirror) → Null {
+    if(memberMirror.{mir::DeclarationMirror::simpleName}.{core::Symbol::==}(#C3)) {
       core::print(memberMirror);
       core::print(self::_hasFailingTestAnnotation(memberMirror));
     }
-  }){((core::Symbol*, mir::MethodMirror*) →* void) →* void};
+  });
 }
 static method _hasFailingTestAnnotation(mir::MethodMirror* method) → core::bool* {
   core::bool* r = self::_hasAnnotationInstance(method, #C1);
@@ -75,10 +75,10 @@
   return r;
 }
 static method _hasAnnotationInstance(mir::DeclarationMirror* declaration, dynamic instance) → core::bool*
-  return declaration.{mir::DeclarationMirror::metadata}{core::List<mir::InstanceMirror*>*}.{core::Iterable::any}((mir::InstanceMirror* annotation) → core::bool* {
-    core::print("annotation: ${annotation.{mir::InstanceMirror::reflectee}{dynamic}}");
-    return core::identical(annotation.{mir::InstanceMirror::reflectee}{dynamic}, instance);
-  }){((mir::InstanceMirror*) →* core::bool*) →* core::bool*};
+  return declaration.{mir::DeclarationMirror::metadata}.{core::Iterable::any}((mir::InstanceMirror* annotation) → core::bool* {
+    core::print("annotation: ${annotation.{mir::InstanceMirror::reflectee}}");
+    return core::identical(annotation.{mir::InstanceMirror::reflectee}, instance);
+  });
 
 constants  {
   #C1 = self::_FailingTest {}
diff --git a/pkg/front_end/testcases/general/bug33099.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug33099.dart.weak.transformed.expect
index 79f0586..188bd50 100644
--- a/pkg/front_end/testcases/general/bug33099.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug33099.dart.weak.transformed.expect
@@ -62,12 +62,12 @@
 static const field self::_FailingTest* failingTest = #C1;
 static method main() → dynamic {
   mir::ClassMirror* classMirror = mir::reflectClass(#C2);
-  classMirror.{mir::ClassMirror::instanceMembers}{core::Map<core::Symbol*, mir::MethodMirror*>*}.{core::Map::forEach}((core::Symbol* symbol, mir::MethodMirror* memberMirror) → Null {
-    if(memberMirror.{mir::DeclarationMirror::simpleName}{core::Symbol*} =={core::Symbol::==}{(core::Object*) →* core::bool*} (#C3)) {
+  classMirror.{mir::ClassMirror::instanceMembers}.{core::Map::forEach}((core::Symbol* symbol, mir::MethodMirror* memberMirror) → Null {
+    if(memberMirror.{mir::DeclarationMirror::simpleName}.{core::Symbol::==}(#C3)) {
       core::print(memberMirror);
       core::print(self::_hasFailingTestAnnotation(memberMirror));
     }
-  }){((core::Symbol*, mir::MethodMirror*) →* void) →* void};
+  });
 }
 static method _hasFailingTestAnnotation(mir::MethodMirror* method) → core::bool* {
   core::bool* r = self::_hasAnnotationInstance(method, #C1);
@@ -75,10 +75,10 @@
   return r;
 }
 static method _hasAnnotationInstance(mir::DeclarationMirror* declaration, dynamic instance) → core::bool*
-  return declaration.{mir::DeclarationMirror::metadata}{core::List<mir::InstanceMirror*>*}.{core::Iterable::any}((mir::InstanceMirror* annotation) → core::bool* {
-    core::print("annotation: ${annotation.{mir::InstanceMirror::reflectee}{dynamic}}");
-    return core::identical(annotation.{mir::InstanceMirror::reflectee}{dynamic}, instance);
-  }){((mir::InstanceMirror*) →* core::bool*) →* core::bool*};
+  return declaration.{mir::DeclarationMirror::metadata}.{core::Iterable::any}((mir::InstanceMirror* annotation) → core::bool* {
+    core::print("annotation: ${annotation.{mir::InstanceMirror::reflectee}}");
+    return core::identical(annotation.{mir::InstanceMirror::reflectee}, instance);
+  });
 
 constants  {
   #C1 = self::_FailingTest {}
diff --git a/pkg/front_end/testcases/general/bug33196.dart.weak.expect b/pkg/front_end/testcases/general/bug33196.dart.weak.expect
index 306df2a..f76933a 100644
--- a/pkg/front_end/testcases/general/bug33196.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bug33196.dart.weak.expect
@@ -6,7 +6,7 @@
 
 static method main() → dynamic {
   FutureOr<core::String*>* result = self::returnsString();
-  core::print(result.{core::Object::runtimeType}{core::Type*});
+  core::print(result.{core::Object::runtimeType});
 }
 static method returnsString() → FutureOr<core::String*>* async {
   return "oh no";
diff --git a/pkg/front_end/testcases/general/bug33196.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug33196.dart.weak.transformed.expect
index 1121533..ea1347a 100644
--- a/pkg/front_end/testcases/general/bug33196.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug33196.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {
   FutureOr<core::String*>* result = self::returnsString();
-  core::print(result.{core::Object::runtimeType}{core::Type*});
+  core::print(result.{core::Object::runtimeType});
 }
 static method returnsString() → FutureOr<core::String*>* /* originally async */ {
   final asy::_Future<core::String*>* :async_future = new asy::_Future::•<core::String*>();
diff --git a/pkg/front_end/testcases/general/bug33206.dart.weak.expect b/pkg/front_end/testcases/general/bug33206.dart.weak.expect
index b73a7ce..f4075a0 100644
--- a/pkg/front_end/testcases/general/bug33206.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bug33206.dart.weak.expect
@@ -12,7 +12,7 @@
     : self::X::x = x, self::X::y = y, super core::Object::•()
     ;
   method toString() → core::String*
-    return "X(${this.{self::X::x}{dynamic}}, ${this.{self::X::y}{dynamic}})";
+    return "X(${this.{self::X::x}}, ${this.{self::X::y}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -49,8 +49,8 @@
 }
 static method foo() → asy::Future<self::X*>* async {
   return new self::X::•(let final self::Y* #t1 = new self::Y::•() in block {
-    #t1.{self::Y::f}(await self::f1()){(dynamic) →* dynamic};
-    #t1.{self::Y::f}(self::f2()){(dynamic) →* dynamic};
+    #t1.{self::Y::f}(await self::f1());
+    #t1.{self::Y::f}(self::f2());
   } =>#t1, await self::f3());
 }
 static method main() → asy::Future<void>* async {
diff --git a/pkg/front_end/testcases/general/bug33206.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug33206.dart.weak.transformed.expect
index 36aee3f..2ca85ca 100644
--- a/pkg/front_end/testcases/general/bug33206.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug33206.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
     : self::X::x = x, self::X::y = y, super core::Object::•()
     ;
   method toString() → core::String*
-    return "X(${this.{self::X::x}{dynamic}}, ${this.{self::X::y}{dynamic}})";
+    return "X(${this.{self::X::x}}, ${this.{self::X::y}})";
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -112,9 +112,9 @@
       {
         final self::Y* #t1 = new self::Y::•();
         [yield] let dynamic #t2 = asy::_awaitHelper(self::f1(), :async_op_then, :async_op_error, :async_op) in null;
-        #t1.{self::Y::f}(_in::unsafeCast<core::List<core::Object*>*>(:result)){(dynamic) →* dynamic};
+        #t1.{self::Y::f}(_in::unsafeCast<core::List<core::Object*>*>(:result));
         :async_temporary_0 = block {
-          #t1.{self::Y::f}(self::f2()){(dynamic) →* dynamic};
+          #t1.{self::Y::f}(self::f2());
         } =>#t1;
         [yield] let dynamic #t3 = asy::_awaitHelper(self::f3(), :async_op_then, :async_op_error, :async_op) in null;
         :return_value = new self::X::•(_in::unsafeCast<self::Y*>(:async_temporary_0), _in::unsafeCast<core::Object*>(:result));
diff --git a/pkg/front_end/testcases/general/bug33298.dart.weak.expect b/pkg/front_end/testcases/general/bug33298.dart.weak.expect
index aec468a..dc41d48 100644
--- a/pkg/front_end/testcases/general/bug33298.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bug33298.dart.weak.expect
@@ -62,15 +62,15 @@
 }
 static method test() → dynamic {
   self::A* a = new self::A::•();
-  core::List<core::String*>* list1 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(a.{self::A::call}{(core::String*) →* core::String*}){((core::String*) →* core::String*) →* core::Iterable<core::String*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
-  core::List<core::String*>* list2 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(let final self::A* #t1 = a in #t1 == null ?{(core::String*) →* core::String*} null : #t1.{self::A::call}){((core::String*) →* core::String*) →* core::Iterable<core::String*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
+  core::List<core::String*>* list1 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(a.{self::A::call}).{core::Iterable::toList}();
+  core::List<core::String*>* list2 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(let final self::A* #t1 = a in #t1.==(null) ?{(core::String*) →* core::String*} null : #t1.{self::A::call}).{core::Iterable::toList}();
   self::B<core::String*>* b = new self::B::•<core::String*>();
-  core::List<core::String*>* list3 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(b.{self::B::call}{(core::String*) →* core::String*}){((core::String*) →* core::String*) →* core::Iterable<core::String*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
-  core::List<core::String*>* list4 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(let final self::B<core::String*>* #t2 = b in #t2 == null ?{(core::String*) →* core::String*} null : #t2.{self::B::call}){((core::String*) →* core::String*) →* core::Iterable<core::String*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
+  core::List<core::String*>* list3 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(b.{self::B::call}).{core::Iterable::toList}();
+  core::List<core::String*>* list4 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(let final self::B<core::String*>* #t2 = b in #t2.==(null) ?{(core::String*) →* core::String*} null : #t2.{self::B::call}).{core::Iterable::toList}();
   self::C* c = new self::C::•();
-  core::List<core::String*>* list5 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(c.{self::C::call}{<T extends core::Object* = dynamic>(T*) →* T*}<core::String*>){((core::String*) →* core::String*) →* core::Iterable<core::String*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
+  core::List<core::String*>* list5 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(c.{self::C::call}<core::String*>).{core::Iterable::toList}();
   core::List<core::String*>* list6 = <core::String*>["a", "b", "c"].{core::Iterable::map}<dynamic>(let final Never* #t3 = invalid-expression "pkg/front_end/testcases/general/bug33298.dart:28:44: Error: The argument type 'T Function<T>(T)' can't be assigned to the parameter type 'dynamic Function(String)'.
   List<String> list6 = ['a', 'b', 'c'].map(c).toList();
-                                           ^" in (let final self::C* #t4 = c in #t4 == null ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) →* dynamic){((core::String*) →* dynamic) →* core::Iterable<dynamic>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<dynamic>*} as{TypeError} core::List<core::String*>*;
+                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) →* dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bug33298.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug33298.dart.weak.transformed.expect
index 842cb5d..733a698 100644
--- a/pkg/front_end/testcases/general/bug33298.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug33298.dart.weak.transformed.expect
@@ -62,15 +62,15 @@
 }
 static method test() → dynamic {
   self::A* a = new self::A::•();
-  core::List<core::String*>* list1 = core::_GrowableList::_literal3<core::String*>("a", "b", "c").{core::Iterable::map}<core::String*>(a.{self::A::call}{(core::String*) →* core::String*}){((core::String*) →* core::String*) →* core::Iterable<core::String*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
-  core::List<core::String*>* list2 = core::_GrowableList::_literal3<core::String*>("a", "b", "c").{core::Iterable::map}<core::String*>(let final self::A* #t1 = a in #t1 == null ?{(core::String*) →* core::String*} null : #t1.{self::A::call}){((core::String*) →* core::String*) →* core::Iterable<core::String*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
+  core::List<core::String*>* list1 = core::_GrowableList::_literal3<core::String*>("a", "b", "c").{core::Iterable::map}<core::String*>(a.{self::A::call}).{core::Iterable::toList}();
+  core::List<core::String*>* list2 = core::_GrowableList::_literal3<core::String*>("a", "b", "c").{core::Iterable::map}<core::String*>(let final self::A* #t1 = a in #t1.==(null) ?{(core::String*) →* core::String*} null : #t1.{self::A::call}).{core::Iterable::toList}();
   self::B<core::String*>* b = new self::B::•<core::String*>();
-  core::List<core::String*>* list3 = core::_GrowableList::_literal3<core::String*>("a", "b", "c").{core::Iterable::map}<core::String*>(b.{self::B::call}{(core::String*) →* core::String*}){((core::String*) →* core::String*) →* core::Iterable<core::String*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
-  core::List<core::String*>* list4 = core::_GrowableList::_literal3<core::String*>("a", "b", "c").{core::Iterable::map}<core::String*>(let final self::B<core::String*>* #t2 = b in #t2 == null ?{(core::String*) →* core::String*} null : #t2.{self::B::call}){((core::String*) →* core::String*) →* core::Iterable<core::String*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
+  core::List<core::String*>* list3 = core::_GrowableList::_literal3<core::String*>("a", "b", "c").{core::Iterable::map}<core::String*>(b.{self::B::call}).{core::Iterable::toList}();
+  core::List<core::String*>* list4 = core::_GrowableList::_literal3<core::String*>("a", "b", "c").{core::Iterable::map}<core::String*>(let final self::B<core::String*>* #t2 = b in #t2.==(null) ?{(core::String*) →* core::String*} null : #t2.{self::B::call}).{core::Iterable::toList}();
   self::C* c = new self::C::•();
-  core::List<core::String*>* list5 = core::_GrowableList::_literal3<core::String*>("a", "b", "c").{core::Iterable::map}<core::String*>(c.{self::C::call}{<T extends core::Object* = dynamic>(T*) →* T*}<core::String*>){((core::String*) →* core::String*) →* core::Iterable<core::String*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
+  core::List<core::String*>* list5 = core::_GrowableList::_literal3<core::String*>("a", "b", "c").{core::Iterable::map}<core::String*>(c.{self::C::call}<core::String*>).{core::Iterable::toList}();
   core::List<core::String*>* list6 = core::_GrowableList::_literal3<core::String*>("a", "b", "c").{core::Iterable::map}<dynamic>(let final Never* #t3 = invalid-expression "pkg/front_end/testcases/general/bug33298.dart:28:44: Error: The argument type 'T Function<T>(T)' can't be assigned to the parameter type 'dynamic Function(String)'.
   List<String> list6 = ['a', 'b', 'c'].map(c).toList();
-                                           ^" in (let final self::C* #t4 = c in #t4 == null ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) →* dynamic){((core::String*) →* dynamic) →* core::Iterable<dynamic>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<dynamic>*} as{TypeError} core::List<core::String*>*;
+                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) →* dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bug35470.dart.weak.expect b/pkg/front_end/testcases/general/bug35470.dart.weak.expect
index d840067..42009f8 100644
--- a/pkg/front_end/testcases/general/bug35470.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bug35470.dart.weak.expect
@@ -24,6 +24,6 @@
     ;
 }
 static method bar(self::B* b) → dynamic {
-  b.{self::A::foo}<dynamic>(){() →* dynamic};
+  b.{self::A::foo}<dynamic>();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bug35470.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug35470.dart.weak.transformed.expect
index d840067..42009f8 100644
--- a/pkg/front_end/testcases/general/bug35470.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug35470.dart.weak.transformed.expect
@@ -24,6 +24,6 @@
     ;
 }
 static method bar(self::B* b) → dynamic {
-  b.{self::A::foo}<dynamic>(){() →* dynamic};
+  b.{self::A::foo}<dynamic>();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bug37476.dart.weak.expect b/pkg/front_end/testcases/general/bug37476.dart.weak.expect
index 6cc98ca..bd16297 100644
--- a/pkg/front_end/testcases/general/bug37476.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bug37476.dart.weak.expect
@@ -44,14 +44,14 @@
 static field self::B<core::num*>* b = new self::B::•<core::int*>();
 static method main() → dynamic {
   try {
-    self::a.{self::A::foo}(){() →* <S extends core::num* = dynamic>(S*) →* void} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
+    self::a.{self::A::foo}() as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
     throw "Expected TypeError";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    self::b.{self::B::foo}(){() →* (core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+    self::b.{self::B::foo}() as{TypeError,CovarianceCheck} (core::num*) →* void;
     throw "Expected TypeError";
   }
   on core::TypeError* catch(final core::TypeError* e) {
diff --git a/pkg/front_end/testcases/general/bug37476.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug37476.dart.weak.transformed.expect
index 6cc98ca..bd16297 100644
--- a/pkg/front_end/testcases/general/bug37476.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug37476.dart.weak.transformed.expect
@@ -44,14 +44,14 @@
 static field self::B<core::num*>* b = new self::B::•<core::int*>();
 static method main() → dynamic {
   try {
-    self::a.{self::A::foo}(){() →* <S extends core::num* = dynamic>(S*) →* void} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
+    self::a.{self::A::foo}() as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
     throw "Expected TypeError";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    self::b.{self::B::foo}(){() →* (core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+    self::b.{self::B::foo}() as{TypeError,CovarianceCheck} (core::num*) →* void;
     throw "Expected TypeError";
   }
   on core::TypeError* catch(final core::TypeError* e) {
diff --git a/pkg/front_end/testcases/general/call.dart.weak.expect b/pkg/front_end/testcases/general/call.dart.weak.expect
index bb3fe1b..64836fb 100644
--- a/pkg/front_end/testcases/general/call.dart.weak.expect
+++ b/pkg/front_end/testcases/general/call.dart.weak.expect
@@ -129,106 +129,106 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field (dynamic) →* dynamic closure = (dynamic x) → dynamic => x;
-static field dynamic int1 = self::closure(1){(dynamic) →* dynamic};
-static field dynamic int2 = self::closure(1){(dynamic) →* dynamic};
-static field dynamic int3 = self::closure.call(1){(dynamic) →* dynamic};
-static field dynamic int4 = self::closure.call.call(1){(dynamic) →* dynamic};
+static field dynamic int1 = self::closure.call(1);
+static field dynamic int2 = self::closure.call(1);
+static field dynamic int3 = self::closure.call.call(1);
+static field dynamic int4 = self::closure.call.call.call(1);
 static field self::Callable* callable = new self::Callable::•();
-static field dynamic string1 = self::callable.{self::Callable::call}(1){(dynamic) →* dynamic};
-static field dynamic string2 = self::callable.{self::Callable::call}(1){(dynamic) →* dynamic};
-static field dynamic string3 = self::callable.{self::Callable::call}{(dynamic) →* dynamic}(1){(dynamic) →* dynamic};
-static field dynamic string4 = self::callable.{self::Callable::call}{(dynamic) →* dynamic}.call(1){(dynamic) →* dynamic};
+static field dynamic string1 = self::callable.{self::Callable::call}(1);
+static field dynamic string2 = self::callable.{self::Callable::call}(1);
+static field dynamic string3 = self::callable.{self::Callable::call}.call(1);
+static field dynamic string4 = self::callable.{self::Callable::call}.call.call(1);
 static field self::CallableGetter* callableGetter = new self::CallableGetter::•();
 static field dynamic string5 = invalid-expression "pkg/front_end/testcases/general/call.dart:63:29: Error: Cannot invoke an instance of 'CallableGetter' because it declares 'call' to be something other than a method.
  - 'CallableGetter' is from 'pkg/front_end/testcases/general/call.dart'.
 Try changing 'call' to a method or explicitly invoke 'call'.
 var string5 = callableGetter(1);
                             ^";
-static field dynamic string6 = let final self::CallableGetter* #t1 = self::callableGetter in let final core::int* #t2 = 1 in #t1.{self::CallableGetter::call}{dynamic}{dynamic}.call(#t2);
-static field dynamic string7 = self::callableGetter.{self::CallableGetter::call}{dynamic}{dynamic}.call(1);
-static field dynamic string8 = self::callableGetter.{self::CallableGetter::call}{dynamic}{dynamic}.call{dynamic}.call(1);
+static field dynamic string6 = let final self::CallableGetter* #t1 = self::callableGetter in let final core::int* #t2 = 1 in #t1.{self::CallableGetter::call}.call(#t2);
+static field dynamic string7 = self::callableGetter.{self::CallableGetter::call}.call(1);
+static field dynamic string8 = self::callableGetter.{self::CallableGetter::call}.call.call(1);
 static field dynamic nothing1 = let final Never* #t3 = invalid-expression "pkg/front_end/testcases/general/call.dart:68:23: Error: Too few positional arguments: 1 required, 0 given.
 var nothing1 = closure();
-                      ^" in self::closure{<inapplicable>}.();
+                      ^" in self::closure.call();
 static field dynamic nothing2 = let final Never* #t4 = invalid-expression "pkg/front_end/testcases/general/call.dart:69:28: Error: Too few positional arguments: 1 required, 0 given.
 var nothing2 = closure.call();
-                           ^" in self::closure{<inapplicable>}.();
+                           ^" in self::closure.call();
 static field dynamic nothing3 = let final Never* #t5 = invalid-expression "pkg/front_end/testcases/general/call.dart:70:33: Error: Too few positional arguments: 1 required, 0 given.
 var nothing3 = closure.call.call();
-                                ^" in self::closure.call{<inapplicable>}.();
+                                ^" in self::closure.call.call();
 static field dynamic nothing4 = let final Never* #t6 = invalid-expression "pkg/front_end/testcases/general/call.dart:71:38: Error: Too few positional arguments: 1 required, 0 given.
 var nothing4 = closure.call.call.call();
-                                     ^" in self::closure.call.call{<inapplicable>}.();
+                                     ^" in self::closure.call.call.call();
 static field dynamic nothing5 = let final Never* #t7 = invalid-expression "pkg/front_end/testcases/general/call.dart:73:24: Error: Too few positional arguments: 1 required, 0 given.
 var nothing5 = callable();
-                       ^" in self::callable.{self::Callable::call}{<inapplicable>}.(){() →* invalid-type};
+                       ^" in self::callable.{self::Callable::call}();
 static field dynamic nothing6 = let final Never* #t8 = invalid-expression "pkg/front_end/testcases/general/call.dart:74:29: Error: Too few positional arguments: 1 required, 0 given.
 var nothing6 = callable.call();
-                            ^" in self::callable.{self::Callable::call}{<inapplicable>}.(){() →* invalid-type};
+                            ^" in self::callable.{self::Callable::call}();
 static field dynamic nothing7 = let final Never* #t9 = invalid-expression "pkg/front_end/testcases/general/call.dart:75:34: Error: Too few positional arguments: 1 required, 0 given.
 var nothing7 = callable.call.call();
-                                 ^" in self::callable.{self::Callable::call}{(dynamic) →* dynamic}{<inapplicable>}.();
+                                 ^" in self::callable.{self::Callable::call}.call();
 static field dynamic nothing8 = let final Never* #t10 = invalid-expression "pkg/front_end/testcases/general/call.dart:76:39: Error: Too few positional arguments: 1 required, 0 given.
 var nothing8 = callable.call.call.call();
-                                      ^" in self::callable.{self::Callable::call}{(dynamic) →* dynamic}.call{<inapplicable>}.();
+                                      ^" in self::callable.{self::Callable::call}.call.call();
 static field dynamic nothing9 = invalid-expression "pkg/front_end/testcases/general/call.dart:78:30: Error: Cannot invoke an instance of 'CallableGetter' because it declares 'call' to be something other than a method.
  - 'CallableGetter' is from 'pkg/front_end/testcases/general/call.dart'.
 Try changing 'call' to a method or explicitly invoke 'call'.
 var nothing9 = callableGetter();
                              ^";
-static field dynamic nothing10 = self::callableGetter.{self::CallableGetter::call}{dynamic}{dynamic}.call();
-static field dynamic nothing11 = self::callableGetter.{self::CallableGetter::call}{dynamic}{dynamic}.call();
-static field dynamic nothing12 = self::callableGetter.{self::CallableGetter::call}{dynamic}{dynamic}.call{dynamic}.call();
+static field dynamic nothing10 = self::callableGetter.{self::CallableGetter::call}.call();
+static field dynamic nothing11 = self::callableGetter.{self::CallableGetter::call}.call();
+static field dynamic nothing12 = self::callableGetter.{self::CallableGetter::call}.call.call();
 static method main() → dynamic {
   (dynamic) →* dynamic closure = (dynamic x) → dynamic => x;
-  dynamic int1 = closure(1){(dynamic) →* dynamic};
-  dynamic int2 = closure(1){(dynamic) →* dynamic};
-  dynamic int3 = closure.call(1){(dynamic) →* dynamic};
-  dynamic int4 = closure.call.call(1){(dynamic) →* dynamic};
+  dynamic int1 = closure.call(1);
+  dynamic int2 = closure.call(1);
+  dynamic int3 = closure.call.call(1);
+  dynamic int4 = closure.call.call.call(1);
   self::Callable* callable = new self::Callable::•();
-  dynamic string1 = callable.{self::Callable::call}(1){(dynamic) →* dynamic};
-  dynamic string2 = callable.{self::Callable::call}(1){(dynamic) →* dynamic};
-  dynamic string3 = callable.{self::Callable::call}{(dynamic) →* dynamic}(1){(dynamic) →* dynamic};
-  dynamic string4 = callable.{self::Callable::call}{(dynamic) →* dynamic}.call(1){(dynamic) →* dynamic};
+  dynamic string1 = callable.{self::Callable::call}(1);
+  dynamic string2 = callable.{self::Callable::call}(1);
+  dynamic string3 = callable.{self::Callable::call}.call(1);
+  dynamic string4 = callable.{self::Callable::call}.call.call(1);
   self::CallableGetter* callableGetter = new self::CallableGetter::•();
   dynamic string5 = invalid-expression "pkg/front_end/testcases/general/call.dart:29:31: Error: Cannot invoke an instance of 'CallableGetter' because it declares 'call' to be something other than a method.
  - 'CallableGetter' is from 'pkg/front_end/testcases/general/call.dart'.
 Try changing 'call' to a method or explicitly invoke 'call'.
   var string5 = callableGetter(1);
                               ^";
-  dynamic string6 = let final self::CallableGetter* #t11 = callableGetter in let final core::int* #t12 = 1 in #t11.{self::CallableGetter::call}{dynamic}{dynamic}.call(#t12);
-  dynamic string7 = callableGetter.{self::CallableGetter::call}{dynamic}{dynamic}.call(1);
-  dynamic string8 = callableGetter.{self::CallableGetter::call}{dynamic}{dynamic}.call{dynamic}.call(1);
+  dynamic string6 = let final self::CallableGetter* #t11 = callableGetter in let final core::int* #t12 = 1 in #t11.{self::CallableGetter::call}.call(#t12);
+  dynamic string7 = callableGetter.{self::CallableGetter::call}.call(1);
+  dynamic string8 = callableGetter.{self::CallableGetter::call}.call.call(1);
   invalid-type nothing1 = let final Never* #t13 = invalid-expression "pkg/front_end/testcases/general/call.dart:34:25: Error: Too few positional arguments: 1 required, 0 given.
   var nothing1 = closure();
-                        ^" in closure{<inapplicable>}.();
+                        ^" in closure.call();
   invalid-type nothing2 = let final Never* #t14 = invalid-expression "pkg/front_end/testcases/general/call.dart:35:30: Error: Too few positional arguments: 1 required, 0 given.
   var nothing2 = closure.call();
-                             ^" in closure{<inapplicable>}.();
+                             ^" in closure.call();
   invalid-type nothing3 = let final Never* #t15 = invalid-expression "pkg/front_end/testcases/general/call.dart:36:35: Error: Too few positional arguments: 1 required, 0 given.
   var nothing3 = closure.call.call();
-                                  ^" in closure.call{<inapplicable>}.();
+                                  ^" in closure.call.call();
   invalid-type nothing4 = let final Never* #t16 = invalid-expression "pkg/front_end/testcases/general/call.dart:37:40: Error: Too few positional arguments: 1 required, 0 given.
   var nothing4 = closure.call.call.call();
-                                       ^" in closure.call.call{<inapplicable>}.();
+                                       ^" in closure.call.call.call();
   invalid-type nothing5 = let final Never* #t17 = invalid-expression "pkg/front_end/testcases/general/call.dart:39:26: Error: Too few positional arguments: 1 required, 0 given.
   var nothing5 = callable();
-                         ^" in callable.{self::Callable::call}{<inapplicable>}.(){() →* invalid-type};
+                         ^" in callable.{self::Callable::call}();
   invalid-type nothing6 = let final Never* #t18 = invalid-expression "pkg/front_end/testcases/general/call.dart:40:31: Error: Too few positional arguments: 1 required, 0 given.
   var nothing6 = callable.call();
-                              ^" in callable.{self::Callable::call}{<inapplicable>}.(){() →* invalid-type};
+                              ^" in callable.{self::Callable::call}();
   invalid-type nothing7 = let final Never* #t19 = invalid-expression "pkg/front_end/testcases/general/call.dart:41:36: Error: Too few positional arguments: 1 required, 0 given.
   var nothing7 = callable.call.call();
-                                   ^" in callable.{self::Callable::call}{(dynamic) →* dynamic}{<inapplicable>}.();
+                                   ^" in callable.{self::Callable::call}.call();
   invalid-type nothing8 = let final Never* #t20 = invalid-expression "pkg/front_end/testcases/general/call.dart:42:41: Error: Too few positional arguments: 1 required, 0 given.
   var nothing8 = callable.call.call.call();
-                                        ^" in callable.{self::Callable::call}{(dynamic) →* dynamic}.call{<inapplicable>}.();
+                                        ^" in callable.{self::Callable::call}.call.call();
   dynamic nothing9 = invalid-expression "pkg/front_end/testcases/general/call.dart:44:32: Error: Cannot invoke an instance of 'CallableGetter' because it declares 'call' to be something other than a method.
  - 'CallableGetter' is from 'pkg/front_end/testcases/general/call.dart'.
 Try changing 'call' to a method or explicitly invoke 'call'.
   var nothing9 = callableGetter();
                                ^";
-  dynamic nothing10 = callableGetter.{self::CallableGetter::call}{dynamic}{dynamic}.call();
-  dynamic nothing11 = callableGetter.{self::CallableGetter::call}{dynamic}{dynamic}.call();
-  dynamic nothing12 = callableGetter.{self::CallableGetter::call}{dynamic}{dynamic}.call{dynamic}.call();
+  dynamic nothing10 = callableGetter.{self::CallableGetter::call}.call();
+  dynamic nothing11 = callableGetter.{self::CallableGetter::call}.call();
+  dynamic nothing12 = callableGetter.{self::CallableGetter::call}.call.call();
 }
diff --git a/pkg/front_end/testcases/general/callable_type_variable.dart.weak.expect b/pkg/front_end/testcases/general/callable_type_variable.dart.weak.expect
index f7d01d7..c56828e 100644
--- a/pkg/front_end/testcases/general/callable_type_variable.dart.weak.expect
+++ b/pkg/front_end/testcases/general/callable_type_variable.dart.weak.expect
@@ -19,11 +19,11 @@
     : self::Class1::field = field, super core::Object::•()
     ;
   method method() → dynamic {
-    dynamic v1 = this.{self::Class1::field}{self::Class1::T*}();
-    dynamic v2 = let final core::int* #t1 = 0 in this.{self::Class1::field}{self::Class1::T*}(#t1);
-    self::Class1::T* v3 = this.{self::Class1::field}{self::Class1::T*}.call;
-    dynamic v4 = this.{self::Class1::field}{self::Class1::T*}();
-    dynamic v5 = this.{self::Class1::field}{self::Class1::T*}(0);
+    dynamic v1 = this.{self::Class1::field}.call();
+    dynamic v2 = let final core::int* #t1 = 0 in this.{self::Class1::field}.call(#t1);
+    self::Class1::T* v3 = this.{self::Class1::field}.call;
+    dynamic v4 = this.{self::Class1::field}.call();
+    dynamic v5 = this.{self::Class1::field}.call(0);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -44,13 +44,13 @@
   method method() → dynamic {
     invalid-type v1 = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/general/callable_type_variable.dart:25:19: Error: Too few positional arguments: 1 required, 0 given.
     var v1 = field(); // error
-                  ^" in this.{self::Class2::field}{self::Class2::T*}{<inapplicable>}.();
-    core::String* v2 = let final core::int* #t3 = 0 in this.{self::Class2::field}{self::Class2::T*}(#t3){(core::int*) →* core::String*};
-    self::Class2::T* v3 = this.{self::Class2::field}{self::Class2::T*}.call;
+                  ^" in this.{self::Class2::field}.call();
+    core::String* v2 = let final core::int* #t3 = 0 in this.{self::Class2::field}.call(#t3);
+    self::Class2::T* v3 = this.{self::Class2::field}.call;
     invalid-type v4 = let final Never* #t4 = invalid-expression "pkg/front_end/testcases/general/callable_type_variable.dart:28:24: Error: Too few positional arguments: 1 required, 0 given.
     var v4 = field.call(); // error
-                       ^" in this.{self::Class2::field}{self::Class2::T*}{<inapplicable>}.();
-    core::String* v5 = this.{self::Class2::field}{self::Class2::T*}(0){(core::int*) →* core::String*};
+                       ^" in this.{self::Class2::field}.call();
+    core::String* v5 = this.{self::Class2::field}.call(0);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/callable_type_variable.dart.weak.transformed.expect b/pkg/front_end/testcases/general/callable_type_variable.dart.weak.transformed.expect
index cd3a7b7..f7b5cfc 100644
--- a/pkg/front_end/testcases/general/callable_type_variable.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/callable_type_variable.dart.weak.transformed.expect
@@ -19,11 +19,11 @@
     : self::Class1::field = field, super core::Object::•()
     ;
   method method() → dynamic {
-    dynamic v1 = this.{self::Class1::field}{self::Class1::T*}();
-    dynamic v2 = let final core::int* #t1 = 0 in this.{self::Class1::field}{self::Class1::T*}(#t1);
-    self::Class1::T* v3 = this.{self::Class1::field}{self::Class1::T*}.call;
-    dynamic v4 = this.{self::Class1::field}{self::Class1::T*}();
-    dynamic v5 = this.{self::Class1::field}{self::Class1::T*}(0);
+    dynamic v1 = this.{self::Class1::field}.call();
+    dynamic v2 = let final core::int* #t1 = 0 in this.{self::Class1::field}.call(#t1);
+    self::Class1::T* v3 = this.{self::Class1::field}.call;
+    dynamic v4 = this.{self::Class1::field}.call();
+    dynamic v5 = this.{self::Class1::field}.call(0);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -44,13 +44,13 @@
   method method() → dynamic {
     invalid-type v1 = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/general/callable_type_variable.dart:25:19: Error: Too few positional arguments: 1 required, 0 given.
     var v1 = field(); // error
-                  ^" in this.{self::Class2::field}{self::Class2::T*}{<inapplicable>}.();
-    core::String* v2 = let final core::int* #t3 = 0 in this.{self::Class2::field}{self::Class2::T*}(#t3){(core::int*) →* core::String*};
-    self::Class2::T* v3 = this.{self::Class2::field}{self::Class2::T*}.call;
+                  ^" in this.{self::Class2::field}.call();
+    core::String* v2 = let final core::int* #t3 = 0 in this.{self::Class2::field}.call(#t3);
+    self::Class2::T* v3 = this.{self::Class2::field}.call;
     invalid-type v4 = let final Never* #t4 = invalid-expression "pkg/front_end/testcases/general/callable_type_variable.dart:28:24: Error: Too few positional arguments: 1 required, 0 given.
     var v4 = field.call(); // error
-                       ^" in this.{self::Class2::field}{self::Class2::T*}{<inapplicable>}.();
-    core::String* v5 = this.{self::Class2::field}{self::Class2::T*}(0){(core::int*) →* core::String*};
+                       ^" in this.{self::Class2::field}.call();
+    core::String* v5 = this.{self::Class2::field}.call(0);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/candidate_found.dart.weak.expect b/pkg/front_end/testcases/general/candidate_found.dart.weak.expect
index b1e197c..1d6442b 100644
--- a/pkg/front_end/testcases/general/candidate_found.dart.weak.expect
+++ b/pkg/front_end/testcases/general/candidate_found.dart.weak.expect
@@ -80,6 +80,6 @@
                    ^";
   let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/candidate_found.dart:21:24: Error: Too few positional arguments: 1 required, 0 given.
   (null as Fisk).method();
-                       ^" in (null as self::Fisk*).{self::Fisk::method}{<inapplicable>}.(){() →* invalid-type};
+                       ^" in (null as self::Fisk*).{self::Fisk::method}();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/cascade.dart.weak.expect b/pkg/front_end/testcases/general/cascade.dart.weak.expect
index bfd70cc..11c0d89 100644
--- a/pkg/front_end/testcases/general/cascade.dart.weak.expect
+++ b/pkg/front_end/testcases/general/cascade.dart.weak.expect
@@ -27,21 +27,21 @@
 
 static method main() → dynamic {
   core::List<core::int*>* list = let final core::List<core::int*>* #t1 = <core::int*>[1] in block {
-    #t1.{core::List::add}(2){(core::int*) →* void};
-    #t1.{core::List::add}(3){(core::int*) →* void};
-    #t1.{core::List::addAll}(<core::int*>[4, 5]){(core::Iterable<core::int*>*) →* void};
+    #t1.{core::List::add}(2);
+    #t1.{core::List::add}(3);
+    #t1.{core::List::addAll}(<core::int*>[4, 5]);
   } =>#t1;
   core::print(list);
   let final core::List<core::int*>* #t2 = list in block {
-    #t2.{core::List::add}(2){(core::int*) →* void};
-    #t2.{core::List::length}{core::int*};
+    #t2.{core::List::add}(2);
+    #t2.{core::List::length};
     #t2.{core::List::length} = 0;
   } =>#t2;
   core::print(list);
   let final core::List<core::int*>* #t3 = list in block {
-    #t3.{core::List::add}(2){(core::int*) →* void};
-    #t3.{core::List::[]}(0){(core::int*) →* core::int*};
-    #t3.{core::List::[]=}(0, 87){(core::int*, core::int*) →* void};
+    #t3.{core::List::add}(2);
+    #t3.{core::List::[]}(0);
+    #t3.{core::List::[]=}(0, 87);
   } =>#t3;
   core::print(list);
   list = let final core::List<core::int*>* #t4 = <core::int*>[let final Never* #t5 = invalid-expression "pkg/front_end/testcases/general/cascade.dart:26:5: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
@@ -51,15 +51,15 @@
     invalid-expression "pkg/front_end/testcases/general/cascade.dart:28:13: Error: The getter 'last' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'last'.
     ..first.last.toString()
-            ^^^^".{core::Object::toString}(){() →* core::String*};
+            ^^^^".{core::Object::toString}();
     invalid-expression "pkg/front_end/testcases/general/cascade.dart:29:12: Error: The operator '[]' isn't defined for the class 'int'.
 Try correcting the operator to an existing operator, or defining a '[]' operator.
     ..first[0].toString()
-           ^".{core::Object::toString}(){() →* core::String*};
+           ^".{core::Object::toString}();
     invalid-expression "pkg/front_end/testcases/general/cascade.dart:30:11: Error: The getter 'last' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'last'.
     ..[0].last.toString();
-          ^^^^".{core::Object::toString}(){() →* core::String*};
+          ^^^^".{core::Object::toString}();
   } =>#t4;
   core::print(list);
 }
diff --git a/pkg/front_end/testcases/general/cascade.dart.weak.transformed.expect b/pkg/front_end/testcases/general/cascade.dart.weak.transformed.expect
index 5ae4b4c..92c7e4c 100644
--- a/pkg/front_end/testcases/general/cascade.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/cascade.dart.weak.transformed.expect
@@ -27,21 +27,21 @@
 
 static method main() → dynamic {
   core::List<core::int*>* list = let final core::List<core::int*>* #t1 = core::_GrowableList::_literal1<core::int*>(1) in block {
-    #t1.{core::List::add}(2){(core::int*) →* void};
-    #t1.{core::List::add}(3){(core::int*) →* void};
-    #t1.{core::List::addAll}(core::_GrowableList::_literal2<core::int*>(4, 5)){(core::Iterable<core::int*>*) →* void};
+    #t1.{core::List::add}(2);
+    #t1.{core::List::add}(3);
+    #t1.{core::List::addAll}(core::_GrowableList::_literal2<core::int*>(4, 5));
   } =>#t1;
   core::print(list);
   let final core::List<core::int*>* #t2 = list in block {
-    #t2.{core::List::add}(2){(core::int*) →* void};
-    #t2.{core::List::length}{core::int*};
+    #t2.{core::List::add}(2);
+    #t2.{core::List::length};
     #t2.{core::List::length} = 0;
   } =>#t2;
   core::print(list);
   let final core::List<core::int*>* #t3 = list in block {
-    #t3.{core::List::add}(2){(core::int*) →* void};
-    #t3.{core::List::[]}(0){(core::int*) →* core::int*};
-    #t3.{core::List::[]=}(0, 87){(core::int*, core::int*) →* void};
+    #t3.{core::List::add}(2);
+    #t3.{core::List::[]}(0);
+    #t3.{core::List::[]=}(0, 87);
   } =>#t3;
   core::print(list);
   list = let final core::List<core::int*>* #t4 = core::_GrowableList::_literal1<core::int*>(let final Never* #t5 = invalid-expression "pkg/front_end/testcases/general/cascade.dart:26:5: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
@@ -51,15 +51,15 @@
     invalid-expression "pkg/front_end/testcases/general/cascade.dart:28:13: Error: The getter 'last' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'last'.
     ..first.last.toString()
-            ^^^^".{core::Object::toString}(){() →* core::String*};
+            ^^^^".{core::Object::toString}();
     invalid-expression "pkg/front_end/testcases/general/cascade.dart:29:12: Error: The operator '[]' isn't defined for the class 'int'.
 Try correcting the operator to an existing operator, or defining a '[]' operator.
     ..first[0].toString()
-           ^".{core::Object::toString}(){() →* core::String*};
+           ^".{core::Object::toString}();
     invalid-expression "pkg/front_end/testcases/general/cascade.dart:30:11: Error: The getter 'last' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'last'.
     ..[0].last.toString();
-          ^^^^".{core::Object::toString}(){() →* core::String*};
+          ^^^^".{core::Object::toString}();
   } =>#t4;
   core::print(list);
 }
diff --git a/pkg/front_end/testcases/general/cascade_context.dart.weak.expect b/pkg/front_end/testcases/general/cascade_context.dart.weak.expect
index 11f2c0b..309a682 100644
--- a/pkg/front_end/testcases/general/cascade_context.dart.weak.expect
+++ b/pkg/front_end/testcases/general/cascade_context.dart.weak.expect
@@ -7,11 +7,11 @@
 static method test() → dynamic {
   core::int* v1 = self::f<core::int*>();
   core::int* v2 = let final core::int* #t1 = self::f<core::int*>() in block {
-    #t1.{core::int::isEven}{core::bool*};
+    #t1.{core::int::isEven};
   } =>#t1;
   core::int* v3 = let final core::int* #t2 = self::f<core::int*>() in block {
-    #t2.{core::int::isEven}{core::bool*};
-    #t2.{core::int::isEven}{core::bool*};
+    #t2.{core::int::isEven};
+    #t2.{core::int::isEven};
   } =>#t2;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/cascade_context.dart.weak.transformed.expect b/pkg/front_end/testcases/general/cascade_context.dart.weak.transformed.expect
index 11f2c0b..309a682 100644
--- a/pkg/front_end/testcases/general/cascade_context.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/cascade_context.dart.weak.transformed.expect
@@ -7,11 +7,11 @@
 static method test() → dynamic {
   core::int* v1 = self::f<core::int*>();
   core::int* v2 = let final core::int* #t1 = self::f<core::int*>() in block {
-    #t1.{core::int::isEven}{core::bool*};
+    #t1.{core::int::isEven};
   } =>#t1;
   core::int* v3 = let final core::int* #t2 = self::f<core::int*>() in block {
-    #t2.{core::int::isEven}{core::bool*};
-    #t2.{core::int::isEven}{core::bool*};
+    #t2.{core::int::isEven};
+    #t2.{core::int::isEven};
   } =>#t2;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/check_deferred_read.dart.weak.expect b/pkg/front_end/testcases/general/check_deferred_read.dart.weak.expect
index d298cb9..e27d859b 100644
--- a/pkg/front_end/testcases/general/check_deferred_read.dart.weak.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read.dart.weak.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  core::print((let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::x).{core::num::+}(1){(core::num*) →* core::int*});
+  core::print((let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::x).{core::num::+}(1));
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_read.dart.weak.transformed.expect b/pkg/front_end/testcases/general/check_deferred_read.dart.weak.transformed.expect
index 6962eb7..bb01419 100644
--- a/pkg/front_end/testcases/general/check_deferred_read.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  core::print((let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::x).{core::num::+}(1){(core::num*) →* core::int*});
+  core::print((let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::x).{core::num::+}(1));
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/classes.dart.weak.expect b/pkg/front_end/testcases/general/classes.dart.weak.expect
index 288e237..fd0d329 100644
--- a/pkg/front_end/testcases/general/classes.dart.weak.expect
+++ b/pkg/front_end/testcases/general/classes.dart.weak.expect
@@ -9,9 +9,9 @@
     : self::A::y = y, self::A::x = 42, super core::Object::•()
     ;
   method method() → dynamic {
-    core::print("A.method x: ${this.{self::A::x}{core::int*}} y: ${this.{self::A::y}{core::int*}}");
+    core::print("A.method x: ${this.{self::A::x}} y: ${this.{self::A::y}}");
     core::print(this);
-    core::print(this.{self::A::runtimeType}{core::Type*});
+    core::print(this.{self::A::runtimeType});
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -29,13 +29,13 @@
     : super self::A::•(x as{TypeError,ForDynamic} core::int*)
     ;
   method method() → dynamic {
-    core::print("B.method x: ${this.{self::A::x}{core::int*}} y: ${this.{self::A::y}{core::int*}}");
+    core::print("B.method x: ${this.{self::A::x}} y: ${this.{self::A::y}}");
     super.{self::A::method}();
   }
 }
 static method main() → dynamic {
   self::A* a = new self::A::•(87);
   self::B* b = new self::B::•(117);
-  a.{self::A::method}(){() →* dynamic};
-  b.{self::B::method}(){() →* dynamic};
+  a.{self::A::method}();
+  b.{self::B::method}();
 }
diff --git a/pkg/front_end/testcases/general/classes.dart.weak.transformed.expect b/pkg/front_end/testcases/general/classes.dart.weak.transformed.expect
index 288e237..fd0d329 100644
--- a/pkg/front_end/testcases/general/classes.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/classes.dart.weak.transformed.expect
@@ -9,9 +9,9 @@
     : self::A::y = y, self::A::x = 42, super core::Object::•()
     ;
   method method() → dynamic {
-    core::print("A.method x: ${this.{self::A::x}{core::int*}} y: ${this.{self::A::y}{core::int*}}");
+    core::print("A.method x: ${this.{self::A::x}} y: ${this.{self::A::y}}");
     core::print(this);
-    core::print(this.{self::A::runtimeType}{core::Type*});
+    core::print(this.{self::A::runtimeType});
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -29,13 +29,13 @@
     : super self::A::•(x as{TypeError,ForDynamic} core::int*)
     ;
   method method() → dynamic {
-    core::print("B.method x: ${this.{self::A::x}{core::int*}} y: ${this.{self::A::y}{core::int*}}");
+    core::print("B.method x: ${this.{self::A::x}} y: ${this.{self::A::y}}");
     super.{self::A::method}();
   }
 }
 static method main() → dynamic {
   self::A* a = new self::A::•(87);
   self::B* b = new self::B::•(117);
-  a.{self::A::method}(){() →* dynamic};
-  b.{self::B::method}(){() →* dynamic};
+  a.{self::A::method}();
+  b.{self::B::method}();
 }
diff --git a/pkg/front_end/testcases/general/closure.dart.weak.expect b/pkg/front_end/testcases/general/closure.dart.weak.expect
index 2d530e8..a4c2d9f 100644
--- a/pkg/front_end/testcases/general/closure.dart.weak.expect
+++ b/pkg/front_end/testcases/general/closure.dart.weak.expect
@@ -34,7 +34,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method useCallback(dynamic callback) → dynamic {
-  dynamic _ = callback{dynamic}.call();
+  dynamic _ = callback.call();
 }
 static method main() → dynamic {
   dynamic x;
@@ -43,5 +43,5 @@
     return new self::Foo::•();
   }
   self::useCallback(inner);
-  self::Bar* _ = inner(){() →* self::Foo*}.{self::Foo::_field}{self::Bar*};
+  self::Bar* _ = inner.call().{self::Foo::_field};
 }
diff --git a/pkg/front_end/testcases/general/closure.dart.weak.transformed.expect b/pkg/front_end/testcases/general/closure.dart.weak.transformed.expect
index 2d530e8..a4c2d9f 100644
--- a/pkg/front_end/testcases/general/closure.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/closure.dart.weak.transformed.expect
@@ -34,7 +34,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method useCallback(dynamic callback) → dynamic {
-  dynamic _ = callback{dynamic}.call();
+  dynamic _ = callback.call();
 }
 static method main() → dynamic {
   dynamic x;
@@ -43,5 +43,5 @@
     return new self::Foo::•();
   }
   self::useCallback(inner);
-  self::Bar* _ = inner(){() →* self::Foo*}.{self::Foo::_field}{self::Bar*};
+  self::Bar* _ = inner.call().{self::Foo::_field};
 }
diff --git a/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.weak.expect b/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.weak.expect
index 19b1b00..c425212 100644
--- a/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.weak.expect
+++ b/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.weak.expect
@@ -32,7 +32,7 @@
 static method main() → dynamic {
   core::Map<core::int*, self::B*>* map = <core::int*, self::B*>{0: new self::B::•()};
   try {
-    let final core::Map<core::int*, self::B*>* #t1 = map in let final core::int* #t2 = 0 in #t1.{core::Map::[]=}(#t2, #t1.{core::Map::[]}(#t2){(core::Object*) →* self::B*}.{self::B::+}(new self::B::•()){(self::B*) →* self::A*} as{TypeError} self::B*){(core::int*, self::B*) →* void};
+    let final core::Map<core::int*, self::B*>* #t1 = map in let final core::int* #t2 = 0 in #t1.{core::Map::[]=}(#t2, #t1.{core::Map::[]}(#t2).{self::B::+}(new self::B::•()) as{TypeError} self::B*);
     throw "Expected type error";
   }
   on dynamic catch(final dynamic _) {
diff --git a/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.weak.transformed.expect b/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.weak.transformed.expect
index f8d6d80..2c3a4c0 100644
--- a/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.weak.transformed.expect
@@ -32,7 +32,7 @@
 static method main() → dynamic {
   core::Map<core::int*, self::B*>* map = <core::int*, self::B*>{0: new self::B::•()};
   try {
-    let final core::Map<core::int*, self::B*>* #t1 = map in let final core::int* #t2 = 0 in #t1.{core::Map::[]=}(#t2, #t1.{core::Map::[]}(#t2){(core::Object*) →* self::B*}.{self::B::+}(new self::B::•()){(self::B*) →* self::A*} as{TypeError} self::B*){(core::int*, self::B*) →* void};
+    let final core::Map<core::int*, self::B*>* #t1 = map in let final core::int* #t2 = 0 in #t1.{core::Map::[]=}(#t2, #t1.{core::Map::[]}(#t2).{self::B::+}(new self::B::•()) as{TypeError} self::B*);
     throw "Expected type error";
   }
   on dynamic catch(final dynamic _) {
diff --git a/pkg/front_end/testcases/general/constant_truncate.dart.weak.expect b/pkg/front_end/testcases/general/constant_truncate.dart.weak.expect
index f87f7ba..c07b061 100644
--- a/pkg/front_end/testcases/general/constant_truncate.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constant_truncate.dart.weak.expect
@@ -344,37 +344,37 @@
 static method main() → dynamic {
   self::test(0, 0, () → core::int* => invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.");
   self::test(0.0, 0, () → core::int* => invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.");
-  self::test(0.0.{core::double::unary-}(){() →* core::double*}, 0, () → core::int* => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
+  self::test(0.0.{core::double::unary-}(), 0, () → core::int* => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
   self::test(#C2, 0, () → core::int* => invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.");
   self::test(#C3, 0, () → core::int* => invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.");
   self::test(#C4, 0, () → core::int* => invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.");
   self::test(0, 0.0, () → core::int* => invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.");
   self::test(0.0, 0.0, () → core::int* => invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.");
-  self::test(0.0.{core::double::unary-}(){() →* core::double*}, 0.0, () → core::int* => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
+  self::test(0.0.{core::double::unary-}(), 0.0, () → core::int* => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
   self::test(#C2, 0.0, () → core::int* => invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.");
   self::test(#C3, 0.0, () → core::int* => invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.");
   self::test(#C4, 0.0, () → core::int* => invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.");
-  self::test(0, 0.0.{core::double::unary-}(){() →* core::double*}, () → core::int* => invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.");
-  self::test(0.0, 0.0.{core::double::unary-}(){() →* core::double*}, () → core::int* => invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.");
-  self::test(0.0.{core::double::unary-}(){() →* core::double*}, 0.0.{core::double::unary-}(){() →* core::double*}, () → core::int* => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
-  self::test(#C2, 0.0.{core::double::unary-}(){() →* core::double*}, () → core::int* => invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.");
-  self::test(#C3, 0.0.{core::double::unary-}(){() →* core::double*}, () → core::int* => invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.");
-  self::test(#C4, 0.0.{core::double::unary-}(){() →* core::double*}, () → core::int* => invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.");
+  self::test(0, 0.0.{core::double::unary-}(), () → core::int* => invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.");
+  self::test(0.0, 0.0.{core::double::unary-}(), () → core::int* => invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.");
+  self::test(0.0.{core::double::unary-}(), 0.0.{core::double::unary-}(), () → core::int* => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
+  self::test(#C2, 0.0.{core::double::unary-}(), () → core::int* => invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.");
+  self::test(#C3, 0.0.{core::double::unary-}(), () → core::int* => invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.");
+  self::test(#C4, 0.0.{core::double::unary-}(), () → core::int* => invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.");
   self::test(0, #C2, () → core::int* => invalid-expression "Binary operator '0 ~/ NaN' results is Infinity or NaN.");
   self::test(0.0, #C2, () → core::int* => invalid-expression "Binary operator '0.0 ~/ NaN' results is Infinity or NaN.");
-  self::test(0.0.{core::double::unary-}(){() →* core::double*}, #C2, () → core::int* => invalid-expression "Binary operator '-0.0 ~/ NaN' results is Infinity or NaN.");
+  self::test(0.0.{core::double::unary-}(), #C2, () → core::int* => invalid-expression "Binary operator '-0.0 ~/ NaN' results is Infinity or NaN.");
   self::test(#C2, #C2, () → core::int* => invalid-expression "Binary operator 'NaN ~/ NaN' results is Infinity or NaN.");
   self::test(#C3, #C2, () → core::int* => invalid-expression "Binary operator 'Infinity ~/ NaN' results is Infinity or NaN.");
   self::test(#C4, #C2, () → core::int* => invalid-expression "Binary operator '-Infinity ~/ NaN' results is Infinity or NaN.");
   self::test(0, #C3, () → core::int* => #C1);
   self::test(0.0, #C3, () → core::int* => #C1);
-  self::test(0.0.{core::double::unary-}(){() →* core::double*}, #C3, () → core::int* => #C1);
+  self::test(0.0.{core::double::unary-}(), #C3, () → core::int* => #C1);
   self::test(#C2, #C3, () → core::int* => invalid-expression "Binary operator 'NaN ~/ Infinity' results is Infinity or NaN.");
   self::test(#C3, #C3, () → core::int* => invalid-expression "Binary operator 'Infinity ~/ Infinity' results is Infinity or NaN.");
   self::test(#C4, #C3, () → core::int* => invalid-expression "Binary operator '-Infinity ~/ Infinity' results is Infinity or NaN.");
   self::test(0, #C4, () → core::int* => #C1);
   self::test(0.0, #C4, () → core::int* => #C1);
-  self::test(0.0.{core::double::unary-}(){() →* core::double*}, #C4, () → core::int* => #C1);
+  self::test(0.0.{core::double::unary-}(), #C4, () → core::int* => #C1);
   self::test(#C2, #C4, () → core::int* => invalid-expression "Binary operator 'NaN ~/ -Infinity' results is Infinity or NaN.");
   self::test(#C3, #C4, () → core::int* => invalid-expression "Binary operator 'Infinity ~/ -Infinity' results is Infinity or NaN.");
   self::test(#C4, #C4, () → core::int* => invalid-expression "Binary operator '-Infinity ~/ -Infinity' results is Infinity or NaN.");
@@ -382,7 +382,7 @@
 static method test(core::num* a, core::num* b, () →* core::num* f) → void {
   core::num* result;
   try {
-    result = a.{core::num::~/}(b){(core::num*) →* core::int*};
+    result = a.{core::num::~/}(b);
     core::print("${a} ~/ ${b} = ${result}");
   }
   on dynamic catch(final dynamic e) {
@@ -390,16 +390,16 @@
     self::throws(f);
     return;
   }
-  self::expect(f(){() →* core::num*}, result);
+  self::expect(f.call(), result);
 }
 static method expect(dynamic expected, dynamic actual) → void {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Expected ${expected}, actual ${actual}";
   }
 }
 static method throws(() →* core::num* f) → void {
   try {
-    f(){() →* core::num*};
+    f.call();
   }
   on dynamic catch(final dynamic e) {
     return;
diff --git a/pkg/front_end/testcases/general/constant_truncate.dart.weak.outline.expect b/pkg/front_end/testcases/general/constant_truncate.dart.weak.outline.expect
index ddc3a1d..0dde286 100644
--- a/pkg/front_end/testcases/general/constant_truncate.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constant_truncate.dart.weak.outline.expect
@@ -2,42 +2,42 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::int* a0 = 0.{core::num::~/}(0){(core::num*) →* core::int*};
-static const field core::int* a1 = 0.0.{core::double::~/}(0){(core::num*) →* core::int*};
-static const field core::int* a2 = 0.0.{core::double::unary-}(){() →* core::double*}.{core::double::~/}(0){(core::num*) →* core::int*};
-static const field core::int* a3 = core::double::nan.{core::double::~/}(0){(core::num*) →* core::int*};
-static const field core::int* a4 = core::double::infinity.{core::double::~/}(0){(core::num*) →* core::int*};
-static const field core::int* a5 = core::double::negativeInfinity.{core::double::~/}(0){(core::num*) →* core::int*};
-static const field core::int* b0 = 0.{core::num::~/}(0.0){(core::num*) →* core::int*};
-static const field core::int* b1 = 0.0.{core::double::~/}(0.0){(core::num*) →* core::int*};
-static const field core::int* b2 = 0.0.{core::double::unary-}(){() →* core::double*}.{core::double::~/}(0.0){(core::num*) →* core::int*};
-static const field core::int* b3 = core::double::nan.{core::double::~/}(0.0){(core::num*) →* core::int*};
-static const field core::int* b4 = core::double::infinity.{core::double::~/}(0.0){(core::num*) →* core::int*};
-static const field core::int* b5 = core::double::negativeInfinity.{core::double::~/}(0.0){(core::num*) →* core::int*};
-static const field core::int* c0 = 0.{core::num::~/}(0.0.{core::double::unary-}(){() →* core::double*}){(core::num*) →* core::int*};
-static const field core::int* c1 = 0.0.{core::double::~/}(0.0.{core::double::unary-}(){() →* core::double*}){(core::num*) →* core::int*};
-static const field core::int* c2 = 0.0.{core::double::unary-}(){() →* core::double*}.{core::double::~/}(0.0.{core::double::unary-}(){() →* core::double*}){(core::num*) →* core::int*};
-static const field core::int* c3 = core::double::nan.{core::double::~/}(0.0.{core::double::unary-}(){() →* core::double*}){(core::num*) →* core::int*};
-static const field core::int* c4 = core::double::infinity.{core::double::~/}(0.0.{core::double::unary-}(){() →* core::double*}){(core::num*) →* core::int*};
-static const field core::int* c5 = core::double::negativeInfinity.{core::double::~/}(0.0.{core::double::unary-}(){() →* core::double*}){(core::num*) →* core::int*};
-static const field core::int* d0 = 0.{core::num::~/}(core::double::nan){(core::num*) →* core::int*};
-static const field core::int* d1 = 0.0.{core::double::~/}(core::double::nan){(core::num*) →* core::int*};
-static const field core::int* d2 = 0.0.{core::double::unary-}(){() →* core::double*}.{core::double::~/}(core::double::nan){(core::num*) →* core::int*};
-static const field core::int* d3 = core::double::nan.{core::double::~/}(core::double::nan){(core::num*) →* core::int*};
-static const field core::int* d4 = core::double::infinity.{core::double::~/}(core::double::nan){(core::num*) →* core::int*};
-static const field core::int* d5 = core::double::negativeInfinity.{core::double::~/}(core::double::nan){(core::num*) →* core::int*};
-static const field core::int* e0 = 0.{core::num::~/}(core::double::infinity){(core::num*) →* core::int*};
-static const field core::int* e1 = 0.0.{core::double::~/}(core::double::infinity){(core::num*) →* core::int*};
-static const field core::int* e2 = 0.0.{core::double::unary-}(){() →* core::double*}.{core::double::~/}(core::double::infinity){(core::num*) →* core::int*};
-static const field core::int* e3 = core::double::nan.{core::double::~/}(core::double::infinity){(core::num*) →* core::int*};
-static const field core::int* e4 = core::double::infinity.{core::double::~/}(core::double::infinity){(core::num*) →* core::int*};
-static const field core::int* e5 = core::double::negativeInfinity.{core::double::~/}(core::double::infinity){(core::num*) →* core::int*};
-static const field core::int* f0 = 0.{core::num::~/}(core::double::negativeInfinity){(core::num*) →* core::int*};
-static const field core::int* f1 = 0.0.{core::double::~/}(core::double::negativeInfinity){(core::num*) →* core::int*};
-static const field core::int* f2 = 0.0.{core::double::unary-}(){() →* core::double*}.{core::double::~/}(core::double::negativeInfinity){(core::num*) →* core::int*};
-static const field core::int* f3 = core::double::nan.{core::double::~/}(core::double::negativeInfinity){(core::num*) →* core::int*};
-static const field core::int* f4 = core::double::infinity.{core::double::~/}(core::double::negativeInfinity){(core::num*) →* core::int*};
-static const field core::int* f5 = core::double::negativeInfinity.{core::double::~/}(core::double::negativeInfinity){(core::num*) →* core::int*};
+static const field core::int* a0 = 0.{core::num::~/}(0);
+static const field core::int* a1 = 0.0.{core::double::~/}(0);
+static const field core::int* a2 = 0.0.{core::double::unary-}().{core::double::~/}(0);
+static const field core::int* a3 = core::double::nan.{core::double::~/}(0);
+static const field core::int* a4 = core::double::infinity.{core::double::~/}(0);
+static const field core::int* a5 = core::double::negativeInfinity.{core::double::~/}(0);
+static const field core::int* b0 = 0.{core::num::~/}(0.0);
+static const field core::int* b1 = 0.0.{core::double::~/}(0.0);
+static const field core::int* b2 = 0.0.{core::double::unary-}().{core::double::~/}(0.0);
+static const field core::int* b3 = core::double::nan.{core::double::~/}(0.0);
+static const field core::int* b4 = core::double::infinity.{core::double::~/}(0.0);
+static const field core::int* b5 = core::double::negativeInfinity.{core::double::~/}(0.0);
+static const field core::int* c0 = 0.{core::num::~/}(0.0.{core::double::unary-}());
+static const field core::int* c1 = 0.0.{core::double::~/}(0.0.{core::double::unary-}());
+static const field core::int* c2 = 0.0.{core::double::unary-}().{core::double::~/}(0.0.{core::double::unary-}());
+static const field core::int* c3 = core::double::nan.{core::double::~/}(0.0.{core::double::unary-}());
+static const field core::int* c4 = core::double::infinity.{core::double::~/}(0.0.{core::double::unary-}());
+static const field core::int* c5 = core::double::negativeInfinity.{core::double::~/}(0.0.{core::double::unary-}());
+static const field core::int* d0 = 0.{core::num::~/}(core::double::nan);
+static const field core::int* d1 = 0.0.{core::double::~/}(core::double::nan);
+static const field core::int* d2 = 0.0.{core::double::unary-}().{core::double::~/}(core::double::nan);
+static const field core::int* d3 = core::double::nan.{core::double::~/}(core::double::nan);
+static const field core::int* d4 = core::double::infinity.{core::double::~/}(core::double::nan);
+static const field core::int* d5 = core::double::negativeInfinity.{core::double::~/}(core::double::nan);
+static const field core::int* e0 = 0.{core::num::~/}(core::double::infinity);
+static const field core::int* e1 = 0.0.{core::double::~/}(core::double::infinity);
+static const field core::int* e2 = 0.0.{core::double::unary-}().{core::double::~/}(core::double::infinity);
+static const field core::int* e3 = core::double::nan.{core::double::~/}(core::double::infinity);
+static const field core::int* e4 = core::double::infinity.{core::double::~/}(core::double::infinity);
+static const field core::int* e5 = core::double::negativeInfinity.{core::double::~/}(core::double::infinity);
+static const field core::int* f0 = 0.{core::num::~/}(core::double::negativeInfinity);
+static const field core::int* f1 = 0.0.{core::double::~/}(core::double::negativeInfinity);
+static const field core::int* f2 = 0.0.{core::double::unary-}().{core::double::~/}(core::double::negativeInfinity);
+static const field core::int* f3 = core::double::nan.{core::double::~/}(core::double::negativeInfinity);
+static const field core::int* f4 = core::double::infinity.{core::double::~/}(core::double::negativeInfinity);
+static const field core::int* f5 = core::double::negativeInfinity.{core::double::~/}(core::double::negativeInfinity);
 static method main() → dynamic
   ;
 static method test(core::num* a, core::num* b, () →* core::num* f) → void
@@ -49,27 +49,27 @@
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:7:12 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:7:12 -> DoubleConstant(-0.0)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:8:19 -> DoubleConstant(NaN)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:9:19 -> DoubleConstant(Infinity)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:10:19 -> DoubleConstant(-Infinity)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:14:12 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:14:12 -> DoubleConstant(-0.0)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:15:19 -> DoubleConstant(NaN)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:16:19 -> DoubleConstant(Infinity)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:17:19 -> DoubleConstant(-Infinity)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:19:17 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:20:19 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:21:12 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:21:20 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:19:17 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:20:19 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:21:12 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:21:20 -> DoubleConstant(-0.0)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:22:19 -> DoubleConstant(NaN)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:22:26 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:22:26 -> DoubleConstant(-0.0)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:23:19 -> DoubleConstant(Infinity)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:23:31 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:23:31 -> DoubleConstant(-0.0)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:24:19 -> DoubleConstant(-Infinity)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:24:39 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:24:39 -> DoubleConstant(-0.0)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:26:24 -> DoubleConstant(NaN)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:27:26 -> DoubleConstant(NaN)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:28:12 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:28:12 -> DoubleConstant(-0.0)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:28:27 -> DoubleConstant(NaN)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:29:19 -> DoubleConstant(NaN)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:29:33 -> DoubleConstant(NaN)
@@ -77,18 +77,18 @@
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:30:38 -> DoubleConstant(NaN)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:31:19 -> DoubleConstant(-Infinity)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:31:46 -> DoubleConstant(NaN)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:33:14 -> IntConstant(0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:34:16 -> IntConstant(0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:35:17 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:33:14 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:34:16 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:35:17 -> IntConstant(0)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:36:19 -> DoubleConstant(NaN)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:36:33 -> DoubleConstant(Infinity)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:37:19 -> DoubleConstant(Infinity)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:37:38 -> DoubleConstant(Infinity)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:38:19 -> DoubleConstant(-Infinity)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:38:46 -> DoubleConstant(Infinity)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:40:14 -> IntConstant(0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:41:16 -> IntConstant(0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:42:17 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:40:14 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:41:16 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:42:17 -> IntConstant(0)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:43:19 -> DoubleConstant(NaN)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:43:33 -> DoubleConstant(-Infinity)
 Evaluated: StaticGet @ org-dartlang-testcase:///constant_truncate.dart:44:19 -> DoubleConstant(Infinity)
diff --git a/pkg/front_end/testcases/general/constant_truncate.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constant_truncate.dart.weak.transformed.expect
index 5bb1e01..dc0d52e 100644
--- a/pkg/front_end/testcases/general/constant_truncate.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constant_truncate.dart.weak.transformed.expect
@@ -344,37 +344,37 @@
 static method main() → dynamic {
   self::test(0, 0, () → core::int* => invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.");
   self::test(0.0, 0, () → core::int* => invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.");
-  self::test(0.0.{core::double::unary-}(){() →* core::double*}, 0, () → core::int* => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
+  self::test(0.0.{core::double::unary-}(), 0, () → core::int* => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
   self::test(#C2, 0, () → core::int* => invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.");
   self::test(#C3, 0, () → core::int* => invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.");
   self::test(#C4, 0, () → core::int* => invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.");
   self::test(0, 0.0, () → core::int* => invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.");
   self::test(0.0, 0.0, () → core::int* => invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.");
-  self::test(0.0.{core::double::unary-}(){() →* core::double*}, 0.0, () → core::int* => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
+  self::test(0.0.{core::double::unary-}(), 0.0, () → core::int* => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
   self::test(#C2, 0.0, () → core::int* => invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.");
   self::test(#C3, 0.0, () → core::int* => invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.");
   self::test(#C4, 0.0, () → core::int* => invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.");
-  self::test(0, 0.0.{core::double::unary-}(){() →* core::double*}, () → core::int* => invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.");
-  self::test(0.0, 0.0.{core::double::unary-}(){() →* core::double*}, () → core::int* => invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.");
-  self::test(0.0.{core::double::unary-}(){() →* core::double*}, 0.0.{core::double::unary-}(){() →* core::double*}, () → core::int* => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
-  self::test(#C2, 0.0.{core::double::unary-}(){() →* core::double*}, () → core::int* => invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.");
-  self::test(#C3, 0.0.{core::double::unary-}(){() →* core::double*}, () → core::int* => invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.");
-  self::test(#C4, 0.0.{core::double::unary-}(){() →* core::double*}, () → core::int* => invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.");
+  self::test(0, 0.0.{core::double::unary-}(), () → core::int* => invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.");
+  self::test(0.0, 0.0.{core::double::unary-}(), () → core::int* => invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.");
+  self::test(0.0.{core::double::unary-}(), 0.0.{core::double::unary-}(), () → core::int* => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
+  self::test(#C2, 0.0.{core::double::unary-}(), () → core::int* => invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.");
+  self::test(#C3, 0.0.{core::double::unary-}(), () → core::int* => invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.");
+  self::test(#C4, 0.0.{core::double::unary-}(), () → core::int* => invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.");
   self::test(0, #C2, () → core::int* => invalid-expression "Binary operator '0 ~/ NaN' results is Infinity or NaN.");
   self::test(0.0, #C2, () → core::int* => invalid-expression "Binary operator '0.0 ~/ NaN' results is Infinity or NaN.");
-  self::test(0.0.{core::double::unary-}(){() →* core::double*}, #C2, () → core::int* => invalid-expression "Binary operator '-0.0 ~/ NaN' results is Infinity or NaN.");
+  self::test(0.0.{core::double::unary-}(), #C2, () → core::int* => invalid-expression "Binary operator '-0.0 ~/ NaN' results is Infinity or NaN.");
   self::test(#C2, #C2, () → core::int* => invalid-expression "Binary operator 'NaN ~/ NaN' results is Infinity or NaN.");
   self::test(#C3, #C2, () → core::int* => invalid-expression "Binary operator 'Infinity ~/ NaN' results is Infinity or NaN.");
   self::test(#C4, #C2, () → core::int* => invalid-expression "Binary operator '-Infinity ~/ NaN' results is Infinity or NaN.");
   self::test(0, #C3, () → core::int* => #C1);
   self::test(0.0, #C3, () → core::int* => #C1);
-  self::test(0.0.{core::double::unary-}(){() →* core::double*}, #C3, () → core::int* => #C1);
+  self::test(0.0.{core::double::unary-}(), #C3, () → core::int* => #C1);
   self::test(#C2, #C3, () → core::int* => invalid-expression "Binary operator 'NaN ~/ Infinity' results is Infinity or NaN.");
   self::test(#C3, #C3, () → core::int* => invalid-expression "Binary operator 'Infinity ~/ Infinity' results is Infinity or NaN.");
   self::test(#C4, #C3, () → core::int* => invalid-expression "Binary operator '-Infinity ~/ Infinity' results is Infinity or NaN.");
   self::test(0, #C4, () → core::int* => #C1);
   self::test(0.0, #C4, () → core::int* => #C1);
-  self::test(0.0.{core::double::unary-}(){() →* core::double*}, #C4, () → core::int* => #C1);
+  self::test(0.0.{core::double::unary-}(), #C4, () → core::int* => #C1);
   self::test(#C2, #C4, () → core::int* => invalid-expression "Binary operator 'NaN ~/ -Infinity' results is Infinity or NaN.");
   self::test(#C3, #C4, () → core::int* => invalid-expression "Binary operator 'Infinity ~/ -Infinity' results is Infinity or NaN.");
   self::test(#C4, #C4, () → core::int* => invalid-expression "Binary operator '-Infinity ~/ -Infinity' results is Infinity or NaN.");
@@ -382,7 +382,7 @@
 static method test(core::num* a, core::num* b, () →* core::num* f) → void {
   core::num* result;
   try {
-    result = a.{core::num::~/}(b){(core::num*) →* core::int*};
+    result = a.{core::num::~/}(b);
     core::print("${a} ~/ ${b} = ${result}");
   }
   on dynamic catch(final dynamic e) {
@@ -390,16 +390,16 @@
     self::throws(f);
     return;
   }
-  self::expect(f(){() →* core::num*}, result);
+  self::expect(f.call(), result);
 }
 static method expect(dynamic expected, dynamic actual) → void {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Expected ${expected}, actual ${actual}";
   }
 }
 static method throws(() →* core::num* f) → void {
   try {
-    f(){() →* core::num*};
+    f.call();
   }
   on dynamic catch(final dynamic e) {
     return;
@@ -415,16 +415,16 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:50:8 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:57:8 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:62:11 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:63:13 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:64:8 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:64:14 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:65:20 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:66:25 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:67:33 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:71:8 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:78:8 -> DoubleConstant(-0.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:85:8 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:50:8 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:57:8 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:62:11 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:63:13 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:64:8 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:64:14 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:65:20 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:66:25 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:67:33 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:71:8 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:78:8 -> DoubleConstant(-0.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///constant_truncate.dart:85:8 -> DoubleConstant(-0.0)
 Extra constant evaluation: evaluated: 115, effectively constant: 12
diff --git a/pkg/front_end/testcases/general/constants/circularity.dart.weak.expect b/pkg/front_end/testcases/general/constants/circularity.dart.weak.expect
index d9ec24f..adecbb6 100644
--- a/pkg/front_end/testcases/general/constants/circularity.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/circularity.dart.weak.expect
@@ -63,7 +63,7 @@
 class Class2 extends core::Object /*hasConstConstructor*/  {
   final field self::Class2* field;
   const constructor •(core::int* value) → self::Class2*
-    : self::Class2::field = value =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{self::Class2*} null : #C3, super core::Object::•()
+    : self::Class2::field = value.{core::num::==}(0) ?{self::Class2*} null : #C3, super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/constants/circularity.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/circularity.dart.weak.outline.expect
index 9c83c85..d30b1c7 100644
--- a/pkg/front_end/testcases/general/constants/circularity.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/circularity.dart.weak.outline.expect
@@ -20,7 +20,7 @@
 class Class2 extends core::Object /*hasConstConstructor*/  {
   final field self::Class2* field;
   const constructor •(core::int* value) → self::Class2*
-    : self::Class2::field = value =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{self::Class2*} null : const self::Class2::•(0), super core::Object::•()
+    : self::Class2::field = value.{core::num::==}(0) ?{self::Class2*} null : const self::Class2::•(0), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -66,8 +66,8 @@
 static const field core::int* a = self::b;
 static const field core::int* b = self::a;
 static const field core::int* c = self::d;
-static const field core::int* d = self::e.{core::num::+}(1){(core::num*) →* core::int*};
-static const field core::int* e = self::d.{core::num::-}(1){(core::num*) →* core::int*};
+static const field core::int* d = self::e.{core::num::+}(1);
+static const field core::int* e = self::d.{core::num::-}(1);
 static const field self::Class1* c1_0 = const self::Class1::•();
 static const field self::Class1* c1_1 = const self::Class1::•(c: null);
 static const field self::Class1* c1_2 = const self::Class1::•();
diff --git a/pkg/front_end/testcases/general/constants/circularity.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/circularity.dart.weak.transformed.expect
index d9ec24f..adecbb6 100644
--- a/pkg/front_end/testcases/general/constants/circularity.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/circularity.dart.weak.transformed.expect
@@ -63,7 +63,7 @@
 class Class2 extends core::Object /*hasConstConstructor*/  {
   final field self::Class2* field;
   const constructor •(core::int* value) → self::Class2*
-    : self::Class2::field = value =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{self::Class2*} null : #C3, super core::Object::•()
+    : self::Class2::field = value.{core::num::==}(0) ?{self::Class2*} null : #C3, super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.expect b/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.expect
index 606314d..a438075 100644
--- a/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.expect
@@ -127,13 +127,13 @@
 class Foo extends core::Object /*hasConstConstructor*/  {
   final field core::int* x;
   const constructor •(core::int* x) → self::Foo*
-    : self::Foo::x = x, assert(x.{core::num::>}(0){(core::num*) →* core::bool*}, "x is not positive"), assert(x.{core::num::>}(0){(core::num*) →* core::bool*}), assert(x.{core::num::>}(0){(core::num*) →* core::bool*}, ""), assert((#C1) =={core::Object::==}{(core::Object*) →* core::bool*} false, "foo was ${#C1}"), assert((#C1) =={core::Object::==}{(core::Object*) →* core::bool*} false), super core::Object::•()
+    : self::Foo::x = x, assert(x.{core::num::>}(0), "x is not positive"), assert(x.{core::num::>}(0)), assert(x.{core::num::>}(0), ""), assert((#C1).{core::Object::==}(false), "foo was ${#C1}"), assert((#C1).{core::Object::==}(false)), super core::Object::•()
     ;
   const constructor withMessage(core::int* x) → self::Foo*
-    : self::Foo::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}, "btw foo was ${#C1}"), super core::Object::•()
+    : self::Foo::x = x, assert(x.{core::num::<}(0), "btw foo was ${#C1}"), super core::Object::•()
     ;
   const constructor withInvalidMessage(core::int* x) → self::Foo*
-    : self::Foo::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}, x), super core::Object::•()
+    : self::Foo::x = x, assert(x.{core::num::<}(0), x), super core::Object::•()
     ;
   const constructor withInvalidCondition(core::int* x) → self::Foo*
     : self::Foo::x = x, assert(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/constants/const_asserts.dart:17:51: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
@@ -160,13 +160,13 @@
 class Bar extends core::Object /*hasConstConstructor*/  {
   final field core::int* x;
   const constructor withMessage(core::int* x) → self::Bar*
-    : self::Bar::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}, "x is not negative"), super core::Object::•()
+    : self::Bar::x = x, assert(x.{core::num::<}(0), "x is not negative"), super core::Object::•()
     ;
   const constructor withoutMessage(core::int* x) → self::Bar*
-    : self::Bar::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : self::Bar::x = x, assert(x.{core::num::<}(0)), super core::Object::•()
     ;
   const constructor withEmptyMessage(core::int* x) → self::Bar*
-    : self::Bar::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : self::Bar::x = x, assert(x.{core::num::<}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.outline.expect
index 001ad6a..229b2bb 100644
--- a/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.outline.expect
@@ -17,13 +17,13 @@
 class Foo extends core::Object /*hasConstConstructor*/  {
   final field core::int* x;
   const constructor •(core::int* x) → self::Foo*
-    : self::Foo::x = x, assert(x.{core::num::>}(0){(core::num*) →* core::bool*}, "x is not positive"), assert(x.{core::num::>}(0){(core::num*) →* core::bool*}), assert(x.{core::num::>}(0){(core::num*) →* core::bool*}, ""), assert(const core::bool::fromEnvironment("foo") =={core::Object::==}{(core::Object*) →* core::bool*} false, "foo was ${const core::bool::fromEnvironment("foo")}"), assert(const core::bool::fromEnvironment("foo") =={core::Object::==}{(core::Object*) →* core::bool*} false), super core::Object::•()
+    : self::Foo::x = x, assert(x.{core::num::>}(0), "x is not positive"), assert(x.{core::num::>}(0)), assert(x.{core::num::>}(0), ""), assert(const core::bool::fromEnvironment("foo").{core::Object::==}(false), "foo was ${const core::bool::fromEnvironment("foo")}"), assert(const core::bool::fromEnvironment("foo").{core::Object::==}(false)), super core::Object::•()
     ;
   const constructor withMessage(core::int* x) → self::Foo*
-    : self::Foo::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}, "btw foo was ${const core::bool::fromEnvironment("foo")}"), super core::Object::•()
+    : self::Foo::x = x, assert(x.{core::num::<}(0), "btw foo was ${const core::bool::fromEnvironment("foo")}"), super core::Object::•()
     ;
   const constructor withInvalidMessage(core::int* x) → self::Foo*
-    : self::Foo::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}, x), super core::Object::•()
+    : self::Foo::x = x, assert(x.{core::num::<}(0), x), super core::Object::•()
     ;
   const constructor withInvalidCondition(core::int* x) → self::Foo*
     : self::Foo::x = x, assert(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/constants/const_asserts.dart:17:51: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
@@ -50,13 +50,13 @@
 class Bar extends core::Object /*hasConstConstructor*/  {
   final field core::int* x;
   const constructor withMessage(core::int* x) → self::Bar*
-    : self::Bar::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}, "x is not negative"), super core::Object::•()
+    : self::Bar::x = x, assert(x.{core::num::<}(0), "x is not negative"), super core::Object::•()
     ;
   const constructor withoutMessage(core::int* x) → self::Bar*
-    : self::Bar::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : self::Bar::x = x, assert(x.{core::num::<}(0)), super core::Object::•()
     ;
   const constructor withEmptyMessage(core::int* x) → self::Bar*
-    : self::Bar::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : self::Bar::x = x, assert(x.{core::num::<}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -87,9 +87,9 @@
 
 
 Extra constant evaluation status:
-Evaluated: EqualsCall @ org-dartlang-testcase:///const_asserts.dart:11:50 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_asserts.dart:11:50 -> BoolConstant(true)
 Evaluated: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:12:59 -> StringConstant("foo was false")
-Evaluated: EqualsCall @ org-dartlang-testcase:///const_asserts.dart:13:50 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_asserts.dart:13:50 -> BoolConstant(true)
 Evaluated: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:15:73 -> StringConstant("btw foo was false")
 Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:19:21 -> NullConstant(null)
 Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:21:22 -> NullConstant(null)
diff --git a/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.transformed.expect
index 4dd3ed9..286f81d 100644
--- a/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.transformed.expect
@@ -127,13 +127,13 @@
 class Foo extends core::Object /*hasConstConstructor*/  {
   final field core::int* x;
   const constructor •(core::int* x) → self::Foo*
-    : self::Foo::x = x, assert(x.{core::num::>}(0){(core::num*) →* core::bool*}, "x is not positive"), assert(x.{core::num::>}(0){(core::num*) →* core::bool*}), assert(x.{core::num::>}(0){(core::num*) →* core::bool*}, ""), assert((#C1) =={core::Object::==}{(core::Object*) →* core::bool*} false, "foo was ${#C1}"), assert((#C1) =={core::Object::==}{(core::Object*) →* core::bool*} false), super core::Object::•()
+    : self::Foo::x = x, assert(x.{core::num::>}(0), "x is not positive"), assert(x.{core::num::>}(0)), assert(x.{core::num::>}(0), ""), assert((#C1).{core::Object::==}(false), "foo was ${#C1}"), assert((#C1).{core::Object::==}(false)), super core::Object::•()
     ;
   const constructor withMessage(core::int* x) → self::Foo*
-    : self::Foo::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}, "btw foo was ${#C1}"), super core::Object::•()
+    : self::Foo::x = x, assert(x.{core::num::<}(0), "btw foo was ${#C1}"), super core::Object::•()
     ;
   const constructor withInvalidMessage(core::int* x) → self::Foo*
-    : self::Foo::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}, x), super core::Object::•()
+    : self::Foo::x = x, assert(x.{core::num::<}(0), x), super core::Object::•()
     ;
   const constructor withInvalidCondition(core::int* x) → self::Foo*
     : self::Foo::x = x, assert(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/constants/const_asserts.dart:17:51: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
@@ -160,13 +160,13 @@
 class Bar extends core::Object /*hasConstConstructor*/  {
   final field core::int* x;
   const constructor withMessage(core::int* x) → self::Bar*
-    : self::Bar::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}, "x is not negative"), super core::Object::•()
+    : self::Bar::x = x, assert(x.{core::num::<}(0), "x is not negative"), super core::Object::•()
     ;
   const constructor withoutMessage(core::int* x) → self::Bar*
-    : self::Bar::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : self::Bar::x = x, assert(x.{core::num::<}(0)), super core::Object::•()
     ;
   const constructor withEmptyMessage(core::int* x) → self::Bar*
-    : self::Bar::x = x, assert(x.{core::num::<}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : self::Bar::x = x, assert(x.{core::num::<}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -206,9 +206,9 @@
 }
 
 Extra constant evaluation status:
-Evaluated: EqualsCall @ org-dartlang-testcase:///const_asserts.dart:11:50 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_asserts.dart:11:50 -> BoolConstant(true)
 Evaluated: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:12:59 -> StringConstant("foo was false")
-Evaluated: EqualsCall @ org-dartlang-testcase:///const_asserts.dart:13:50 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_asserts.dart:13:50 -> BoolConstant(true)
 Evaluated: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:15:73 -> StringConstant("btw foo was false")
 Extra constant evaluation: evaluated: 34, effectively constant: 4
 
diff --git a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect
index b2ca3be..8f4d7e0 100644
--- a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect
@@ -220,7 +220,7 @@
     : super col::IterableBase::•()
     ;
   get iterator() → core::Iterator<core::int*>*
-    return <core::int*>[].{core::Iterable::iterator}{core::Iterator<core::int*>*};
+    return <core::int*>[].{core::Iterable::iterator};
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::ConstIterable::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::int*>* other) → core::Iterable<core::int*>*; -> core::Iterable::followedBy
   abstract member-signature method map<T extends core::Object* = dynamic>((core::int*) →* self::ConstIterable::map::T* f) → core::Iterable<self::ConstIterable::map::T*>*; -> core::Iterable::map
@@ -264,7 +264,7 @@
     : self::WithEquals::i = i, super core::Object::•()
     ;
   operator ==(core::Object* o) → core::bool* {
-    return o is self::WithEquals* && (o{self::WithEquals*} as self::WithEquals*).{self::WithEquals::i}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} this.{self::WithEquals::i}{core::int*};
+    return o is self::WithEquals* && (o{self::WithEquals*} as self::WithEquals*).{self::WithEquals::i}.{core::num::==}(this.{self::WithEquals::i});
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -281,7 +281,7 @@
     : super col::IterableBase::•()
     ;
   get iterator() → core::Iterator<core::String*>*
-    return <core::String*>[].{core::Iterable::iterator}{core::Iterator<core::String*>*};
+    return <core::String*>[].{core::Iterable::iterator};
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::CustomIterable::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::String*>* other) → core::Iterable<core::String*>*; -> core::Iterable::followedBy
   abstract member-signature method map<T extends core::Object* = dynamic>((core::String*) →* self::CustomIterable::map::T* f) → core::Iterable<self::CustomIterable::map::T*>*; -> core::Iterable::map
@@ -402,7 +402,7 @@
 static const field core::List<core::String*>* bar = #C10;
 static field core::List<core::String*>* barAsVar = block {
   final core::List<core::String*>* #t1 = core::List::of<core::String*>(#C8);
-  #t1.{core::List::add}("!"){(core::String*) →* void};
+  #t1.{core::List::add}{Invariant}("!");
 } =>#t1;
 static const field core::List<core::String*>* barWithNullSpread = invalid-expression "Null value during constant evaluation.";
 static const field core::List<core::String*>* barWithIntSpread = invalid-expression "pkg/front_end/testcases/general/constants/const_collections.dart:23:51: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
@@ -476,7 +476,7 @@
   core::print(#C22);
   core::print( block {
     final core::Set<core::String*>* #t2 = col::LinkedHashSet::•<core::String*>();
-    #t2.{core::Set::add}("hello"){(core::String*) →* core::bool*};
+    #t2.{core::Set::add}{Invariant}("hello");
   } =>#t2);
   core::print(#C26);
 }
diff --git a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect
index d20e229..8ae1da7 100644
--- a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect
@@ -222,7 +222,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static const field core::int* fortyTwo = 42;
-static const field dynamic fortyTwoAsDynamic = (self::fortyTwo as dynamic){dynamic}.*(2){dynamic}.~/(2);
+static const field dynamic fortyTwoAsDynamic = (self::fortyTwo as dynamic).*(2).~/(2);
 static const field core::List<core::String*>* nullList = null;
 static const field core::List<core::String*>* foo = const <core::String*>["hello", "world"];
 static const field core::List<core::String*>* bar = self::foo + const <core::String*>["!"];
@@ -240,7 +240,7 @@
 static const field core::List<core::String*>* barWithCustomIterableSpread2 = self::bar + const self::CustomIterable::•();
 static const field self::CustomIterable* customIterable = const self::CustomIterable::•();
 static const field core::List<core::String*>* barWithCustomIterableSpread3 = self::bar + self::customIterable;
-static const field core::List<core::String*>* listConcat = const <core::String*>["Hello"].{core::List::+}(const <core::String*>["World"]){(core::List<core::String*>*) →* core::List<core::String*>*};
+static const field core::List<core::String*>* listConcat = const <core::String*>["Hello"].{core::List::+}(const <core::String*>["World"]);
 static const field core::Set<core::String*>* nullSet = null;
 static const field core::Set<core::String*>* baz = const <core::String*>{"hello", "world"};
 static const field core::Set<core::String*>* qux = self::baz + const <core::String*>{"!"};
@@ -314,7 +314,7 @@
 Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:136:4 -> InstanceConstant(const _Override{})
 Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:140:4 -> InstanceConstant(const _Override{})
 Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:144:4 -> InstanceConstant(const _Override{})
-Evaluated: DynamicInvocation @ org-dartlang-testcase:///const_collections.dart:14:63 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///const_collections.dart:14:63 -> IntConstant(42)
 Evaluated: ListLiteral @ org-dartlang-testcase:///const_collections.dart:17:26 -> ListConstant(const <String*>["hello", "world"])
 Evaluated: ListConcatenation @ org-dartlang-testcase:///const_collections.dart:19:26 -> ListConstant(const <String*>["hello", "world", "!"])
 Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:22:44 -> ListConstant(const <String*>["hello", "world"])
diff --git a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect
index c154e68..4f6649c 100644
--- a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect
@@ -220,7 +220,7 @@
     : super col::IterableBase::•()
     ;
   get iterator() → core::Iterator<core::int*>*
-    return core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+    return core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator};
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::ConstIterable::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::int*>* other) → core::Iterable<core::int*>*; -> core::Iterable::followedBy
   abstract member-signature method map<T extends core::Object* = dynamic>((core::int*) →* self::ConstIterable::map::T* f) → core::Iterable<self::ConstIterable::map::T*>*; -> core::Iterable::map
@@ -264,7 +264,7 @@
     : self::WithEquals::i = i, super core::Object::•()
     ;
   operator ==(core::Object* o) → core::bool* {
-    return o is self::WithEquals* && o{self::WithEquals*}.{self::WithEquals::i}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} this.{self::WithEquals::i}{core::int*};
+    return o is self::WithEquals* && o{self::WithEquals*}.{self::WithEquals::i}.{core::num::==}(this.{self::WithEquals::i});
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -281,7 +281,7 @@
     : super col::IterableBase::•()
     ;
   get iterator() → core::Iterator<core::String*>*
-    return core::_GrowableList::•<core::String*>(0).{core::Iterable::iterator}{core::Iterator<core::String*>*};
+    return core::_GrowableList::•<core::String*>(0).{core::Iterable::iterator};
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::CustomIterable::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::String*>* other) → core::Iterable<core::String*>*; -> core::Iterable::followedBy
   abstract member-signature method map<T extends core::Object* = dynamic>((core::String*) →* self::CustomIterable::map::T* f) → core::Iterable<self::CustomIterable::map::T*>*; -> core::Iterable::map
@@ -402,7 +402,7 @@
 static const field core::List<core::String*>* bar = #C10;
 static field core::List<core::String*>* barAsVar = block {
   final core::List<core::String*>* #t1 = core::List::of<core::String*>(#C8);
-  #t1.{core::List::add}("!"){(core::String*) →* void};
+  #t1.{core::List::add}{Invariant}("!");
 } =>#t1;
 static const field core::List<core::String*>* barWithNullSpread = invalid-expression "Null value during constant evaluation.";
 static const field core::List<core::String*>* barWithIntSpread = invalid-expression "pkg/front_end/testcases/general/constants/const_collections.dart:23:51: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
@@ -476,7 +476,7 @@
   core::print(#C22);
   core::print( block {
     final core::Set<core::String*>* #t2 = new col::_CompactLinkedHashSet::•<core::String*>();
-    #t2.{core::Set::add}("hello"){(core::String*) →* core::bool*};
+    #t2.{core::Set::add}{Invariant}("hello");
   } =>#t2);
   core::print(#C26);
 }
diff --git a/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.expect b/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.expect
index be60587..6ea8c4e 100644
--- a/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.expect
@@ -61,7 +61,7 @@
     : con::Bar::baz = #C2, super core::Object::•()
     ;
   const constructor named4(core::int* i) → con::Bar*
-    : con::Bar::baz = i.{core::num::>}(0){(core::num*) →* core::bool*} ?{con2::Baz*} #C2 : #C2, super core::Object::•()
+    : con::Bar::baz = i.{core::num::>}(0) ?{con2::Baz*} #C2 : #C2, super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.outline.expect
index eabea4f..ea2f79f 100644
--- a/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.outline.expect
@@ -59,7 +59,7 @@
     : con::Bar::baz = const con2::Baz::named1(), super core::Object::•()
     ;
   const constructor named4(core::int* i) → con::Bar*
-    : con::Bar::baz = i.{core::num::>}(0){(core::num*) →* core::bool*} ?{con2::Baz*} const con2::Baz::named5() : const con2::Baz::named6(), super core::Object::•()
+    : con::Bar::baz = i.{core::num::>}(0) ?{con2::Baz*} const con2::Baz::named5() : const con2::Baz::named6(), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.transformed.expect
index be60587..6ea8c4e 100644
--- a/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.transformed.expect
@@ -61,7 +61,7 @@
     : con::Bar::baz = #C2, super core::Object::•()
     ;
   const constructor named4(core::int* i) → con::Bar*
-    : con::Bar::baz = i.{core::num::>}(0){(core::num*) →* core::bool*} ?{con2::Baz*} #C2 : #C2, super core::Object::•()
+    : con::Bar::baz = i.{core::num::>}(0) ?{con2::Baz*} #C2 : #C2, super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/constants/number_folds.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/number_folds.dart.weak.outline.expect
index 5840a2f..83af03a 100644
--- a/pkg/front_end/testcases/general/constants/number_folds.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/number_folds.dart.weak.outline.expect
@@ -14,72 +14,72 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::int shiftNegative1 = 2.{core::int::<<}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::int};
-static const field core::int shiftNegative2 = 2.{core::int::>>>}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::int};
-static const field core::int shiftNegative3 = 2.{core::int::>>}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::int};
-static const field core::int modZero = 2.{core::num::%}(0){(core::num) → core::int};
+static const field core::int shiftNegative1 = 2.{core::int::<<}(1.{core::int::unary-}());
+static const field core::int shiftNegative2 = 2.{core::int::>>>}(1.{core::int::unary-}());
+static const field core::int shiftNegative3 = 2.{core::int::>>}(1.{core::int::unary-}());
+static const field core::int modZero = 2.{core::num::%}(0);
 static const field core::int divZero = let final Never #t1 = invalid-expression "pkg/front_end/testcases/general/constants/number_folds.dart:9:23: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
 const int divZero = 2 / 0;
-                      ^" in 2.{core::num::/}(0){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-static const field core::int intdivZero = 2.{core::num::~/}(0){(core::num) → core::int};
-static const field core::int unaryMinus = 2.{core::int::unary-}(){() → core::int};
-static const field core::int unaryTilde = 2.{core::int::~}(){() → core::int};
+                      ^" in 2.{core::num::/}(0) as{TypeError,ForNonNullableByDefault} core::int;
+static const field core::int intdivZero = 2.{core::num::~/}(0);
+static const field core::int unaryMinus = 2.{core::int::unary-}();
+static const field core::int unaryTilde = 2.{core::int::~}();
 static const field core::int unaryPlus = invalid-expression "pkg/front_end/testcases/general/constants/number_folds.dart:13:23: Error: This couldn't be parsed.
 const int unaryPlus = +2;
-                      ^"{dynamic}.+(2) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-static const field core::int binaryPlus = 40.{core::num::+}(2){(core::num) → core::int};
-static const field core::int binaryMinus = 44.{core::num::-}(2){(core::num) → core::int};
-static const field core::int binaryTimes = 21.{core::num::*}(2){(core::num) → core::int};
-static const field core::double binaryDiv = 84.{core::num::/}(2){(core::num) → core::double};
-static const field core::int binaryTildeDiv = 84.{core::num::~/}(2){(core::num) → core::int};
-static const field core::int binaryMod = 85.{core::num::%}(43){(core::num) → core::int};
-static const field core::int binaryOr = 32.{core::int::|}(10){(core::int) → core::int};
-static const field core::int binaryAnd = 63.{core::int::&}(106){(core::int) → core::int};
-static const field core::int binaryXor = 63.{core::int::^}(21){(core::int) → core::int};
-static const field core::int binaryShift1 = 21.{core::int::<<}(1){(core::int) → core::int};
-static const field core::int binaryShift2 = 84.{core::int::>>>}(1){(core::int) → core::int};
-static const field core::int binaryShift3 = 21.{core::int::>>>}(64){(core::int) → core::int};
-static const field core::int binaryShift4 = 84.{core::int::>>}(1){(core::int) → core::int};
-static const field core::bool binaryLess = 42.{core::num::<}(42){(core::num) → core::bool};
-static const field core::bool binaryLessEqual = 42.{core::num::<=}(42){(core::num) → core::bool};
-static const field core::bool binaryGreaterEqual = 42.{core::num::>=}(42){(core::num) → core::bool};
-static const field core::bool binaryGreater = 42.{core::num::>}(42){(core::num) → core::bool};
-static const field core::int doubleTruncateDiv = 84.2.{core::double::~/}(2){(core::num) → core::int};
-static const field core::int doubleTruncateDivZero = 84.2.{core::double::~/}(0){(core::num) → core::int};
+                      ^".+(2) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+static const field core::int binaryPlus = 40.{core::num::+}(2);
+static const field core::int binaryMinus = 44.{core::num::-}(2);
+static const field core::int binaryTimes = 21.{core::num::*}(2);
+static const field core::double binaryDiv = 84.{core::num::/}(2);
+static const field core::int binaryTildeDiv = 84.{core::num::~/}(2);
+static const field core::int binaryMod = 85.{core::num::%}(43);
+static const field core::int binaryOr = 32.{core::int::|}(10);
+static const field core::int binaryAnd = 63.{core::int::&}(106);
+static const field core::int binaryXor = 63.{core::int::^}(21);
+static const field core::int binaryShift1 = 21.{core::int::<<}(1);
+static const field core::int binaryShift2 = 84.{core::int::>>>}(1);
+static const field core::int binaryShift3 = 21.{core::int::>>>}(64);
+static const field core::int binaryShift4 = 84.{core::int::>>}(1);
+static const field core::bool binaryLess = 42.{core::num::<}(42);
+static const field core::bool binaryLessEqual = 42.{core::num::<=}(42);
+static const field core::bool binaryGreaterEqual = 42.{core::num::>=}(42);
+static const field core::bool binaryGreater = 42.{core::num::>}(42);
+static const field core::int doubleTruncateDiv = 84.2.{core::double::~/}(2);
+static const field core::int doubleTruncateDivZero = 84.2.{core::double::~/}(0);
 static const field dynamic nil = null;
-static const field core::int doubleTruncateDivNull = 84.2.{core::double::~/}(self::nil as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::int};
-static const field core::double doubleNan = 0.{core::num::/}(0){(core::num) → core::double};
-static const field core::int doubleTruncateDivNaN = 84.2.{core::double::~/}(self::doubleNan){(core::num) → core::int};
+static const field core::int doubleTruncateDivNull = 84.2.{core::double::~/}(self::nil as{TypeError,ForDynamic,ForNonNullableByDefault} core::num);
+static const field core::double doubleNan = 0.{core::num::/}(0);
+static const field core::int doubleTruncateDivNaN = 84.2.{core::double::~/}(self::doubleNan);
 static method main() → dynamic
   ;
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:5:33 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:6:34 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:7:33 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:9:23 -> DoubleConstant(Infinity)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:11:24 -> IntConstant(-2)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:12:24 -> IntConstant(-3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:15:27 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:16:28 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:17:28 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:18:29 -> DoubleConstant(42.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:19:30 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:20:26 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:21:25 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:22:26 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:23:26 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:24:29 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:26:29 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:27:29 -> IntConstant(0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:29:29 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:30:28 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:31:33 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:32:36 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:33:31 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:35:36 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:5:33 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:6:34 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:7:33 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:9:23 -> DoubleConstant(Infinity)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:11:24 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:12:24 -> IntConstant(-3)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:15:27 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:16:28 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:17:28 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:18:29 -> DoubleConstant(42.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:19:30 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:20:26 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:21:25 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:22:26 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:23:26 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:24:29 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:26:29 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:27:29 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:29:29 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:30:28 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:31:33 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:32:36 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:33:31 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:35:36 -> IntConstant(42)
 Evaluated: AsExpression @ org-dartlang-testcase:///number_folds.dart:38:43 -> NullConstant(null)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds.dart:39:27 -> DoubleConstant(NaN)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:39:27 -> DoubleConstant(NaN)
 Evaluated: StaticGet @ org-dartlang-testcase:///number_folds.dart:40:42 -> DoubleConstant(NaN)
 Extra constant evaluation: evaluated: 39, effectively constant: 27
diff --git a/pkg/front_end/testcases/general/constants/number_folds_opt_out.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/number_folds_opt_out.dart.weak.outline.expect
index d84f48c..df84569 100644
--- a/pkg/front_end/testcases/general/constants/number_folds_opt_out.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/number_folds_opt_out.dart.weak.outline.expect
@@ -14,64 +14,64 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::int* shiftNegative1 = 2.{core::int::<<}(1.{core::int::unary-}(){() →* core::int*}){(core::int*) →* core::int*};
-static const field core::int* shiftNegative3 = 2.{core::int::>>}(1.{core::int::unary-}(){() →* core::int*}){(core::int*) →* core::int*};
-static const field core::int* modZero = 2.{core::num::%}(0){(core::num*) →* core::int*};
+static const field core::int* shiftNegative1 = 2.{core::int::<<}(1.{core::int::unary-}());
+static const field core::int* shiftNegative3 = 2.{core::int::>>}(1.{core::int::unary-}());
+static const field core::int* modZero = 2.{core::num::%}(0);
 static const field core::int* divZero = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/constants/number_folds_opt_out.dart:10:23: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
 const int divZero = 2 / 0;
-                      ^" in 2.{core::num::/}(0){(core::num*) →* core::double*} as{TypeError} core::int*;
-static const field core::int* intdivZero = 2.{core::num::~/}(0){(core::num*) →* core::int*};
-static const field core::int* unaryMinus = 2.{core::int::unary-}(){() →* core::int*};
-static const field core::int* unaryTilde = 2.{core::int::~}(){() →* core::int*};
+                      ^" in 2.{core::num::/}(0) as{TypeError} core::int*;
+static const field core::int* intdivZero = 2.{core::num::~/}(0);
+static const field core::int* unaryMinus = 2.{core::int::unary-}();
+static const field core::int* unaryTilde = 2.{core::int::~}();
 static const field core::int* unaryPlus = invalid-expression "pkg/front_end/testcases/general/constants/number_folds_opt_out.dart:14:23: Error: This couldn't be parsed.
 const int unaryPlus = +2;
-                      ^"{dynamic}.+(2) as{TypeError,ForDynamic} core::int*;
-static const field core::int* binaryPlus = 40.{core::num::+}(2){(core::num*) →* core::int*};
-static const field core::int* binaryMinus = 44.{core::num::-}(2){(core::num*) →* core::int*};
-static const field core::int* binaryTimes = 21.{core::num::*}(2){(core::num*) →* core::int*};
-static const field core::double* binaryDiv = 84.{core::num::/}(2){(core::num*) →* core::double*};
-static const field core::int* binaryTildeDiv = 84.{core::num::~/}(2){(core::num*) →* core::int*};
-static const field core::int* binaryMod = 85.{core::num::%}(43){(core::num*) →* core::int*};
-static const field core::int* binaryOr = 32.{core::int::|}(10){(core::int*) →* core::int*};
-static const field core::int* binaryAnd = 63.{core::int::&}(106){(core::int*) →* core::int*};
-static const field core::int* binaryXor = 63.{core::int::^}(21){(core::int*) →* core::int*};
-static const field core::int* binaryShift1 = 21.{core::int::<<}(1){(core::int*) →* core::int*};
-static const field core::int* binaryShift4 = 84.{core::int::>>}(1){(core::int*) →* core::int*};
-static const field core::bool* binaryLess = 42.{core::num::<}(42){(core::num*) →* core::bool*};
-static const field core::bool* binaryLessEqual = 42.{core::num::<=}(42){(core::num*) →* core::bool*};
-static const field core::bool* binaryGreaterEqual = 42.{core::num::>=}(42){(core::num*) →* core::bool*};
-static const field core::bool* binaryGreater = 42.{core::num::>}(42){(core::num*) →* core::bool*};
-static const field core::int* doubleTruncateDiv = 84.2.{core::double::~/}(2){(core::num*) →* core::int*};
-static const field core::int* doubleTruncateDivZero = 84.2.{core::double::~/}(0){(core::num*) →* core::int*};
-static const field core::int* doubleTruncateDivNull = 84.2.{core::double::~/}(null){(core::num*) →* core::int*};
-static const field core::double* doubleNan = 0.{core::num::/}(0){(core::num*) →* core::double*};
-static const field core::int* doubleTruncateDivNaN = 84.2.{core::double::~/}(self::doubleNan){(core::num*) →* core::int*};
+                      ^".+(2) as{TypeError,ForDynamic} core::int*;
+static const field core::int* binaryPlus = 40.{core::num::+}(2);
+static const field core::int* binaryMinus = 44.{core::num::-}(2);
+static const field core::int* binaryTimes = 21.{core::num::*}(2);
+static const field core::double* binaryDiv = 84.{core::num::/}(2);
+static const field core::int* binaryTildeDiv = 84.{core::num::~/}(2);
+static const field core::int* binaryMod = 85.{core::num::%}(43);
+static const field core::int* binaryOr = 32.{core::int::|}(10);
+static const field core::int* binaryAnd = 63.{core::int::&}(106);
+static const field core::int* binaryXor = 63.{core::int::^}(21);
+static const field core::int* binaryShift1 = 21.{core::int::<<}(1);
+static const field core::int* binaryShift4 = 84.{core::int::>>}(1);
+static const field core::bool* binaryLess = 42.{core::num::<}(42);
+static const field core::bool* binaryLessEqual = 42.{core::num::<=}(42);
+static const field core::bool* binaryGreaterEqual = 42.{core::num::>=}(42);
+static const field core::bool* binaryGreater = 42.{core::num::>}(42);
+static const field core::int* doubleTruncateDiv = 84.2.{core::double::~/}(2);
+static const field core::int* doubleTruncateDivZero = 84.2.{core::double::~/}(0);
+static const field core::int* doubleTruncateDivNull = 84.2.{core::double::~/}(null);
+static const field core::double* doubleNan = 0.{core::num::/}(0);
+static const field core::int* doubleTruncateDivNaN = 84.2.{core::double::~/}(self::doubleNan);
 static method main() → dynamic
   ;
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:7:33 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:8:33 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:10:23 -> DoubleConstant(Infinity)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:12:24 -> IntConstant(-2)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:13:24 -> IntConstant(-3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:16:27 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:17:28 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:18:28 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:19:29 -> DoubleConstant(42.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:20:30 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:21:26 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:22:25 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:23:26 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:24:26 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:25:29 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:27:29 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:28:28 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:29:33 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:30:36 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:31:31 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:33:36 -> IntConstant(42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:36:27 -> DoubleConstant(NaN)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:7:33 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:8:33 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:10:23 -> DoubleConstant(Infinity)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:12:24 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:13:24 -> IntConstant(-3)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:16:27 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:17:28 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:18:28 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:19:29 -> DoubleConstant(42.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:20:30 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:21:26 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:22:25 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:23:26 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:24:26 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:25:29 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:27:29 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:28:28 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:29:33 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:30:36 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:31:31 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:33:36 -> IntConstant(42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds_opt_out.dart:36:27 -> DoubleConstant(NaN)
 Evaluated: StaticGet @ org-dartlang-testcase:///number_folds_opt_out.dart:37:42 -> DoubleConstant(NaN)
 Extra constant evaluation: evaluated: 34, effectively constant: 23
diff --git a/pkg/front_end/testcases/general/constants/rudimentary_test_01.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/rudimentary_test_01.dart.weak.outline.expect
index 10ad97d..f61a38d 100644
--- a/pkg/front_end/testcases/general/constants/rudimentary_test_01.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/rudimentary_test_01.dart.weak.outline.expect
@@ -2,10 +2,10 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::int* foo = 42.{core::num::*}(42){(core::num*) →* core::int*};
+static const field core::int* foo = 42.{core::num::*}(42);
 static const field core::String* bar = "hello ${const core::String::fromEnvironment("baz", defaultValue: "world")}!";
-static const field core::String* bar2 = "hello2 2".{core::String::+}(self::bar){(core::String*) →* core::String*};
-static const field core::bool* baz = true && true && (false || true) && 42 =={core::num::==}{(core::Object*) →* core::bool*} 21.{core::num::*}(4){(core::num*) →* core::int*}.{core::num::/}(2){(core::num*) →* core::double*};
+static const field core::String* bar2 = "hello2 2".{core::String::+}(self::bar);
+static const field core::bool* baz = true && true && (false || true) && 42.{core::num::==}(21.{core::num::*}(4).{core::num::/}(2));
 static const field core::Symbol* blaSymbol = #_x;
 static method main() → dynamic
   ;
@@ -14,9 +14,9 @@
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///rudimentary_test_01.dart:5:20 -> IntConstant(1764)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///rudimentary_test_01.dart:5:20 -> IntConstant(1764)
 Evaluated: StringConcatenation @ org-dartlang-testcase:///rudimentary_test_01.dart:6:18 -> StringConstant("hello 42!")
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///rudimentary_test_01.dart:8:35 -> StringConstant("hello2 2hello 42!")
+Evaluated: MethodInvocation @ org-dartlang-testcase:///rudimentary_test_01.dart:8:35 -> StringConstant("hello2 2hello 42!")
 Evaluated: LogicalExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:9:50 -> BoolConstant(true)
 Evaluated: SymbolLiteral @ org-dartlang-testcase:///rudimentary_test_01.dart:10:19 -> SymbolConstant(#_x)
 Extra constant evaluation: evaluated: 5, effectively constant: 5
diff --git a/pkg/front_end/testcases/general/constants/various.dart.weak.expect b/pkg/front_end/testcases/general/constants/various.dart.weak.expect
index 8c8d29f..6d3d9c5 100644
--- a/pkg/front_end/testcases/general/constants/various.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/various.dart.weak.expect
@@ -363,7 +363,7 @@
   final field core::int* x;
   final field core::int* y;
   const constructor •(core::int* x) → self::Foo*
-    : self::Foo::x = x, self::Foo::y = "hello".{core::String::length}{core::int*}, super core::Object::•()
+    : self::Foo::x = x, self::Foo::y = "hello".{core::String::length}, super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -452,7 +452,7 @@
 }
 class ConstClassWithFinalFields2 extends core::Object /*hasConstConstructor*/  {
   final field core::int* y = 1;
-  final field dynamic z1 = this.{self::ConstClassWithFinalFields2::y}{core::int*};
+  final field dynamic z1 = this.{self::ConstClassWithFinalFields2::y};
   final field core::int* z2 = self::x;
   const constructor •() → self::ConstClassWithFinalFields2*
     : super core::Object::•()
diff --git a/pkg/front_end/testcases/general/constants/various.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/various.dart.weak.outline.expect
index 4722f57..919d711 100644
--- a/pkg/front_end/testcases/general/constants/various.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/various.dart.weak.outline.expect
@@ -144,7 +144,7 @@
   final field core::int* x;
   final field core::int* y;
   const constructor •(core::int* x) → self::Foo*
-    : self::Foo::x = x, self::Foo::y = "hello".{core::String::length}{core::int*}, super core::Object::•()
+    : self::Foo::x = x, self::Foo::y = "hello".{core::String::length}, super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -230,7 +230,7 @@
 }
 class ConstClassWithFinalFields2 extends core::Object /*hasConstConstructor*/  {
   final field core::int* y = 1;
-  final field dynamic z1 = this.{self::ConstClassWithFinalFields2::y}{core::int*};
+  final field dynamic z1 = this.{self::ConstClassWithFinalFields2::y};
   final field core::int* z2 = self::x;
   const constructor •() → self::ConstClassWithFinalFields2*
     : super core::Object::•()
@@ -251,8 +251,8 @@
 static const field core::bool* barFromEnvOrNull = const core::bool::fromEnvironment("bar", defaultValue: null);
 static const field core::bool* notBarFromEnvOrNull = !self::barFromEnvOrNull;
 static const field core::bool* conditionalOnNull = self::barFromEnvOrNull ?{core::bool*} true : false;
-static const field core::bool* nullAwareOnNullTrue = let final core::bool* #t2 = self::barFromEnvOrNull in #t2 == null ?{core::bool*} true : #t2;
-static const field core::bool* nullAwareOnNullFalse = let final core::bool* #t3 = self::barFromEnvOrNull in #t3 == null ?{core::bool*} false : #t3;
+static const field core::bool* nullAwareOnNullTrue = let final core::bool* #t2 = self::barFromEnvOrNull in #t2.{core::Object::==}(null) ?{core::bool*} true : #t2;
+static const field core::bool* nullAwareOnNullFalse = let final core::bool* #t3 = self::barFromEnvOrNull in #t3.{core::Object::==}(null) ?{core::bool*} false : #t3;
 static const field core::bool* andOnFalse = self::nullAwareOnNullFalse && self::nullAwareOnNullTrue;
 static const field core::bool* andOnFalse2 = self::nullAwareOnNullTrue && self::nullAwareOnNullFalse;
 static const field core::bool* andOnNull = self::barFromEnvOrNull && true;
@@ -281,25 +281,25 @@
 static const field core::bool* bazFalseFromEnv = const core::bool::fromEnvironment("bazFalse");
 static const field core::bool* trueBool = true;
 static const field core::bool* falseBool = false;
-static const field core::bool* binaryOnBoolCaret = self::trueBool.{core::bool::^}(self::falseBool){(core::bool*) →* core::bool*};
-static const field core::bool* binaryOnBoolAmpersand = self::trueBool.{core::bool::&}(self::falseBool){(core::bool*) →* core::bool*};
-static const field core::bool* binaryOnBoolBar = self::trueBool.{core::bool::|}(self::falseBool){(core::bool*) →* core::bool*};
-static const field core::bool* binaryOnBoolBar2 = self::falseBool.{core::bool::|}(self::trueBool){(core::bool*) →* core::bool*};
+static const field core::bool* binaryOnBoolCaret = self::trueBool.{core::bool::^}(self::falseBool);
+static const field core::bool* binaryOnBoolAmpersand = self::trueBool.{core::bool::&}(self::falseBool);
+static const field core::bool* binaryOnBoolBar = self::trueBool.{core::bool::|}(self::falseBool);
+static const field core::bool* binaryOnBoolBar2 = self::falseBool.{core::bool::|}(self::trueBool);
 static const field dynamic willBeDouble = const core::bool::fromEnvironment("foo") ?{core::num*} 42 : 42.42;
-static const field dynamic binaryOnDouble = self::willBeDouble{dynamic}.<<(2);
+static const field dynamic binaryOnDouble = self::willBeDouble.<<(2);
 static const field dynamic willBeInt = const core::bool::fromEnvironment("foo") ?{core::num*} 42.42 : 42;
-static const field dynamic binaryOnIntWithDoubleBad = self::willBeInt{dynamic}.<<(self::willBeDouble);
-static const field dynamic binaryOnIntWithDoubleOK = self::willBeInt{dynamic}.+(self::willBeDouble);
-static const field dynamic binaryOnIntWithString = self::willBeInt{dynamic}.<<("hello");
+static const field dynamic binaryOnIntWithDoubleBad = self::willBeInt.<<(self::willBeDouble);
+static const field dynamic binaryOnIntWithDoubleOK = self::willBeInt.+(self::willBeDouble);
+static const field dynamic binaryOnIntWithString = self::willBeInt.<<("hello");
 static const field dynamic willBeString = const core::bool::fromEnvironment("foo") ?{core::Object*} 42.42 : "hello";
-static const field dynamic binaryOnStringWithStringOK = self::willBeString{dynamic}.+(" world");
-static const field dynamic binaryOnStringWithInt = self::willBeString{dynamic}.+(self::willBeInt);
-static const field dynamic binaryOnStringWithStringBad = self::willBeString{dynamic}.-(" world");
+static const field dynamic binaryOnStringWithStringOK = self::willBeString.+(" world");
+static const field dynamic binaryOnStringWithInt = self::willBeString.+(self::willBeInt);
+static const field dynamic binaryOnStringWithStringBad = self::willBeString.-(" world");
 static field core::int* x;
-static const field core::int* x1 = self::x = self::x.{core::num::-}(1){(core::num*) →* core::int*};
-static const field core::int* x2 = self::x = self::x.{core::num::+}(1){(core::num*) →* core::int*};
-static const field core::int* x3 = let final core::int* #t4 = self::x in let final core::int* #t5 = self::x = #t4.{core::num::-}(1){(core::num*) →* core::int*} in #t4;
-static const field core::int* x4 = let final core::int* #t6 = self::x in let final core::int* #t7 = self::x = #t6.{core::num::+}(1){(core::num*) →* core::int*} in #t6;
+static const field core::int* x1 = self::x = self::x.{core::num::-}(1);
+static const field core::int* x2 = self::x = self::x.{core::num::+}(1);
+static const field core::int* x3 = let final core::int* #t4 = self::x in let final core::int* #t5 = self::x = #t4.{core::num::-}(1) in #t4;
+static const field core::int* x4 = let final core::int* #t6 = self::x in let final core::int* #t7 = self::x = #t6.{core::num::+}(1) in #t6;
 static const field core::int* y = 1;
 static const field dynamic y1 = invalid-expression "pkg/front_end/testcases/general/constants/various.dart:82:14: Error: Setter not found: 'y'.
 const y1 = --y;
@@ -322,7 +322,7 @@
 static const field self::Foo* foo1 = const self::Foo::•(42);
 static const field self::Foo* foo2 = const self::Foo::•(42);
 static const field core::bool* foosIdentical = core::identical(self::foo1, self::foo2);
-static const field core::bool* foosEqual = self::foo1 =={self::Foo::==}{(dynamic) →* core::bool*} self::foo2;
+static const field core::bool* foosEqual = self::foo1.{self::Foo::==}(self::foo2);
 static const field core::Symbol* barFoo = const _in::Symbol::•("Foo");
 static const field core::Symbol* barFooEqual = const _in::Symbol::•("Foo=");
 static const field core::Symbol* tripleShiftSymbol = const _in::Symbol::•(">>>");
@@ -344,11 +344,11 @@
 static const field core::bool* zeroPointZeroIdentical = core::identical(0.0, 0.0);
 static const field core::bool* zeroPointZeroIdenticalToZero = core::identical(0.0, 0);
 static const field core::bool* zeroIdenticalToZeroPointZero = core::identical(0, 0.0);
-static const field core::bool* nanIdentical = core::identical(0.{core::num::/}(0){(core::num*) →* core::double*}, 0.{core::num::/}(0){(core::num*) →* core::double*});
-static const field core::bool* zeroPointZeroEqual = 0.0 =={core::num::==}{(core::Object*) →* core::bool*} 0.0;
-static const field core::bool* zeroPointZeroEqualToZero = 0.0 =={core::num::==}{(core::Object*) →* core::bool*} 0;
-static const field core::bool* zeroEqualToZeroPointZero = 0 =={core::num::==}{(core::Object*) →* core::bool*} 0.0;
-static const field core::bool* nanEqual = 0.{core::num::/}(0){(core::num*) →* core::double*} =={core::num::==}{(core::Object*) →* core::bool*} 0.{core::num::/}(0){(core::num*) →* core::double*};
+static const field core::bool* nanIdentical = core::identical(0.{core::num::/}(0), 0.{core::num::/}(0));
+static const field core::bool* zeroPointZeroEqual = 0.0.{core::num::==}(0.0);
+static const field core::bool* zeroPointZeroEqualToZero = 0.0.{core::num::==}(0);
+static const field core::bool* zeroEqualToZeroPointZero = 0.{core::num::==}(0.0);
+static const field core::bool* nanEqual = 0.{core::num::/}(0).{core::num::==}(0.{core::num::/}(0));
 static const field dynamic willBecomeNull = const core::bool::fromEnvironment("foo") ?{<T extends core::Object* = dynamic>(T*) →* T*} self::id1 : null;
 static const field (core::int*) →* core::int* willBecomeNullToo = (const core::bool::fromEnvironment("foo") ?{dynamic} self::id1<core::int*> : self::willBecomeNull) as{TypeError,ForDynamic} (core::int*) →* core::int*;
 static const field (core::int*) →* core::int* partialInstantiation = (const core::bool::fromEnvironment("foo") ?{dynamic} self::willBecomeNull : self::id1<core::int*>) as{TypeError,ForDynamic} (core::int*) →* core::int*;
@@ -369,7 +369,7 @@
 
 
 Extra constant evaluation status:
-Evaluated: InstanceGet @ org-dartlang-testcase:///various.dart:111:26 -> IntConstant(5)
+Evaluated: PropertyGet @ org-dartlang-testcase:///various.dart:111:26 -> IntConstant(5)
 Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:6:31 -> BoolConstant(false)
 Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:7:30 -> BoolConstant(false)
 Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:9:11 -> NullConstant(null)
@@ -403,19 +403,19 @@
 Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:49:41 -> StringConstant("42")
 Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:53:35 -> BoolConstant(true)
 Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:54:36 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///various.dart:58:41 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///various.dart:59:45 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///various.dart:60:39 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///various.dart:61:41 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///various.dart:58:41 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///various.dart:59:45 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///various.dart:60:39 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///various.dart:61:41 -> BoolConstant(true)
 Evaluated: ConditionalExpression @ org-dartlang-testcase:///various.dart:63:64 -> DoubleConstant(42.42)
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:64:24 -> DoubleConstant(42.42)
 Evaluated: ConditionalExpression @ org-dartlang-testcase:///various.dart:65:61 -> IntConstant(42)
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:66:34 -> IntConstant(42)
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:66:47 -> DoubleConstant(42.42)
-Evaluated: DynamicInvocation @ org-dartlang-testcase:///various.dart:67:43 -> DoubleConstant(84.42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///various.dart:67:43 -> DoubleConstant(84.42)
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:68:31 -> IntConstant(42)
 Evaluated: ConditionalExpression @ org-dartlang-testcase:///various.dart:70:39 -> StringConstant("hello")
-Evaluated: DynamicInvocation @ org-dartlang-testcase:///various.dart:71:49 -> StringConstant("hello world")
+Evaluated: MethodInvocation @ org-dartlang-testcase:///various.dart:71:49 -> StringConstant("hello world")
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:72:31 -> StringConstant("hello")
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:72:46 -> IntConstant(42)
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:73:37 -> StringConstant("hello")
@@ -439,10 +439,10 @@
 Evaluated: StaticInvocation @ org-dartlang-testcase:///various.dart:188:38 -> BoolConstant(false)
 Evaluated: StaticInvocation @ org-dartlang-testcase:///various.dart:189:38 -> BoolConstant(false)
 Evaluated: StaticInvocation @ org-dartlang-testcase:///various.dart:190:22 -> BoolConstant(true)
-Evaluated: EqualsCall @ org-dartlang-testcase:///various.dart:192:32 -> BoolConstant(true)
-Evaluated: EqualsCall @ org-dartlang-testcase:///various.dart:193:38 -> BoolConstant(true)
-Evaluated: EqualsCall @ org-dartlang-testcase:///various.dart:194:36 -> BoolConstant(true)
-Evaluated: EqualsCall @ org-dartlang-testcase:///various.dart:195:24 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///various.dart:192:32 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///various.dart:193:38 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///various.dart:194:36 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///various.dart:195:24 -> BoolConstant(false)
 Evaluated: ConditionalExpression @ org-dartlang-testcase:///various.dart:200:66 -> NullConstant(null)
 Evaluated: AsExpression @ org-dartlang-testcase:///various.dart:203:39 -> NullConstant(null)
 Evaluated: AsExpression @ org-dartlang-testcase:///various.dart:205:39 -> PartialInstantiationConstant(id1<int*>)
diff --git a/pkg/front_end/testcases/general/constants/various.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/various.dart.weak.transformed.expect
index 6998464..9b064ee 100644
--- a/pkg/front_end/testcases/general/constants/various.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/various.dart.weak.transformed.expect
@@ -363,7 +363,7 @@
   final field core::int* x;
   final field core::int* y;
   const constructor •(core::int* x) → self::Foo*
-    : self::Foo::x = x, self::Foo::y = "hello".{core::String::length}{core::int*}, super core::Object::•()
+    : self::Foo::x = x, self::Foo::y = "hello".{core::String::length}, super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -452,7 +452,7 @@
 }
 class ConstClassWithFinalFields2 extends core::Object /*hasConstConstructor*/  {
   final field core::int* y = 1;
-  final field dynamic z1 = this.{self::ConstClassWithFinalFields2::y}{core::int*};
+  final field dynamic z1 = this.{self::ConstClassWithFinalFields2::y};
   final field core::int* z2 = self::x;
   const constructor •() → self::ConstClassWithFinalFields2*
     : super core::Object::•()
@@ -626,7 +626,7 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceGet @ org-dartlang-testcase:///various.dart:111:26 -> IntConstant(5)
+Evaluated: PropertyGet @ org-dartlang-testcase:///various.dart:111:26 -> IntConstant(5)
 Extra constant evaluation: evaluated: 12, effectively constant: 1
 
 
diff --git a/pkg/front_end/testcases/general/constructor_const_inference.dart.weak.expect b/pkg/front_end/testcases/general/constructor_const_inference.dart.weak.expect
index 8f994fa..a95f0d2 100644
--- a/pkg/front_end/testcases/general/constructor_const_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constructor_const_inference.dart.weak.expect
@@ -39,9 +39,9 @@
     ;
 }
 static method main() → dynamic {
-  dynamic x = new self::B::•<dynamic>().{self::A::x}{self::_Y<dynamic>*};
+  dynamic x = new self::B::•<dynamic>().{self::A::x};
   if(!(x is self::_Y<Null>*)) {
-    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}{core::Type*}}, but `_Y<Null>` expected";
+    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}}, but `_Y<Null>` expected";
   }
 }
 
diff --git a/pkg/front_end/testcases/general/constructor_const_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constructor_const_inference.dart.weak.transformed.expect
index 8f994fa..a95f0d2 100644
--- a/pkg/front_end/testcases/general/constructor_const_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constructor_const_inference.dart.weak.transformed.expect
@@ -39,9 +39,9 @@
     ;
 }
 static method main() → dynamic {
-  dynamic x = new self::B::•<dynamic>().{self::A::x}{self::_Y<dynamic>*};
+  dynamic x = new self::B::•<dynamic>().{self::A::x};
   if(!(x is self::_Y<Null>*)) {
-    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}{core::Type*}}, but `_Y<Null>` expected";
+    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}}, but `_Y<Null>` expected";
   }
 }
 
diff --git a/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.weak.expect b/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.weak.expect
index 79f1595..5bac8eb 100644
--- a/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.weak.expect
@@ -79,9 +79,9 @@
 }
 static method main() → dynamic {
   self::C1* c1 = new self::C1::•();
-  c1.{self::C1::toString}(){() →* core::String*};
+  c1.{self::C1::toString}();
   self::C2* c2 = new self::C2::•();
-  c2.{self::C2::toString}(){() →* core::String*};
+  c2.{self::C2::toString}();
   self::C3* c3 = new self::C3::•();
-  c3.{self::C3::toString}(){() →* core::String*};
+  c3.{self::C3::toString}();
 }
diff --git a/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.weak.transformed.expect
index 69f8ec9..3fbfe8f 100644
--- a/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.weak.transformed.expect
@@ -79,9 +79,9 @@
 }
 static method main() → dynamic {
   self::C1* c1 = new self::C1::•();
-  c1.{self::C1::toString}(){() →* core::String*};
+  c1.{self::C1::toString}();
   self::C2* c2 = new self::C2::•();
-  c2.{self::C2::toString}(){() →* core::String*};
+  c2.{self::C2::toString}();
   self::C3* c3 = new self::C3::•();
-  c3.{self::C3::toString}(){() →* core::String*};
+  c3.{self::C3::toString}();
 }
diff --git a/pkg/front_end/testcases/general/control_flow_collection.dart.weak.expect b/pkg/front_end/testcases/general/control_flow_collection.dart.weak.expect
index 4d5fd14..bc26325 100644
--- a/pkg/front_end/testcases/general/control_flow_collection.dart.weak.expect
+++ b/pkg/front_end/testcases/general/control_flow_collection.dart.weak.expect
@@ -7,61 +7,61 @@
   final core::List<core::int*>* aList = block {
     final core::List<core::int*>* #t1 = <core::int*>[1];
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-      #t1.{core::List::add}(2){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(2);
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-      #t1.{core::List::add}(3){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(3);
     else
-      #t1.{core::List::add}(1.{core::int::unary-}(){() →* core::int*}){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(1.{core::int::unary-}());
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
       if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-        #t1.{core::List::add}(4){(core::int*) →* void};
+        #t1.{core::List::add}{Invariant}(4);
     for (core::int* i in <core::int*>[5, 6, 7])
-      #t1.{core::List::add}(i){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(i);
     for (core::int* i in <core::int*>[8, 9, 10])
       if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-        #t1.{core::List::add}(i){(core::int*) →* void};
-    for (core::int* i = 11; i.{core::num::<=}(14){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t1.{core::List::add}(i){(core::int*) →* void};
+        #t1.{core::List::add}{Invariant}(i);
+    for (core::int* i = 11; i.{core::num::<=}(14); i = i.{core::num::+}(1))
+      #t1.{core::List::add}{Invariant}(i);
   } =>#t1;
   final core::Set<core::int*>* aSet = block {
     final core::Set<core::int*>* #t2 = col::LinkedHashSet::•<core::int*>();
-    #t2.{core::Set::add}(1){(core::int*) →* core::bool*};
+    #t2.{core::Set::add}{Invariant}(1);
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-      #t2.{core::Set::add}(2){(core::int*) →* core::bool*};
+      #t2.{core::Set::add}{Invariant}(2);
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-      #t2.{core::Set::add}(3){(core::int*) →* core::bool*};
+      #t2.{core::Set::add}{Invariant}(3);
     else
-      #t2.{core::Set::add}(1.{core::int::unary-}(){() →* core::int*}){(core::int*) →* core::bool*};
+      #t2.{core::Set::add}{Invariant}(1.{core::int::unary-}());
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
       if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-        #t2.{core::Set::add}(4){(core::int*) →* core::bool*};
+        #t2.{core::Set::add}{Invariant}(4);
     for (core::int* i in <core::int*>[5, 6, 7])
-      #t2.{core::Set::add}(i){(core::int*) →* core::bool*};
+      #t2.{core::Set::add}{Invariant}(i);
     for (core::int* i in <core::int*>[8, 9, 10])
       if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-        #t2.{core::Set::add}(i){(core::int*) →* core::bool*};
-    for (core::int* i = 11; i.{core::num::<=}(14){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t2.{core::Set::add}(i){(core::int*) →* core::bool*};
+        #t2.{core::Set::add}{Invariant}(i);
+    for (core::int* i = 11; i.{core::num::<=}(14); i = i.{core::num::+}(1))
+      #t2.{core::Set::add}{Invariant}(i);
   } =>#t2;
   final core::Map<core::int*, core::int*>* aMap = block {
     final core::Map<core::int*, core::int*>* #t3 = <core::int*, core::int*>{};
-    #t3.{core::Map::[]=}(1, 1){(core::int*, core::int*) →* void};
+    #t3.{core::Map::[]=}{Invariant}(1, 1);
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-      #t3.{core::Map::[]=}(2, 2){(core::int*, core::int*) →* void};
+      #t3.{core::Map::[]=}{Invariant}(2, 2);
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-      #t3.{core::Map::[]=}(3, 3){(core::int*, core::int*) →* void};
+      #t3.{core::Map::[]=}{Invariant}(3, 3);
     else
-      #t3.{core::Map::[]=}(1.{core::int::unary-}(){() →* core::int*}, 1.{core::int::unary-}(){() →* core::int*}){(core::int*, core::int*) →* void};
+      #t3.{core::Map::[]=}{Invariant}(1.{core::int::unary-}(), 1.{core::int::unary-}());
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
       if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-        #t3.{core::Map::[]=}(4, 4){(core::int*, core::int*) →* void};
+        #t3.{core::Map::[]=}{Invariant}(4, 4);
     for (core::int* i in <core::int*>[5, 6, 7])
-      #t3.{core::Map::[]=}(i, i){(core::int*, core::int*) →* void};
+      #t3.{core::Map::[]=}{Invariant}(i, i);
     for (core::int* i in <core::int*>[8, 9, 10])
       if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-        #t3.{core::Map::[]=}(i, i){(core::int*, core::int*) →* void};
-    for (core::int* i = 11; i.{core::num::<=}(14){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t3.{core::Map::[]=}(i, i){(core::int*, core::int*) →* void};
+        #t3.{core::Map::[]=}{Invariant}(i, i);
+    for (core::int* i = 11; i.{core::num::<=}(14); i = i.{core::num::+}(1))
+      #t3.{core::Map::[]=}{Invariant}(i, i);
   } =>#t3;
   core::print(aList);
   core::print(aSet);
diff --git a/pkg/front_end/testcases/general/control_flow_collection.dart.weak.transformed.expect b/pkg/front_end/testcases/general/control_flow_collection.dart.weak.transformed.expect
index da68741..2e4b07e 100644
--- a/pkg/front_end/testcases/general/control_flow_collection.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/control_flow_collection.dart.weak.transformed.expect
@@ -7,19 +7,19 @@
   final core::List<core::int*>* aList = block {
     final core::List<core::int*>* #t1 = core::_GrowableList::_literal1<core::int*>(1);
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-      #t1.{core::List::add}(2){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(2);
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-      #t1.{core::List::add}(3){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(3);
     else
-      #t1.{core::List::add}(1.{core::int::unary-}(){() →* core::int*}){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(1.{core::int::unary-}());
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
       if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-        #t1.{core::List::add}(4){(core::int*) →* void};
+        #t1.{core::List::add}{Invariant}(4);
     {
       core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(5, 6, 7).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int* i = :sync-for-iterator.{core::Iterator::current};
-        #t1.{core::List::add}(i){(core::int*) →* void};
+        #t1.{core::List::add}{Invariant}(i);
       }
     }
     {
@@ -27,29 +27,29 @@
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int* i = :sync-for-iterator.{core::Iterator::current};
         if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-          #t1.{core::List::add}(i){(core::int*) →* void};
+          #t1.{core::List::add}{Invariant}(i);
       }
     }
-    for (core::int* i = 11; i.{core::num::<=}(14){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t1.{core::List::add}(i){(core::int*) →* void};
+    for (core::int* i = 11; i.{core::num::<=}(14); i = i.{core::num::+}(1))
+      #t1.{core::List::add}{Invariant}(i);
   } =>#t1;
   final core::Set<core::int*>* aSet = block {
     final core::Set<core::int*>* #t2 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t2.{core::Set::add}(1){(core::int*) →* core::bool*};
+    #t2.{core::Set::add}{Invariant}(1);
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-      #t2.{core::Set::add}(2){(core::int*) →* core::bool*};
+      #t2.{core::Set::add}{Invariant}(2);
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-      #t2.{core::Set::add}(3){(core::int*) →* core::bool*};
+      #t2.{core::Set::add}{Invariant}(3);
     else
-      #t2.{core::Set::add}(1.{core::int::unary-}(){() →* core::int*}){(core::int*) →* core::bool*};
+      #t2.{core::Set::add}{Invariant}(1.{core::int::unary-}());
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
       if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-        #t2.{core::Set::add}(4){(core::int*) →* core::bool*};
+        #t2.{core::Set::add}{Invariant}(4);
     {
       core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(5, 6, 7).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int* i = :sync-for-iterator.{core::Iterator::current};
-        #t2.{core::Set::add}(i){(core::int*) →* core::bool*};
+        #t2.{core::Set::add}{Invariant}(i);
       }
     }
     {
@@ -57,29 +57,29 @@
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int* i = :sync-for-iterator.{core::Iterator::current};
         if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-          #t2.{core::Set::add}(i){(core::int*) →* core::bool*};
+          #t2.{core::Set::add}{Invariant}(i);
       }
     }
-    for (core::int* i = 11; i.{core::num::<=}(14){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t2.{core::Set::add}(i){(core::int*) →* core::bool*};
+    for (core::int* i = 11; i.{core::num::<=}(14); i = i.{core::num::+}(1))
+      #t2.{core::Set::add}{Invariant}(i);
   } =>#t2;
   final core::Map<core::int*, core::int*>* aMap = block {
     final core::Map<core::int*, core::int*>* #t3 = <core::int*, core::int*>{};
-    #t3.{core::Map::[]=}(1, 1){(core::int*, core::int*) →* void};
+    #t3.{core::Map::[]=}{Invariant}(1, 1);
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-      #t3.{core::Map::[]=}(2, 2){(core::int*, core::int*) →* void};
+      #t3.{core::Map::[]=}{Invariant}(2, 2);
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-      #t3.{core::Map::[]=}(3, 3){(core::int*, core::int*) →* void};
+      #t3.{core::Map::[]=}{Invariant}(3, 3);
     else
-      #t3.{core::Map::[]=}(1.{core::int::unary-}(){() →* core::int*}, 1.{core::int::unary-}(){() →* core::int*}){(core::int*, core::int*) →* void};
+      #t3.{core::Map::[]=}{Invariant}(1.{core::int::unary-}(), 1.{core::int::unary-}());
     if(self::oracle() as{TypeError,ForDynamic} core::bool*)
       if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-        #t3.{core::Map::[]=}(4, 4){(core::int*, core::int*) →* void};
+        #t3.{core::Map::[]=}{Invariant}(4, 4);
     {
       core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(5, 6, 7).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int* i = :sync-for-iterator.{core::Iterator::current};
-        #t3.{core::Map::[]=}(i, i){(core::int*, core::int*) →* void};
+        #t3.{core::Map::[]=}{Invariant}(i, i);
       }
     }
     {
@@ -87,11 +87,11 @@
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int* i = :sync-for-iterator.{core::Iterator::current};
         if(self::oracle() as{TypeError,ForDynamic} core::bool*)
-          #t3.{core::Map::[]=}(i, i){(core::int*, core::int*) →* void};
+          #t3.{core::Map::[]=}{Invariant}(i, i);
       }
     }
-    for (core::int* i = 11; i.{core::num::<=}(14){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t3.{core::Map::[]=}(i, i){(core::int*, core::int*) →* void};
+    for (core::int* i = 11; i.{core::num::<=}(14); i = i.{core::num::+}(1))
+      #t3.{core::Map::[]=}{Invariant}(i, i);
   } =>#t3;
   core::print(aList);
   core::print(aSet);
@@ -102,8 +102,8 @@
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///control_flow_collection.dart:9:26 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///control_flow_collection.dart:18:26 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///control_flow_collection.dart:27:29 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///control_flow_collection.dart:27:33 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///control_flow_collection.dart:9:26 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///control_flow_collection.dart:18:26 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///control_flow_collection.dart:27:29 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///control_flow_collection.dart:27:33 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 158, effectively constant: 4
diff --git a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.expect b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.expect
index 10cef52..589ee22 100644
--- a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.expect
@@ -454,181 +454,181 @@
   core::List<core::int*>* list10 = block {
     final core::List<core::int*>* #t1 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t1.{core::List::add}(42){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(42);
   } =>#t1;
   core::Set<core::int*>* set10 = block {
     final core::Set<core::int*>* #t2 = col::LinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t2.{core::Set::add}(42){(core::int*) →* core::bool*};
-    #t2.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t2.{core::Set::add}{Invariant}(42);
+    #t2.{core::Set::add}{Invariant}(null);
   } =>#t2;
   core::Map<core::String*, core::int*>* map10 = block {
     final core::Map<core::String*, core::int*>* #t3 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t3.{core::Map::[]=}("bar", 42){(core::String*, core::int*) →* void};
-    #t3.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+      #t3.{core::Map::[]=}{Invariant}("bar", 42);
+    #t3.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t3;
   core::List<dynamic>* list11 = block {
     final core::List<dynamic>* #t4 = <dynamic>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t4.{core::List::add}(dynVar){(dynamic) →* void};
+      #t4.{core::List::add}{Invariant}(dynVar);
   } =>#t4;
   core::Set<dynamic>* set11 = block {
     final core::Set<dynamic>* #t5 = col::LinkedHashSet::•<dynamic>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t5.{core::Set::add}(dynVar){(dynamic) →* core::bool*};
-    #t5.{core::Set::add}(null){(dynamic) →* core::bool*};
+      #t5.{core::Set::add}{Invariant}(dynVar);
+    #t5.{core::Set::add}{Invariant}(null);
   } =>#t5;
   core::Map<core::String*, dynamic>* map11 = block {
     final core::Map<core::String*, dynamic>* #t6 = <core::String*, dynamic>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t6.{core::Map::[]=}("bar", dynVar){(core::String*, dynamic) →* void};
-    #t6.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+      #t6.{core::Map::[]=}{Invariant}("bar", dynVar);
+    #t6.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t6;
   core::List<core::List<core::int*>*>* list12 = block {
     final core::List<core::List<core::int*>*>* #t7 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t7.{core::List::add}(<core::int*>[42]){(core::List<core::int*>*) →* void};
+      #t7.{core::List::add}{Invariant}(<core::int*>[42]);
   } =>#t7;
   core::Set<core::List<core::int*>*>* set12 = block {
     final core::Set<core::List<core::int*>*>* #t8 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t8.{core::Set::add}(<core::int*>[42]){(core::List<core::int*>*) →* core::bool*};
-    #t8.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+      #t8.{core::Set::add}{Invariant}(<core::int*>[42]);
+    #t8.{core::Set::add}{Invariant}(null);
   } =>#t8;
   core::Map<core::String*, core::List<core::int*>*>* map12 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t9 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t9.{core::Map::[]=}("bar", <core::int*>[42]){(core::String*, core::List<core::int*>*) →* void};
-    #t9.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+      #t9.{core::Map::[]=}{Invariant}("bar", <core::int*>[42]);
+    #t9.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t9;
   core::List<core::int*>* list20 = block {
     final core::List<core::int*>* #t10 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t10.{core::List::addAll}(<core::int*>[42]){(core::Iterable<core::int*>*) →* void};
+      #t10.{core::List::addAll}{Invariant}(<core::int*>[42]);
   } =>#t10;
   core::Set<core::int*>* set20 = block {
     final core::Set<core::int*>* #t11 = col::LinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t11.{core::Set::addAll}(<core::int*>[42]){(core::Iterable<core::int*>*) →* void};
-    #t11.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t11.{core::Set::addAll}{Invariant}(<core::int*>[42]);
+    #t11.{core::Set::add}{Invariant}(null);
   } =>#t11;
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t12 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       for (final core::MapEntry<core::String*, core::int*>* #t13 in <core::String*, core::int*>{"bar": 42}.{core::Map::entries})
-        #t12.{core::Map::[]=}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value}){(core::String*, core::int*) →* void};
-    #t12.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+        #t12.{core::Map::[]=}{Invariant}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value});
+    #t12.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t12;
   core::List<dynamic>* list21 = block {
     final core::List<dynamic>* #t14 = <dynamic>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t14.{core::List::addAll}(<dynamic>[dynVar]){(core::Iterable<dynamic>*) →* void};
+      #t14.{core::List::addAll}{Invariant}(<dynamic>[dynVar]);
   } =>#t14;
   core::Set<dynamic>* set21 = block {
     final core::Set<dynamic>* #t15 = col::LinkedHashSet::•<dynamic>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t15.{core::Set::addAll}(<dynamic>[dynVar]){(core::Iterable<dynamic>*) →* void};
-    #t15.{core::Set::add}(null){(dynamic) →* core::bool*};
+      #t15.{core::Set::addAll}{Invariant}(<dynamic>[dynVar]);
+    #t15.{core::Set::add}{Invariant}(null);
   } =>#t15;
   core::Map<core::String*, dynamic>* map21 = block {
     final core::Map<core::String*, dynamic>* #t16 = <core::String*, dynamic>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       for (final core::MapEntry<core::String*, dynamic>* #t17 in <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries})
-        #t16.{core::Map::[]=}(#t17.{core::MapEntry::key}, #t17.{core::MapEntry::value}){(core::String*, dynamic) →* void};
-    #t16.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+        #t16.{core::Map::[]=}{Invariant}(#t17.{core::MapEntry::key}, #t17.{core::MapEntry::value});
+    #t16.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t16;
   core::List<core::List<core::int*>*>* list22 = block {
     final core::List<core::List<core::int*>*>* #t18 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t18.{core::List::addAll}(<core::List<core::int*>*>[<core::int*>[42]]){(core::Iterable<core::List<core::int*>*>*) →* void};
+      #t18.{core::List::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[42]]);
   } =>#t18;
   core::Set<core::List<core::int*>*>* set22 = block {
     final core::Set<core::List<core::int*>*>* #t19 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t19.{core::Set::addAll}(<core::List<core::int*>*>[<core::int*>[42]]){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t19.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+      #t19.{core::Set::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[42]]);
+    #t19.{core::Set::add}{Invariant}(null);
   } =>#t19;
   core::Map<core::String*, core::List<core::int*>*>* map22 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t20 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t21 in <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries})
-        #t20.{core::Map::[]=}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
-    #t20.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+        #t20.{core::Map::[]=}{Invariant}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value});
+    #t20.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t20;
   core::List<core::int*>* list30 = block {
     final core::List<core::int*>* #t22 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t22.{core::List::addAll}(<core::int*>[42]){(core::Iterable<core::int*>*) →* void};
+        #t22.{core::List::addAll}{Invariant}(<core::int*>[42]);
   } =>#t22;
   core::Set<core::int*>* set30 = block {
     final core::Set<core::int*>* #t23 = col::LinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t23.{core::Set::addAll}(<core::int*>[42]){(core::Iterable<core::int*>*) →* void};
-    #t23.{core::Set::add}(null){(core::int*) →* core::bool*};
+        #t23.{core::Set::addAll}{Invariant}(<core::int*>[42]);
+    #t23.{core::Set::add}{Invariant}(null);
   } =>#t23;
   core::Map<core::String*, core::int*>* map30 = block {
     final core::Map<core::String*, core::int*>* #t24 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, core::int*>* #t25 in <core::String*, core::int*>{"bar": 42}.{core::Map::entries})
-          #t24.{core::Map::[]=}(#t25.{core::MapEntry::key}, #t25.{core::MapEntry::value}){(core::String*, core::int*) →* void};
-    #t24.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+          #t24.{core::Map::[]=}{Invariant}(#t25.{core::MapEntry::key}, #t25.{core::MapEntry::value});
+    #t24.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t24;
   core::List<dynamic>* list31 = block {
     final core::List<dynamic>* #t26 = <dynamic>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t26.{core::List::addAll}(<dynamic>[dynVar]){(core::Iterable<dynamic>*) →* void};
+        #t26.{core::List::addAll}{Invariant}(<dynamic>[dynVar]);
   } =>#t26;
   core::Set<dynamic>* set31 = block {
     final core::Set<dynamic>* #t27 = col::LinkedHashSet::•<dynamic>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t27.{core::Set::addAll}(<dynamic>[dynVar]){(core::Iterable<dynamic>*) →* void};
-    #t27.{core::Set::add}(null){(dynamic) →* core::bool*};
+        #t27.{core::Set::addAll}{Invariant}(<dynamic>[dynVar]);
+    #t27.{core::Set::add}{Invariant}(null);
   } =>#t27;
   core::Map<core::String*, dynamic>* map31 = block {
     final core::Map<core::String*, dynamic>* #t28 = <core::String*, dynamic>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, dynamic>* #t29 in <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries})
-          #t28.{core::Map::[]=}(#t29.{core::MapEntry::key}, #t29.{core::MapEntry::value}){(core::String*, dynamic) →* void};
-    #t28.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+          #t28.{core::Map::[]=}{Invariant}(#t29.{core::MapEntry::key}, #t29.{core::MapEntry::value});
+    #t28.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t28;
   core::List<core::List<core::int*>*>* list33 = block {
     final core::List<core::List<core::int*>*>* #t30 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t30.{core::List::addAll}(<core::List<core::int*>*>[<core::int*>[42]]){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t30.{core::List::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[42]]);
   } =>#t30;
   core::Set<core::List<core::int*>*>* set33 = block {
     final core::Set<core::List<core::int*>*>* #t31 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t31.{core::Set::addAll}(<core::List<core::int*>*>[<core::int*>[42]]){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t31.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t31.{core::Set::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[42]]);
+    #t31.{core::Set::add}{Invariant}(null);
   } =>#t31;
   core::Map<core::String*, core::List<core::int*>*>* map33 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t32 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t33 in <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries})
-          #t32.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
-    #t32.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+          #t32.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
+    #t32.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t32;
   core::List<core::List<core::int*>*>* list40 = block {
     final core::List<core::List<core::int*>*>* #t34 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t34.{core::List::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
+      #t34.{core::List::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
   } =>#t34;
   core::Set<core::List<core::int*>*>* set40 = block {
     final core::Set<core::List<core::int*>*>* #t35 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t35.{core::Set::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t35.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+      #t35.{core::Set::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
+    #t35.{core::Set::add}{Invariant}(null);
   } =>#t35;
   core::Map<core::String*, core::List<core::int*>*>* map40 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:39:34: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
   Map<String, List<int>> map40 = {if (oracle(\"foo\")) ...{\"bar\", []}, \"baz\": null};
@@ -636,279 +636,279 @@
   core::List<core::List<core::int*>*>* list41 = block {
     final core::List<core::List<core::int*>*>* #t36 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t36.{core::List::addAll}( block {
+      #t36.{core::List::addAll}{Invariant}( block {
         final core::Set<core::List<core::int*>*>* #t37 = col::LinkedHashSet::•<core::List<core::int*>*>();
-        #t37.{core::Set::add}(<core::int*>[]){(core::List<core::int*>*) →* core::bool*};
-      } =>#t37){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t37.{core::Set::add}{Invariant}(<core::int*>[]);
+      } =>#t37);
   } =>#t36;
   core::Set<core::List<core::int*>*>* set41 = block {
     final core::Set<core::List<core::int*>*>* #t38 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t38.{core::Set::addAll}( block {
+      #t38.{core::Set::addAll}{Invariant}( block {
         final core::Set<core::List<core::int*>*>* #t39 = col::LinkedHashSet::•<core::List<core::int*>*>();
-        #t39.{core::Set::add}(<core::int*>[]){(core::List<core::int*>*) →* core::bool*};
-      } =>#t39){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t38.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t39.{core::Set::add}{Invariant}(<core::int*>[]);
+      } =>#t39);
+    #t38.{core::Set::add}{Invariant}(null);
   } =>#t38;
   core::List<core::List<core::int*>*>* list42 = block {
     final core::List<core::List<core::int*>*>* #t40 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t40.{core::List::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t40.{core::List::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
   } =>#t40;
   core::Set<core::List<core::int*>*>* set42 = block {
     final core::Set<core::List<core::int*>*>* #t41 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t41.{core::Set::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t41.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t41.{core::Set::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
+    #t41.{core::Set::add}{Invariant}(null);
   } =>#t41;
   core::Map<core::String*, core::List<core::int*>*>* map42 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t42 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t43 in <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries})
-          #t42.{core::Map::[]=}(#t43.{core::MapEntry::key}, #t43.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
-    #t42.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+          #t42.{core::Map::[]=}{Invariant}(#t43.{core::MapEntry::key}, #t43.{core::MapEntry::value});
+    #t42.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t42;
   core::List<core::int*>* list50 = block {
     final core::List<core::int*>* #t44 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t44.{core::List::addAll}(<core::int*>[]){(core::Iterable<core::int*>*) →* void};
+      #t44.{core::List::addAll}{Invariant}(<core::int*>[]);
   } =>#t44;
   core::Set<core::int*>* set50 = block {
     final core::Set<core::int*>* #t45 = col::LinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t45.{core::Set::addAll}(<core::int*>[]){(core::Iterable<core::int*>*) →* void};
-    #t45.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t45.{core::Set::addAll}{Invariant}(<core::int*>[]);
+    #t45.{core::Set::add}{Invariant}(null);
   } =>#t45;
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t46 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       for (final core::MapEntry<core::String*, core::int*>* #t47 in <core::String*, core::int*>{}.{core::Map::entries})
-        #t46.{core::Map::[]=}(#t47.{core::MapEntry::key}, #t47.{core::MapEntry::value}){(core::String*, core::int*) →* void};
-    #t46.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+        #t46.{core::Map::[]=}{Invariant}(#t47.{core::MapEntry::key}, #t47.{core::MapEntry::value});
+    #t46.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t46;
   core::List<core::int*>* list51 = block {
     final core::List<core::int*>* #t48 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t48.{core::List::addAll}( block {
+      #t48.{core::List::addAll}{Invariant}( block {
         final core::Set<core::int*>* #t49 = col::LinkedHashSet::•<core::int*>();
-      } =>#t49){(core::Iterable<core::int*>*) →* void};
+      } =>#t49);
   } =>#t48;
   core::Set<core::int*>* set51 = block {
     final core::Set<core::int*>* #t50 = col::LinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t50.{core::Set::addAll}( block {
+      #t50.{core::Set::addAll}{Invariant}( block {
         final core::Set<core::int*>* #t51 = col::LinkedHashSet::•<core::int*>();
-      } =>#t51){(core::Iterable<core::int*>*) →* void};
-    #t50.{core::Set::add}(null){(core::int*) →* core::bool*};
+      } =>#t51);
+    #t50.{core::Set::add}{Invariant}(null);
   } =>#t50;
   core::List<core::int*>* list52 = block {
     final core::List<core::int*>* #t52 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t52.{core::List::addAll}(<core::int*>[]){(core::Iterable<core::int*>*) →* void};
+        #t52.{core::List::addAll}{Invariant}(<core::int*>[]);
   } =>#t52;
   core::Set<core::int*>* set52 = block {
     final core::Set<core::int*>* #t53 = col::LinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t53.{core::Set::addAll}(<core::int*>[]){(core::Iterable<core::int*>*) →* void};
-    #t53.{core::Set::add}(null){(core::int*) →* core::bool*};
+        #t53.{core::Set::addAll}{Invariant}(<core::int*>[]);
+    #t53.{core::Set::add}{Invariant}(null);
   } =>#t53;
   core::Map<core::String*, core::int*>* map52 = block {
     final core::Map<core::String*, core::int*>* #t54 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, core::int*>* #t55 in <core::String*, core::int*>{}.{core::Map::entries})
-          #t54.{core::Map::[]=}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value}){(core::String*, core::int*) →* void};
-    #t54.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+          #t54.{core::Map::[]=}{Invariant}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value});
+    #t54.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t54;
   core::List<core::List<core::int*>*>* list60 = block {
     final core::List<core::List<core::int*>*>* #t56 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t56.{core::List::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
+      #t56.{core::List::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
   } =>#t56;
   core::Set<core::List<core::int*>*>* set60 = block {
     final core::Set<core::List<core::int*>*>* #t57 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t57.{core::Set::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t57.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+      #t57.{core::Set::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
+    #t57.{core::Set::add}{Invariant}(null);
   } =>#t57;
   core::Map<core::String*, core::List<core::int*>*>* map60 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t58 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t59 in <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries})
-        #t58.{core::Map::[]=}(#t59.{core::MapEntry::key}, #t59.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
-    #t58.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+        #t58.{core::Map::[]=}{Invariant}(#t59.{core::MapEntry::key}, #t59.{core::MapEntry::value});
+    #t58.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t58;
   core::List<core::List<core::int*>*>* list61 = block {
     final core::List<core::List<core::int*>*>* #t60 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t60.{core::List::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t60.{core::List::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
   } =>#t60;
   core::Set<core::List<core::int*>*>* set61 = block {
     final core::Set<core::List<core::int*>*>* #t61 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t61.{core::Set::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t61.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t61.{core::Set::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
+    #t61.{core::Set::add}{Invariant}(null);
   } =>#t61;
   core::Map<core::String*, core::List<core::int*>*>* map61 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t62 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t63 in <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries})
-          #t62.{core::Map::[]=}(#t63.{core::MapEntry::key}, #t63.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
-    #t62.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+          #t62.{core::Map::[]=}{Invariant}(#t63.{core::MapEntry::key}, #t63.{core::MapEntry::value});
+    #t62.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t62;
   core::List<core::List<core::int*>*>* list70 = block {
     final core::List<core::List<core::int*>*>* #t64 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t64.{core::List::add}(<core::int*>[]){(core::List<core::int*>*) →* void};
+      #t64.{core::List::add}{Invariant}(<core::int*>[]);
   } =>#t64;
   core::Set<core::List<core::int*>*>* set70 = block {
     final core::Set<core::List<core::int*>*>* #t65 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t65.{core::Set::add}(<core::int*>[]){(core::List<core::int*>*) →* core::bool*};
-    #t65.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+      #t65.{core::Set::add}{Invariant}(<core::int*>[]);
+    #t65.{core::Set::add}{Invariant}(null);
   } =>#t65;
   core::List<core::List<core::int*>*>* list71 = block {
     final core::List<core::List<core::int*>*>* #t66 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t66.{core::List::add}(<core::int*>[]){(core::List<core::int*>*) →* void};
+        #t66.{core::List::add}{Invariant}(<core::int*>[]);
   } =>#t66;
   core::Set<core::List<core::int*>*>* set71 = block {
     final core::Set<core::List<core::int*>*>* #t67 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t67.{core::Set::add}(<core::int*>[]){(core::List<core::int*>*) →* core::bool*};
-    #t67.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t67.{core::Set::add}{Invariant}(<core::int*>[]);
+    #t67.{core::Set::add}{Invariant}(null);
   } =>#t67;
   core::List<core::num*>* list80 = block {
     final core::List<core::num*>* #t68 = <core::num*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t68.{core::List::add}(42){(core::num*) →* void};
+      #t68.{core::List::add}{Invariant}(42);
     else
-      #t68.{core::List::add}(3.14){(core::num*) →* void};
+      #t68.{core::List::add}{Invariant}(3.14);
   } =>#t68;
   core::Set<core::num*>* set80 = block {
     final core::Set<core::num*>* #t69 = col::LinkedHashSet::•<core::num*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t69.{core::Set::add}(42){(core::num*) →* core::bool*};
+      #t69.{core::Set::add}{Invariant}(42);
     else
-      #t69.{core::Set::add}(3.14){(core::num*) →* core::bool*};
-    #t69.{core::Set::add}(null){(core::num*) →* core::bool*};
+      #t69.{core::Set::add}{Invariant}(3.14);
+    #t69.{core::Set::add}{Invariant}(null);
   } =>#t69;
   core::Map<core::String*, core::num*>* map80 = block {
     final core::Map<core::String*, core::num*>* #t70 = <core::String*, core::num*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t70.{core::Map::[]=}("bar", 42){(core::String*, core::num*) →* void};
+      #t70.{core::Map::[]=}{Invariant}("bar", 42);
     else
-      #t70.{core::Map::[]=}("bar", 3.14){(core::String*, core::num*) →* void};
-    #t70.{core::Map::[]=}("baz", null){(core::String*, core::num*) →* void};
+      #t70.{core::Map::[]=}{Invariant}("bar", 3.14);
+    #t70.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t70;
   core::List<core::num*>* list81 = block {
     final core::List<core::num*>* #t71 = <core::num*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t71.{core::List::addAll}(listInt){(core::Iterable<core::num*>*) →* void};
+      #t71.{core::List::addAll}{Invariant}(listInt);
     else
-      #t71.{core::List::addAll}(listDouble){(core::Iterable<core::num*>*) →* void};
+      #t71.{core::List::addAll}{Invariant}(listDouble);
   } =>#t71;
   core::Set<core::num*>* set81 = block {
     final core::Set<core::num*>* #t72 = col::LinkedHashSet::•<core::num*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t72.{core::Set::addAll}(listInt){(core::Iterable<core::num*>*) →* void};
+      #t72.{core::Set::addAll}{Invariant}(listInt);
     else
-      #t72.{core::Set::addAll}(listDouble){(core::Iterable<core::num*>*) →* void};
-    #t72.{core::Set::add}(null){(core::num*) →* core::bool*};
+      #t72.{core::Set::addAll}{Invariant}(listDouble);
+    #t72.{core::Set::add}{Invariant}(null);
   } =>#t72;
   core::Map<core::String*, core::num*>* map81 = block {
     final core::Map<core::String*, core::num*>* #t73 = <core::String*, core::num*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       for (final core::MapEntry<core::String*, core::num*>* #t74 in mapToInt.{core::Map::entries})
-        #t73.{core::Map::[]=}(#t74.{core::MapEntry::key}, #t74.{core::MapEntry::value}){(core::String*, core::num*) →* void};
+        #t73.{core::Map::[]=}{Invariant}(#t74.{core::MapEntry::key}, #t74.{core::MapEntry::value});
     else
       for (final core::MapEntry<core::String*, core::num*>* #t75 in mapToDouble.{core::Map::entries})
-        #t73.{core::Map::[]=}(#t75.{core::MapEntry::key}, #t75.{core::MapEntry::value}){(core::String*, core::num*) →* void};
-    #t73.{core::Map::[]=}("baz", null){(core::String*, core::num*) →* void};
+        #t73.{core::Map::[]=}{Invariant}(#t75.{core::MapEntry::key}, #t75.{core::MapEntry::value});
+    #t73.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t73;
   core::List<dynamic>* list82 = block {
     final core::List<dynamic>* #t76 = <dynamic>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t76.{core::List::addAll}(listInt){(core::Iterable<dynamic>*) →* void};
+      #t76.{core::List::addAll}{Invariant}(listInt);
     else
-      #t76.{core::List::addAll}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*){(core::Iterable<dynamic>*) →* void};
+      #t76.{core::List::addAll}{Invariant}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*);
   } =>#t76;
   core::Set<dynamic>* set82 = block {
     final core::Set<dynamic>* #t77 = col::LinkedHashSet::•<dynamic>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t77.{core::Set::addAll}(listInt){(core::Iterable<dynamic>*) →* void};
+      #t77.{core::Set::addAll}{Invariant}(listInt);
     else
-      #t77.{core::Set::addAll}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*){(core::Iterable<dynamic>*) →* void};
-    #t77.{core::Set::add}(null){(dynamic) →* core::bool*};
+      #t77.{core::Set::addAll}{Invariant}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*);
+    #t77.{core::Set::add}{Invariant}(null);
   } =>#t77;
   core::Set<dynamic>* map82 = block {
     final core::Set<dynamic>* #t78 = col::LinkedHashSet::•<dynamic>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t78.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:71:38: Error: Unexpected type 'Map<String, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t78.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:71:38: Error: Unexpected type 'Map<String, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   var map82 = {if (oracle(\"foo\")) ...mapToInt else ...dynVar, null};
-                                     ^"){(dynamic) →* core::bool*};
+                                     ^");
     else
-      #t78.{core::Set::addAll}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*){(core::Iterable<dynamic>*) →* void};
-    #t78.{core::Set::add}(null){(dynamic) →* core::bool*};
+      #t78.{core::Set::addAll}{Invariant}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*);
+    #t78.{core::Set::add}{Invariant}(null);
   } =>#t78;
   core::List<core::num*>* list83 = block {
     final core::List<core::num*>* #t79 = <core::num*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t79.{core::List::add}(42){(core::num*) →* void};
+      #t79.{core::List::add}{Invariant}(42);
     else
-      #t79.{core::List::addAll}(listDouble){(core::Iterable<core::num*>*) →* void};
+      #t79.{core::List::addAll}{Invariant}(listDouble);
   } =>#t79;
   core::Set<core::num*>* set83 = block {
     final core::Set<core::num*>* #t80 = col::LinkedHashSet::•<core::num*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t80.{core::Set::addAll}(listInt){(core::Iterable<core::num*>*) →* void};
+      #t80.{core::Set::addAll}{Invariant}(listInt);
     else
-      #t80.{core::Set::add}(3.14){(core::num*) →* core::bool*};
-    #t80.{core::Set::add}(null){(core::num*) →* core::bool*};
+      #t80.{core::Set::add}{Invariant}(3.14);
+    #t80.{core::Set::add}{Invariant}(null);
   } =>#t80;
   core::Map<core::String*, core::num*>* map83 = block {
     final core::Map<core::String*, core::num*>* #t81 = <core::String*, core::num*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       for (final core::MapEntry<core::String*, core::num*>* #t82 in mapToInt.{core::Map::entries})
-        #t81.{core::Map::[]=}(#t82.{core::MapEntry::key}, #t82.{core::MapEntry::value}){(core::String*, core::num*) →* void};
+        #t81.{core::Map::[]=}{Invariant}(#t82.{core::MapEntry::key}, #t82.{core::MapEntry::value});
     else
-      #t81.{core::Map::[]=}("bar", 3.14){(core::String*, core::num*) →* void};
-    #t81.{core::Map::[]=}("baz", null){(core::String*, core::num*) →* void};
+      #t81.{core::Map::[]=}{Invariant}("bar", 3.14);
+    #t81.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t81;
   core::List<core::int*>* list90 = block {
     final core::List<core::int*>* #t83 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t83.{core::List::add}(dynVar as{TypeError,ForDynamic} core::int*){(core::int*) →* void};
+      #t83.{core::List::add}{Invariant}(dynVar as{TypeError,ForDynamic} core::int*);
   } =>#t83;
   core::Set<core::int*>* set90 = block {
     final core::Set<core::int*>* #t84 = col::LinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t84.{core::Set::add}(dynVar as{TypeError,ForDynamic} core::int*){(core::int*) →* core::bool*};
-    #t84.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t84.{core::Set::add}{Invariant}(dynVar as{TypeError,ForDynamic} core::int*);
+    #t84.{core::Set::add}{Invariant}(null);
   } =>#t84;
   core::Map<core::String*, core::int*>* map90 = block {
     final core::Map<core::String*, core::int*>* #t85 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t85.{core::Map::[]=}("bar", dynVar as{TypeError,ForDynamic} core::int*){(core::String*, core::int*) →* void};
-    #t85.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+      #t85.{core::Map::[]=}{Invariant}("bar", dynVar as{TypeError,ForDynamic} core::int*);
+    #t85.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t85;
   core::List<core::int*>* list91 = block {
     final core::List<core::int*>* #t86 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       for (final dynamic #t87 in dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
         final core::int* #t88 = #t87 as{TypeError} core::int*;
-        #t86.{core::List::add}(#t88){(core::int*) →* void};
+        #t86.{core::List::add}{Invariant}(#t88);
       }
   } =>#t86;
   core::Set<core::int*>* set91 = block {
@@ -916,9 +916,9 @@
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       for (final dynamic #t90 in dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
         final core::int* #t91 = #t90 as{TypeError} core::int*;
-        #t89.{core::Set::add}(#t91){(core::int*) →* core::bool*};
+        #t89.{core::Set::add}{Invariant}(#t91);
       }
-    #t89.{core::Set::add}(null){(core::int*) →* core::bool*};
+    #t89.{core::Set::add}{Invariant}(null);
   } =>#t89;
   core::Map<core::String*, core::int*>* map91 = block {
     final core::Map<core::String*, core::int*>* #t92 = <core::String*, core::int*>{};
@@ -926,64 +926,64 @@
       for (final core::MapEntry<dynamic, dynamic>* #t93 in (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}) {
         final core::String* #t94 = #t93.{core::MapEntry::key} as{TypeError} core::String*;
         final core::int* #t95 = #t93.{core::MapEntry::value} as{TypeError} core::int*;
-        #t92.{core::Map::[]=}(#t94, #t95){(core::String*, core::int*) →* void};
+        #t92.{core::Map::[]=}{Invariant}(#t94, #t95);
       }
-    #t92.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t92.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t92;
   core::List<core::int*>* list100 = block {
     final core::List<core::int*>* #t96 = <core::int*>[];
     if(dynVar as{TypeError,ForDynamic} core::bool*)
-      #t96.{core::List::add}(42){(core::int*) →* void};
+      #t96.{core::List::add}{Invariant}(42);
   } =>#t96;
   core::Set<core::int*>* set100 = block {
     final core::Set<core::int*>* #t97 = col::LinkedHashSet::•<core::int*>();
     if(dynVar as{TypeError,ForDynamic} core::bool*)
-      #t97.{core::Set::add}(42){(core::int*) →* core::bool*};
+      #t97.{core::Set::add}{Invariant}(42);
   } =>#t97;
   core::Map<core::int*, core::int*>* map100 = block {
     final core::Map<core::int*, core::int*>* #t98 = <core::int*, core::int*>{};
     if(dynVar as{TypeError,ForDynamic} core::bool*)
-      #t98.{core::Map::[]=}(42, 42){(core::int*, core::int*) →* void};
+      #t98.{core::Map::[]=}{Invariant}(42, 42);
   } =>#t98;
 }
 static method testIfElementErrors(core::Map<core::int*, core::int*>* map) → dynamic {
   block {
     final core::List<core::int*>* #t99 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t99.{core::List::add}(let final Never* #t100 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:87:28: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      #t99.{core::List::add}{Invariant}(let final Never* #t100 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:87:28: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>[if (oracle(\"foo\")) \"bar\"];
-                           ^" in "bar" as{TypeError} core::int*){(core::int*) →* void};
+                           ^" in "bar" as{TypeError} core::int*);
   } =>#t99;
   block {
     final core::Set<core::int*>* #t101 = col::LinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t101.{core::Set::add}(let final Never* #t102 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:88:28: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      #t101.{core::Set::add}{Invariant}(let final Never* #t102 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:88:28: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>{if (oracle(\"foo\")) \"bar\", null};
-                           ^" in "bar" as{TypeError} core::int*){(core::int*) →* core::bool*};
-    #t101.{core::Set::add}(null){(core::int*) →* core::bool*};
+                           ^" in "bar" as{TypeError} core::int*);
+    #t101.{core::Set::add}{Invariant}(null);
   } =>#t101;
   block {
     final core::Map<core::String*, core::int*>* #t103 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t103.{core::Map::[]=}("bar", let final Never* #t104 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:89:43: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      #t103.{core::Map::[]=}{Invariant}("bar", let final Never* #t104 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:89:43: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <String, int>{if (oracle(\"foo\")) \"bar\": \"bar\", \"baz\": null};
-                                          ^" in "bar" as{TypeError} core::int*){(core::String*, core::int*) →* void};
-    #t103.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+                                          ^" in "bar" as{TypeError} core::int*);
+    #t103.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t103;
   block {
     final core::List<core::int*>* #t105 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t105.{core::List::addAll}(<core::int*>[let final Never* #t106 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:90:32: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      #t105.{core::List::addAll}{Invariant}(<core::int*>[let final Never* #t106 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:90:32: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>[if (oracle(\"foo\")) ...[\"bar\"]];
-                               ^" in "bar" as{TypeError} core::int*]){(core::Iterable<core::int*>*) →* void};
+                               ^" in "bar" as{TypeError} core::int*]);
   } =>#t105;
   block {
     final core::Set<core::int*>* #t107 = col::LinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t107.{core::Set::addAll}(<core::int*>[let final Never* #t108 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:91:32: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      #t107.{core::Set::addAll}{Invariant}(<core::int*>[let final Never* #t108 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:91:32: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>{if (oracle(\"foo\")) ...[\"bar\"], null};
-                               ^" in "bar" as{TypeError} core::int*]){(core::Iterable<core::int*>*) →* void};
-    #t107.{core::Set::add}(null){(core::int*) →* core::bool*};
+                               ^" in "bar" as{TypeError} core::int*]);
+    #t107.{core::Set::add}{Invariant}(null);
   } =>#t107;
   block {
     final core::Map<core::String*, core::int*>* #t109 = <core::String*, core::int*>{};
@@ -991,25 +991,25 @@
       for (final core::MapEntry<core::String*, core::int*>* #t110 in <core::String*, core::int*>{"bar": let final Never* #t111 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:92:47: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <String, int>{if (oracle(\"foo\")) ...{\"bar\": \"bar\"}, \"baz\": null};
                                               ^" in "bar" as{TypeError} core::int*}.{core::Map::entries})
-        #t109.{core::Map::[]=}(#t110.{core::MapEntry::key}, #t110.{core::MapEntry::value}){(core::String*, core::int*) →* void};
-    #t109.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+        #t109.{core::Map::[]=}{Invariant}(#t110.{core::MapEntry::key}, #t110.{core::MapEntry::value});
+    #t109.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t109;
   block {
     final core::List<core::int*>* #t112 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t112.{core::List::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:93:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t112.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:93:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>[if (oracle(\"foo\")) ...map];
-                              ^"){(core::int*) →* void};
+                              ^");
   } =>#t112;
   block {
     final core::Set<core::int*>* #t113 = col::LinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t113.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:94:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t113.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:94:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>{if (oracle(\"foo\")) ...map, null};
-                              ^"){(core::int*) →* core::bool*};
-    #t113.{core::Set::add}(null){(core::int*) →* core::bool*};
+                              ^");
+    #t113.{core::Set::add}{Invariant}(null);
   } =>#t113;
   <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:95:39: Error: Unexpected type 'List<String>' of a map spread entry.  Expected 'dynamic' or a Map.
  - 'List' is from 'dart:core'.
@@ -1021,58 +1021,58 @@
   block {
     final core::List<core::String*>* #t114 = <core::String*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t114.{core::List::add}(let final Never* #t115 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:96:31: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t114.{core::List::add}{Invariant}(let final Never* #t115 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:96:31: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   <String>[if (oracle(\"foo\")) 42 else 3.14];
-                              ^" in 42 as{TypeError} core::String*){(core::String*) →* void};
+                              ^" in 42 as{TypeError} core::String*);
     else
-      #t114.{core::List::add}(let final Never* #t116 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:96:39: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+      #t114.{core::List::add}{Invariant}(let final Never* #t116 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:96:39: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
   <String>[if (oracle(\"foo\")) 42 else 3.14];
-                                      ^" in 3.14 as{TypeError} core::String*){(core::String*) →* void};
+                                      ^" in 3.14 as{TypeError} core::String*);
   } =>#t114;
   block {
     final core::Set<core::String*>* #t117 = col::LinkedHashSet::•<core::String*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t117.{core::Set::add}(let final Never* #t118 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:97:31: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t117.{core::Set::add}{Invariant}(let final Never* #t118 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:97:31: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   <String>{if (oracle(\"foo\")) 42 else 3.14, null};
-                              ^" in 42 as{TypeError} core::String*){(core::String*) →* core::bool*};
+                              ^" in 42 as{TypeError} core::String*);
     else
-      #t117.{core::Set::add}(let final Never* #t119 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:97:39: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+      #t117.{core::Set::add}{Invariant}(let final Never* #t119 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:97:39: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
   <String>{if (oracle(\"foo\")) 42 else 3.14, null};
-                                      ^" in 3.14 as{TypeError} core::String*){(core::String*) →* core::bool*};
-    #t117.{core::Set::add}(null){(core::String*) →* core::bool*};
+                                      ^" in 3.14 as{TypeError} core::String*);
+    #t117.{core::Set::add}{Invariant}(null);
   } =>#t117;
   block {
     final core::Map<core::String*, core::String*>* #t120 = <core::String*, core::String*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t120.{core::Map::[]=}("bar", let final Never* #t121 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:98:46: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t120.{core::Map::[]=}{Invariant}("bar", let final Never* #t121 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:98:46: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   <String, String>{if (oracle(\"foo\")) \"bar\": 42 else \"baz\": 3.14, \"baz\": null};
-                                             ^" in 42 as{TypeError} core::String*){(core::String*, core::String*) →* void};
+                                             ^" in 42 as{TypeError} core::String*);
     else
-      #t120.{core::Map::[]=}("baz", let final Never* #t122 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:98:61: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+      #t120.{core::Map::[]=}{Invariant}("baz", let final Never* #t122 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:98:61: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
   <String, String>{if (oracle(\"foo\")) \"bar\": 42 else \"baz\": 3.14, \"baz\": null};
-                                                            ^" in 3.14 as{TypeError} core::String*){(core::String*, core::String*) →* void};
-    #t120.{core::Map::[]=}("baz", null){(core::String*, core::String*) →* void};
+                                                            ^" in 3.14 as{TypeError} core::String*);
+    #t120.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t120;
   block {
     final core::List<core::int*>* #t123 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t123.{core::List::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:99:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t123.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:99:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>[if (oracle(\"foo\")) ...map else 42];
-                              ^"){(core::int*) →* void};
+                              ^");
     else
-      #t123.{core::List::add}(42){(core::int*) →* void};
+      #t123.{core::List::add}{Invariant}(42);
   } =>#t123;
   block {
     final core::Set<core::int*>* #t124 = col::LinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t124.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:100:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t124.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:100:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>{if (oracle(\"foo\")) ...map else 42, null};
-                              ^"){(core::int*) →* core::bool*};
+                              ^");
     else
-      #t124.{core::Set::add}(42){(core::int*) →* core::bool*};
-    #t124.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t124.{core::Set::add}{Invariant}(42);
+    #t124.{core::Set::add}{Invariant}(null);
   } =>#t124;
   <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:101:39: Error: Unexpected type 'List<int>' of a map spread entry.  Expected 'dynamic' or a Map.
  - 'List' is from 'dart:core'.
@@ -1084,23 +1084,23 @@
   block {
     final core::List<core::int*>* #t125 = <core::int*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t125.{core::List::add}(42){(core::int*) →* void};
+      #t125.{core::List::add}{Invariant}(42);
     else
-      #t125.{core::List::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:102:39: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t125.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:102:39: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>[if (oracle(\"foo\")) 42 else ...map];
-                                      ^"){(core::int*) →* void};
+                                      ^");
   } =>#t125;
   block {
     final core::Set<core::int*>* #t126 = col::LinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t126.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:103:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t126.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:103:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>{if (oracle(\"foo\")) ...map else 42, null};
-                              ^"){(core::int*) →* core::bool*};
+                              ^");
     else
-      #t126.{core::Set::add}(42){(core::int*) →* core::bool*};
-    #t126.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t126.{core::Set::add}{Invariant}(42);
+    #t126.{core::Set::add}{Invariant}(null);
   } =>#t126;
   <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:104:54: Error: Unexpected type 'List<int>' of a map spread entry.  Expected 'dynamic' or a Map.
  - 'List' is from 'dart:core'.
@@ -1132,704 +1132,704 @@
     if(let final Never* #t128 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:112:27: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
   List<int> list20 = [if (42) 42];
                           ^" in 42 as{TypeError} core::bool*)
-      #t127.{core::List::add}(42){(core::int*) →* void};
+      #t127.{core::List::add}{Invariant}(42);
   } =>#t127;
   core::Set<core::int*>* set20 = block {
     final core::Set<core::int*>* #t129 = col::LinkedHashSet::•<core::int*>();
     if(let final Never* #t130 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:113:25: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
   Set<int> set20 = {if (42) 42};
                         ^" in 42 as{TypeError} core::bool*)
-      #t129.{core::Set::add}(42){(core::int*) →* core::bool*};
+      #t129.{core::Set::add}{Invariant}(42);
   } =>#t129;
   core::Map<core::int*, core::int*>* map30 = block {
     final core::Map<core::int*, core::int*>* #t131 = <core::int*, core::int*>{};
     if(let final Never* #t132 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:114:30: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
   Map<int, int> map30 = {if (42) 42: 42};
                              ^" in 42 as{TypeError} core::bool*)
-      #t131.{core::Map::[]=}(42, 42){(core::int*, core::int*) →* void};
+      #t131.{core::Map::[]=}{Invariant}(42, 42);
   } =>#t131;
   core::List<core::String*>* list40 = block {
     final core::List<core::String*>* #t133 = <core::String*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t133.{core::List::add}(let final Never* #t134 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:115:53: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
+      #t133.{core::List::add}{Invariant}(let final Never* #t134 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:115:53: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
   List<String> list40 = <String>[if (oracle(\"foo\")) true else 42];
-                                                    ^" in true as{TypeError} core::String*){(core::String*) →* void};
+                                                    ^" in true as{TypeError} core::String*);
     else
-      #t133.{core::List::add}(let final Never* #t135 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:115:63: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t133.{core::List::add}{Invariant}(let final Never* #t135 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:115:63: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   List<String> list40 = <String>[if (oracle(\"foo\")) true else 42];
-                                                              ^" in 42 as{TypeError} core::String*){(core::String*) →* void};
+                                                              ^" in 42 as{TypeError} core::String*);
   } =>#t133;
   core::Set<core::String*>* set40 = block {
     final core::Set<core::String*>* #t136 = col::LinkedHashSet::•<core::String*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t136.{core::Set::add}(let final Never* #t137 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:116:51: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
+      #t136.{core::Set::add}{Invariant}(let final Never* #t137 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:116:51: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
   Set<String> set40 = <String>{if (oracle(\"foo\")) true else 42};
-                                                  ^" in true as{TypeError} core::String*){(core::String*) →* core::bool*};
+                                                  ^" in true as{TypeError} core::String*);
     else
-      #t136.{core::Set::add}(let final Never* #t138 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:116:61: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t136.{core::Set::add}{Invariant}(let final Never* #t138 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:116:61: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   Set<String> set40 = <String>{if (oracle(\"foo\")) true else 42};
-                                                            ^" in 42 as{TypeError} core::String*){(core::String*) →* core::bool*};
+                                                            ^" in 42 as{TypeError} core::String*);
   } =>#t136;
   core::Map<core::String*, core::int*>* map40 = block {
     final core::Map<core::String*, core::int*>* #t139 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t139.{core::Map::[]=}(let final Never* #t140 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:117:61: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
+      #t139.{core::Map::[]=}{Invariant}(let final Never* #t140 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:117:61: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
   Map<String, int> map40 = <String, int>{if (oracle(\"foo\")) true: 42 else 42: 42};
-                                                            ^" in true as{TypeError} core::String*, 42){(core::String*, core::int*) →* void};
+                                                            ^" in true as{TypeError} core::String*, 42);
     else
-      #t139.{core::Map::[]=}(let final Never* #t141 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:117:75: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t139.{core::Map::[]=}{Invariant}(let final Never* #t141 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:117:75: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   Map<String, int> map40 = <String, int>{if (oracle(\"foo\")) true: 42 else 42: 42};
-                                                                          ^" in 42 as{TypeError} core::String*, 42){(core::String*, core::int*) →* void};
+                                                                          ^" in 42 as{TypeError} core::String*, 42);
   } =>#t139;
   core::Map<core::int*, core::String*>* map41 = block {
     final core::Map<core::int*, core::String*>* #t142 = <core::int*, core::String*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t142.{core::Map::[]=}(42, let final Never* #t143 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:118:65: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
+      #t142.{core::Map::[]=}{Invariant}(42, let final Never* #t143 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:118:65: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
   Map<int, String> map41 = <int, String>{if (oracle(\"foo\")) 42: true else 42: 42};
-                                                                ^" in true as{TypeError} core::String*){(core::int*, core::String*) →* void};
+                                                                ^" in true as{TypeError} core::String*);
     else
-      #t142.{core::Map::[]=}(42, let final Never* #t144 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:118:79: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t142.{core::Map::[]=}{Invariant}(42, let final Never* #t144 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:118:79: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   Map<int, String> map41 = <int, String>{if (oracle(\"foo\")) 42: true else 42: 42};
-                                                                              ^" in 42 as{TypeError} core::String*){(core::int*, core::String*) →* void};
+                                                                              ^" in 42 as{TypeError} core::String*);
   } =>#t142;
 }
 static method testForElement(dynamic dynVar, core::List<core::int*>* listInt, core::List<core::double*>* listDouble, core::int* index, core::Map<core::String*, core::int*>* mapStringInt, core::Map<core::String*, core::double*>* mapStringDouble) → dynamic {
   core::List<core::int*>* list10 = block {
     final core::List<core::int*>* #t145 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t145.{core::List::add}(42){(core::int*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t145.{core::List::add}{Invariant}(42);
   } =>#t145;
   core::Set<core::int*>* set10 = block {
     final core::Set<core::int*>* #t146 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t146.{core::Set::add}(42){(core::int*) →* core::bool*};
-    #t146.{core::Set::add}(null){(core::int*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t146.{core::Set::add}{Invariant}(42);
+    #t146.{core::Set::add}{Invariant}(null);
   } =>#t146;
   core::Map<core::String*, core::int*>* map10 = block {
     final core::Map<core::String*, core::int*>* #t147 = <core::String*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t147.{core::Map::[]=}("bar", 42){(core::String*, core::int*) →* void};
-    #t147.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t147.{core::Map::[]=}{Invariant}("bar", 42);
+    #t147.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t147;
   core::List<dynamic>* list11 = block {
     final core::List<dynamic>* #t148 = <dynamic>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t148.{core::List::add}(dynVar){(dynamic) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t148.{core::List::add}{Invariant}(dynVar);
   } =>#t148;
   core::Set<dynamic>* set11 = block {
     final core::Set<dynamic>* #t149 = col::LinkedHashSet::•<dynamic>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t149.{core::Set::add}(dynVar){(dynamic) →* core::bool*};
-    #t149.{core::Set::add}(null){(dynamic) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t149.{core::Set::add}{Invariant}(dynVar);
+    #t149.{core::Set::add}{Invariant}(null);
   } =>#t149;
   core::Map<core::String*, dynamic>* map11 = block {
     final core::Map<core::String*, dynamic>* #t150 = <core::String*, dynamic>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t150.{core::Map::[]=}("bar", dynVar){(core::String*, dynamic) →* void};
-    #t150.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t150.{core::Map::[]=}{Invariant}("bar", dynVar);
+    #t150.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t150;
   core::List<core::List<core::int*>*>* list12 = block {
     final core::List<core::List<core::int*>*>* #t151 = <core::List<core::int*>*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t151.{core::List::add}(<core::int*>[42]){(core::List<core::int*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t151.{core::List::add}{Invariant}(<core::int*>[42]);
   } =>#t151;
   core::Set<core::List<core::int*>*>* set12 = block {
     final core::Set<core::List<core::int*>*>* #t152 = col::LinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t152.{core::Set::add}(<core::int*>[42]){(core::List<core::int*>*) →* core::bool*};
-    #t152.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t152.{core::Set::add}{Invariant}(<core::int*>[42]);
+    #t152.{core::Set::add}{Invariant}(null);
   } =>#t152;
   core::Map<core::String*, core::List<core::int*>*>* map12 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t153 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t153.{core::Map::[]=}("bar", <core::int*>[42]){(core::String*, core::List<core::int*>*) →* void};
-    #t153.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t153.{core::Map::[]=}{Invariant}("bar", <core::int*>[42]);
+    #t153.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t153;
   core::List<core::int*>* list20 = block {
     final core::List<core::int*>* #t154 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t154.{core::List::addAll}(<core::int*>[42]){(core::Iterable<core::int*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t154.{core::List::addAll}{Invariant}(<core::int*>[42]);
   } =>#t154;
   core::Set<core::int*>* set20 = block {
     final core::Set<core::int*>* #t155 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t155.{core::Set::addAll}(<core::int*>[42]){(core::Iterable<core::int*>*) →* void};
-    #t155.{core::Set::add}(null){(core::int*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t155.{core::Set::addAll}{Invariant}(<core::int*>[42]);
+    #t155.{core::Set::add}{Invariant}(null);
   } =>#t155;
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t156 = <core::String*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       for (final core::MapEntry<core::String*, core::int*>* #t157 in <core::String*, core::int*>{"bar": 42}.{core::Map::entries})
-        #t156.{core::Map::[]=}(#t157.{core::MapEntry::key}, #t157.{core::MapEntry::value}){(core::String*, core::int*) →* void};
-    #t156.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+        #t156.{core::Map::[]=}{Invariant}(#t157.{core::MapEntry::key}, #t157.{core::MapEntry::value});
+    #t156.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t156;
   core::List<dynamic>* list21 = block {
     final core::List<dynamic>* #t158 = <dynamic>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t158.{core::List::addAll}(<dynamic>[dynVar]){(core::Iterable<dynamic>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t158.{core::List::addAll}{Invariant}(<dynamic>[dynVar]);
   } =>#t158;
   core::Set<dynamic>* set21 = block {
     final core::Set<dynamic>* #t159 = col::LinkedHashSet::•<dynamic>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t159.{core::Set::addAll}(<dynamic>[dynVar]){(core::Iterable<dynamic>*) →* void};
-    #t159.{core::Set::add}(null){(dynamic) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t159.{core::Set::addAll}{Invariant}(<dynamic>[dynVar]);
+    #t159.{core::Set::add}{Invariant}(null);
   } =>#t159;
   core::Map<core::String*, dynamic>* map21 = block {
     final core::Map<core::String*, dynamic>* #t160 = <core::String*, dynamic>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       for (final core::MapEntry<core::String*, dynamic>* #t161 in <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries})
-        #t160.{core::Map::[]=}(#t161.{core::MapEntry::key}, #t161.{core::MapEntry::value}){(core::String*, dynamic) →* void};
-    #t160.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+        #t160.{core::Map::[]=}{Invariant}(#t161.{core::MapEntry::key}, #t161.{core::MapEntry::value});
+    #t160.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t160;
   core::List<core::List<core::int*>*>* list22 = block {
     final core::List<core::List<core::int*>*>* #t162 = <core::List<core::int*>*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t162.{core::List::addAll}(<core::List<core::int*>*>[<core::int*>[42]]){(core::Iterable<core::List<core::int*>*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t162.{core::List::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[42]]);
   } =>#t162;
   core::Set<core::List<core::int*>*>* set22 = block {
     final core::Set<core::List<core::int*>*>* #t163 = col::LinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t163.{core::Set::addAll}(<core::List<core::int*>*>[<core::int*>[42]]){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t163.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t163.{core::Set::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[42]]);
+    #t163.{core::Set::add}{Invariant}(null);
   } =>#t163;
   core::Map<core::String*, core::List<core::int*>*>* map22 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t164 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t165 in <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries})
-        #t164.{core::Map::[]=}(#t165.{core::MapEntry::key}, #t165.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
-    #t164.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+        #t164.{core::Map::[]=}{Invariant}(#t165.{core::MapEntry::key}, #t165.{core::MapEntry::value});
+    #t164.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t164;
   core::List<core::int*>* list30 = block {
     final core::List<core::int*>* #t166 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t166.{core::List::addAll}(<core::int*>[42]){(core::Iterable<core::int*>*) →* void};
+        #t166.{core::List::addAll}{Invariant}(<core::int*>[42]);
   } =>#t166;
   core::Set<core::int*>* set30 = block {
     final core::Set<core::int*>* #t167 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t167.{core::Set::addAll}(<core::int*>[42]){(core::Iterable<core::int*>*) →* void};
-    #t167.{core::Set::add}(null){(core::int*) →* core::bool*};
+        #t167.{core::Set::addAll}{Invariant}(<core::int*>[42]);
+    #t167.{core::Set::add}{Invariant}(null);
   } =>#t167;
   core::Map<core::String*, core::int*>* map30 = block {
     final core::Map<core::String*, core::int*>* #t168 = <core::String*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, core::int*>* #t169 in <core::String*, core::int*>{"bar": 42}.{core::Map::entries})
-          #t168.{core::Map::[]=}(#t169.{core::MapEntry::key}, #t169.{core::MapEntry::value}){(core::String*, core::int*) →* void};
-    #t168.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+          #t168.{core::Map::[]=}{Invariant}(#t169.{core::MapEntry::key}, #t169.{core::MapEntry::value});
+    #t168.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t168;
   core::List<dynamic>* list31 = block {
     final core::List<dynamic>* #t170 = <dynamic>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t170.{core::List::addAll}(<dynamic>[dynVar]){(core::Iterable<dynamic>*) →* void};
+        #t170.{core::List::addAll}{Invariant}(<dynamic>[dynVar]);
   } =>#t170;
   core::Set<dynamic>* set31 = block {
     final core::Set<dynamic>* #t171 = col::LinkedHashSet::•<dynamic>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t171.{core::Set::addAll}(<dynamic>[dynVar]){(core::Iterable<dynamic>*) →* void};
-    #t171.{core::Set::add}(null){(dynamic) →* core::bool*};
+        #t171.{core::Set::addAll}{Invariant}(<dynamic>[dynVar]);
+    #t171.{core::Set::add}{Invariant}(null);
   } =>#t171;
   core::Map<core::String*, dynamic>* map31 = block {
     final core::Map<core::String*, dynamic>* #t172 = <core::String*, dynamic>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, dynamic>* #t173 in <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries})
-          #t172.{core::Map::[]=}(#t173.{core::MapEntry::key}, #t173.{core::MapEntry::value}){(core::String*, dynamic) →* void};
-    #t172.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+          #t172.{core::Map::[]=}{Invariant}(#t173.{core::MapEntry::key}, #t173.{core::MapEntry::value});
+    #t172.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t172;
   core::List<core::List<core::int*>*>* list33 = block {
     final core::List<core::List<core::int*>*>* #t174 = <core::List<core::int*>*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t174.{core::List::addAll}(<core::List<core::int*>*>[<core::int*>[42]]){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t174.{core::List::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[42]]);
   } =>#t174;
   core::Set<core::List<core::int*>*>* set33 = block {
     final core::Set<core::List<core::int*>*>* #t175 = col::LinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t175.{core::Set::addAll}(<core::List<core::int*>*>[<core::int*>[42]]){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t175.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t175.{core::Set::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[42]]);
+    #t175.{core::Set::add}{Invariant}(null);
   } =>#t175;
   core::Map<core::String*, core::List<core::int*>*>* map33 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t176 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t177 in <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries})
-          #t176.{core::Map::[]=}(#t177.{core::MapEntry::key}, #t177.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
-    #t176.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+          #t176.{core::Map::[]=}{Invariant}(#t177.{core::MapEntry::key}, #t177.{core::MapEntry::value});
+    #t176.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t176;
   core::List<core::List<core::int*>*>* list40 = block {
     final core::List<core::List<core::int*>*>* #t178 = <core::List<core::int*>*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t178.{core::List::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t178.{core::List::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
   } =>#t178;
   core::Set<core::List<core::int*>*>* set40 = block {
     final core::Set<core::List<core::int*>*>* #t179 = col::LinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t179.{core::Set::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t179.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t179.{core::Set::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
+    #t179.{core::Set::add}{Invariant}(null);
   } =>#t179;
   core::Map<core::String*, core::List<core::int*>*>* map40 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t180 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t181 in <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries})
-        #t180.{core::Map::[]=}(#t181.{core::MapEntry::key}, #t181.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
-    #t180.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+        #t180.{core::Map::[]=}{Invariant}(#t181.{core::MapEntry::key}, #t181.{core::MapEntry::value});
+    #t180.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t180;
   core::List<core::List<core::int*>*>* list41 = block {
     final core::List<core::List<core::int*>*>* #t182 = <core::List<core::int*>*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t182.{core::List::addAll}( block {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t182.{core::List::addAll}{Invariant}( block {
         final core::Set<core::List<core::int*>*>* #t183 = col::LinkedHashSet::•<core::List<core::int*>*>();
-        #t183.{core::Set::add}(<core::int*>[]){(core::List<core::int*>*) →* core::bool*};
-      } =>#t183){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t183.{core::Set::add}{Invariant}(<core::int*>[]);
+      } =>#t183);
   } =>#t182;
   core::Set<core::List<core::int*>*>* set41 = block {
     final core::Set<core::List<core::int*>*>* #t184 = col::LinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t184.{core::Set::addAll}( block {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t184.{core::Set::addAll}{Invariant}( block {
         final core::Set<core::List<core::int*>*>* #t185 = col::LinkedHashSet::•<core::List<core::int*>*>();
-        #t185.{core::Set::add}(<core::int*>[]){(core::List<core::int*>*) →* core::bool*};
-      } =>#t185){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t184.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t185.{core::Set::add}{Invariant}(<core::int*>[]);
+      } =>#t185);
+    #t184.{core::Set::add}{Invariant}(null);
   } =>#t184;
   core::List<core::List<core::int*>*>* list42 = block {
     final core::List<core::List<core::int*>*>* #t186 = <core::List<core::int*>*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t186.{core::List::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t186.{core::List::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
   } =>#t186;
   core::Set<core::List<core::int*>*>* set42 = block {
     final core::Set<core::List<core::int*>*>* #t187 = col::LinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t187.{core::Set::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t187.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t187.{core::Set::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
+    #t187.{core::Set::add}{Invariant}(null);
   } =>#t187;
   core::Map<core::String*, core::List<core::int*>*>* map42 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t188 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t189 in <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries})
-          #t188.{core::Map::[]=}(#t189.{core::MapEntry::key}, #t189.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
-    #t188.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+          #t188.{core::Map::[]=}{Invariant}(#t189.{core::MapEntry::key}, #t189.{core::MapEntry::value});
+    #t188.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t188;
   core::List<core::int*>* list50 = block {
     final core::List<core::int*>* #t190 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t190.{core::List::addAll}(<core::int*>[]){(core::Iterable<core::int*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t190.{core::List::addAll}{Invariant}(<core::int*>[]);
   } =>#t190;
   core::Set<core::int*>* set50 = block {
     final core::Set<core::int*>* #t191 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t191.{core::Set::addAll}(<core::int*>[]){(core::Iterable<core::int*>*) →* void};
-    #t191.{core::Set::add}(null){(core::int*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t191.{core::Set::addAll}{Invariant}(<core::int*>[]);
+    #t191.{core::Set::add}{Invariant}(null);
   } =>#t191;
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t192 = <core::String*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       for (final core::MapEntry<core::String*, core::int*>* #t193 in <core::String*, core::int*>{}.{core::Map::entries})
-        #t192.{core::Map::[]=}(#t193.{core::MapEntry::key}, #t193.{core::MapEntry::value}){(core::String*, core::int*) →* void};
-    #t192.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+        #t192.{core::Map::[]=}{Invariant}(#t193.{core::MapEntry::key}, #t193.{core::MapEntry::value});
+    #t192.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t192;
   core::List<core::int*>* list51 = block {
     final core::List<core::int*>* #t194 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t194.{core::List::addAll}( block {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t194.{core::List::addAll}{Invariant}( block {
         final core::Set<core::int*>* #t195 = col::LinkedHashSet::•<core::int*>();
-      } =>#t195){(core::Iterable<core::int*>*) →* void};
+      } =>#t195);
   } =>#t194;
   core::Set<core::int*>* set51 = block {
     final core::Set<core::int*>* #t196 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t196.{core::Set::addAll}( block {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t196.{core::Set::addAll}{Invariant}( block {
         final core::Set<core::int*>* #t197 = col::LinkedHashSet::•<core::int*>();
-      } =>#t197){(core::Iterable<core::int*>*) →* void};
-    #t196.{core::Set::add}(null){(core::int*) →* core::bool*};
+      } =>#t197);
+    #t196.{core::Set::add}{Invariant}(null);
   } =>#t196;
   core::List<core::int*>* list52 = block {
     final core::List<core::int*>* #t198 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t198.{core::List::addAll}(<core::int*>[]){(core::Iterable<core::int*>*) →* void};
+        #t198.{core::List::addAll}{Invariant}(<core::int*>[]);
   } =>#t198;
   core::Set<core::int*>* set52 = block {
     final core::Set<core::int*>* #t199 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t199.{core::Set::addAll}(<core::int*>[]){(core::Iterable<core::int*>*) →* void};
-    #t199.{core::Set::add}(null){(core::int*) →* core::bool*};
+        #t199.{core::Set::addAll}{Invariant}(<core::int*>[]);
+    #t199.{core::Set::add}{Invariant}(null);
   } =>#t199;
   core::List<core::List<core::int*>*>* list60 = block {
     final core::List<core::List<core::int*>*>* #t200 = <core::List<core::int*>*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t200.{core::List::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t200.{core::List::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
   } =>#t200;
   core::Set<core::List<core::int*>*>* set60 = block {
     final core::Set<core::List<core::int*>*>* #t201 = col::LinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t201.{core::Set::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t201.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t201.{core::Set::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
+    #t201.{core::Set::add}{Invariant}(null);
   } =>#t201;
   core::Map<core::String*, core::List<core::int*>*>* map60 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t202 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t203 in <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries})
-        #t202.{core::Map::[]=}(#t203.{core::MapEntry::key}, #t203.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
-    #t202.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+        #t202.{core::Map::[]=}{Invariant}(#t203.{core::MapEntry::key}, #t203.{core::MapEntry::value});
+    #t202.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t202;
   core::List<core::List<core::int*>*>* list61 = block {
     final core::List<core::List<core::int*>*>* #t204 = <core::List<core::int*>*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t204.{core::List::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t204.{core::List::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
   } =>#t204;
   core::Set<core::List<core::int*>*>* set61 = block {
     final core::Set<core::List<core::int*>*>* #t205 = col::LinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t205.{core::Set::addAll}(<core::List<core::int*>*>[<core::int*>[]]){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t205.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t205.{core::Set::addAll}{Invariant}(<core::List<core::int*>*>[<core::int*>[]]);
+    #t205.{core::Set::add}{Invariant}(null);
   } =>#t205;
   core::Map<core::String*, core::List<core::int*>*>* map61 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t206 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t207 in <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries})
-          #t206.{core::Map::[]=}(#t207.{core::MapEntry::key}, #t207.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
-    #t206.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+          #t206.{core::Map::[]=}{Invariant}(#t207.{core::MapEntry::key}, #t207.{core::MapEntry::value});
+    #t206.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t206;
   core::List<core::List<core::int*>*>* list70 = block {
     final core::List<core::List<core::int*>*>* #t208 = <core::List<core::int*>*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t208.{core::List::add}(<core::int*>[]){(core::List<core::int*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t208.{core::List::add}{Invariant}(<core::int*>[]);
   } =>#t208;
   core::Set<core::List<core::int*>*>* set70 = block {
     final core::Set<core::List<core::int*>*>* #t209 = col::LinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t209.{core::Set::add}(<core::int*>[]){(core::List<core::int*>*) →* core::bool*};
-    #t209.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t209.{core::Set::add}{Invariant}(<core::int*>[]);
+    #t209.{core::Set::add}{Invariant}(null);
   } =>#t209;
   core::Map<core::String*, core::List<core::int*>*>* map70 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t210 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t210.{core::Map::[]=}("bar", <core::int*>[]){(core::String*, core::List<core::int*>*) →* void};
-    #t210.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t210.{core::Map::[]=}{Invariant}("bar", <core::int*>[]);
+    #t210.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t210;
   core::List<core::List<core::int*>*>* list71 = block {
     final core::List<core::List<core::int*>*>* #t211 = <core::List<core::int*>*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t211.{core::List::add}(<core::int*>[]){(core::List<core::int*>*) →* void};
+        #t211.{core::List::add}{Invariant}(<core::int*>[]);
   } =>#t211;
   core::Set<core::List<core::int*>*>* set71 = block {
     final core::Set<core::List<core::int*>*>* #t212 = col::LinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t212.{core::Set::add}(<core::int*>[]){(core::List<core::int*>*) →* core::bool*};
-    #t212.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t212.{core::Set::add}{Invariant}(<core::int*>[]);
+    #t212.{core::Set::add}{Invariant}(null);
   } =>#t212;
   core::Map<core::String*, core::List<core::int*>*>* map71 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t213 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t213.{core::Map::[]=}("bar", <core::int*>[]){(core::String*, core::List<core::int*>*) →* void};
-    #t213.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+        #t213.{core::Map::[]=}{Invariant}("bar", <core::int*>[]);
+    #t213.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t213;
   core::List<core::num*>* list80 = block {
     final core::List<core::num*>* #t214 = <core::num*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t214.{core::List::add}(42){(core::num*) →* void};
+        #t214.{core::List::add}{Invariant}(42);
       else
-        #t214.{core::List::add}(3.14){(core::num*) →* void};
+        #t214.{core::List::add}{Invariant}(3.14);
   } =>#t214;
   core::Set<core::num*>* set80 = block {
     final core::Set<core::num*>* #t215 = col::LinkedHashSet::•<core::num*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t215.{core::Set::add}(42){(core::num*) →* core::bool*};
+        #t215.{core::Set::add}{Invariant}(42);
       else
-        #t215.{core::Set::add}(3.14){(core::num*) →* core::bool*};
-    #t215.{core::Set::add}(null){(core::num*) →* core::bool*};
+        #t215.{core::Set::add}{Invariant}(3.14);
+    #t215.{core::Set::add}{Invariant}(null);
   } =>#t215;
   core::Map<core::String*, core::num*>* map80 = block {
     final core::Map<core::String*, core::num*>* #t216 = <core::String*, core::num*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t216.{core::Map::[]=}("bar", 42){(core::String*, core::num*) →* void};
+        #t216.{core::Map::[]=}{Invariant}("bar", 42);
       else
-        #t216.{core::Map::[]=}("bar", 3.14){(core::String*, core::num*) →* void};
-    #t216.{core::Map::[]=}("baz", null){(core::String*, core::num*) →* void};
+        #t216.{core::Map::[]=}{Invariant}("bar", 3.14);
+    #t216.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t216;
   core::List<core::num*>* list81 = block {
     final core::List<core::num*>* #t217 = <core::num*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t217.{core::List::addAll}(listInt){(core::Iterable<core::num*>*) →* void};
+        #t217.{core::List::addAll}{Invariant}(listInt);
       else
-        #t217.{core::List::addAll}(listDouble){(core::Iterable<core::num*>*) →* void};
+        #t217.{core::List::addAll}{Invariant}(listDouble);
   } =>#t217;
   core::Set<core::num*>* set81 = block {
     final core::Set<core::num*>* #t218 = col::LinkedHashSet::•<core::num*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t218.{core::Set::addAll}(listInt){(core::Iterable<core::num*>*) →* void};
+        #t218.{core::Set::addAll}{Invariant}(listInt);
       else
-        #t218.{core::Set::addAll}(listDouble){(core::Iterable<core::num*>*) →* void};
-    #t218.{core::Set::add}(null){(core::num*) →* core::bool*};
+        #t218.{core::Set::addAll}{Invariant}(listDouble);
+    #t218.{core::Set::add}{Invariant}(null);
   } =>#t218;
   core::Map<core::String*, core::num*>* map81 = block {
     final core::Map<core::String*, core::num*>* #t219 = <core::String*, core::num*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, core::num*>* #t220 in mapStringInt.{core::Map::entries})
-          #t219.{core::Map::[]=}(#t220.{core::MapEntry::key}, #t220.{core::MapEntry::value}){(core::String*, core::num*) →* void};
+          #t219.{core::Map::[]=}{Invariant}(#t220.{core::MapEntry::key}, #t220.{core::MapEntry::value});
       else
         for (final core::MapEntry<core::String*, core::num*>* #t221 in mapStringDouble.{core::Map::entries})
-          #t219.{core::Map::[]=}(#t221.{core::MapEntry::key}, #t221.{core::MapEntry::value}){(core::String*, core::num*) →* void};
-    #t219.{core::Map::[]=}("baz", null){(core::String*, core::num*) →* void};
+          #t219.{core::Map::[]=}{Invariant}(#t221.{core::MapEntry::key}, #t221.{core::MapEntry::value});
+    #t219.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t219;
   core::List<dynamic>* list82 = block {
     final core::List<dynamic>* #t222 = <dynamic>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t222.{core::List::addAll}(listInt){(core::Iterable<dynamic>*) →* void};
+        #t222.{core::List::addAll}{Invariant}(listInt);
       else
-        #t222.{core::List::addAll}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*){(core::Iterable<dynamic>*) →* void};
+        #t222.{core::List::addAll}{Invariant}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*);
   } =>#t222;
   core::Set<dynamic>* set82 = block {
     final core::Set<dynamic>* #t223 = col::LinkedHashSet::•<dynamic>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t223.{core::Set::addAll}(listInt){(core::Iterable<dynamic>*) →* void};
+        #t223.{core::Set::addAll}{Invariant}(listInt);
       else
-        #t223.{core::Set::addAll}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*){(core::Iterable<dynamic>*) →* void};
-    #t223.{core::Set::add}(null){(dynamic) →* core::bool*};
+        #t223.{core::Set::addAll}{Invariant}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*);
+    #t223.{core::Set::add}{Invariant}(null);
   } =>#t223;
   core::Map<dynamic, dynamic>* map82 = block {
     final core::Map<dynamic, dynamic>* #t224 = <dynamic, dynamic>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<dynamic, dynamic>* #t225 in mapStringInt.{core::Map::entries})
-          #t224.{core::Map::[]=}(#t225.{core::MapEntry::key}, #t225.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+          #t224.{core::Map::[]=}{Invariant}(#t225.{core::MapEntry::key}, #t225.{core::MapEntry::value});
       else
         for (final core::MapEntry<dynamic, dynamic>* #t226 in (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries})
-          #t224.{core::Map::[]=}(#t226.{core::MapEntry::key}, #t226.{core::MapEntry::value}){(dynamic, dynamic) →* void};
-    #t224.{core::Map::[]=}("baz", null){(dynamic, dynamic) →* void};
+          #t224.{core::Map::[]=}{Invariant}(#t226.{core::MapEntry::key}, #t226.{core::MapEntry::value});
+    #t224.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t224;
   core::List<core::num*>* list83 = block {
     final core::List<core::num*>* #t227 = <core::num*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t227.{core::List::add}(42){(core::num*) →* void};
+        #t227.{core::List::add}{Invariant}(42);
       else
-        #t227.{core::List::addAll}(listDouble){(core::Iterable<core::num*>*) →* void};
+        #t227.{core::List::addAll}{Invariant}(listDouble);
   } =>#t227;
   core::Set<core::num*>* set83 = block {
     final core::Set<core::num*>* #t228 = col::LinkedHashSet::•<core::num*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t228.{core::Set::addAll}(listInt){(core::Iterable<core::num*>*) →* void};
+        #t228.{core::Set::addAll}{Invariant}(listInt);
       else
-        #t228.{core::Set::add}(3.14){(core::num*) →* core::bool*};
-    #t228.{core::Set::add}(null){(core::num*) →* core::bool*};
+        #t228.{core::Set::add}{Invariant}(3.14);
+    #t228.{core::Set::add}{Invariant}(null);
   } =>#t228;
   core::Map<core::String*, core::num*>* map83 = block {
     final core::Map<core::String*, core::num*>* #t229 = <core::String*, core::num*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
         for (final core::MapEntry<core::String*, core::num*>* #t230 in mapStringInt.{core::Map::entries})
-          #t229.{core::Map::[]=}(#t230.{core::MapEntry::key}, #t230.{core::MapEntry::value}){(core::String*, core::num*) →* void};
+          #t229.{core::Map::[]=}{Invariant}(#t230.{core::MapEntry::key}, #t230.{core::MapEntry::value});
       else
-        #t229.{core::Map::[]=}("bar", 3.14){(core::String*, core::num*) →* void};
-    #t229.{core::Map::[]=}("baz", null){(core::String*, core::num*) →* void};
+        #t229.{core::Map::[]=}{Invariant}("bar", 3.14);
+    #t229.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t229;
   core::List<core::int*>* list90 = block {
     final core::List<core::int*>* #t231 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t231.{core::List::add}(dynVar as{TypeError,ForDynamic} core::int*){(core::int*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t231.{core::List::add}{Invariant}(dynVar as{TypeError,ForDynamic} core::int*);
   } =>#t231;
   core::Set<core::int*>* set90 = block {
     final core::Set<core::int*>* #t232 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t232.{core::Set::add}(dynVar as{TypeError,ForDynamic} core::int*){(core::int*) →* core::bool*};
-    #t232.{core::Set::add}(null){(core::int*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t232.{core::Set::add}{Invariant}(dynVar as{TypeError,ForDynamic} core::int*);
+    #t232.{core::Set::add}{Invariant}(null);
   } =>#t232;
   core::Map<core::String*, core::int*>* map90 = block {
     final core::Map<core::String*, core::int*>* #t233 = <core::String*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t233.{core::Map::[]=}("bar", dynVar as{TypeError,ForDynamic} core::int*){(core::String*, core::int*) →* void};
-    #t233.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t233.{core::Map::[]=}{Invariant}("bar", dynVar as{TypeError,ForDynamic} core::int*);
+    #t233.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t233;
   core::List<core::int*>* list91 = block {
     final core::List<core::int*>* #t234 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       for (final dynamic #t235 in dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
         final core::int* #t236 = #t235 as{TypeError} core::int*;
-        #t234.{core::List::add}(#t236){(core::int*) →* void};
+        #t234.{core::List::add}{Invariant}(#t236);
       }
   } =>#t234;
   core::Set<core::int*>* set91 = block {
     final core::Set<core::int*>* #t237 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       for (final dynamic #t238 in dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
         final core::int* #t239 = #t238 as{TypeError} core::int*;
-        #t237.{core::Set::add}(#t239){(core::int*) →* core::bool*};
+        #t237.{core::Set::add}{Invariant}(#t239);
       }
-    #t237.{core::Set::add}(null){(core::int*) →* core::bool*};
+    #t237.{core::Set::add}{Invariant}(null);
   } =>#t237;
   core::Map<core::String*, core::int*>* map91 = block {
     final core::Map<core::String*, core::int*>* #t240 = <core::String*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       for (final core::MapEntry<dynamic, dynamic>* #t241 in (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}) {
         final core::String* #t242 = #t241.{core::MapEntry::key} as{TypeError} core::String*;
         final core::int* #t243 = #t241.{core::MapEntry::value} as{TypeError} core::int*;
-        #t240.{core::Map::[]=}(#t242, #t243){(core::String*, core::int*) →* void};
+        #t240.{core::Map::[]=}{Invariant}(#t242, #t243);
       }
-    #t240.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t240.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t240;
   core::List<core::int*>* list100 = block {
     final core::List<core::int*>* #t244 = <core::int*>[];
-    for (final core::int* #t245 = index = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; index = index.{core::num::+}(1){(core::num*) →* core::int*})
-      #t244.{core::List::add}(42){(core::int*) →* void};
+    for (final core::int* #t245 = index = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; index = index.{core::num::+}(1))
+      #t244.{core::List::add}{Invariant}(42);
   } =>#t244;
   core::Set<core::int*>* set100 = block {
     final core::Set<core::int*>* #t246 = col::LinkedHashSet::•<core::int*>();
-    for (final core::int* #t247 = index = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; index = index.{core::num::+}(1){(core::num*) →* core::int*})
-      #t246.{core::Set::add}(42){(core::int*) →* core::bool*};
+    for (final core::int* #t247 = index = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; index = index.{core::num::+}(1))
+      #t246.{core::Set::add}{Invariant}(42);
   } =>#t246;
   core::Map<core::String*, core::int*>* map100 = block {
     final core::Map<core::String*, core::int*>* #t248 = <core::String*, core::int*>{};
-    for (final core::int* #t249 = index = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; index = index.{core::num::+}(1){(core::num*) →* core::int*})
-      #t248.{core::Map::[]=}("bar", 42){(core::String*, core::int*) →* void};
+    for (final core::int* #t249 = index = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; index = index.{core::num::+}(1))
+      #t248.{core::Map::[]=}{Invariant}("bar", 42);
   } =>#t248;
   core::List<core::int*>* list110 = block {
     final core::List<core::int*>* #t250 = <core::int*>[];
     for (core::int* i in <core::int*>[1, 2, 3])
-      #t250.{core::List::add}(i){(core::int*) →* void};
+      #t250.{core::List::add}{Invariant}(i);
   } =>#t250;
   core::Set<core::int*>* set110 = block {
     final core::Set<core::int*>* #t251 = col::LinkedHashSet::•<core::int*>();
     for (core::int* i in <core::int*>[1, 2, 3])
-      #t251.{core::Set::add}(i){(core::int*) →* core::bool*};
-    #t251.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t251.{core::Set::add}{Invariant}(i);
+    #t251.{core::Set::add}{Invariant}(null);
   } =>#t251;
   core::Map<core::String*, core::int*>* map110 = block {
     final core::Map<core::String*, core::int*>* #t252 = <core::String*, core::int*>{};
     for (core::int* i in <core::int*>[1, 2, 3])
-      #t252.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
-    #t252.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+      #t252.{core::Map::[]=}{Invariant}("bar", i);
+    #t252.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t252;
   core::List<core::int*>* list120 = block {
     final core::List<core::int*>* #t253 = <core::int*>[];
     for (dynamic i in dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*)
-      #t253.{core::List::add}(i as{TypeError,ForDynamic} core::int*){(core::int*) →* void};
+      #t253.{core::List::add}{Invariant}(i as{TypeError,ForDynamic} core::int*);
   } =>#t253;
   core::Set<core::int*>* set120 = block {
     final core::Set<core::int*>* #t254 = col::LinkedHashSet::•<core::int*>();
     for (dynamic i in dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*)
-      #t254.{core::Set::add}(i as{TypeError,ForDynamic} core::int*){(core::int*) →* core::bool*};
-    #t254.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t254.{core::Set::add}{Invariant}(i as{TypeError,ForDynamic} core::int*);
+    #t254.{core::Set::add}{Invariant}(null);
   } =>#t254;
   core::Map<core::String*, core::int*>* map120 = block {
     final core::Map<core::String*, core::int*>* #t255 = <core::String*, core::int*>{};
     for (dynamic i in dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*)
-      #t255.{core::Map::[]=}("bar", i as{TypeError,ForDynamic} core::int*){(core::String*, core::int*) →* void};
-    #t255.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+      #t255.{core::Map::[]=}{Invariant}("bar", i as{TypeError,ForDynamic} core::int*);
+    #t255.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t255;
   core::List<core::int*>* list130 = block {
     final core::List<core::int*>* #t256 = <core::int*>[];
-    for (core::int* i = 1; i.{core::num::<}(2){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t256.{core::List::add}(i){(core::int*) →* void};
+    for (core::int* i = 1; i.{core::num::<}(2); i = i.{core::num::+}(1))
+      #t256.{core::List::add}{Invariant}(i);
   } =>#t256;
   core::Set<core::int*>* set130 = block {
     final core::Set<core::int*>* #t257 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 1; i.{core::num::<}(2){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t257.{core::Set::add}(i){(core::int*) →* core::bool*};
+    for (core::int* i = 1; i.{core::num::<}(2); i = i.{core::num::+}(1))
+      #t257.{core::Set::add}{Invariant}(i);
   } =>#t257;
   core::Map<core::int*, core::int*>* map130 = block {
     final core::Map<core::int*, core::int*>* #t258 = <core::int*, core::int*>{};
-    for (core::int* i = 1; i.{core::num::<}(2){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t258.{core::Map::[]=}(i, i){(core::int*, core::int*) →* void};
+    for (core::int* i = 1; i.{core::num::<}(2); i = i.{core::num::+}(1))
+      #t258.{core::Map::[]=}{Invariant}(i, i);
   } =>#t258;
 }
 static method testForElementErrors(core::Map<core::int*, core::int*>* map, core::List<core::int*>* list) → dynamic async {
   block {
     final core::List<core::int*>* #t259 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t259.{core::List::add}(let final Never* #t260 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:210:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t259.{core::List::add}{Invariant}(let final Never* #t260 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:210:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>[for (int i = 0; oracle(\"foo\"); i++) \"bar\"];
-                                            ^" in "bar" as{TypeError} core::int*){(core::int*) →* void};
+                                            ^" in "bar" as{TypeError} core::int*);
   } =>#t259;
   block {
     final core::Set<core::int*>* #t261 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t261.{core::Set::add}(let final Never* #t262 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:211:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t261.{core::Set::add}{Invariant}(let final Never* #t262 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:211:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>{for (int i = 0; oracle(\"foo\"); i++) \"bar\", null};
-                                            ^" in "bar" as{TypeError} core::int*){(core::int*) →* core::bool*};
-    #t261.{core::Set::add}(null){(core::int*) →* core::bool*};
+                                            ^" in "bar" as{TypeError} core::int*);
+    #t261.{core::Set::add}{Invariant}(null);
   } =>#t261;
   block {
     final core::Map<core::int*, core::int*>* #t263 = <core::int*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t263.{core::Map::[]=}(let final Never* #t264 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:212:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t263.{core::Map::[]=}{Invariant}(let final Never* #t264 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:212:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) \"bar\": \"bar\", \"baz\": null};
                                                  ^" in "bar" as{TypeError} core::int*, let final Never* #t265 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:212:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) \"bar\": \"bar\", \"baz\": null};
-                                                        ^" in "bar" as{TypeError} core::int*){(core::int*, core::int*) →* void};
-    #t263.{core::Map::[]=}(let final Never* #t266 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:212:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+                                                        ^" in "bar" as{TypeError} core::int*);
+    #t263.{core::Map::[]=}{Invariant}(let final Never* #t266 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:212:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) \"bar\": \"bar\", \"baz\": null};
-                                                               ^" in "baz" as{TypeError} core::int*, null){(core::int*, core::int*) →* void};
+                                                               ^" in "baz" as{TypeError} core::int*, null);
   } =>#t263;
   block {
     final core::List<core::int*>* #t267 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t267.{core::List::addAll}(<core::int*>[let final Never* #t268 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:213:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t267.{core::List::addAll}{Invariant}(<core::int*>[let final Never* #t268 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:213:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>[for (int i = 0; oracle(\"foo\"); i++) ...[\"bar\"]];
-                                                ^" in "bar" as{TypeError} core::int*]){(core::Iterable<core::int*>*) →* void};
+                                                ^" in "bar" as{TypeError} core::int*]);
   } =>#t267;
   block {
     final core::Set<core::int*>* #t269 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t269.{core::Set::addAll}(<core::int*>[let final Never* #t270 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:214:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t269.{core::Set::addAll}{Invariant}(<core::int*>[let final Never* #t270 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:214:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>{for (int i = 0; oracle(\"foo\"); i++) ...[\"bar\"], null};
-                                                ^" in "bar" as{TypeError} core::int*]){(core::Iterable<core::int*>*) →* void};
-    #t269.{core::Set::add}(null){(core::int*) →* core::bool*};
+                                                ^" in "bar" as{TypeError} core::int*]);
+    #t269.{core::Set::add}{Invariant}(null);
   } =>#t269;
   block {
     final core::Map<core::int*, core::int*>* #t271 = <core::int*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       for (final core::MapEntry<core::int*, core::int*>* #t272 in <core::int*, core::int*>{let final Never* #t273 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:54: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
                                                      ^" in "bar" as{TypeError} core::int*: let final Never* #t274 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:61: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
                                                             ^" in "bar" as{TypeError} core::int*}.{core::Map::entries})
-        #t271.{core::Map::[]=}(#t272.{core::MapEntry::key}, #t272.{core::MapEntry::value}){(core::int*, core::int*) →* void};
-    #t271.{core::Map::[]=}(let final Never* #t275 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:69: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+        #t271.{core::Map::[]=}{Invariant}(#t272.{core::MapEntry::key}, #t272.{core::MapEntry::value});
+    #t271.{core::Map::[]=}{Invariant}(let final Never* #t275 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:69: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
-                                                                    ^" in "baz" as{TypeError} core::int*, null){(core::int*, core::int*) →* void};
+                                                                    ^" in "baz" as{TypeError} core::int*, null);
   } =>#t271;
   block {
     final core::List<core::int*>* #t276 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t276.{core::List::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:216:48: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t276.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:216:48: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>[for (int i = 0; oracle(\"foo\"); i++) ...map];
-                                               ^"){(core::int*) →* void};
+                                               ^");
   } =>#t276;
   block {
     final core::Set<core::int*>* #t277 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t277.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:217:48: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t277.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:217:48: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>{for (int i = 0; oracle(\"foo\"); i++) ...map, null};
-                                               ^"){(core::int*) →* core::bool*};
-    #t277.{core::Set::add}(null){(core::int*) →* core::bool*};
+                                               ^");
+    #t277.{core::Set::add}{Invariant}(null);
   } =>#t277;
   <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:218:53: Error: Unexpected type 'List<int>' of a map spread entry.  Expected 'dynamic' or a Map.
  - 'List' is from 'dart:core'.
@@ -1840,64 +1840,64 @@
                                                     ^": null};
   block {
     final core::List<core::String*>* #t278 = <core::String*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t278.{core::List::add}(let final Never* #t279 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:219:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+        #t278.{core::List::add}{Invariant}(let final Never* #t279 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:219:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   <String>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14];
-                                                             ^" in 42 as{TypeError} core::String*){(core::String*) →* void};
+                                                             ^" in 42 as{TypeError} core::String*);
       else
-        #t278.{core::List::add}(let final Never* #t280 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:219:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+        #t278.{core::List::add}{Invariant}(let final Never* #t280 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:219:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
   <String>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14];
-                                                                     ^" in 3.14 as{TypeError} core::String*){(core::String*) →* void};
+                                                                     ^" in 3.14 as{TypeError} core::String*);
   } =>#t278;
   block {
     final core::Set<core::String*>* #t281 = col::LinkedHashSet::•<core::String*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t281.{core::Set::add}(let final Never* #t282 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:220:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+        #t281.{core::Set::add}{Invariant}(let final Never* #t282 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:220:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   <String>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14, null};
-                                                             ^" in 42 as{TypeError} core::String*){(core::String*) →* core::bool*};
+                                                             ^" in 42 as{TypeError} core::String*);
       else
-        #t281.{core::Set::add}(let final Never* #t283 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:220:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+        #t281.{core::Set::add}{Invariant}(let final Never* #t283 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:220:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
   <String>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14, null};
-                                                                     ^" in 3.14 as{TypeError} core::String*){(core::String*) →* core::bool*};
-    #t281.{core::Set::add}(null){(core::String*) →* core::bool*};
+                                                                     ^" in 3.14 as{TypeError} core::String*);
+    #t281.{core::Set::add}{Invariant}(null);
   } =>#t281;
   block {
     final core::Map<core::String*, core::String*>* #t284 = <core::String*, core::String*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t284.{core::Map::[]=}("bar", let final Never* #t285 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:221:77: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+        #t284.{core::Map::[]=}{Invariant}("bar", let final Never* #t285 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:221:77: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   <String, String>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) \"bar\": 42 else \"bar\": 3.14, \"baz\": null};
-                                                                            ^" in 42 as{TypeError} core::String*){(core::String*, core::String*) →* void};
+                                                                            ^" in 42 as{TypeError} core::String*);
       else
-        #t284.{core::Map::[]=}("bar", let final Never* #t286 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:221:92: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+        #t284.{core::Map::[]=}{Invariant}("bar", let final Never* #t286 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:221:92: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
   <String, String>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) \"bar\": 42 else \"bar\": 3.14, \"baz\": null};
-                                                                                           ^" in 3.14 as{TypeError} core::String*){(core::String*, core::String*) →* void};
-    #t284.{core::Map::[]=}("baz", null){(core::String*, core::String*) →* void};
+                                                                                           ^" in 3.14 as{TypeError} core::String*);
+    #t284.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t284;
   block {
     final core::List<core::int*>* #t287 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t287.{core::List::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:222:62: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+        #t287.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:222:62: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) ...map else 42];
-                                                             ^"){(core::int*) →* void};
+                                                             ^");
       else
-        #t287.{core::List::add}(42){(core::int*) →* void};
+        #t287.{core::List::add}{Invariant}(42);
   } =>#t287;
   block {
     final core::Set<core::int*>* #t288 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t288.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:223:62: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+        #t288.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:223:62: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) ...map else 42, null};
-                                                             ^"){(core::int*) →* core::bool*};
+                                                             ^");
       else
-        #t288.{core::Set::add}(42){(core::int*) →* core::bool*};
-    #t288.{core::Set::add}(null){(core::int*) →* core::bool*};
+        #t288.{core::Set::add}{Invariant}(42);
+    #t288.{core::Set::add}{Invariant}(null);
   } =>#t288;
   <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:224:70: Error: Unexpected type 'List<int>' of a map spread entry.  Expected 'dynamic' or a Map.
  - 'List' is from 'dart:core'.
@@ -1908,26 +1908,26 @@
                                                                      ^": null};
   block {
     final core::List<core::int*>* #t289 = <core::int*>[];
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t289.{core::List::add}(42){(core::int*) →* void};
+        #t289.{core::List::add}{Invariant}(42);
       else
-        #t289.{core::List::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:225:70: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+        #t289.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:225:70: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else ...map];
-                                                                     ^"){(core::int*) →* void};
+                                                                     ^");
   } =>#t289;
   block {
     final core::Set<core::int*>* #t290 = col::LinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t290.{core::Set::add}(42){(core::int*) →* core::bool*};
+        #t290.{core::Set::add}{Invariant}(42);
       else
-        #t290.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:226:70: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+        #t290.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:226:70: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else ...map, null};
-                                                                     ^"){(core::int*) →* core::bool*};
-    #t290.{core::Set::add}(null){(core::int*) →* core::bool*};
+                                                                     ^");
+    #t290.{core::Set::add}{Invariant}(null);
   } =>#t290;
   <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:227:85: Error: Unexpected type 'List<int>' of a map spread entry.  Expected 'dynamic' or a Map.
  - 'List' is from 'dart:core'.
@@ -1943,7 +1943,7 @@
       invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:230:14: Error: Can't assign to the final variable 'i'.
   <int>[for (i in <int>[1]) i];
              ^";
-      #t291.{core::List::add}(i){(core::int*) →* void};
+      #t291.{core::List::add}{Invariant}(i);
     }
   } =>#t291;
   block {
@@ -1952,9 +1952,9 @@
       invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:231:14: Error: Can't assign to the final variable 'i'.
   <int>{for (i in <int>[1]) i, null};
              ^";
-      #t293.{core::Set::add}(i){(core::int*) →* core::bool*};
+      #t293.{core::Set::add}{Invariant}(i);
     }
-    #t293.{core::Set::add}(null){(core::int*) →* core::bool*};
+    #t293.{core::Set::add}{Invariant}(null);
   } =>#t293;
   block {
     final core::Map<core::String*, core::int*>* #t295 = <core::String*, core::int*>{};
@@ -1962,9 +1962,9 @@
       invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:232:21: Error: Can't assign to the final variable 'i'.
 \t<String, int>{for (i in <int>[1]) \"bar\": i, \"baz\": null};
 \t                   ^";
-      #t295.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
+      #t295.{core::Map::[]=}{Invariant}("bar", i);
     }
-    #t295.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t295.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t295;
   core::List<dynamic>* list10 = block {
     final core::List<dynamic>* #t297 = <dynamic>[];
@@ -1972,7 +1972,7 @@
  - 'Iterable' is from 'dart:core'.
   var list10 = [for (var i in \"not iterable\") i];
                               ^" in "not iterable" as{TypeError} core::Iterable<dynamic>*)
-      #t297.{core::List::add}(i){(dynamic) →* void};
+      #t297.{core::List::add}{Invariant}(i);
   } =>#t297;
   core::Set<dynamic>* set10 = block {
     final core::Set<dynamic>* #t299 = col::LinkedHashSet::•<dynamic>();
@@ -1980,8 +1980,8 @@
  - 'Iterable' is from 'dart:core'.
   var set10 = {for (var i in \"not iterable\") i, null};
                              ^" in "not iterable" as{TypeError} core::Iterable<dynamic>*)
-      #t299.{core::Set::add}(i){(dynamic) →* core::bool*};
-    #t299.{core::Set::add}(null){(dynamic) →* core::bool*};
+      #t299.{core::Set::add}{Invariant}(i);
+    #t299.{core::Set::add}{Invariant}(null);
   } =>#t299;
   core::Map<core::String*, dynamic>* map10 = block {
     final core::Map<core::String*, dynamic>* #t301 = <core::String*, dynamic>{};
@@ -1989,8 +1989,8 @@
  - 'Iterable' is from 'dart:core'.
   var map10 = {for (var i in \"not iterable\") \"bar\": i, \"baz\": null};
                              ^" in "not iterable" as{TypeError} core::Iterable<dynamic>*)
-      #t301.{core::Map::[]=}("bar", i){(core::String*, dynamic) →* void};
-    #t301.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+      #t301.{core::Map::[]=}{Invariant}("bar", i);
+    #t301.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t301;
   core::List<core::int*>* list20 = block {
     final core::List<core::int*>* #t303 = <core::int*>[];
@@ -1999,7 +1999,7 @@
                                ^" in "not" as{TypeError} core::int*, let final Never* #t305 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:237:39: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var list20 = [for (int i in [\"not\", \"int\"]) i];
                                       ^" in "int" as{TypeError} core::int*])
-      #t303.{core::List::add}(i){(core::int*) →* void};
+      #t303.{core::List::add}{Invariant}(i);
   } =>#t303;
   core::Set<core::int*>* set20 = block {
     final core::Set<core::int*>* #t306 = col::LinkedHashSet::•<core::int*>();
@@ -2008,8 +2008,8 @@
                               ^" in "not" as{TypeError} core::int*, let final Never* #t308 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:238:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var set20 = {for (int i in [\"not\", \"int\"]) i, null};
                                      ^" in "int" as{TypeError} core::int*])
-      #t306.{core::Set::add}(i){(core::int*) →* core::bool*};
-    #t306.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t306.{core::Set::add}{Invariant}(i);
+    #t306.{core::Set::add}{Invariant}(null);
   } =>#t306;
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t309 = <core::String*, core::int*>{};
@@ -2018,8 +2018,8 @@
                               ^" in "not" as{TypeError} core::int*, let final Never* #t311 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:239:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var map20 = {for (int i in [\"not\", \"int\"]) \"bar\": i, \"baz\": null};
                                      ^" in "int" as{TypeError} core::int*])
-      #t309.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
-    #t309.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+      #t309.{core::Map::[]=}{Invariant}("bar", i);
+    #t309.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t309;
   core::List<dynamic>* list30 = block {
     final core::List<dynamic>* #t312 = <dynamic>[];
@@ -2027,7 +2027,7 @@
  - 'Stream' is from 'dart:async'.
   var list30 = [await for (var i in \"not stream\") i];
                                     ^" in "not stream" as{TypeError} asy::Stream<dynamic>*)
-      #t312.{core::List::add}(i){(dynamic) →* void};
+      #t312.{core::List::add}{Invariant}(i);
   } =>#t312;
   core::Set<dynamic>* set30 = block {
     final core::Set<dynamic>* #t314 = col::LinkedHashSet::•<dynamic>();
@@ -2035,8 +2035,8 @@
  - 'Stream' is from 'dart:async'.
   var set30 = {await for (var i in \"not stream\") i, null};
                                    ^" in "not stream" as{TypeError} asy::Stream<dynamic>*)
-      #t314.{core::Set::add}(i){(dynamic) →* core::bool*};
-    #t314.{core::Set::add}(null){(dynamic) →* core::bool*};
+      #t314.{core::Set::add}{Invariant}(i);
+    #t314.{core::Set::add}{Invariant}(null);
   } =>#t314;
   core::Map<core::String*, dynamic>* map30 = block {
     final core::Map<core::String*, dynamic>* #t316 = <core::String*, dynamic>{};
@@ -2044,8 +2044,8 @@
  - 'Stream' is from 'dart:async'.
   var map30 = {await for (var i in \"not stream\") \"bar\": i, \"baz\": null};
                                    ^" in "not stream" as{TypeError} asy::Stream<dynamic>*)
-      #t316.{core::Map::[]=}("bar", i){(core::String*, dynamic) →* void};
-    #t316.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+      #t316.{core::Map::[]=}{Invariant}("bar", i);
+    #t316.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t316;
   core::List<core::int*>* list40 = block {
     final core::List<core::int*>* #t318 = <core::int*>[];
@@ -2054,7 +2054,7 @@
                                                          ^" in "not" as{TypeError} core::int*, let final Never* #t320 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:243:65: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var list40 = [await for (int i in Stream.fromIterable([\"not\", \"int\"])) i];
                                                                 ^" in "int" as{TypeError} core::int*]))
-      #t318.{core::List::add}(i){(core::int*) →* void};
+      #t318.{core::List::add}{Invariant}(i);
   } =>#t318;
   core::Set<core::int*>* set40 = block {
     final core::Set<core::int*>* #t321 = col::LinkedHashSet::•<core::int*>();
@@ -2063,8 +2063,8 @@
                                                         ^" in "not" as{TypeError} core::int*, let final Never* #t323 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:244:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var set40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) i, null};
                                                                ^" in "int" as{TypeError} core::int*]))
-      #t321.{core::Set::add}(i){(core::int*) →* core::bool*};
-    #t321.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t321.{core::Set::add}{Invariant}(i);
+    #t321.{core::Set::add}{Invariant}(null);
   } =>#t321;
   core::Map<core::String*, core::int*>* map40 = block {
     final core::Map<core::String*, core::int*>* #t324 = <core::String*, core::int*>{};
@@ -2073,82 +2073,82 @@
                                                         ^" in "not" as{TypeError} core::int*, let final Never* #t326 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:245:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var map40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) \"bar\": i, \"baz\": null};
                                                                ^" in "int" as{TypeError} core::int*]))
-      #t324.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
-    #t324.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+      #t324.{core::Map::[]=}{Invariant}("bar", i);
+    #t324.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t324;
   core::List<core::int*>* list50 = block {
     final core::List<core::int*>* #t327 = <core::int*>[];
     for (; ; )
-      #t327.{core::List::add}(42){(core::int*) →* void};
+      #t327.{core::List::add}{Invariant}(42);
   } =>#t327;
   core::Set<core::int*>* set50 = block {
     final core::Set<core::int*>* #t328 = col::LinkedHashSet::•<core::int*>();
     for (; ; )
-      #t328.{core::Set::add}(42){(core::int*) →* core::bool*};
-    #t328.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t328.{core::Set::add}{Invariant}(42);
+    #t328.{core::Set::add}{Invariant}(null);
   } =>#t328;
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t329 = <core::String*, core::int*>{};
     for (; ; )
-      #t329.{core::Map::[]=}("bar", 42){(core::String*, core::int*) →* void};
-    #t329.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+      #t329.{core::Map::[]=}{Invariant}("bar", 42);
+    #t329.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t329;
   core::List<core::int*>* list60 = block {
     final core::List<core::int*>* #t330 = <core::int*>[];
     for (; let final Never* #t331 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:249:24: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
   var list60 = [for (; \"not bool\";) 42];
                        ^" in "not bool" as{TypeError} core::bool*; )
-      #t330.{core::List::add}(42){(core::int*) →* void};
+      #t330.{core::List::add}{Invariant}(42);
   } =>#t330;
   core::Set<core::int*>* set60 = block {
     final core::Set<core::int*>* #t332 = col::LinkedHashSet::•<core::int*>();
     for (; let final Never* #t333 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:250:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
   var set60 = {for (; \"not bool\";) 42, null};
                       ^" in "not bool" as{TypeError} core::bool*; )
-      #t332.{core::Set::add}(42){(core::int*) →* core::bool*};
-    #t332.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t332.{core::Set::add}{Invariant}(42);
+    #t332.{core::Set::add}{Invariant}(null);
   } =>#t332;
   core::Map<core::String*, core::int*>* map60 = block {
     final core::Map<core::String*, core::int*>* #t334 = <core::String*, core::int*>{};
     for (; let final Never* #t335 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:251:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
   var map60 = {for (; \"not bool\";) \"bar\": 42, \"baz\": null};
                       ^" in "not bool" as{TypeError} core::bool*; )
-      #t334.{core::Map::[]=}("bar", 42){(core::String*, core::int*) →* void};
-    #t334.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+      #t334.{core::Map::[]=}{Invariant}("bar", 42);
+    #t334.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t334;
 }
 static method testForElementErrorsNotAsync(asy::Stream<core::int*>* stream) → dynamic {
   block {
     final core::List<core::int*>* #t336 = <core::int*>[];
     await for (core::int* i in stream)
-      #t336.{core::List::add}(i){(core::int*) →* void};
+      #t336.{core::List::add}{Invariant}(i);
   } =>#t336;
   block {
     final core::Set<core::int*>* #t337 = col::LinkedHashSet::•<core::int*>();
     await for (core::int* i in stream)
-      #t337.{core::Set::add}(i){(core::int*) →* core::bool*};
+      #t337.{core::Set::add}{Invariant}(i);
   } =>#t337;
   block {
     final core::Map<core::String*, core::int*>* #t338 = <core::String*, core::int*>{};
     await for (core::int* i in stream)
-      #t338.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
+      #t338.{core::Map::[]=}{Invariant}("bar", i);
   } =>#t338;
 }
 static method testPromotion(self::A* a) → dynamic {
   core::List<core::int*>* list10 = block {
     final core::List<core::int*>* #t339 = <core::int*>[];
     if(a is self::B*)
-      #t339.{core::List::add}(a{self::B*}.{self::B::foo}{core::int*}){(core::int*) →* void};
+      #t339.{core::List::add}{Invariant}(a{self::B*}.{self::B::foo});
   } =>#t339;
   core::Set<core::int*>* set10 = block {
     final core::Set<core::int*>* #t340 = col::LinkedHashSet::•<core::int*>();
     if(a is self::B*)
-      #t340.{core::Set::add}(a{self::B*}.{self::B::foo}{core::int*}){(core::int*) →* core::bool*};
+      #t340.{core::Set::add}{Invariant}(a{self::B*}.{self::B::foo});
   } =>#t340;
   core::Map<core::int*, core::int*>* map10 = block {
     final core::Map<core::int*, core::int*>* #t341 = <core::int*, core::int*>{};
     if(a is self::B*)
-      #t341.{core::Map::[]=}(a{self::B*}.{self::B::foo}{core::int*}, a{self::B*}.{self::B::foo}{core::int*}){(core::int*, core::int*) →* void};
+      #t341.{core::Map::[]=}{Invariant}(a{self::B*}.{self::B::foo}, a{self::B*}.{self::B::foo});
   } =>#t341;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect
index 94721e8..ce26d83 100644
--- a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect
@@ -455,64 +455,64 @@
   core::List<core::int*>* list10 = block {
     final core::List<core::int*>* #t1 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t1.{core::List::add}(42){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(42);
   } =>#t1;
   core::Set<core::int*>* set10 = block {
     final core::Set<core::int*>* #t2 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t2.{core::Set::add}(42){(core::int*) →* core::bool*};
-    #t2.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t2.{core::Set::add}{Invariant}(42);
+    #t2.{core::Set::add}{Invariant}(null);
   } =>#t2;
   core::Map<core::String*, core::int*>* map10 = block {
     final core::Map<core::String*, core::int*>* #t3 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t3.{core::Map::[]=}("bar", 42){(core::String*, core::int*) →* void};
-    #t3.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+      #t3.{core::Map::[]=}{Invariant}("bar", 42);
+    #t3.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t3;
   core::List<dynamic>* list11 = block {
     final core::List<dynamic>* #t4 = core::_GrowableList::•<dynamic>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t4.{core::List::add}(dynVar){(dynamic) →* void};
+      #t4.{core::List::add}{Invariant}(dynVar);
   } =>#t4;
   core::Set<dynamic>* set11 = block {
     final core::Set<dynamic>* #t5 = new col::_CompactLinkedHashSet::•<dynamic>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t5.{core::Set::add}(dynVar){(dynamic) →* core::bool*};
-    #t5.{core::Set::add}(null){(dynamic) →* core::bool*};
+      #t5.{core::Set::add}{Invariant}(dynVar);
+    #t5.{core::Set::add}{Invariant}(null);
   } =>#t5;
   core::Map<core::String*, dynamic>* map11 = block {
     final core::Map<core::String*, dynamic>* #t6 = <core::String*, dynamic>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t6.{core::Map::[]=}("bar", dynVar){(core::String*, dynamic) →* void};
-    #t6.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+      #t6.{core::Map::[]=}{Invariant}("bar", dynVar);
+    #t6.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t6;
   core::List<core::List<core::int*>*>* list12 = block {
     final core::List<core::List<core::int*>*>* #t7 = core::_GrowableList::•<core::List<core::int*>*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t7.{core::List::add}(core::_GrowableList::_literal1<core::int*>(42)){(core::List<core::int*>*) →* void};
+      #t7.{core::List::add}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
   } =>#t7;
   core::Set<core::List<core::int*>*>* set12 = block {
     final core::Set<core::List<core::int*>*>* #t8 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t8.{core::Set::add}(core::_GrowableList::_literal1<core::int*>(42)){(core::List<core::int*>*) →* core::bool*};
-    #t8.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+      #t8.{core::Set::add}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
+    #t8.{core::Set::add}{Invariant}(null);
   } =>#t8;
   core::Map<core::String*, core::List<core::int*>*>* map12 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t9 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t9.{core::Map::[]=}("bar", core::_GrowableList::_literal1<core::int*>(42)){(core::String*, core::List<core::int*>*) →* void};
-    #t9.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+      #t9.{core::Map::[]=}{Invariant}("bar", core::_GrowableList::_literal1<core::int*>(42));
+    #t9.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t9;
   core::List<core::int*>* list20 = block {
     final core::List<core::int*>* #t10 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t10.{core::List::addAll}(core::_GrowableList::_literal1<core::int*>(42)){(core::Iterable<core::int*>*) →* void};
+      #t10.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
   } =>#t10;
   core::Set<core::int*>* set20 = block {
     final core::Set<core::int*>* #t11 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t11.{core::Set::addAll}(core::_GrowableList::_literal1<core::int*>(42)){(core::Iterable<core::int*>*) →* void};
-    #t11.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t11.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
+    #t11.{core::Set::add}{Invariant}(null);
   } =>#t11;
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t12 = <core::String*, core::int*>{};
@@ -520,21 +520,21 @@
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t13 = :sync-for-iterator.{core::Iterator::current};
-        #t12.{core::Map::[]=}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t12.{core::Map::[]=}{Invariant}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value});
       }
     }
-    #t12.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t12.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t12;
   core::List<dynamic>* list21 = block {
     final core::List<dynamic>* #t14 = core::_GrowableList::•<dynamic>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t14.{core::List::addAll}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>*) →* void};
+      #t14.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar));
   } =>#t14;
   core::Set<dynamic>* set21 = block {
     final core::Set<dynamic>* #t15 = new col::_CompactLinkedHashSet::•<dynamic>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t15.{core::Set::addAll}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>*) →* void};
-    #t15.{core::Set::add}(null){(dynamic) →* core::bool*};
+      #t15.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar));
+    #t15.{core::Set::add}{Invariant}(null);
   } =>#t15;
   core::Map<core::String*, dynamic>* map21 = block {
     final core::Map<core::String*, dynamic>* #t16 = <core::String*, dynamic>{};
@@ -542,21 +542,21 @@
       core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, dynamic>* #t17 = :sync-for-iterator.{core::Iterator::current};
-        #t16.{core::Map::[]=}(#t17.{core::MapEntry::key}, #t17.{core::MapEntry::value}){(core::String*, dynamic) →* void};
+        #t16.{core::Map::[]=}{Invariant}(#t17.{core::MapEntry::key}, #t17.{core::MapEntry::value});
       }
     }
-    #t16.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+    #t16.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t16;
   core::List<core::List<core::int*>*>* list22 = block {
     final core::List<core::List<core::int*>*>* #t18 = core::_GrowableList::•<core::List<core::int*>*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t18.{core::List::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42))){(core::Iterable<core::List<core::int*>*>*) →* void};
+      #t18.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42)));
   } =>#t18;
   core::Set<core::List<core::int*>*>* set22 = block {
     final core::Set<core::List<core::int*>*>* #t19 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t19.{core::Set::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42))){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t19.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+      #t19.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42)));
+    #t19.{core::Set::add}{Invariant}(null);
   } =>#t19;
   core::Map<core::String*, core::List<core::int*>*>* map22 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t20 = <core::String*, core::List<core::int*>*>{};
@@ -564,23 +564,23 @@
       core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::_literal1<core::int*>(42)}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t21 = :sync-for-iterator.{core::Iterator::current};
-        #t20.{core::Map::[]=}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+        #t20.{core::Map::[]=}{Invariant}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value});
       }
     }
-    #t20.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    #t20.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t20;
   core::List<core::int*>* list30 = block {
     final core::List<core::int*>* #t22 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t22.{core::List::addAll}(core::_GrowableList::_literal1<core::int*>(42)){(core::Iterable<core::int*>*) →* void};
+        #t22.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
   } =>#t22;
   core::Set<core::int*>* set30 = block {
     final core::Set<core::int*>* #t23 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t23.{core::Set::addAll}(core::_GrowableList::_literal1<core::int*>(42)){(core::Iterable<core::int*>*) →* void};
-    #t23.{core::Set::add}(null){(core::int*) →* core::bool*};
+        #t23.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
+    #t23.{core::Set::add}{Invariant}(null);
   } =>#t23;
   core::Map<core::String*, core::int*>* map30 = block {
     final core::Map<core::String*, core::int*>* #t24 = <core::String*, core::int*>{};
@@ -589,23 +589,23 @@
         core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::int*>* #t25 = :sync-for-iterator.{core::Iterator::current};
-          #t24.{core::Map::[]=}(#t25.{core::MapEntry::key}, #t25.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+          #t24.{core::Map::[]=}{Invariant}(#t25.{core::MapEntry::key}, #t25.{core::MapEntry::value});
         }
       }
-    #t24.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t24.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t24;
   core::List<dynamic>* list31 = block {
     final core::List<dynamic>* #t26 = core::_GrowableList::•<dynamic>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t26.{core::List::addAll}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>*) →* void};
+        #t26.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar));
   } =>#t26;
   core::Set<dynamic>* set31 = block {
     final core::Set<dynamic>* #t27 = new col::_CompactLinkedHashSet::•<dynamic>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t27.{core::Set::addAll}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>*) →* void};
-    #t27.{core::Set::add}(null){(dynamic) →* core::bool*};
+        #t27.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar));
+    #t27.{core::Set::add}{Invariant}(null);
   } =>#t27;
   core::Map<core::String*, dynamic>* map31 = block {
     final core::Map<core::String*, dynamic>* #t28 = <core::String*, dynamic>{};
@@ -614,23 +614,23 @@
         core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, dynamic>* #t29 = :sync-for-iterator.{core::Iterator::current};
-          #t28.{core::Map::[]=}(#t29.{core::MapEntry::key}, #t29.{core::MapEntry::value}){(core::String*, dynamic) →* void};
+          #t28.{core::Map::[]=}{Invariant}(#t29.{core::MapEntry::key}, #t29.{core::MapEntry::value});
         }
       }
-    #t28.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+    #t28.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t28;
   core::List<core::List<core::int*>*>* list33 = block {
     final core::List<core::List<core::int*>*>* #t30 = core::_GrowableList::•<core::List<core::int*>*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t30.{core::List::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42))){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t30.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42)));
   } =>#t30;
   core::Set<core::List<core::int*>*>* set33 = block {
     final core::Set<core::List<core::int*>*>* #t31 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t31.{core::Set::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42))){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t31.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t31.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42)));
+    #t31.{core::Set::add}{Invariant}(null);
   } =>#t31;
   core::Map<core::String*, core::List<core::int*>*>* map33 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t32 = <core::String*, core::List<core::int*>*>{};
@@ -639,21 +639,21 @@
         core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::_literal1<core::int*>(42)}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t33 = :sync-for-iterator.{core::Iterator::current};
-          #t32.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+          #t32.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
         }
       }
-    #t32.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    #t32.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t32;
   core::List<core::List<core::int*>*>* list40 = block {
     final core::List<core::List<core::int*>*>* #t34 = core::_GrowableList::•<core::List<core::int*>*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t34.{core::List::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
+      #t34.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
   } =>#t34;
   core::Set<core::List<core::int*>*>* set40 = block {
     final core::Set<core::List<core::int*>*>* #t35 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t35.{core::Set::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t35.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+      #t35.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
+    #t35.{core::Set::add}{Invariant}(null);
   } =>#t35;
   core::Map<core::String*, core::List<core::int*>*>* map40 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:39:34: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
   Map<String, List<int>> map40 = {if (oracle(\"foo\")) ...{\"bar\", []}, \"baz\": null};
@@ -661,32 +661,32 @@
   core::List<core::List<core::int*>*>* list41 = block {
     final core::List<core::List<core::int*>*>* #t36 = core::_GrowableList::•<core::List<core::int*>*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t36.{core::List::addAll}( block {
+      #t36.{core::List::addAll}{Invariant}( block {
         final core::Set<core::List<core::int*>*>* #t37 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-        #t37.{core::Set::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* core::bool*};
-      } =>#t37){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t37.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int*>(0));
+      } =>#t37);
   } =>#t36;
   core::Set<core::List<core::int*>*>* set41 = block {
     final core::Set<core::List<core::int*>*>* #t38 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t38.{core::Set::addAll}( block {
+      #t38.{core::Set::addAll}{Invariant}( block {
         final core::Set<core::List<core::int*>*>* #t39 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-        #t39.{core::Set::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* core::bool*};
-      } =>#t39){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t38.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t39.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int*>(0));
+      } =>#t39);
+    #t38.{core::Set::add}{Invariant}(null);
   } =>#t38;
   core::List<core::List<core::int*>*>* list42 = block {
     final core::List<core::List<core::int*>*>* #t40 = core::_GrowableList::•<core::List<core::int*>*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t40.{core::List::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t40.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
   } =>#t40;
   core::Set<core::List<core::int*>*>* set42 = block {
     final core::Set<core::List<core::int*>*>* #t41 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t41.{core::Set::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t41.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t41.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
+    #t41.{core::Set::add}{Invariant}(null);
   } =>#t41;
   core::Map<core::String*, core::List<core::int*>*>* map42 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t42 = <core::String*, core::List<core::int*>*>{};
@@ -695,21 +695,21 @@
         core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t43 = :sync-for-iterator.{core::Iterator::current};
-          #t42.{core::Map::[]=}(#t43.{core::MapEntry::key}, #t43.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+          #t42.{core::Map::[]=}{Invariant}(#t43.{core::MapEntry::key}, #t43.{core::MapEntry::value});
         }
       }
-    #t42.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    #t42.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t42;
   core::List<core::int*>* list50 = block {
     final core::List<core::int*>* #t44 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t44.{core::List::addAll}(core::_GrowableList::•<core::int*>(0)){(core::Iterable<core::int*>*) →* void};
+      #t44.{core::List::addAll}{Invariant}(core::_GrowableList::•<core::int*>(0));
   } =>#t44;
   core::Set<core::int*>* set50 = block {
     final core::Set<core::int*>* #t45 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t45.{core::Set::addAll}(core::_GrowableList::•<core::int*>(0)){(core::Iterable<core::int*>*) →* void};
-    #t45.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t45.{core::Set::addAll}{Invariant}(core::_GrowableList::•<core::int*>(0));
+    #t45.{core::Set::add}{Invariant}(null);
   } =>#t45;
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t46 = <core::String*, core::int*>{};
@@ -717,38 +717,38 @@
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t47 = :sync-for-iterator.{core::Iterator::current};
-        #t46.{core::Map::[]=}(#t47.{core::MapEntry::key}, #t47.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t46.{core::Map::[]=}{Invariant}(#t47.{core::MapEntry::key}, #t47.{core::MapEntry::value});
       }
     }
-    #t46.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t46.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t46;
   core::List<core::int*>* list51 = block {
     final core::List<core::int*>* #t48 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t48.{core::List::addAll}( block {
+      #t48.{core::List::addAll}{Invariant}( block {
         final core::Set<core::int*>* #t49 = new col::_CompactLinkedHashSet::•<core::int*>();
-      } =>#t49){(core::Iterable<core::int*>*) →* void};
+      } =>#t49);
   } =>#t48;
   core::Set<core::int*>* set51 = block {
     final core::Set<core::int*>* #t50 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t50.{core::Set::addAll}( block {
+      #t50.{core::Set::addAll}{Invariant}( block {
         final core::Set<core::int*>* #t51 = new col::_CompactLinkedHashSet::•<core::int*>();
-      } =>#t51){(core::Iterable<core::int*>*) →* void};
-    #t50.{core::Set::add}(null){(core::int*) →* core::bool*};
+      } =>#t51);
+    #t50.{core::Set::add}{Invariant}(null);
   } =>#t50;
   core::List<core::int*>* list52 = block {
     final core::List<core::int*>* #t52 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t52.{core::List::addAll}(core::_GrowableList::•<core::int*>(0)){(core::Iterable<core::int*>*) →* void};
+        #t52.{core::List::addAll}{Invariant}(core::_GrowableList::•<core::int*>(0));
   } =>#t52;
   core::Set<core::int*>* set52 = block {
     final core::Set<core::int*>* #t53 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t53.{core::Set::addAll}(core::_GrowableList::•<core::int*>(0)){(core::Iterable<core::int*>*) →* void};
-    #t53.{core::Set::add}(null){(core::int*) →* core::bool*};
+        #t53.{core::Set::addAll}{Invariant}(core::_GrowableList::•<core::int*>(0));
+    #t53.{core::Set::add}{Invariant}(null);
   } =>#t53;
   core::Map<core::String*, core::int*>* map52 = block {
     final core::Map<core::String*, core::int*>* #t54 = <core::String*, core::int*>{};
@@ -757,21 +757,21 @@
         core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::int*>* #t55 = :sync-for-iterator.{core::Iterator::current};
-          #t54.{core::Map::[]=}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+          #t54.{core::Map::[]=}{Invariant}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value});
         }
       }
-    #t54.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t54.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t54;
   core::List<core::List<core::int*>*>* list60 = block {
     final core::List<core::List<core::int*>*>* #t56 = core::_GrowableList::•<core::List<core::int*>*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t56.{core::List::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
+      #t56.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
   } =>#t56;
   core::Set<core::List<core::int*>*>* set60 = block {
     final core::Set<core::List<core::int*>*>* #t57 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t57.{core::Set::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t57.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+      #t57.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
+    #t57.{core::Set::add}{Invariant}(null);
   } =>#t57;
   core::Map<core::String*, core::List<core::int*>*>* map60 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t58 = <core::String*, core::List<core::int*>*>{};
@@ -779,23 +779,23 @@
       core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t59 = :sync-for-iterator.{core::Iterator::current};
-        #t58.{core::Map::[]=}(#t59.{core::MapEntry::key}, #t59.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+        #t58.{core::Map::[]=}{Invariant}(#t59.{core::MapEntry::key}, #t59.{core::MapEntry::value});
       }
     }
-    #t58.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    #t58.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t58;
   core::List<core::List<core::int*>*>* list61 = block {
     final core::List<core::List<core::int*>*>* #t60 = core::_GrowableList::•<core::List<core::int*>*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t60.{core::List::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t60.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
   } =>#t60;
   core::Set<core::List<core::int*>*>* set61 = block {
     final core::Set<core::List<core::int*>*>* #t61 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t61.{core::Set::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t61.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t61.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
+    #t61.{core::Set::add}{Invariant}(null);
   } =>#t61;
   core::Map<core::String*, core::List<core::int*>*>* map61 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t62 = <core::String*, core::List<core::int*>*>{};
@@ -804,72 +804,72 @@
         core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t63 = :sync-for-iterator.{core::Iterator::current};
-          #t62.{core::Map::[]=}(#t63.{core::MapEntry::key}, #t63.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+          #t62.{core::Map::[]=}{Invariant}(#t63.{core::MapEntry::key}, #t63.{core::MapEntry::value});
         }
       }
-    #t62.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    #t62.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t62;
   core::List<core::List<core::int*>*>* list70 = block {
     final core::List<core::List<core::int*>*>* #t64 = core::_GrowableList::•<core::List<core::int*>*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t64.{core::List::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* void};
+      #t64.{core::List::add}{Invariant}(core::_GrowableList::•<core::int*>(0));
   } =>#t64;
   core::Set<core::List<core::int*>*>* set70 = block {
     final core::Set<core::List<core::int*>*>* #t65 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t65.{core::Set::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* core::bool*};
-    #t65.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+      #t65.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int*>(0));
+    #t65.{core::Set::add}{Invariant}(null);
   } =>#t65;
   core::List<core::List<core::int*>*>* list71 = block {
     final core::List<core::List<core::int*>*>* #t66 = core::_GrowableList::•<core::List<core::int*>*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t66.{core::List::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* void};
+        #t66.{core::List::add}{Invariant}(core::_GrowableList::•<core::int*>(0));
   } =>#t66;
   core::Set<core::List<core::int*>*>* set71 = block {
     final core::Set<core::List<core::int*>*>* #t67 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t67.{core::Set::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* core::bool*};
-    #t67.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t67.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int*>(0));
+    #t67.{core::Set::add}{Invariant}(null);
   } =>#t67;
   core::List<core::num*>* list80 = block {
     final core::List<core::num*>* #t68 = core::_GrowableList::•<core::num*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t68.{core::List::add}(42){(core::num*) →* void};
+      #t68.{core::List::add}{Invariant}(42);
     else
-      #t68.{core::List::add}(3.14){(core::num*) →* void};
+      #t68.{core::List::add}{Invariant}(3.14);
   } =>#t68;
   core::Set<core::num*>* set80 = block {
     final core::Set<core::num*>* #t69 = new col::_CompactLinkedHashSet::•<core::num*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t69.{core::Set::add}(42){(core::num*) →* core::bool*};
+      #t69.{core::Set::add}{Invariant}(42);
     else
-      #t69.{core::Set::add}(3.14){(core::num*) →* core::bool*};
-    #t69.{core::Set::add}(null){(core::num*) →* core::bool*};
+      #t69.{core::Set::add}{Invariant}(3.14);
+    #t69.{core::Set::add}{Invariant}(null);
   } =>#t69;
   core::Map<core::String*, core::num*>* map80 = block {
     final core::Map<core::String*, core::num*>* #t70 = <core::String*, core::num*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t70.{core::Map::[]=}("bar", 42){(core::String*, core::num*) →* void};
+      #t70.{core::Map::[]=}{Invariant}("bar", 42);
     else
-      #t70.{core::Map::[]=}("bar", 3.14){(core::String*, core::num*) →* void};
-    #t70.{core::Map::[]=}("baz", null){(core::String*, core::num*) →* void};
+      #t70.{core::Map::[]=}{Invariant}("bar", 3.14);
+    #t70.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t70;
   core::List<core::num*>* list81 = block {
     final core::List<core::num*>* #t71 = core::_GrowableList::•<core::num*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t71.{core::List::addAll}(listInt){(core::Iterable<core::num*>*) →* void};
+      #t71.{core::List::addAll}{Invariant}(listInt);
     else
-      #t71.{core::List::addAll}(listDouble){(core::Iterable<core::num*>*) →* void};
+      #t71.{core::List::addAll}{Invariant}(listDouble);
   } =>#t71;
   core::Set<core::num*>* set81 = block {
     final core::Set<core::num*>* #t72 = new col::_CompactLinkedHashSet::•<core::num*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t72.{core::Set::addAll}(listInt){(core::Iterable<core::num*>*) →* void};
+      #t72.{core::Set::addAll}{Invariant}(listInt);
     else
-      #t72.{core::Set::addAll}(listDouble){(core::Iterable<core::num*>*) →* void};
-    #t72.{core::Set::add}(null){(core::num*) →* core::bool*};
+      #t72.{core::Set::addAll}{Invariant}(listDouble);
+    #t72.{core::Set::add}{Invariant}(null);
   } =>#t72;
   core::Map<core::String*, core::num*>* map81 = block {
     final core::Map<core::String*, core::num*>* #t73 = <core::String*, core::num*>{};
@@ -877,58 +877,58 @@
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::num*>* #t74 = :sync-for-iterator.{core::Iterator::current};
-        #t73.{core::Map::[]=}(#t74.{core::MapEntry::key}, #t74.{core::MapEntry::value}){(core::String*, core::num*) →* void};
+        #t73.{core::Map::[]=}{Invariant}(#t74.{core::MapEntry::key}, #t74.{core::MapEntry::value});
       }
     }
     else {
       core::Iterator<core::MapEntry<core::String*, core::double*>>* :sync-for-iterator = mapToDouble.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::num*>* #t75 = :sync-for-iterator.{core::Iterator::current};
-        #t73.{core::Map::[]=}(#t75.{core::MapEntry::key}, #t75.{core::MapEntry::value}){(core::String*, core::num*) →* void};
+        #t73.{core::Map::[]=}{Invariant}(#t75.{core::MapEntry::key}, #t75.{core::MapEntry::value});
       }
     }
-    #t73.{core::Map::[]=}("baz", null){(core::String*, core::num*) →* void};
+    #t73.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t73;
   core::List<dynamic>* list82 = block {
     final core::List<dynamic>* #t76 = core::_GrowableList::•<dynamic>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t76.{core::List::addAll}(listInt){(core::Iterable<dynamic>*) →* void};
+      #t76.{core::List::addAll}{Invariant}(listInt);
     else
-      #t76.{core::List::addAll}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*){(core::Iterable<dynamic>*) →* void};
+      #t76.{core::List::addAll}{Invariant}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*);
   } =>#t76;
   core::Set<dynamic>* set82 = block {
     final core::Set<dynamic>* #t77 = new col::_CompactLinkedHashSet::•<dynamic>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t77.{core::Set::addAll}(listInt){(core::Iterable<dynamic>*) →* void};
+      #t77.{core::Set::addAll}{Invariant}(listInt);
     else
-      #t77.{core::Set::addAll}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*){(core::Iterable<dynamic>*) →* void};
-    #t77.{core::Set::add}(null){(dynamic) →* core::bool*};
+      #t77.{core::Set::addAll}{Invariant}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*);
+    #t77.{core::Set::add}{Invariant}(null);
   } =>#t77;
   core::Set<dynamic>* map82 = block {
     final core::Set<dynamic>* #t78 = new col::_CompactLinkedHashSet::•<dynamic>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t78.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:71:38: Error: Unexpected type 'Map<String, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t78.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:71:38: Error: Unexpected type 'Map<String, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   var map82 = {if (oracle(\"foo\")) ...mapToInt else ...dynVar, null};
-                                     ^"){(dynamic) →* core::bool*};
+                                     ^");
     else
-      #t78.{core::Set::addAll}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*){(core::Iterable<dynamic>*) →* void};
-    #t78.{core::Set::add}(null){(dynamic) →* core::bool*};
+      #t78.{core::Set::addAll}{Invariant}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*);
+    #t78.{core::Set::add}{Invariant}(null);
   } =>#t78;
   core::List<core::num*>* list83 = block {
     final core::List<core::num*>* #t79 = core::_GrowableList::•<core::num*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t79.{core::List::add}(42){(core::num*) →* void};
+      #t79.{core::List::add}{Invariant}(42);
     else
-      #t79.{core::List::addAll}(listDouble){(core::Iterable<core::num*>*) →* void};
+      #t79.{core::List::addAll}{Invariant}(listDouble);
   } =>#t79;
   core::Set<core::num*>* set83 = block {
     final core::Set<core::num*>* #t80 = new col::_CompactLinkedHashSet::•<core::num*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t80.{core::Set::addAll}(listInt){(core::Iterable<core::num*>*) →* void};
+      #t80.{core::Set::addAll}{Invariant}(listInt);
     else
-      #t80.{core::Set::add}(3.14){(core::num*) →* core::bool*};
-    #t80.{core::Set::add}(null){(core::num*) →* core::bool*};
+      #t80.{core::Set::add}{Invariant}(3.14);
+    #t80.{core::Set::add}{Invariant}(null);
   } =>#t80;
   core::Map<core::String*, core::num*>* map83 = block {
     final core::Map<core::String*, core::num*>* #t81 = <core::String*, core::num*>{};
@@ -936,29 +936,29 @@
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::num*>* #t82 = :sync-for-iterator.{core::Iterator::current};
-        #t81.{core::Map::[]=}(#t82.{core::MapEntry::key}, #t82.{core::MapEntry::value}){(core::String*, core::num*) →* void};
+        #t81.{core::Map::[]=}{Invariant}(#t82.{core::MapEntry::key}, #t82.{core::MapEntry::value});
       }
     }
     else
-      #t81.{core::Map::[]=}("bar", 3.14){(core::String*, core::num*) →* void};
-    #t81.{core::Map::[]=}("baz", null){(core::String*, core::num*) →* void};
+      #t81.{core::Map::[]=}{Invariant}("bar", 3.14);
+    #t81.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t81;
   core::List<core::int*>* list90 = block {
     final core::List<core::int*>* #t83 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t83.{core::List::add}(dynVar as{TypeError,ForDynamic} core::int*){(core::int*) →* void};
+      #t83.{core::List::add}{Invariant}(dynVar as{TypeError,ForDynamic} core::int*);
   } =>#t83;
   core::Set<core::int*>* set90 = block {
     final core::Set<core::int*>* #t84 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t84.{core::Set::add}(dynVar as{TypeError,ForDynamic} core::int*){(core::int*) →* core::bool*};
-    #t84.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t84.{core::Set::add}{Invariant}(dynVar as{TypeError,ForDynamic} core::int*);
+    #t84.{core::Set::add}{Invariant}(null);
   } =>#t84;
   core::Map<core::String*, core::int*>* map90 = block {
     final core::Map<core::String*, core::int*>* #t85 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t85.{core::Map::[]=}("bar", dynVar as{TypeError,ForDynamic} core::int*){(core::String*, core::int*) →* void};
-    #t85.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+      #t85.{core::Map::[]=}{Invariant}("bar", dynVar as{TypeError,ForDynamic} core::int*);
+    #t85.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t85;
   core::List<core::int*>* list91 = block {
     final core::List<core::int*>* #t86 = core::_GrowableList::•<core::int*>(0);
@@ -968,7 +968,7 @@
         final dynamic #t87 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t88 = #t87 as{TypeError} core::int*;
-          #t86.{core::List::add}(#t88){(core::int*) →* void};
+          #t86.{core::List::add}{Invariant}(#t88);
         }
       }
     }
@@ -981,11 +981,11 @@
         final dynamic #t90 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t91 = #t90 as{TypeError} core::int*;
-          #t89.{core::Set::add}(#t91){(core::int*) →* core::bool*};
+          #t89.{core::Set::add}{Invariant}(#t91);
         }
       }
     }
-    #t89.{core::Set::add}(null){(core::int*) →* core::bool*};
+    #t89.{core::Set::add}{Invariant}(null);
   } =>#t89;
   core::Map<core::String*, core::int*>* map91 = block {
     final core::Map<core::String*, core::int*>* #t92 = <core::String*, core::int*>{};
@@ -996,66 +996,66 @@
         {
           final core::String* #t94 = #t93.{core::MapEntry::key} as{TypeError} core::String*;
           final core::int* #t95 = #t93.{core::MapEntry::value} as{TypeError} core::int*;
-          #t92.{core::Map::[]=}(#t94, #t95){(core::String*, core::int*) →* void};
+          #t92.{core::Map::[]=}{Invariant}(#t94, #t95);
         }
       }
     }
-    #t92.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t92.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t92;
   core::List<core::int*>* list100 = block {
     final core::List<core::int*>* #t96 = core::_GrowableList::•<core::int*>(0);
     if(dynVar as{TypeError,ForDynamic} core::bool*)
-      #t96.{core::List::add}(42){(core::int*) →* void};
+      #t96.{core::List::add}{Invariant}(42);
   } =>#t96;
   core::Set<core::int*>* set100 = block {
     final core::Set<core::int*>* #t97 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(dynVar as{TypeError,ForDynamic} core::bool*)
-      #t97.{core::Set::add}(42){(core::int*) →* core::bool*};
+      #t97.{core::Set::add}{Invariant}(42);
   } =>#t97;
   core::Map<core::int*, core::int*>* map100 = block {
     final core::Map<core::int*, core::int*>* #t98 = <core::int*, core::int*>{};
     if(dynVar as{TypeError,ForDynamic} core::bool*)
-      #t98.{core::Map::[]=}(42, 42){(core::int*, core::int*) →* void};
+      #t98.{core::Map::[]=}{Invariant}(42, 42);
   } =>#t98;
 }
 static method testIfElementErrors(core::Map<core::int*, core::int*>* map) → dynamic {
   block {
     final core::List<core::int*>* #t99 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t99.{core::List::add}(let final Never* #t100 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:87:28: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      #t99.{core::List::add}{Invariant}(let final Never* #t100 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:87:28: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>[if (oracle(\"foo\")) \"bar\"];
-                           ^" in "bar" as{TypeError} core::int*){(core::int*) →* void};
+                           ^" in "bar" as{TypeError} core::int*);
   } =>#t99;
   block {
     final core::Set<core::int*>* #t101 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t101.{core::Set::add}(let final Never* #t102 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:88:28: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      #t101.{core::Set::add}{Invariant}(let final Never* #t102 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:88:28: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>{if (oracle(\"foo\")) \"bar\", null};
-                           ^" in "bar" as{TypeError} core::int*){(core::int*) →* core::bool*};
-    #t101.{core::Set::add}(null){(core::int*) →* core::bool*};
+                           ^" in "bar" as{TypeError} core::int*);
+    #t101.{core::Set::add}{Invariant}(null);
   } =>#t101;
   block {
     final core::Map<core::String*, core::int*>* #t103 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t103.{core::Map::[]=}("bar", let final Never* #t104 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:89:43: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      #t103.{core::Map::[]=}{Invariant}("bar", let final Never* #t104 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:89:43: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <String, int>{if (oracle(\"foo\")) \"bar\": \"bar\", \"baz\": null};
-                                          ^" in "bar" as{TypeError} core::int*){(core::String*, core::int*) →* void};
-    #t103.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+                                          ^" in "bar" as{TypeError} core::int*);
+    #t103.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t103;
   block {
     final core::List<core::int*>* #t105 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t105.{core::List::addAll}(core::_GrowableList::_literal1<core::int*>(let final Never* #t106 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:90:32: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      #t105.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(let final Never* #t106 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:90:32: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>[if (oracle(\"foo\")) ...[\"bar\"]];
-                               ^" in "bar" as{TypeError} core::int*)){(core::Iterable<core::int*>*) →* void};
+                               ^" in "bar" as{TypeError} core::int*));
   } =>#t105;
   block {
     final core::Set<core::int*>* #t107 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t107.{core::Set::addAll}(core::_GrowableList::_literal1<core::int*>(let final Never* #t108 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:91:32: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      #t107.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(let final Never* #t108 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:91:32: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>{if (oracle(\"foo\")) ...[\"bar\"], null};
-                               ^" in "bar" as{TypeError} core::int*)){(core::Iterable<core::int*>*) →* void};
-    #t107.{core::Set::add}(null){(core::int*) →* core::bool*};
+                               ^" in "bar" as{TypeError} core::int*));
+    #t107.{core::Set::add}{Invariant}(null);
   } =>#t107;
   block {
     final core::Map<core::String*, core::int*>* #t109 = <core::String*, core::int*>{};
@@ -1065,27 +1065,27 @@
                                               ^" in "bar" as{TypeError} core::int*}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t111 = :sync-for-iterator.{core::Iterator::current};
-        #t109.{core::Map::[]=}(#t111.{core::MapEntry::key}, #t111.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t109.{core::Map::[]=}{Invariant}(#t111.{core::MapEntry::key}, #t111.{core::MapEntry::value});
       }
     }
-    #t109.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t109.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t109;
   block {
     final core::List<core::int*>* #t112 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t112.{core::List::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:93:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t112.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:93:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>[if (oracle(\"foo\")) ...map];
-                              ^"){(core::int*) →* void};
+                              ^");
   } =>#t112;
   block {
     final core::Set<core::int*>* #t113 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t113.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:94:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t113.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:94:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>{if (oracle(\"foo\")) ...map, null};
-                              ^"){(core::int*) →* core::bool*};
-    #t113.{core::Set::add}(null){(core::int*) →* core::bool*};
+                              ^");
+    #t113.{core::Set::add}{Invariant}(null);
   } =>#t113;
   <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:95:39: Error: Unexpected type 'List<String>' of a map spread entry.  Expected 'dynamic' or a Map.
  - 'List' is from 'dart:core'.
@@ -1097,58 +1097,58 @@
   block {
     final core::List<core::String*>* #t114 = core::_GrowableList::•<core::String*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t114.{core::List::add}(let final Never* #t115 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:96:31: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t114.{core::List::add}{Invariant}(let final Never* #t115 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:96:31: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   <String>[if (oracle(\"foo\")) 42 else 3.14];
-                              ^" in 42 as{TypeError} core::String*){(core::String*) →* void};
+                              ^" in 42 as{TypeError} core::String*);
     else
-      #t114.{core::List::add}(let final Never* #t116 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:96:39: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+      #t114.{core::List::add}{Invariant}(let final Never* #t116 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:96:39: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
   <String>[if (oracle(\"foo\")) 42 else 3.14];
-                                      ^" in 3.14 as{TypeError} core::String*){(core::String*) →* void};
+                                      ^" in 3.14 as{TypeError} core::String*);
   } =>#t114;
   block {
     final core::Set<core::String*>* #t117 = new col::_CompactLinkedHashSet::•<core::String*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t117.{core::Set::add}(let final Never* #t118 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:97:31: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t117.{core::Set::add}{Invariant}(let final Never* #t118 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:97:31: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   <String>{if (oracle(\"foo\")) 42 else 3.14, null};
-                              ^" in 42 as{TypeError} core::String*){(core::String*) →* core::bool*};
+                              ^" in 42 as{TypeError} core::String*);
     else
-      #t117.{core::Set::add}(let final Never* #t119 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:97:39: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+      #t117.{core::Set::add}{Invariant}(let final Never* #t119 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:97:39: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
   <String>{if (oracle(\"foo\")) 42 else 3.14, null};
-                                      ^" in 3.14 as{TypeError} core::String*){(core::String*) →* core::bool*};
-    #t117.{core::Set::add}(null){(core::String*) →* core::bool*};
+                                      ^" in 3.14 as{TypeError} core::String*);
+    #t117.{core::Set::add}{Invariant}(null);
   } =>#t117;
   block {
     final core::Map<core::String*, core::String*>* #t120 = <core::String*, core::String*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t120.{core::Map::[]=}("bar", let final Never* #t121 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:98:46: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t120.{core::Map::[]=}{Invariant}("bar", let final Never* #t121 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:98:46: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   <String, String>{if (oracle(\"foo\")) \"bar\": 42 else \"baz\": 3.14, \"baz\": null};
-                                             ^" in 42 as{TypeError} core::String*){(core::String*, core::String*) →* void};
+                                             ^" in 42 as{TypeError} core::String*);
     else
-      #t120.{core::Map::[]=}("baz", let final Never* #t122 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:98:61: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+      #t120.{core::Map::[]=}{Invariant}("baz", let final Never* #t122 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:98:61: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
   <String, String>{if (oracle(\"foo\")) \"bar\": 42 else \"baz\": 3.14, \"baz\": null};
-                                                            ^" in 3.14 as{TypeError} core::String*){(core::String*, core::String*) →* void};
-    #t120.{core::Map::[]=}("baz", null){(core::String*, core::String*) →* void};
+                                                            ^" in 3.14 as{TypeError} core::String*);
+    #t120.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t120;
   block {
     final core::List<core::int*>* #t123 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t123.{core::List::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:99:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t123.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:99:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>[if (oracle(\"foo\")) ...map else 42];
-                              ^"){(core::int*) →* void};
+                              ^");
     else
-      #t123.{core::List::add}(42){(core::int*) →* void};
+      #t123.{core::List::add}{Invariant}(42);
   } =>#t123;
   block {
     final core::Set<core::int*>* #t124 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t124.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:100:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t124.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:100:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>{if (oracle(\"foo\")) ...map else 42, null};
-                              ^"){(core::int*) →* core::bool*};
+                              ^");
     else
-      #t124.{core::Set::add}(42){(core::int*) →* core::bool*};
-    #t124.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t124.{core::Set::add}{Invariant}(42);
+    #t124.{core::Set::add}{Invariant}(null);
   } =>#t124;
   <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:101:39: Error: Unexpected type 'List<int>' of a map spread entry.  Expected 'dynamic' or a Map.
  - 'List' is from 'dart:core'.
@@ -1160,23 +1160,23 @@
   block {
     final core::List<core::int*>* #t125 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t125.{core::List::add}(42){(core::int*) →* void};
+      #t125.{core::List::add}{Invariant}(42);
     else
-      #t125.{core::List::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:102:39: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t125.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:102:39: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>[if (oracle(\"foo\")) 42 else ...map];
-                                      ^"){(core::int*) →* void};
+                                      ^");
   } =>#t125;
   block {
     final core::Set<core::int*>* #t126 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t126.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:103:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+      #t126.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:103:31: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>{if (oracle(\"foo\")) ...map else 42, null};
-                              ^"){(core::int*) →* core::bool*};
+                              ^");
     else
-      #t126.{core::Set::add}(42){(core::int*) →* core::bool*};
-    #t126.{core::Set::add}(null){(core::int*) →* core::bool*};
+      #t126.{core::Set::add}{Invariant}(42);
+    #t126.{core::Set::add}{Invariant}(null);
   } =>#t126;
   <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:104:54: Error: Unexpected type 'List<int>' of a map spread entry.  Expected 'dynamic' or a Map.
  - 'List' is from 'dart:core'.
@@ -1208,660 +1208,660 @@
     if(let final Never* #t128 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:112:27: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
   List<int> list20 = [if (42) 42];
                           ^" in 42 as{TypeError} core::bool*)
-      #t127.{core::List::add}(42){(core::int*) →* void};
+      #t127.{core::List::add}{Invariant}(42);
   } =>#t127;
   core::Set<core::int*>* set20 = block {
     final core::Set<core::int*>* #t129 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(let final Never* #t130 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:113:25: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
   Set<int> set20 = {if (42) 42};
                         ^" in 42 as{TypeError} core::bool*)
-      #t129.{core::Set::add}(42){(core::int*) →* core::bool*};
+      #t129.{core::Set::add}{Invariant}(42);
   } =>#t129;
   core::Map<core::int*, core::int*>* map30 = block {
     final core::Map<core::int*, core::int*>* #t131 = <core::int*, core::int*>{};
     if(let final Never* #t132 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:114:30: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
   Map<int, int> map30 = {if (42) 42: 42};
                              ^" in 42 as{TypeError} core::bool*)
-      #t131.{core::Map::[]=}(42, 42){(core::int*, core::int*) →* void};
+      #t131.{core::Map::[]=}{Invariant}(42, 42);
   } =>#t131;
   core::List<core::String*>* list40 = block {
     final core::List<core::String*>* #t133 = core::_GrowableList::•<core::String*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t133.{core::List::add}(let final Never* #t134 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:115:53: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
+      #t133.{core::List::add}{Invariant}(let final Never* #t134 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:115:53: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
   List<String> list40 = <String>[if (oracle(\"foo\")) true else 42];
-                                                    ^" in true as{TypeError} core::String*){(core::String*) →* void};
+                                                    ^" in true as{TypeError} core::String*);
     else
-      #t133.{core::List::add}(let final Never* #t135 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:115:63: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t133.{core::List::add}{Invariant}(let final Never* #t135 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:115:63: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   List<String> list40 = <String>[if (oracle(\"foo\")) true else 42];
-                                                              ^" in 42 as{TypeError} core::String*){(core::String*) →* void};
+                                                              ^" in 42 as{TypeError} core::String*);
   } =>#t133;
   core::Set<core::String*>* set40 = block {
     final core::Set<core::String*>* #t136 = new col::_CompactLinkedHashSet::•<core::String*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t136.{core::Set::add}(let final Never* #t137 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:116:51: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
+      #t136.{core::Set::add}{Invariant}(let final Never* #t137 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:116:51: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
   Set<String> set40 = <String>{if (oracle(\"foo\")) true else 42};
-                                                  ^" in true as{TypeError} core::String*){(core::String*) →* core::bool*};
+                                                  ^" in true as{TypeError} core::String*);
     else
-      #t136.{core::Set::add}(let final Never* #t138 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:116:61: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t136.{core::Set::add}{Invariant}(let final Never* #t138 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:116:61: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   Set<String> set40 = <String>{if (oracle(\"foo\")) true else 42};
-                                                            ^" in 42 as{TypeError} core::String*){(core::String*) →* core::bool*};
+                                                            ^" in 42 as{TypeError} core::String*);
   } =>#t136;
   core::Map<core::String*, core::int*>* map40 = block {
     final core::Map<core::String*, core::int*>* #t139 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t139.{core::Map::[]=}(let final Never* #t140 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:117:61: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
+      #t139.{core::Map::[]=}{Invariant}(let final Never* #t140 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:117:61: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
   Map<String, int> map40 = <String, int>{if (oracle(\"foo\")) true: 42 else 42: 42};
-                                                            ^" in true as{TypeError} core::String*, 42){(core::String*, core::int*) →* void};
+                                                            ^" in true as{TypeError} core::String*, 42);
     else
-      #t139.{core::Map::[]=}(let final Never* #t141 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:117:75: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t139.{core::Map::[]=}{Invariant}(let final Never* #t141 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:117:75: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   Map<String, int> map40 = <String, int>{if (oracle(\"foo\")) true: 42 else 42: 42};
-                                                                          ^" in 42 as{TypeError} core::String*, 42){(core::String*, core::int*) →* void};
+                                                                          ^" in 42 as{TypeError} core::String*, 42);
   } =>#t139;
   core::Map<core::int*, core::String*>* map41 = block {
     final core::Map<core::int*, core::String*>* #t142 = <core::int*, core::String*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
-      #t142.{core::Map::[]=}(42, let final Never* #t143 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:118:65: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
+      #t142.{core::Map::[]=}{Invariant}(42, let final Never* #t143 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:118:65: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
   Map<int, String> map41 = <int, String>{if (oracle(\"foo\")) 42: true else 42: 42};
-                                                                ^" in true as{TypeError} core::String*){(core::int*, core::String*) →* void};
+                                                                ^" in true as{TypeError} core::String*);
     else
-      #t142.{core::Map::[]=}(42, let final Never* #t144 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:118:79: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+      #t142.{core::Map::[]=}{Invariant}(42, let final Never* #t144 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:118:79: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   Map<int, String> map41 = <int, String>{if (oracle(\"foo\")) 42: true else 42: 42};
-                                                                              ^" in 42 as{TypeError} core::String*){(core::int*, core::String*) →* void};
+                                                                              ^" in 42 as{TypeError} core::String*);
   } =>#t142;
 }
 static method testForElement(dynamic dynVar, core::List<core::int*>* listInt, core::List<core::double*>* listDouble, core::int* index, core::Map<core::String*, core::int*>* mapStringInt, core::Map<core::String*, core::double*>* mapStringDouble) → dynamic {
   core::List<core::int*>* list10 = block {
     final core::List<core::int*>* #t145 = core::_GrowableList::•<core::int*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t145.{core::List::add}(42){(core::int*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t145.{core::List::add}{Invariant}(42);
   } =>#t145;
   core::Set<core::int*>* set10 = block {
     final core::Set<core::int*>* #t146 = new col::_CompactLinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t146.{core::Set::add}(42){(core::int*) →* core::bool*};
-    #t146.{core::Set::add}(null){(core::int*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t146.{core::Set::add}{Invariant}(42);
+    #t146.{core::Set::add}{Invariant}(null);
   } =>#t146;
   core::Map<core::String*, core::int*>* map10 = block {
     final core::Map<core::String*, core::int*>* #t147 = <core::String*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t147.{core::Map::[]=}("bar", 42){(core::String*, core::int*) →* void};
-    #t147.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t147.{core::Map::[]=}{Invariant}("bar", 42);
+    #t147.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t147;
   core::List<dynamic>* list11 = block {
     final core::List<dynamic>* #t148 = core::_GrowableList::•<dynamic>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t148.{core::List::add}(dynVar){(dynamic) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t148.{core::List::add}{Invariant}(dynVar);
   } =>#t148;
   core::Set<dynamic>* set11 = block {
     final core::Set<dynamic>* #t149 = new col::_CompactLinkedHashSet::•<dynamic>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t149.{core::Set::add}(dynVar){(dynamic) →* core::bool*};
-    #t149.{core::Set::add}(null){(dynamic) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t149.{core::Set::add}{Invariant}(dynVar);
+    #t149.{core::Set::add}{Invariant}(null);
   } =>#t149;
   core::Map<core::String*, dynamic>* map11 = block {
     final core::Map<core::String*, dynamic>* #t150 = <core::String*, dynamic>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t150.{core::Map::[]=}("bar", dynVar){(core::String*, dynamic) →* void};
-    #t150.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t150.{core::Map::[]=}{Invariant}("bar", dynVar);
+    #t150.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t150;
   core::List<core::List<core::int*>*>* list12 = block {
     final core::List<core::List<core::int*>*>* #t151 = core::_GrowableList::•<core::List<core::int*>*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t151.{core::List::add}(core::_GrowableList::_literal1<core::int*>(42)){(core::List<core::int*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t151.{core::List::add}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
   } =>#t151;
   core::Set<core::List<core::int*>*>* set12 = block {
     final core::Set<core::List<core::int*>*>* #t152 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t152.{core::Set::add}(core::_GrowableList::_literal1<core::int*>(42)){(core::List<core::int*>*) →* core::bool*};
-    #t152.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t152.{core::Set::add}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
+    #t152.{core::Set::add}{Invariant}(null);
   } =>#t152;
   core::Map<core::String*, core::List<core::int*>*>* map12 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t153 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t153.{core::Map::[]=}("bar", core::_GrowableList::_literal1<core::int*>(42)){(core::String*, core::List<core::int*>*) →* void};
-    #t153.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t153.{core::Map::[]=}{Invariant}("bar", core::_GrowableList::_literal1<core::int*>(42));
+    #t153.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t153;
   core::List<core::int*>* list20 = block {
     final core::List<core::int*>* #t154 = core::_GrowableList::•<core::int*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t154.{core::List::addAll}(core::_GrowableList::_literal1<core::int*>(42)){(core::Iterable<core::int*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t154.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
   } =>#t154;
   core::Set<core::int*>* set20 = block {
     final core::Set<core::int*>* #t155 = new col::_CompactLinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t155.{core::Set::addAll}(core::_GrowableList::_literal1<core::int*>(42)){(core::Iterable<core::int*>*) →* void};
-    #t155.{core::Set::add}(null){(core::int*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t155.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
+    #t155.{core::Set::add}{Invariant}(null);
   } =>#t155;
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t156 = <core::String*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t157 = :sync-for-iterator.{core::Iterator::current};
-        #t156.{core::Map::[]=}(#t157.{core::MapEntry::key}, #t157.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t156.{core::Map::[]=}{Invariant}(#t157.{core::MapEntry::key}, #t157.{core::MapEntry::value});
       }
     }
-    #t156.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t156.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t156;
   core::List<dynamic>* list21 = block {
     final core::List<dynamic>* #t158 = core::_GrowableList::•<dynamic>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t158.{core::List::addAll}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t158.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar));
   } =>#t158;
   core::Set<dynamic>* set21 = block {
     final core::Set<dynamic>* #t159 = new col::_CompactLinkedHashSet::•<dynamic>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t159.{core::Set::addAll}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>*) →* void};
-    #t159.{core::Set::add}(null){(dynamic) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t159.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar));
+    #t159.{core::Set::add}{Invariant}(null);
   } =>#t159;
   core::Map<core::String*, dynamic>* map21 = block {
     final core::Map<core::String*, dynamic>* #t160 = <core::String*, dynamic>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
       core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, dynamic>* #t161 = :sync-for-iterator.{core::Iterator::current};
-        #t160.{core::Map::[]=}(#t161.{core::MapEntry::key}, #t161.{core::MapEntry::value}){(core::String*, dynamic) →* void};
+        #t160.{core::Map::[]=}{Invariant}(#t161.{core::MapEntry::key}, #t161.{core::MapEntry::value});
       }
     }
-    #t160.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+    #t160.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t160;
   core::List<core::List<core::int*>*>* list22 = block {
     final core::List<core::List<core::int*>*>* #t162 = core::_GrowableList::•<core::List<core::int*>*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t162.{core::List::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42))){(core::Iterable<core::List<core::int*>*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t162.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42)));
   } =>#t162;
   core::Set<core::List<core::int*>*>* set22 = block {
     final core::Set<core::List<core::int*>*>* #t163 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t163.{core::Set::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42))){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t163.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t163.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42)));
+    #t163.{core::Set::add}{Invariant}(null);
   } =>#t163;
   core::Map<core::String*, core::List<core::int*>*>* map22 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t164 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
       core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::_literal1<core::int*>(42)}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t165 = :sync-for-iterator.{core::Iterator::current};
-        #t164.{core::Map::[]=}(#t165.{core::MapEntry::key}, #t165.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+        #t164.{core::Map::[]=}{Invariant}(#t165.{core::MapEntry::key}, #t165.{core::MapEntry::value});
       }
     }
-    #t164.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    #t164.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t164;
   core::List<core::int*>* list30 = block {
     final core::List<core::int*>* #t166 = core::_GrowableList::•<core::int*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t166.{core::List::addAll}(core::_GrowableList::_literal1<core::int*>(42)){(core::Iterable<core::int*>*) →* void};
+        #t166.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
   } =>#t166;
   core::Set<core::int*>* set30 = block {
     final core::Set<core::int*>* #t167 = new col::_CompactLinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t167.{core::Set::addAll}(core::_GrowableList::_literal1<core::int*>(42)){(core::Iterable<core::int*>*) →* void};
-    #t167.{core::Set::add}(null){(core::int*) →* core::bool*};
+        #t167.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
+    #t167.{core::Set::add}{Invariant}(null);
   } =>#t167;
   core::Map<core::String*, core::int*>* map30 = block {
     final core::Map<core::String*, core::int*>* #t168 = <core::String*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
         core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::int*>* #t169 = :sync-for-iterator.{core::Iterator::current};
-          #t168.{core::Map::[]=}(#t169.{core::MapEntry::key}, #t169.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+          #t168.{core::Map::[]=}{Invariant}(#t169.{core::MapEntry::key}, #t169.{core::MapEntry::value});
         }
       }
-    #t168.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t168.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t168;
   core::List<dynamic>* list31 = block {
     final core::List<dynamic>* #t170 = core::_GrowableList::•<dynamic>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t170.{core::List::addAll}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>*) →* void};
+        #t170.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar));
   } =>#t170;
   core::Set<dynamic>* set31 = block {
     final core::Set<dynamic>* #t171 = new col::_CompactLinkedHashSet::•<dynamic>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t171.{core::Set::addAll}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>*) →* void};
-    #t171.{core::Set::add}(null){(dynamic) →* core::bool*};
+        #t171.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar));
+    #t171.{core::Set::add}{Invariant}(null);
   } =>#t171;
   core::Map<core::String*, dynamic>* map31 = block {
     final core::Map<core::String*, dynamic>* #t172 = <core::String*, dynamic>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
         core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, dynamic>* #t173 = :sync-for-iterator.{core::Iterator::current};
-          #t172.{core::Map::[]=}(#t173.{core::MapEntry::key}, #t173.{core::MapEntry::value}){(core::String*, dynamic) →* void};
+          #t172.{core::Map::[]=}{Invariant}(#t173.{core::MapEntry::key}, #t173.{core::MapEntry::value});
         }
       }
-    #t172.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+    #t172.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t172;
   core::List<core::List<core::int*>*>* list33 = block {
     final core::List<core::List<core::int*>*>* #t174 = core::_GrowableList::•<core::List<core::int*>*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t174.{core::List::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42))){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t174.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42)));
   } =>#t174;
   core::Set<core::List<core::int*>*>* set33 = block {
     final core::Set<core::List<core::int*>*>* #t175 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t175.{core::Set::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42))){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t175.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t175.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(42)));
+    #t175.{core::Set::add}{Invariant}(null);
   } =>#t175;
   core::Map<core::String*, core::List<core::int*>*>* map33 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t176 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
         core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::_literal1<core::int*>(42)}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t177 = :sync-for-iterator.{core::Iterator::current};
-          #t176.{core::Map::[]=}(#t177.{core::MapEntry::key}, #t177.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+          #t176.{core::Map::[]=}{Invariant}(#t177.{core::MapEntry::key}, #t177.{core::MapEntry::value});
         }
       }
-    #t176.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    #t176.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t176;
   core::List<core::List<core::int*>*>* list40 = block {
     final core::List<core::List<core::int*>*>* #t178 = core::_GrowableList::•<core::List<core::int*>*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t178.{core::List::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t178.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
   } =>#t178;
   core::Set<core::List<core::int*>*>* set40 = block {
     final core::Set<core::List<core::int*>*>* #t179 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t179.{core::Set::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t179.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t179.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
+    #t179.{core::Set::add}{Invariant}(null);
   } =>#t179;
   core::Map<core::String*, core::List<core::int*>*>* map40 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t180 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
       core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t181 = :sync-for-iterator.{core::Iterator::current};
-        #t180.{core::Map::[]=}(#t181.{core::MapEntry::key}, #t181.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+        #t180.{core::Map::[]=}{Invariant}(#t181.{core::MapEntry::key}, #t181.{core::MapEntry::value});
       }
     }
-    #t180.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    #t180.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t180;
   core::List<core::List<core::int*>*>* list41 = block {
     final core::List<core::List<core::int*>*>* #t182 = core::_GrowableList::•<core::List<core::int*>*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t182.{core::List::addAll}( block {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t182.{core::List::addAll}{Invariant}( block {
         final core::Set<core::List<core::int*>*>* #t183 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-        #t183.{core::Set::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* core::bool*};
-      } =>#t183){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t183.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int*>(0));
+      } =>#t183);
   } =>#t182;
   core::Set<core::List<core::int*>*>* set41 = block {
     final core::Set<core::List<core::int*>*>* #t184 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t184.{core::Set::addAll}( block {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t184.{core::Set::addAll}{Invariant}( block {
         final core::Set<core::List<core::int*>*>* #t185 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-        #t185.{core::Set::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* core::bool*};
-      } =>#t185){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t184.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t185.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int*>(0));
+      } =>#t185);
+    #t184.{core::Set::add}{Invariant}(null);
   } =>#t184;
   core::List<core::List<core::int*>*>* list42 = block {
     final core::List<core::List<core::int*>*>* #t186 = core::_GrowableList::•<core::List<core::int*>*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t186.{core::List::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t186.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
   } =>#t186;
   core::Set<core::List<core::int*>*>* set42 = block {
     final core::Set<core::List<core::int*>*>* #t187 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t187.{core::Set::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t187.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t187.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
+    #t187.{core::Set::add}{Invariant}(null);
   } =>#t187;
   core::Map<core::String*, core::List<core::int*>*>* map42 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t188 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
         core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t189 = :sync-for-iterator.{core::Iterator::current};
-          #t188.{core::Map::[]=}(#t189.{core::MapEntry::key}, #t189.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+          #t188.{core::Map::[]=}{Invariant}(#t189.{core::MapEntry::key}, #t189.{core::MapEntry::value});
         }
       }
-    #t188.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    #t188.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t188;
   core::List<core::int*>* list50 = block {
     final core::List<core::int*>* #t190 = core::_GrowableList::•<core::int*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t190.{core::List::addAll}(core::_GrowableList::•<core::int*>(0)){(core::Iterable<core::int*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t190.{core::List::addAll}{Invariant}(core::_GrowableList::•<core::int*>(0));
   } =>#t190;
   core::Set<core::int*>* set50 = block {
     final core::Set<core::int*>* #t191 = new col::_CompactLinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t191.{core::Set::addAll}(core::_GrowableList::•<core::int*>(0)){(core::Iterable<core::int*>*) →* void};
-    #t191.{core::Set::add}(null){(core::int*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t191.{core::Set::addAll}{Invariant}(core::_GrowableList::•<core::int*>(0));
+    #t191.{core::Set::add}{Invariant}(null);
   } =>#t191;
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t192 = <core::String*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t193 = :sync-for-iterator.{core::Iterator::current};
-        #t192.{core::Map::[]=}(#t193.{core::MapEntry::key}, #t193.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t192.{core::Map::[]=}{Invariant}(#t193.{core::MapEntry::key}, #t193.{core::MapEntry::value});
       }
     }
-    #t192.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t192.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t192;
   core::List<core::int*>* list51 = block {
     final core::List<core::int*>* #t194 = core::_GrowableList::•<core::int*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t194.{core::List::addAll}( block {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t194.{core::List::addAll}{Invariant}( block {
         final core::Set<core::int*>* #t195 = new col::_CompactLinkedHashSet::•<core::int*>();
-      } =>#t195){(core::Iterable<core::int*>*) →* void};
+      } =>#t195);
   } =>#t194;
   core::Set<core::int*>* set51 = block {
     final core::Set<core::int*>* #t196 = new col::_CompactLinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t196.{core::Set::addAll}( block {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t196.{core::Set::addAll}{Invariant}( block {
         final core::Set<core::int*>* #t197 = new col::_CompactLinkedHashSet::•<core::int*>();
-      } =>#t197){(core::Iterable<core::int*>*) →* void};
-    #t196.{core::Set::add}(null){(core::int*) →* core::bool*};
+      } =>#t197);
+    #t196.{core::Set::add}{Invariant}(null);
   } =>#t196;
   core::List<core::int*>* list52 = block {
     final core::List<core::int*>* #t198 = core::_GrowableList::•<core::int*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t198.{core::List::addAll}(core::_GrowableList::•<core::int*>(0)){(core::Iterable<core::int*>*) →* void};
+        #t198.{core::List::addAll}{Invariant}(core::_GrowableList::•<core::int*>(0));
   } =>#t198;
   core::Set<core::int*>* set52 = block {
     final core::Set<core::int*>* #t199 = new col::_CompactLinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t199.{core::Set::addAll}(core::_GrowableList::•<core::int*>(0)){(core::Iterable<core::int*>*) →* void};
-    #t199.{core::Set::add}(null){(core::int*) →* core::bool*};
+        #t199.{core::Set::addAll}{Invariant}(core::_GrowableList::•<core::int*>(0));
+    #t199.{core::Set::add}{Invariant}(null);
   } =>#t199;
   core::List<core::List<core::int*>*>* list60 = block {
     final core::List<core::List<core::int*>*>* #t200 = core::_GrowableList::•<core::List<core::int*>*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t200.{core::List::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t200.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
   } =>#t200;
   core::Set<core::List<core::int*>*>* set60 = block {
     final core::Set<core::List<core::int*>*>* #t201 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t201.{core::Set::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t201.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t201.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
+    #t201.{core::Set::add}{Invariant}(null);
   } =>#t201;
   core::Map<core::String*, core::List<core::int*>*>* map60 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t202 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
       core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t203 = :sync-for-iterator.{core::Iterator::current};
-        #t202.{core::Map::[]=}(#t203.{core::MapEntry::key}, #t203.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+        #t202.{core::Map::[]=}{Invariant}(#t203.{core::MapEntry::key}, #t203.{core::MapEntry::value});
       }
     }
-    #t202.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    #t202.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t202;
   core::List<core::List<core::int*>*>* list61 = block {
     final core::List<core::List<core::int*>*>* #t204 = core::_GrowableList::•<core::List<core::int*>*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t204.{core::List::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
+        #t204.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
   } =>#t204;
   core::Set<core::List<core::int*>*>* set61 = block {
     final core::Set<core::List<core::int*>*>* #t205 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t205.{core::Set::addAll}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0))){(core::Iterable<core::List<core::int*>*>*) →* void};
-    #t205.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t205.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
+    #t205.{core::Set::add}{Invariant}(null);
   } =>#t205;
   core::Map<core::String*, core::List<core::int*>*>* map61 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t206 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
         core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t207 = :sync-for-iterator.{core::Iterator::current};
-          #t206.{core::Map::[]=}(#t207.{core::MapEntry::key}, #t207.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+          #t206.{core::Map::[]=}{Invariant}(#t207.{core::MapEntry::key}, #t207.{core::MapEntry::value});
         }
       }
-    #t206.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    #t206.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t206;
   core::List<core::List<core::int*>*>* list70 = block {
     final core::List<core::List<core::int*>*>* #t208 = core::_GrowableList::•<core::List<core::int*>*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t208.{core::List::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t208.{core::List::add}{Invariant}(core::_GrowableList::•<core::int*>(0));
   } =>#t208;
   core::Set<core::List<core::int*>*>* set70 = block {
     final core::Set<core::List<core::int*>*>* #t209 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t209.{core::Set::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* core::bool*};
-    #t209.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t209.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int*>(0));
+    #t209.{core::Set::add}{Invariant}(null);
   } =>#t209;
   core::Map<core::String*, core::List<core::int*>*>* map70 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t210 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t210.{core::Map::[]=}("bar", core::_GrowableList::•<core::int*>(0)){(core::String*, core::List<core::int*>*) →* void};
-    #t210.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t210.{core::Map::[]=}{Invariant}("bar", core::_GrowableList::•<core::int*>(0));
+    #t210.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t210;
   core::List<core::List<core::int*>*>* list71 = block {
     final core::List<core::List<core::int*>*>* #t211 = core::_GrowableList::•<core::List<core::int*>*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t211.{core::List::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* void};
+        #t211.{core::List::add}{Invariant}(core::_GrowableList::•<core::int*>(0));
   } =>#t211;
   core::Set<core::List<core::int*>*>* set71 = block {
     final core::Set<core::List<core::int*>*>* #t212 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t212.{core::Set::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* core::bool*};
-    #t212.{core::Set::add}(null){(core::List<core::int*>*) →* core::bool*};
+        #t212.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int*>(0));
+    #t212.{core::Set::add}{Invariant}(null);
   } =>#t212;
   core::Map<core::String*, core::List<core::int*>*>* map71 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t213 = <core::String*, core::List<core::int*>*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t213.{core::Map::[]=}("bar", core::_GrowableList::•<core::int*>(0)){(core::String*, core::List<core::int*>*) →* void};
-    #t213.{core::Map::[]=}("baz", null){(core::String*, core::List<core::int*>*) →* void};
+        #t213.{core::Map::[]=}{Invariant}("bar", core::_GrowableList::•<core::int*>(0));
+    #t213.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t213;
   core::List<core::num*>* list80 = block {
     final core::List<core::num*>* #t214 = core::_GrowableList::•<core::num*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t214.{core::List::add}(42){(core::num*) →* void};
+        #t214.{core::List::add}{Invariant}(42);
       else
-        #t214.{core::List::add}(3.14){(core::num*) →* void};
+        #t214.{core::List::add}{Invariant}(3.14);
   } =>#t214;
   core::Set<core::num*>* set80 = block {
     final core::Set<core::num*>* #t215 = new col::_CompactLinkedHashSet::•<core::num*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t215.{core::Set::add}(42){(core::num*) →* core::bool*};
+        #t215.{core::Set::add}{Invariant}(42);
       else
-        #t215.{core::Set::add}(3.14){(core::num*) →* core::bool*};
-    #t215.{core::Set::add}(null){(core::num*) →* core::bool*};
+        #t215.{core::Set::add}{Invariant}(3.14);
+    #t215.{core::Set::add}{Invariant}(null);
   } =>#t215;
   core::Map<core::String*, core::num*>* map80 = block {
     final core::Map<core::String*, core::num*>* #t216 = <core::String*, core::num*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t216.{core::Map::[]=}("bar", 42){(core::String*, core::num*) →* void};
+        #t216.{core::Map::[]=}{Invariant}("bar", 42);
       else
-        #t216.{core::Map::[]=}("bar", 3.14){(core::String*, core::num*) →* void};
-    #t216.{core::Map::[]=}("baz", null){(core::String*, core::num*) →* void};
+        #t216.{core::Map::[]=}{Invariant}("bar", 3.14);
+    #t216.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t216;
   core::List<core::num*>* list81 = block {
     final core::List<core::num*>* #t217 = core::_GrowableList::•<core::num*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t217.{core::List::addAll}(listInt){(core::Iterable<core::num*>*) →* void};
+        #t217.{core::List::addAll}{Invariant}(listInt);
       else
-        #t217.{core::List::addAll}(listDouble){(core::Iterable<core::num*>*) →* void};
+        #t217.{core::List::addAll}{Invariant}(listDouble);
   } =>#t217;
   core::Set<core::num*>* set81 = block {
     final core::Set<core::num*>* #t218 = new col::_CompactLinkedHashSet::•<core::num*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t218.{core::Set::addAll}(listInt){(core::Iterable<core::num*>*) →* void};
+        #t218.{core::Set::addAll}{Invariant}(listInt);
       else
-        #t218.{core::Set::addAll}(listDouble){(core::Iterable<core::num*>*) →* void};
-    #t218.{core::Set::add}(null){(core::num*) →* core::bool*};
+        #t218.{core::Set::addAll}{Invariant}(listDouble);
+    #t218.{core::Set::add}{Invariant}(null);
   } =>#t218;
   core::Map<core::String*, core::num*>* map81 = block {
     final core::Map<core::String*, core::num*>* #t219 = <core::String*, core::num*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
         core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::num*>* #t220 = :sync-for-iterator.{core::Iterator::current};
-          #t219.{core::Map::[]=}(#t220.{core::MapEntry::key}, #t220.{core::MapEntry::value}){(core::String*, core::num*) →* void};
+          #t219.{core::Map::[]=}{Invariant}(#t220.{core::MapEntry::key}, #t220.{core::MapEntry::value});
         }
       }
       else {
         core::Iterator<core::MapEntry<core::String*, core::double*>>* :sync-for-iterator = mapStringDouble.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::num*>* #t221 = :sync-for-iterator.{core::Iterator::current};
-          #t219.{core::Map::[]=}(#t221.{core::MapEntry::key}, #t221.{core::MapEntry::value}){(core::String*, core::num*) →* void};
+          #t219.{core::Map::[]=}{Invariant}(#t221.{core::MapEntry::key}, #t221.{core::MapEntry::value});
         }
       }
-    #t219.{core::Map::[]=}("baz", null){(core::String*, core::num*) →* void};
+    #t219.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t219;
   core::List<dynamic>* list82 = block {
     final core::List<dynamic>* #t222 = core::_GrowableList::•<dynamic>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t222.{core::List::addAll}(listInt){(core::Iterable<dynamic>*) →* void};
+        #t222.{core::List::addAll}{Invariant}(listInt);
       else
-        #t222.{core::List::addAll}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*){(core::Iterable<dynamic>*) →* void};
+        #t222.{core::List::addAll}{Invariant}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*);
   } =>#t222;
   core::Set<dynamic>* set82 = block {
     final core::Set<dynamic>* #t223 = new col::_CompactLinkedHashSet::•<dynamic>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t223.{core::Set::addAll}(listInt){(core::Iterable<dynamic>*) →* void};
+        #t223.{core::Set::addAll}{Invariant}(listInt);
       else
-        #t223.{core::Set::addAll}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*){(core::Iterable<dynamic>*) →* void};
-    #t223.{core::Set::add}(null){(dynamic) →* core::bool*};
+        #t223.{core::Set::addAll}{Invariant}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*);
+    #t223.{core::Set::add}{Invariant}(null);
   } =>#t223;
   core::Map<dynamic, dynamic>* map82 = block {
     final core::Map<dynamic, dynamic>* #t224 = <dynamic, dynamic>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
         core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<dynamic, dynamic>* #t225 = :sync-for-iterator.{core::Iterator::current};
-          #t224.{core::Map::[]=}(#t225.{core::MapEntry::key}, #t225.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+          #t224.{core::Map::[]=}{Invariant}(#t225.{core::MapEntry::key}, #t225.{core::MapEntry::value});
         }
       }
       else {
         core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<dynamic, dynamic>* #t226 = :sync-for-iterator.{core::Iterator::current};
-          #t224.{core::Map::[]=}(#t226.{core::MapEntry::key}, #t226.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+          #t224.{core::Map::[]=}{Invariant}(#t226.{core::MapEntry::key}, #t226.{core::MapEntry::value});
         }
       }
-    #t224.{core::Map::[]=}("baz", null){(dynamic, dynamic) →* void};
+    #t224.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t224;
   core::List<core::num*>* list83 = block {
     final core::List<core::num*>* #t227 = core::_GrowableList::•<core::num*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t227.{core::List::add}(42){(core::num*) →* void};
+        #t227.{core::List::add}{Invariant}(42);
       else
-        #t227.{core::List::addAll}(listDouble){(core::Iterable<core::num*>*) →* void};
+        #t227.{core::List::addAll}{Invariant}(listDouble);
   } =>#t227;
   core::Set<core::num*>* set83 = block {
     final core::Set<core::num*>* #t228 = new col::_CompactLinkedHashSet::•<core::num*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-        #t228.{core::Set::addAll}(listInt){(core::Iterable<core::num*>*) →* void};
+        #t228.{core::Set::addAll}{Invariant}(listInt);
       else
-        #t228.{core::Set::add}(3.14){(core::num*) →* core::bool*};
-    #t228.{core::Set::add}(null){(core::num*) →* core::bool*};
+        #t228.{core::Set::add}{Invariant}(3.14);
+    #t228.{core::Set::add}{Invariant}(null);
   } =>#t228;
   core::Map<core::String*, core::num*>* map83 = block {
     final core::Map<core::String*, core::num*>* #t229 = <core::String*, core::num*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
         core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::num*>* #t230 = :sync-for-iterator.{core::Iterator::current};
-          #t229.{core::Map::[]=}(#t230.{core::MapEntry::key}, #t230.{core::MapEntry::value}){(core::String*, core::num*) →* void};
+          #t229.{core::Map::[]=}{Invariant}(#t230.{core::MapEntry::key}, #t230.{core::MapEntry::value});
         }
       }
       else
-        #t229.{core::Map::[]=}("bar", 3.14){(core::String*, core::num*) →* void};
-    #t229.{core::Map::[]=}("baz", null){(core::String*, core::num*) →* void};
+        #t229.{core::Map::[]=}{Invariant}("bar", 3.14);
+    #t229.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t229;
   core::List<core::int*>* list90 = block {
     final core::List<core::int*>* #t231 = core::_GrowableList::•<core::int*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t231.{core::List::add}(dynVar as{TypeError,ForDynamic} core::int*){(core::int*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t231.{core::List::add}{Invariant}(dynVar as{TypeError,ForDynamic} core::int*);
   } =>#t231;
   core::Set<core::int*>* set90 = block {
     final core::Set<core::int*>* #t232 = new col::_CompactLinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t232.{core::Set::add}(dynVar as{TypeError,ForDynamic} core::int*){(core::int*) →* core::bool*};
-    #t232.{core::Set::add}(null){(core::int*) →* core::bool*};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t232.{core::Set::add}{Invariant}(dynVar as{TypeError,ForDynamic} core::int*);
+    #t232.{core::Set::add}{Invariant}(null);
   } =>#t232;
   core::Map<core::String*, core::int*>* map90 = block {
     final core::Map<core::String*, core::int*>* #t233 = <core::String*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t233.{core::Map::[]=}("bar", dynVar as{TypeError,ForDynamic} core::int*){(core::String*, core::int*) →* void};
-    #t233.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+      #t233.{core::Map::[]=}{Invariant}("bar", dynVar as{TypeError,ForDynamic} core::int*);
+    #t233.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t233;
   core::List<core::int*>* list91 = block {
     final core::List<core::int*>* #t234 = core::_GrowableList::•<core::int*>(0);
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
       core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t235 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t236 = #t235 as{TypeError} core::int*;
-          #t234.{core::List::add}(#t236){(core::int*) →* void};
+          #t234.{core::List::add}{Invariant}(#t236);
         }
       }
     }
   } =>#t234;
   core::Set<core::int*>* set91 = block {
     final core::Set<core::int*>* #t237 = new col::_CompactLinkedHashSet::•<core::int*>();
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
       core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t238 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t239 = #t238 as{TypeError} core::int*;
-          #t237.{core::Set::add}(#t239){(core::int*) →* core::bool*};
+          #t237.{core::Set::add}{Invariant}(#t239);
         }
       }
     }
-    #t237.{core::Set::add}(null){(core::int*) →* core::bool*};
+    #t237.{core::Set::add}{Invariant}(null);
   } =>#t237;
   core::Map<core::String*, core::int*>* map91 = block {
     final core::Map<core::String*, core::int*>* #t240 = <core::String*, core::int*>{};
-    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
       core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t241 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::String* #t242 = #t241.{core::MapEntry::key} as{TypeError} core::String*;
           final core::int* #t243 = #t241.{core::MapEntry::value} as{TypeError} core::int*;
-          #t240.{core::Map::[]=}(#t242, #t243){(core::String*, core::int*) →* void};
+          #t240.{core::Map::[]=}{Invariant}(#t242, #t243);
         }
       }
     }
-    #t240.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t240.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t240;
   core::List<core::int*>* list100 = block {
     final core::List<core::int*>* #t244 = core::_GrowableList::•<core::int*>(0);
-    for (final core::int* #t245 = index = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; index = index.{core::num::+}(1){(core::num*) →* core::int*})
-      #t244.{core::List::add}(42){(core::int*) →* void};
+    for (final core::int* #t245 = index = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; index = index.{core::num::+}(1))
+      #t244.{core::List::add}{Invariant}(42);
   } =>#t244;
   core::Set<core::int*>* set100 = block {
     final core::Set<core::int*>* #t246 = new col::_CompactLinkedHashSet::•<core::int*>();
-    for (final core::int* #t247 = index = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; index = index.{core::num::+}(1){(core::num*) →* core::int*})
-      #t246.{core::Set::add}(42){(core::int*) →* core::bool*};
+    for (final core::int* #t247 = index = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; index = index.{core::num::+}(1))
+      #t246.{core::Set::add}{Invariant}(42);
   } =>#t246;
   core::Map<core::String*, core::int*>* map100 = block {
     final core::Map<core::String*, core::int*>* #t248 = <core::String*, core::int*>{};
-    for (final core::int* #t249 = index = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; index = index.{core::num::+}(1){(core::num*) →* core::int*})
-      #t248.{core::Map::[]=}("bar", 42){(core::String*, core::int*) →* void};
+    for (final core::int* #t249 = index = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; index = index.{core::num::+}(1))
+      #t248.{core::Map::[]=}{Invariant}("bar", 42);
   } =>#t248;
   core::List<core::int*>* list110 = block {
     final core::List<core::int*>* #t250 = core::_GrowableList::•<core::int*>(0);
@@ -1869,7 +1869,7 @@
       core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int* i = :sync-for-iterator.{core::Iterator::current};
-        #t250.{core::List::add}(i){(core::int*) →* void};
+        #t250.{core::List::add}{Invariant}(i);
       }
     }
   } =>#t250;
@@ -1879,10 +1879,10 @@
       core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int* i = :sync-for-iterator.{core::Iterator::current};
-        #t251.{core::Set::add}(i){(core::int*) →* core::bool*};
+        #t251.{core::Set::add}{Invariant}(i);
       }
     }
-    #t251.{core::Set::add}(null){(core::int*) →* core::bool*};
+    #t251.{core::Set::add}{Invariant}(null);
   } =>#t251;
   core::Map<core::String*, core::int*>* map110 = block {
     final core::Map<core::String*, core::int*>* #t252 = <core::String*, core::int*>{};
@@ -1890,10 +1890,10 @@
       core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int* i = :sync-for-iterator.{core::Iterator::current};
-        #t252.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
+        #t252.{core::Map::[]=}{Invariant}("bar", i);
       }
     }
-    #t252.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t252.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t252;
   core::List<core::int*>* list120 = block {
     final core::List<core::int*>* #t253 = core::_GrowableList::•<core::int*>(0);
@@ -1901,7 +1901,7 @@
       core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         dynamic i = :sync-for-iterator.{core::Iterator::current};
-        #t253.{core::List::add}(i as{TypeError,ForDynamic} core::int*){(core::int*) →* void};
+        #t253.{core::List::add}{Invariant}(i as{TypeError,ForDynamic} core::int*);
       }
     }
   } =>#t253;
@@ -1911,10 +1911,10 @@
       core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         dynamic i = :sync-for-iterator.{core::Iterator::current};
-        #t254.{core::Set::add}(i as{TypeError,ForDynamic} core::int*){(core::int*) →* core::bool*};
+        #t254.{core::Set::add}{Invariant}(i as{TypeError,ForDynamic} core::int*);
       }
     }
-    #t254.{core::Set::add}(null){(core::int*) →* core::bool*};
+    #t254.{core::Set::add}{Invariant}(null);
   } =>#t254;
   core::Map<core::String*, core::int*>* map120 = block {
     final core::Map<core::String*, core::int*>* #t255 = <core::String*, core::int*>{};
@@ -1922,25 +1922,25 @@
       core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         dynamic i = :sync-for-iterator.{core::Iterator::current};
-        #t255.{core::Map::[]=}("bar", i as{TypeError,ForDynamic} core::int*){(core::String*, core::int*) →* void};
+        #t255.{core::Map::[]=}{Invariant}("bar", i as{TypeError,ForDynamic} core::int*);
       }
     }
-    #t255.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+    #t255.{core::Map::[]=}{Invariant}("baz", null);
   } =>#t255;
   core::List<core::int*>* list130 = block {
     final core::List<core::int*>* #t256 = core::_GrowableList::•<core::int*>(0);
-    for (core::int* i = 1; i.{core::num::<}(2){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t256.{core::List::add}(i){(core::int*) →* void};
+    for (core::int* i = 1; i.{core::num::<}(2); i = i.{core::num::+}(1))
+      #t256.{core::List::add}{Invariant}(i);
   } =>#t256;
   core::Set<core::int*>* set130 = block {
     final core::Set<core::int*>* #t257 = new col::_CompactLinkedHashSet::•<core::int*>();
-    for (core::int* i = 1; i.{core::num::<}(2){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t257.{core::Set::add}(i){(core::int*) →* core::bool*};
+    for (core::int* i = 1; i.{core::num::<}(2); i = i.{core::num::+}(1))
+      #t257.{core::Set::add}{Invariant}(i);
   } =>#t257;
   core::Map<core::int*, core::int*>* map130 = block {
     final core::Map<core::int*, core::int*>* #t258 = <core::int*, core::int*>{};
-    for (core::int* i = 1; i.{core::num::<}(2){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t258.{core::Map::[]=}(i, i){(core::int*, core::int*) →* void};
+    for (core::int* i = 1; i.{core::num::<}(2); i = i.{core::num::+}(1))
+      #t258.{core::Map::[]=}{Invariant}(i, i);
   } =>#t258;
 }
 static method testForElementErrors(core::Map<core::int*, core::int*>* map, core::List<core::int*>* list) → dynamic /* originally async */ {
@@ -1961,49 +1961,49 @@
       {
         block {
           final core::List<core::int*>* #t259 = core::_GrowableList::•<core::int*>(0);
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-            #t259.{core::List::add}(let final Never* #t260 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:210:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+            #t259.{core::List::add}{Invariant}(let final Never* #t260 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:210:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>[for (int i = 0; oracle(\"foo\"); i++) \"bar\"];
-                                            ^" in "bar" as{TypeError} core::int*){(core::int*) →* void};
+                                            ^" in "bar" as{TypeError} core::int*);
         } =>#t259;
         block {
           final core::Set<core::int*>* #t261 = new col::_CompactLinkedHashSet::•<core::int*>();
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-            #t261.{core::Set::add}(let final Never* #t262 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:211:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+            #t261.{core::Set::add}{Invariant}(let final Never* #t262 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:211:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>{for (int i = 0; oracle(\"foo\"); i++) \"bar\", null};
-                                            ^" in "bar" as{TypeError} core::int*){(core::int*) →* core::bool*};
-          #t261.{core::Set::add}(null){(core::int*) →* core::bool*};
+                                            ^" in "bar" as{TypeError} core::int*);
+          #t261.{core::Set::add}{Invariant}(null);
         } =>#t261;
         block {
           final core::Map<core::int*, core::int*>* #t263 = <core::int*, core::int*>{};
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-            #t263.{core::Map::[]=}(let final Never* #t264 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:212:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+            #t263.{core::Map::[]=}{Invariant}(let final Never* #t264 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:212:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) \"bar\": \"bar\", \"baz\": null};
                                                  ^" in "bar" as{TypeError} core::int*, let final Never* #t265 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:212:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) \"bar\": \"bar\", \"baz\": null};
-                                                        ^" in "bar" as{TypeError} core::int*){(core::int*, core::int*) →* void};
-          #t263.{core::Map::[]=}(let final Never* #t266 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:212:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+                                                        ^" in "bar" as{TypeError} core::int*);
+          #t263.{core::Map::[]=}{Invariant}(let final Never* #t266 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:212:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) \"bar\": \"bar\", \"baz\": null};
-                                                               ^" in "baz" as{TypeError} core::int*, null){(core::int*, core::int*) →* void};
+                                                               ^" in "baz" as{TypeError} core::int*, null);
         } =>#t263;
         block {
           final core::List<core::int*>* #t267 = core::_GrowableList::•<core::int*>(0);
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-            #t267.{core::List::addAll}(core::_GrowableList::_literal1<core::int*>(let final Never* #t268 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:213:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+            #t267.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(let final Never* #t268 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:213:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>[for (int i = 0; oracle(\"foo\"); i++) ...[\"bar\"]];
-                                                ^" in "bar" as{TypeError} core::int*)){(core::Iterable<core::int*>*) →* void};
+                                                ^" in "bar" as{TypeError} core::int*));
         } =>#t267;
         block {
           final core::Set<core::int*>* #t269 = new col::_CompactLinkedHashSet::•<core::int*>();
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-            #t269.{core::Set::addAll}(core::_GrowableList::_literal1<core::int*>(let final Never* #t270 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:214:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+            #t269.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(let final Never* #t270 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:214:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int>{for (int i = 0; oracle(\"foo\"); i++) ...[\"bar\"], null};
-                                                ^" in "bar" as{TypeError} core::int*)){(core::Iterable<core::int*>*) →* void};
-          #t269.{core::Set::add}(null){(core::int*) →* core::bool*};
+                                                ^" in "bar" as{TypeError} core::int*));
+          #t269.{core::Set::add}{Invariant}(null);
         } =>#t269;
         block {
           final core::Map<core::int*, core::int*>* #t271 = <core::int*, core::int*>{};
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
             core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{let final Never* #t272 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:54: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
                                                      ^" in "bar" as{TypeError} core::int*: let final Never* #t273 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:61: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
@@ -2011,29 +2011,29 @@
                                                             ^" in "bar" as{TypeError} core::int*}.{core::Map::entries}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final core::MapEntry<core::int*, core::int*>* #t274 = :sync-for-iterator.{core::Iterator::current};
-              #t271.{core::Map::[]=}(#t274.{core::MapEntry::key}, #t274.{core::MapEntry::value}){(core::int*, core::int*) →* void};
+              #t271.{core::Map::[]=}{Invariant}(#t274.{core::MapEntry::key}, #t274.{core::MapEntry::value});
             }
           }
-          #t271.{core::Map::[]=}(let final Never* #t275 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:69: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          #t271.{core::Map::[]=}{Invariant}(let final Never* #t275 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:69: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
-                                                                    ^" in "baz" as{TypeError} core::int*, null){(core::int*, core::int*) →* void};
+                                                                    ^" in "baz" as{TypeError} core::int*, null);
         } =>#t271;
         block {
           final core::List<core::int*>* #t276 = core::_GrowableList::•<core::int*>(0);
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-            #t276.{core::List::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:216:48: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+            #t276.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:216:48: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>[for (int i = 0; oracle(\"foo\"); i++) ...map];
-                                               ^"){(core::int*) →* void};
+                                               ^");
         } =>#t276;
         block {
           final core::Set<core::int*>* #t277 = new col::_CompactLinkedHashSet::•<core::int*>();
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-            #t277.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:217:48: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
+            #t277.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:217:48: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>{for (int i = 0; oracle(\"foo\"); i++) ...map, null};
-                                               ^"){(core::int*) →* core::bool*};
-          #t277.{core::Set::add}(null){(core::int*) →* core::bool*};
+                                               ^");
+          #t277.{core::Set::add}{Invariant}(null);
         } =>#t277;
         <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:218:53: Error: Unexpected type 'List<int>' of a map spread entry.  Expected 'dynamic' or a Map.
  - 'List' is from 'dart:core'.
@@ -2044,64 +2044,64 @@
                                                     ^": null};
         block {
           final core::List<core::String*>* #t278 = core::_GrowableList::•<core::String*>(0);
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
             if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-              #t278.{core::List::add}(let final Never* #t279 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:219:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+              #t278.{core::List::add}{Invariant}(let final Never* #t279 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:219:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   <String>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14];
-                                                             ^" in 42 as{TypeError} core::String*){(core::String*) →* void};
+                                                             ^" in 42 as{TypeError} core::String*);
             else
-              #t278.{core::List::add}(let final Never* #t280 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:219:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+              #t278.{core::List::add}{Invariant}(let final Never* #t280 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:219:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
   <String>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14];
-                                                                     ^" in 3.14 as{TypeError} core::String*){(core::String*) →* void};
+                                                                     ^" in 3.14 as{TypeError} core::String*);
         } =>#t278;
         block {
           final core::Set<core::String*>* #t281 = new col::_CompactLinkedHashSet::•<core::String*>();
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
             if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-              #t281.{core::Set::add}(let final Never* #t282 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:220:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+              #t281.{core::Set::add}{Invariant}(let final Never* #t282 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:220:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   <String>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14, null};
-                                                             ^" in 42 as{TypeError} core::String*){(core::String*) →* core::bool*};
+                                                             ^" in 42 as{TypeError} core::String*);
             else
-              #t281.{core::Set::add}(let final Never* #t283 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:220:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+              #t281.{core::Set::add}{Invariant}(let final Never* #t283 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:220:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
   <String>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14, null};
-                                                                     ^" in 3.14 as{TypeError} core::String*){(core::String*) →* core::bool*};
-          #t281.{core::Set::add}(null){(core::String*) →* core::bool*};
+                                                                     ^" in 3.14 as{TypeError} core::String*);
+          #t281.{core::Set::add}{Invariant}(null);
         } =>#t281;
         block {
           final core::Map<core::String*, core::String*>* #t284 = <core::String*, core::String*>{};
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
             if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-              #t284.{core::Map::[]=}("bar", let final Never* #t285 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:221:77: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+              #t284.{core::Map::[]=}{Invariant}("bar", let final Never* #t285 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:221:77: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   <String, String>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) \"bar\": 42 else \"bar\": 3.14, \"baz\": null};
-                                                                            ^" in 42 as{TypeError} core::String*){(core::String*, core::String*) →* void};
+                                                                            ^" in 42 as{TypeError} core::String*);
             else
-              #t284.{core::Map::[]=}("bar", let final Never* #t286 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:221:92: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+              #t284.{core::Map::[]=}{Invariant}("bar", let final Never* #t286 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:221:92: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
   <String, String>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) \"bar\": 42 else \"bar\": 3.14, \"baz\": null};
-                                                                                           ^" in 3.14 as{TypeError} core::String*){(core::String*, core::String*) →* void};
-          #t284.{core::Map::[]=}("baz", null){(core::String*, core::String*) →* void};
+                                                                                           ^" in 3.14 as{TypeError} core::String*);
+          #t284.{core::Map::[]=}{Invariant}("baz", null);
         } =>#t284;
         block {
           final core::List<core::int*>* #t287 = core::_GrowableList::•<core::int*>(0);
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
             if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-              #t287.{core::List::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:222:62: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+              #t287.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:222:62: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) ...map else 42];
-                                                             ^"){(core::int*) →* void};
+                                                             ^");
             else
-              #t287.{core::List::add}(42){(core::int*) →* void};
+              #t287.{core::List::add}{Invariant}(42);
         } =>#t287;
         block {
           final core::Set<core::int*>* #t288 = new col::_CompactLinkedHashSet::•<core::int*>();
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
             if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-              #t288.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:223:62: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+              #t288.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:223:62: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) ...map else 42, null};
-                                                             ^"){(core::int*) →* core::bool*};
+                                                             ^");
             else
-              #t288.{core::Set::add}(42){(core::int*) →* core::bool*};
-          #t288.{core::Set::add}(null){(core::int*) →* core::bool*};
+              #t288.{core::Set::add}{Invariant}(42);
+          #t288.{core::Set::add}{Invariant}(null);
         } =>#t288;
         <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:224:70: Error: Unexpected type 'List<int>' of a map spread entry.  Expected 'dynamic' or a Map.
  - 'List' is from 'dart:core'.
@@ -2112,26 +2112,26 @@
                                                                      ^": null};
         block {
           final core::List<core::int*>* #t289 = core::_GrowableList::•<core::int*>(0);
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
             if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-              #t289.{core::List::add}(42){(core::int*) →* void};
+              #t289.{core::List::add}{Invariant}(42);
             else
-              #t289.{core::List::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:225:70: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+              #t289.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:225:70: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else ...map];
-                                                                     ^"){(core::int*) →* void};
+                                                                     ^");
         } =>#t289;
         block {
           final core::Set<core::int*>* #t290 = new col::_CompactLinkedHashSet::•<core::int*>();
-          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+          for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
             if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
-              #t290.{core::Set::add}(42){(core::int*) →* core::bool*};
+              #t290.{core::Set::add}{Invariant}(42);
             else
-              #t290.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:226:70: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
+              #t290.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:226:70: Error: Unexpected type 'Map<int, int>' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
   <int>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else ...map, null};
-                                                                     ^"){(core::int*) →* core::bool*};
-          #t290.{core::Set::add}(null){(core::int*) →* core::bool*};
+                                                                     ^");
+          #t290.{core::Set::add}{Invariant}(null);
         } =>#t290;
         <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:227:85: Error: Unexpected type 'List<int>' of a map spread entry.  Expected 'dynamic' or a Map.
  - 'List' is from 'dart:core'.
@@ -2151,7 +2151,7 @@
                 invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:230:14: Error: Can't assign to the final variable 'i'.
   <int>[for (i in <int>[1]) i];
              ^";
-                #t291.{core::List::add}(i){(core::int*) →* void};
+                #t291.{core::List::add}{Invariant}(i);
               }
             }
           }
@@ -2166,11 +2166,11 @@
                 invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:231:14: Error: Can't assign to the final variable 'i'.
   <int>{for (i in <int>[1]) i, null};
              ^";
-                #t293.{core::Set::add}(i){(core::int*) →* core::bool*};
+                #t293.{core::Set::add}{Invariant}(i);
               }
             }
           }
-          #t293.{core::Set::add}(null){(core::int*) →* core::bool*};
+          #t293.{core::Set::add}{Invariant}(null);
         } =>#t293;
         block {
           final core::Map<core::String*, core::int*>* #t295 = <core::String*, core::int*>{};
@@ -2182,11 +2182,11 @@
                 invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:232:21: Error: Can't assign to the final variable 'i'.
 \t<String, int>{for (i in <int>[1]) \"bar\": i, \"baz\": null};
 \t                   ^";
-                #t295.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
+                #t295.{core::Map::[]=}{Invariant}("bar", i);
               }
             }
           }
-          #t295.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+          #t295.{core::Map::[]=}{Invariant}("baz", null);
         } =>#t295;
         core::List<dynamic>* list10 = block {
           final core::List<dynamic>* #t297 = core::_GrowableList::•<dynamic>(0);
@@ -2197,7 +2197,7 @@
                               ^" in "not iterable" as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               dynamic i = :sync-for-iterator.{core::Iterator::current};
-              #t297.{core::List::add}(i){(dynamic) →* void};
+              #t297.{core::List::add}{Invariant}(i);
             }
           }
         } =>#t297;
@@ -2210,10 +2210,10 @@
                              ^" in "not iterable" as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               dynamic i = :sync-for-iterator.{core::Iterator::current};
-              #t299.{core::Set::add}(i){(dynamic) →* core::bool*};
+              #t299.{core::Set::add}{Invariant}(i);
             }
           }
-          #t299.{core::Set::add}(null){(dynamic) →* core::bool*};
+          #t299.{core::Set::add}{Invariant}(null);
         } =>#t299;
         core::Map<core::String*, dynamic>* map10 = block {
           final core::Map<core::String*, dynamic>* #t301 = <core::String*, dynamic>{};
@@ -2224,10 +2224,10 @@
                              ^" in "not iterable" as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               dynamic i = :sync-for-iterator.{core::Iterator::current};
-              #t301.{core::Map::[]=}("bar", i){(core::String*, dynamic) →* void};
+              #t301.{core::Map::[]=}{Invariant}("bar", i);
             }
           }
-          #t301.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+          #t301.{core::Map::[]=}{Invariant}("baz", null);
         } =>#t301;
         core::List<core::int*>* list20 = block {
           final core::List<core::int*>* #t303 = core::_GrowableList::•<core::int*>(0);
@@ -2239,7 +2239,7 @@
                                       ^" in "int" as{TypeError} core::int*).{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               core::int* i = :sync-for-iterator.{core::Iterator::current};
-              #t303.{core::List::add}(i){(core::int*) →* void};
+              #t303.{core::List::add}{Invariant}(i);
             }
           }
         } =>#t303;
@@ -2253,10 +2253,10 @@
                                      ^" in "int" as{TypeError} core::int*).{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               core::int* i = :sync-for-iterator.{core::Iterator::current};
-              #t306.{core::Set::add}(i){(core::int*) →* core::bool*};
+              #t306.{core::Set::add}{Invariant}(i);
             }
           }
-          #t306.{core::Set::add}(null){(core::int*) →* core::bool*};
+          #t306.{core::Set::add}{Invariant}(null);
         } =>#t306;
         core::Map<core::String*, core::int*>* map20 = block {
           final core::Map<core::String*, core::int*>* #t309 = <core::String*, core::int*>{};
@@ -2268,10 +2268,10 @@
                                      ^" in "int" as{TypeError} core::int*).{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               core::int* i = :sync-for-iterator.{core::Iterator::current};
-              #t309.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
+              #t309.{core::Map::[]=}{Invariant}("bar", i);
             }
           }
-          #t309.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+          #t309.{core::Map::[]=}{Invariant}("baz", null);
         } =>#t309;
         final core::List<dynamic>* #t312 = core::_GrowableList::•<dynamic>(0);
         {
@@ -2287,7 +2287,7 @@
               [yield] let dynamic #t315 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic i = :for-iterator.{asy::_StreamIterator::current};
-                #t312.{core::List::add}(i){(dynamic) →* void};
+                #t312.{core::List::add}{Invariant}(i);
               }
               else
                 break #L2;
@@ -2313,7 +2313,7 @@
               [yield] let dynamic #t320 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic i = :for-iterator.{asy::_StreamIterator::current};
-                #t317.{core::Set::add}(i){(dynamic) →* core::bool*};
+                #t317.{core::Set::add}{Invariant}(i);
               }
               else
                 break #L3;
@@ -2325,7 +2325,7 @@
             }
         }
         core::Set<dynamic>* set30 = block {
-          #t317.{core::Set::add}(null){(dynamic) →* core::bool*};
+          #t317.{core::Set::add}{Invariant}(null);
         } =>#t317;
         final core::Map<core::String*, dynamic>* #t322 = <core::String*, dynamic>{};
         {
@@ -2341,7 +2341,7 @@
               [yield] let dynamic #t325 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic i = :for-iterator.{asy::_StreamIterator::current};
-                #t322.{core::Map::[]=}("bar", i){(core::String*, dynamic) →* void};
+                #t322.{core::Map::[]=}{Invariant}("bar", i);
               }
               else
                 break #L4;
@@ -2353,7 +2353,7 @@
             }
         }
         core::Map<core::String*, dynamic>* map30 = block {
-          #t322.{core::Map::[]=}("baz", null){(core::String*, dynamic) →* void};
+          #t322.{core::Map::[]=}{Invariant}("baz", null);
         } =>#t322;
         final core::List<core::int*>* #t327 = core::_GrowableList::•<core::int*>(0);
         {
@@ -2370,7 +2370,7 @@
               [yield] let dynamic #t331 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* i = :for-iterator.{asy::_StreamIterator::current};
-                #t327.{core::List::add}(i){(core::int*) →* void};
+                #t327.{core::List::add}{Invariant}(i);
               }
               else
                 break #L5;
@@ -2397,7 +2397,7 @@
               [yield] let dynamic #t337 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* i = :for-iterator.{asy::_StreamIterator::current};
-                #t333.{core::Set::add}(i){(core::int*) →* core::bool*};
+                #t333.{core::Set::add}{Invariant}(i);
               }
               else
                 break #L6;
@@ -2409,7 +2409,7 @@
             }
         }
         core::Set<core::int*>* set40 = block {
-          #t333.{core::Set::add}(null){(core::int*) →* core::bool*};
+          #t333.{core::Set::add}{Invariant}(null);
         } =>#t333;
         final core::Map<core::String*, core::int*>* #t339 = <core::String*, core::int*>{};
         {
@@ -2426,7 +2426,7 @@
               [yield] let dynamic #t343 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* i = :for-iterator.{asy::_StreamIterator::current};
-                #t339.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
+                #t339.{core::Map::[]=}{Invariant}("bar", i);
               }
               else
                 break #L7;
@@ -2438,47 +2438,47 @@
             }
         }
         core::Map<core::String*, core::int*>* map40 = block {
-          #t339.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+          #t339.{core::Map::[]=}{Invariant}("baz", null);
         } =>#t339;
         core::List<core::int*>* list50 = block {
           final core::List<core::int*>* #t345 = core::_GrowableList::•<core::int*>(0);
           for (; ; )
-            #t345.{core::List::add}(42){(core::int*) →* void};
+            #t345.{core::List::add}{Invariant}(42);
         } =>#t345;
         core::Set<core::int*>* set50 = block {
           final core::Set<core::int*>* #t346 = new col::_CompactLinkedHashSet::•<core::int*>();
           for (; ; )
-            #t346.{core::Set::add}(42){(core::int*) →* core::bool*};
-          #t346.{core::Set::add}(null){(core::int*) →* core::bool*};
+            #t346.{core::Set::add}{Invariant}(42);
+          #t346.{core::Set::add}{Invariant}(null);
         } =>#t346;
         core::Map<core::String*, core::int*>* map50 = block {
           final core::Map<core::String*, core::int*>* #t347 = <core::String*, core::int*>{};
           for (; ; )
-            #t347.{core::Map::[]=}("bar", 42){(core::String*, core::int*) →* void};
-          #t347.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+            #t347.{core::Map::[]=}{Invariant}("bar", 42);
+          #t347.{core::Map::[]=}{Invariant}("baz", null);
         } =>#t347;
         core::List<core::int*>* list60 = block {
           final core::List<core::int*>* #t348 = core::_GrowableList::•<core::int*>(0);
           for (; let final Never* #t349 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:249:24: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
   var list60 = [for (; \"not bool\";) 42];
                        ^" in "not bool" as{TypeError} core::bool*; )
-            #t348.{core::List::add}(42){(core::int*) →* void};
+            #t348.{core::List::add}{Invariant}(42);
         } =>#t348;
         core::Set<core::int*>* set60 = block {
           final core::Set<core::int*>* #t350 = new col::_CompactLinkedHashSet::•<core::int*>();
           for (; let final Never* #t351 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:250:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
   var set60 = {for (; \"not bool\";) 42, null};
                       ^" in "not bool" as{TypeError} core::bool*; )
-            #t350.{core::Set::add}(42){(core::int*) →* core::bool*};
-          #t350.{core::Set::add}(null){(core::int*) →* core::bool*};
+            #t350.{core::Set::add}{Invariant}(42);
+          #t350.{core::Set::add}{Invariant}(null);
         } =>#t350;
         core::Map<core::String*, core::int*>* map60 = block {
           final core::Map<core::String*, core::int*>* #t352 = <core::String*, core::int*>{};
           for (; let final Never* #t353 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:251:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
   var map60 = {for (; \"not bool\";) \"bar\": 42, \"baz\": null};
                       ^" in "not bool" as{TypeError} core::bool*; )
-            #t352.{core::Map::[]=}("bar", 42){(core::String*, core::int*) →* void};
-          #t352.{core::Map::[]=}("baz", null){(core::String*, core::int*) →* void};
+            #t352.{core::Map::[]=}{Invariant}("bar", 42);
+          #t352.{core::Map::[]=}{Invariant}("baz", null);
         } =>#t352;
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
@@ -2497,34 +2497,34 @@
   block {
     final core::List<core::int*>* #t354 = core::_GrowableList::•<core::int*>(0);
     await for (core::int* i in stream)
-      #t354.{core::List::add}(i){(core::int*) →* void};
+      #t354.{core::List::add}{Invariant}(i);
   } =>#t354;
   block {
     final core::Set<core::int*>* #t355 = new col::_CompactLinkedHashSet::•<core::int*>();
     await for (core::int* i in stream)
-      #t355.{core::Set::add}(i){(core::int*) →* core::bool*};
+      #t355.{core::Set::add}{Invariant}(i);
   } =>#t355;
   block {
     final core::Map<core::String*, core::int*>* #t356 = <core::String*, core::int*>{};
     await for (core::int* i in stream)
-      #t356.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
+      #t356.{core::Map::[]=}{Invariant}("bar", i);
   } =>#t356;
 }
 static method testPromotion(self::A* a) → dynamic {
   core::List<core::int*>* list10 = block {
     final core::List<core::int*>* #t357 = core::_GrowableList::•<core::int*>(0);
     if(a is self::B*)
-      #t357.{core::List::add}(a{self::B*}.{self::B::foo}{core::int*}){(core::int*) →* void};
+      #t357.{core::List::add}{Invariant}(a{self::B*}.{self::B::foo});
   } =>#t357;
   core::Set<core::int*>* set10 = block {
     final core::Set<core::int*>* #t358 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(a is self::B*)
-      #t358.{core::Set::add}(a{self::B*}.{self::B::foo}{core::int*}){(core::int*) →* core::bool*};
+      #t358.{core::Set::add}{Invariant}(a{self::B*}.{self::B::foo});
   } =>#t358;
   core::Map<core::int*, core::int*>* map10 = block {
     final core::Map<core::int*, core::int*>* #t359 = <core::int*, core::int*>{};
     if(a is self::B*)
-      #t359.{core::Map::[]=}(a{self::B*}.{self::B::foo}{core::int*}, a{self::B*}.{self::B::foo}{core::int*}){(core::int*, core::int*) →* void};
+      #t359.{core::Map::[]=}{Invariant}(a{self::B*}.{self::B::foo}, a{self::B*}.{self::B::foo});
   } =>#t359;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/covariant_equals.dart.weak.expect b/pkg/front_end/testcases/general/covariant_equals.dart.weak.expect
index bded27c..cb1d7cd 100644
--- a/pkg/front_end/testcases/general/covariant_equals.dart.weak.expect
+++ b/pkg/front_end/testcases/general/covariant_equals.dart.weak.expect
@@ -168,117 +168,117 @@
 }
 static method main() → dynamic {}
 static method test(self::A* a, self::B* b, self::C<dynamic>* c_dynamic, self::C<core::int*>* c_int, self::C<core::String*>* c_string, self::D* d) → dynamic {
-  a =={self::A::==}{(self::A*) →* core::bool*} a;
-  a =={self::A::==}{(self::A*) →* core::bool*} b;
-  a =={self::A::==}{(self::A*) →* core::bool*} (let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:24:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A'.
+  a.{self::A::==}(a);
+  a.{self::A::==}(b);
+  a.{self::A::==}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:24:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   a == c_dynamic; // error
        ^" in c_dynamic as{TypeError} self::A*);
-  a =={self::A::==}{(self::A*) →* core::bool*} (let final Never* #t2 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:25:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A'.
+  a.{self::A::==}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:25:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   a == c_int; // error
        ^" in c_int as{TypeError} self::A*);
-  a =={self::A::==}{(self::A*) →* core::bool*} (let final Never* #t3 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:26:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A'.
+  a.{self::A::==}(let final Never* #t3 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:26:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   a == c_string; // error
        ^" in c_string as{TypeError} self::A*);
-  a =={self::A::==}{(self::A*) →* core::bool*} (let final Never* #t4 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:27:8: Error: The argument type 'D' can't be assigned to the parameter type 'A'.
+  a.{self::A::==}(let final Never* #t4 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:27:8: Error: The argument type 'D' can't be assigned to the parameter type 'A'.
  - 'D' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   a == d; // error
        ^" in d as{TypeError} self::A*);
-  b =={self::B::==}{(self::A*) →* core::bool*} a;
-  b =={self::B::==}{(self::A*) →* core::bool*} b;
-  b =={self::B::==}{(self::A*) →* core::bool*} (let final Never* #t5 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:31:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A'.
+  b.{self::B::==}(a);
+  b.{self::B::==}(b);
+  b.{self::B::==}(let final Never* #t5 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:31:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   b == c_dynamic; // error
        ^" in c_dynamic as{TypeError} self::A*);
-  b =={self::B::==}{(self::A*) →* core::bool*} (let final Never* #t6 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:32:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A'.
+  b.{self::B::==}(let final Never* #t6 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:32:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   b == c_int; // error
        ^" in c_int as{TypeError} self::A*);
-  b =={self::B::==}{(self::A*) →* core::bool*} (let final Never* #t7 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:33:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A'.
+  b.{self::B::==}(let final Never* #t7 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:33:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   b == c_string; // error
        ^" in c_string as{TypeError} self::A*);
-  b =={self::B::==}{(self::A*) →* core::bool*} (let final Never* #t8 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:34:8: Error: The argument type 'D' can't be assigned to the parameter type 'A'.
+  b.{self::B::==}(let final Never* #t8 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:34:8: Error: The argument type 'D' can't be assigned to the parameter type 'A'.
  - 'D' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   b == d; // error
        ^" in d as{TypeError} self::A*);
-  c_dynamic =={self::C::==}{(self::C<dynamic>*) →* core::bool*} (let final Never* #t9 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:36:16: Error: The argument type 'A' can't be assigned to the parameter type 'C<dynamic>'.
+  c_dynamic.{self::C::==}(let final Never* #t9 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:36:16: Error: The argument type 'A' can't be assigned to the parameter type 'C<dynamic>'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_dynamic == a; // error
                ^" in a as{TypeError} self::C<dynamic>*);
-  c_dynamic =={self::C::==}{(self::C<dynamic>*) →* core::bool*} (let final Never* #t10 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:37:16: Error: The argument type 'B' can't be assigned to the parameter type 'C<dynamic>'.
+  c_dynamic.{self::C::==}(let final Never* #t10 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:37:16: Error: The argument type 'B' can't be assigned to the parameter type 'C<dynamic>'.
  - 'B' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_dynamic == b; // error
                ^" in b as{TypeError} self::C<dynamic>*);
-  c_dynamic =={self::C::==}{(self::C<dynamic>*) →* core::bool*} c_dynamic;
-  c_dynamic =={self::C::==}{(self::C<dynamic>*) →* core::bool*} c_int;
-  c_dynamic =={self::C::==}{(self::C<dynamic>*) →* core::bool*} c_string;
-  c_dynamic =={self::C::==}{(self::C<dynamic>*) →* core::bool*} d;
-  c_int =={self::C::==}{(self::C<core::int*>*) →* core::bool*} (let final Never* #t11 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:43:12: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>'.
+  c_dynamic.{self::C::==}(c_dynamic);
+  c_dynamic.{self::C::==}(c_int);
+  c_dynamic.{self::C::==}(c_string);
+  c_dynamic.{self::C::==}(d);
+  c_int.{self::C::==}(let final Never* #t11 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:43:12: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_int == a; // error
            ^" in a as{TypeError} self::C<core::int*>*);
-  c_int =={self::C::==}{(self::C<core::int*>*) →* core::bool*} (let final Never* #t12 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:44:12: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>'.
+  c_int.{self::C::==}(let final Never* #t12 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:44:12: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>'.
  - 'B' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_int == b; // error
            ^" in b as{TypeError} self::C<core::int*>*);
-  c_int =={self::C::==}{(self::C<core::int*>*) →* core::bool*} c_dynamic as{TypeError} self::C<core::int*>*;
-  c_int =={self::C::==}{(self::C<core::int*>*) →* core::bool*} c_int;
-  c_int =={self::C::==}{(self::C<core::int*>*) →* core::bool*} (let final Never* #t13 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:47:12: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>'.
+  c_int.{self::C::==}(c_dynamic as{TypeError} self::C<core::int*>*);
+  c_int.{self::C::==}(c_int);
+  c_int.{self::C::==}(let final Never* #t13 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:47:12: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_int == c_string; // error
            ^" in c_string as{TypeError} self::C<core::int*>*);
-  c_int =={self::C::==}{(self::C<core::int*>*) →* core::bool*} d;
-  c_string =={self::C::==}{(self::C<core::String*>*) →* core::bool*} (let final Never* #t14 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:50:15: Error: The argument type 'A' can't be assigned to the parameter type 'C<String>'.
+  c_int.{self::C::==}(d);
+  c_string.{self::C::==}(let final Never* #t14 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:50:15: Error: The argument type 'A' can't be assigned to the parameter type 'C<String>'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_string == a; // error
               ^" in a as{TypeError} self::C<core::String*>*);
-  c_string =={self::C::==}{(self::C<core::String*>*) →* core::bool*} (let final Never* #t15 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:51:15: Error: The argument type 'B' can't be assigned to the parameter type 'C<String>'.
+  c_string.{self::C::==}(let final Never* #t15 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:51:15: Error: The argument type 'B' can't be assigned to the parameter type 'C<String>'.
  - 'B' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_string == b; // error
               ^" in b as{TypeError} self::C<core::String*>*);
-  c_string =={self::C::==}{(self::C<core::String*>*) →* core::bool*} c_dynamic as{TypeError} self::C<core::String*>*;
-  c_string =={self::C::==}{(self::C<core::String*>*) →* core::bool*} (let final Never* #t16 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:53:15: Error: The argument type 'C<int>' can't be assigned to the parameter type 'C<String>'.
+  c_string.{self::C::==}(c_dynamic as{TypeError} self::C<core::String*>*);
+  c_string.{self::C::==}(let final Never* #t16 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:53:15: Error: The argument type 'C<int>' can't be assigned to the parameter type 'C<String>'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_string == c_int; // error
               ^" in c_int as{TypeError} self::C<core::String*>*);
-  c_string =={self::C::==}{(self::C<core::String*>*) →* core::bool*} c_string;
-  c_string =={self::C::==}{(self::C<core::String*>*) →* core::bool*} (let final Never* #t17 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:55:15: Error: The argument type 'D' can't be assigned to the parameter type 'C<String>'.
+  c_string.{self::C::==}(c_string);
+  c_string.{self::C::==}(let final Never* #t17 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:55:15: Error: The argument type 'D' can't be assigned to the parameter type 'C<String>'.
  - 'D' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_string == d; // error
               ^" in d as{TypeError} self::C<core::String*>*);
-  d =={self::C::==}{(self::C<core::int*>*) →* core::bool*} (let final Never* #t18 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:57:8: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>'.
+  d.{self::C::==}(let final Never* #t18 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:57:8: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   d == a; // error
        ^" in a as{TypeError} self::C<core::int*>*);
-  d =={self::C::==}{(self::C<core::int*>*) →* core::bool*} (let final Never* #t19 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:58:8: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>'.
+  d.{self::C::==}(let final Never* #t19 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:58:8: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>'.
  - 'B' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   d == b; // error
        ^" in b as{TypeError} self::C<core::int*>*);
-  d =={self::C::==}{(self::C<core::int*>*) →* core::bool*} c_dynamic as{TypeError} self::C<core::int*>*;
-  d =={self::C::==}{(self::C<core::int*>*) →* core::bool*} c_int;
-  d =={self::C::==}{(self::C<core::int*>*) →* core::bool*} (let final Never* #t20 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:61:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>'.
+  d.{self::C::==}(c_dynamic as{TypeError} self::C<core::int*>*);
+  d.{self::C::==}(c_int);
+  d.{self::C::==}(let final Never* #t20 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:61:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   d == c_string; // error
        ^" in c_string as{TypeError} self::C<core::int*>*);
-  d =={self::C::==}{(self::C<core::int*>*) →* core::bool*} d;
+  d.{self::C::==}(d);
 }
diff --git a/pkg/front_end/testcases/general/covariant_equals.dart.weak.transformed.expect b/pkg/front_end/testcases/general/covariant_equals.dart.weak.transformed.expect
index bded27c..cb1d7cd 100644
--- a/pkg/front_end/testcases/general/covariant_equals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/covariant_equals.dart.weak.transformed.expect
@@ -168,117 +168,117 @@
 }
 static method main() → dynamic {}
 static method test(self::A* a, self::B* b, self::C<dynamic>* c_dynamic, self::C<core::int*>* c_int, self::C<core::String*>* c_string, self::D* d) → dynamic {
-  a =={self::A::==}{(self::A*) →* core::bool*} a;
-  a =={self::A::==}{(self::A*) →* core::bool*} b;
-  a =={self::A::==}{(self::A*) →* core::bool*} (let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:24:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A'.
+  a.{self::A::==}(a);
+  a.{self::A::==}(b);
+  a.{self::A::==}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:24:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   a == c_dynamic; // error
        ^" in c_dynamic as{TypeError} self::A*);
-  a =={self::A::==}{(self::A*) →* core::bool*} (let final Never* #t2 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:25:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A'.
+  a.{self::A::==}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:25:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   a == c_int; // error
        ^" in c_int as{TypeError} self::A*);
-  a =={self::A::==}{(self::A*) →* core::bool*} (let final Never* #t3 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:26:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A'.
+  a.{self::A::==}(let final Never* #t3 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:26:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   a == c_string; // error
        ^" in c_string as{TypeError} self::A*);
-  a =={self::A::==}{(self::A*) →* core::bool*} (let final Never* #t4 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:27:8: Error: The argument type 'D' can't be assigned to the parameter type 'A'.
+  a.{self::A::==}(let final Never* #t4 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:27:8: Error: The argument type 'D' can't be assigned to the parameter type 'A'.
  - 'D' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   a == d; // error
        ^" in d as{TypeError} self::A*);
-  b =={self::B::==}{(self::A*) →* core::bool*} a;
-  b =={self::B::==}{(self::A*) →* core::bool*} b;
-  b =={self::B::==}{(self::A*) →* core::bool*} (let final Never* #t5 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:31:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A'.
+  b.{self::B::==}(a);
+  b.{self::B::==}(b);
+  b.{self::B::==}(let final Never* #t5 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:31:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   b == c_dynamic; // error
        ^" in c_dynamic as{TypeError} self::A*);
-  b =={self::B::==}{(self::A*) →* core::bool*} (let final Never* #t6 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:32:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A'.
+  b.{self::B::==}(let final Never* #t6 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:32:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   b == c_int; // error
        ^" in c_int as{TypeError} self::A*);
-  b =={self::B::==}{(self::A*) →* core::bool*} (let final Never* #t7 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:33:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A'.
+  b.{self::B::==}(let final Never* #t7 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:33:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   b == c_string; // error
        ^" in c_string as{TypeError} self::A*);
-  b =={self::B::==}{(self::A*) →* core::bool*} (let final Never* #t8 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:34:8: Error: The argument type 'D' can't be assigned to the parameter type 'A'.
+  b.{self::B::==}(let final Never* #t8 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:34:8: Error: The argument type 'D' can't be assigned to the parameter type 'A'.
  - 'D' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   b == d; // error
        ^" in d as{TypeError} self::A*);
-  c_dynamic =={self::C::==}{(self::C<dynamic>*) →* core::bool*} (let final Never* #t9 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:36:16: Error: The argument type 'A' can't be assigned to the parameter type 'C<dynamic>'.
+  c_dynamic.{self::C::==}(let final Never* #t9 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:36:16: Error: The argument type 'A' can't be assigned to the parameter type 'C<dynamic>'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_dynamic == a; // error
                ^" in a as{TypeError} self::C<dynamic>*);
-  c_dynamic =={self::C::==}{(self::C<dynamic>*) →* core::bool*} (let final Never* #t10 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:37:16: Error: The argument type 'B' can't be assigned to the parameter type 'C<dynamic>'.
+  c_dynamic.{self::C::==}(let final Never* #t10 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:37:16: Error: The argument type 'B' can't be assigned to the parameter type 'C<dynamic>'.
  - 'B' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_dynamic == b; // error
                ^" in b as{TypeError} self::C<dynamic>*);
-  c_dynamic =={self::C::==}{(self::C<dynamic>*) →* core::bool*} c_dynamic;
-  c_dynamic =={self::C::==}{(self::C<dynamic>*) →* core::bool*} c_int;
-  c_dynamic =={self::C::==}{(self::C<dynamic>*) →* core::bool*} c_string;
-  c_dynamic =={self::C::==}{(self::C<dynamic>*) →* core::bool*} d;
-  c_int =={self::C::==}{(self::C<core::int*>*) →* core::bool*} (let final Never* #t11 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:43:12: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>'.
+  c_dynamic.{self::C::==}(c_dynamic);
+  c_dynamic.{self::C::==}(c_int);
+  c_dynamic.{self::C::==}(c_string);
+  c_dynamic.{self::C::==}(d);
+  c_int.{self::C::==}(let final Never* #t11 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:43:12: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_int == a; // error
            ^" in a as{TypeError} self::C<core::int*>*);
-  c_int =={self::C::==}{(self::C<core::int*>*) →* core::bool*} (let final Never* #t12 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:44:12: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>'.
+  c_int.{self::C::==}(let final Never* #t12 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:44:12: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>'.
  - 'B' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_int == b; // error
            ^" in b as{TypeError} self::C<core::int*>*);
-  c_int =={self::C::==}{(self::C<core::int*>*) →* core::bool*} c_dynamic as{TypeError} self::C<core::int*>*;
-  c_int =={self::C::==}{(self::C<core::int*>*) →* core::bool*} c_int;
-  c_int =={self::C::==}{(self::C<core::int*>*) →* core::bool*} (let final Never* #t13 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:47:12: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>'.
+  c_int.{self::C::==}(c_dynamic as{TypeError} self::C<core::int*>*);
+  c_int.{self::C::==}(c_int);
+  c_int.{self::C::==}(let final Never* #t13 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:47:12: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_int == c_string; // error
            ^" in c_string as{TypeError} self::C<core::int*>*);
-  c_int =={self::C::==}{(self::C<core::int*>*) →* core::bool*} d;
-  c_string =={self::C::==}{(self::C<core::String*>*) →* core::bool*} (let final Never* #t14 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:50:15: Error: The argument type 'A' can't be assigned to the parameter type 'C<String>'.
+  c_int.{self::C::==}(d);
+  c_string.{self::C::==}(let final Never* #t14 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:50:15: Error: The argument type 'A' can't be assigned to the parameter type 'C<String>'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_string == a; // error
               ^" in a as{TypeError} self::C<core::String*>*);
-  c_string =={self::C::==}{(self::C<core::String*>*) →* core::bool*} (let final Never* #t15 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:51:15: Error: The argument type 'B' can't be assigned to the parameter type 'C<String>'.
+  c_string.{self::C::==}(let final Never* #t15 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:51:15: Error: The argument type 'B' can't be assigned to the parameter type 'C<String>'.
  - 'B' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_string == b; // error
               ^" in b as{TypeError} self::C<core::String*>*);
-  c_string =={self::C::==}{(self::C<core::String*>*) →* core::bool*} c_dynamic as{TypeError} self::C<core::String*>*;
-  c_string =={self::C::==}{(self::C<core::String*>*) →* core::bool*} (let final Never* #t16 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:53:15: Error: The argument type 'C<int>' can't be assigned to the parameter type 'C<String>'.
+  c_string.{self::C::==}(c_dynamic as{TypeError} self::C<core::String*>*);
+  c_string.{self::C::==}(let final Never* #t16 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:53:15: Error: The argument type 'C<int>' can't be assigned to the parameter type 'C<String>'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_string == c_int; // error
               ^" in c_int as{TypeError} self::C<core::String*>*);
-  c_string =={self::C::==}{(self::C<core::String*>*) →* core::bool*} c_string;
-  c_string =={self::C::==}{(self::C<core::String*>*) →* core::bool*} (let final Never* #t17 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:55:15: Error: The argument type 'D' can't be assigned to the parameter type 'C<String>'.
+  c_string.{self::C::==}(c_string);
+  c_string.{self::C::==}(let final Never* #t17 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:55:15: Error: The argument type 'D' can't be assigned to the parameter type 'C<String>'.
  - 'D' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   c_string == d; // error
               ^" in d as{TypeError} self::C<core::String*>*);
-  d =={self::C::==}{(self::C<core::int*>*) →* core::bool*} (let final Never* #t18 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:57:8: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>'.
+  d.{self::C::==}(let final Never* #t18 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:57:8: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>'.
  - 'A' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   d == a; // error
        ^" in a as{TypeError} self::C<core::int*>*);
-  d =={self::C::==}{(self::C<core::int*>*) →* core::bool*} (let final Never* #t19 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:58:8: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>'.
+  d.{self::C::==}(let final Never* #t19 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:58:8: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>'.
  - 'B' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   d == b; // error
        ^" in b as{TypeError} self::C<core::int*>*);
-  d =={self::C::==}{(self::C<core::int*>*) →* core::bool*} c_dynamic as{TypeError} self::C<core::int*>*;
-  d =={self::C::==}{(self::C<core::int*>*) →* core::bool*} c_int;
-  d =={self::C::==}{(self::C<core::int*>*) →* core::bool*} (let final Never* #t20 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:61:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>'.
+  d.{self::C::==}(c_dynamic as{TypeError} self::C<core::int*>*);
+  d.{self::C::==}(c_int);
+  d.{self::C::==}(let final Never* #t20 = invalid-expression "pkg/front_end/testcases/general/covariant_equals.dart:61:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>'.
  - 'C' is from 'pkg/front_end/testcases/general/covariant_equals.dart'.
   d == c_string; // error
        ^" in c_string as{TypeError} self::C<core::int*>*);
-  d =={self::C::==}{(self::C<core::int*>*) →* core::bool*} d;
+  d.{self::C::==}(d);
 }
diff --git a/pkg/front_end/testcases/general/covariant_generic.dart.weak.expect b/pkg/front_end/testcases/general/covariant_generic.dart.weak.expect
index a195318..48b1bf5 100644
--- a/pkg/front_end/testcases/general/covariant_generic.dart.weak.expect
+++ b/pkg/front_end/testcases/general/covariant_generic.dart.weak.expect
@@ -14,7 +14,7 @@
   method method(generic-covariant-impl self::Foo::T* x) → void {}
   set setter(generic-covariant-impl self::Foo::T* x) → void {}
   method withCallback((self::Foo::T*) →* void callback) → void {
-    callback(this.{self::Foo::finalField}{self::Foo::T*}){(self::Foo::T*) →* void};
+    callback.call(this.{self::Foo::finalField});
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -29,21 +29,21 @@
 }
 static method main() → dynamic {
   self::Foo<core::int*>* fooInt = new self::Foo::•<core::int*>(1, (core::int* x) → Null {});
-  fooInt.{self::Foo::method}(3){(core::int*) →* void};
+  fooInt.{self::Foo::method}(3);
   fooInt.{self::Foo::setter} = 3;
-  fooInt.{self::Foo::withCallback}((core::int* x) → Null {}){((core::int*) →* void) →* void};
-  fooInt.{self::Foo::withCallback}((core::num* x) → Null {}){((core::int*) →* void) →* void};
+  fooInt.{self::Foo::withCallback}((core::int* x) → Null {});
+  fooInt.{self::Foo::withCallback}((core::num* x) → Null {});
   fooInt.{self::Foo::mutableField} = 3;
   fooInt.{self::Foo::mutableCallbackField} = (core::int* x) → Null {};
   self::Foo<core::num*>* fooNum = fooInt;
-  fooNum.{self::Foo::method}(3){(core::num*) →* void};
-  fooNum.{self::Foo::method}(2.5){(core::num*) →* void};
+  fooNum.{self::Foo::method}(3);
+  fooNum.{self::Foo::method}(2.5);
   fooNum.{self::Foo::setter} = 3;
   fooNum.{self::Foo::setter} = 2.5;
-  fooNum.{self::Foo::withCallback}((core::num* x) → Null {}){((core::num*) →* void) →* void};
+  fooNum.{self::Foo::withCallback}((core::num* x) → Null {});
   fooNum.{self::Foo::mutableField} = 3;
   fooNum.{self::Foo::mutableField} = 2.5;
-  let final self::Foo<core::num*>* #t1 = fooNum in let final core::int* #t2 = 3 in (#t1.{self::Foo::mutableCallbackField}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void)(#t2){(core::num*) →* void};
-  let final self::Foo<core::num*>* #t3 = fooNum in let final core::double* #t4 = 2.5 in (#t3.{self::Foo::mutableCallbackField}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void)(#t4){(core::num*) →* void};
+  let final self::Foo<core::num*>* #t1 = fooNum in let final core::int* #t2 = 3 in (#t1.{self::Foo::mutableCallbackField} as{TypeError,CovarianceCheck} (core::num*) →* void).call(#t2);
+  let final self::Foo<core::num*>* #t3 = fooNum in let final core::double* #t4 = 2.5 in (#t3.{self::Foo::mutableCallbackField} as{TypeError,CovarianceCheck} (core::num*) →* void).call(#t4);
   fooNum.{self::Foo::mutableCallbackField} = (core::num* x) → Null {};
 }
diff --git a/pkg/front_end/testcases/general/covariant_generic.dart.weak.transformed.expect b/pkg/front_end/testcases/general/covariant_generic.dart.weak.transformed.expect
index a65e4e7..bcccf29 100644
--- a/pkg/front_end/testcases/general/covariant_generic.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/covariant_generic.dart.weak.transformed.expect
@@ -14,7 +14,7 @@
   method method(generic-covariant-impl self::Foo::T* x) → void {}
   set setter(generic-covariant-impl self::Foo::T* x) → void {}
   method withCallback((self::Foo::T*) →* void callback) → void {
-    callback(this.{self::Foo::finalField}{self::Foo::T*}){(self::Foo::T*) →* void};
+    callback.call(this.{self::Foo::finalField});
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -29,22 +29,22 @@
 }
 static method main() → dynamic {
   self::Foo<core::int*>* fooInt = new self::Foo::•<core::int*>(1, (core::int* x) → Null {});
-  fooInt.{self::Foo::method}(3){(core::int*) →* void};
+  fooInt.{self::Foo::method}(3);
   fooInt.{self::Foo::setter} = 3;
-  fooInt.{self::Foo::withCallback}((core::int* x) → Null {}){((core::int*) →* void) →* void};
-  fooInt.{self::Foo::withCallback}((core::num* x) → Null {}){((core::int*) →* void) →* void};
+  fooInt.{self::Foo::withCallback}((core::int* x) → Null {});
+  fooInt.{self::Foo::withCallback}((core::num* x) → Null {});
   fooInt.{self::Foo::mutableField} = 3;
   fooInt.{self::Foo::mutableCallbackField} = (core::int* x) → Null {};
   self::Foo<core::num*>* fooNum = fooInt;
-  fooNum.{self::Foo::method}(3){(core::num*) →* void};
-  fooNum.{self::Foo::method}(2.5){(core::num*) →* void};
+  fooNum.{self::Foo::method}(3);
+  fooNum.{self::Foo::method}(2.5);
   fooNum.{self::Foo::setter} = 3;
   fooNum.{self::Foo::setter} = 2.5;
-  fooNum.{self::Foo::withCallback}((core::num* x) → Null {}){((core::num*) →* void) →* void};
+  fooNum.{self::Foo::withCallback}((core::num* x) → Null {});
   fooNum.{self::Foo::mutableField} = 3;
   fooNum.{self::Foo::mutableField} = 2.5;
-  let final self::Foo<core::num*>* #t1 = fooNum in let final core::int* #t2 = 3 in (#t1.{self::Foo::mutableCallbackField}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void)(#t2){(core::num*) →* void};
-  let final self::Foo<core::num*>* #t3 = fooNum in let final core::double* #t4 = 2.5 in (#t3.{self::Foo::mutableCallbackField}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void)(#t4){(core::num*) →* void};
+  let final self::Foo<core::num*>* #t1 = fooNum in let final core::int* #t2 = 3 in (#t1.{self::Foo::mutableCallbackField} as{TypeError,CovarianceCheck} (core::num*) →* void).call(#t2);
+  let final self::Foo<core::num*>* #t3 = fooNum in let final core::double* #t4 = 2.5 in (#t3.{self::Foo::mutableCallbackField} as{TypeError,CovarianceCheck} (core::num*) →* void).call(#t4);
   fooNum.{self::Foo::mutableCallbackField} = (core::num* x) → Null {};
 }
 
diff --git a/pkg/front_end/testcases/general/crashes/crash_03/main.dart.weak.expect b/pkg/front_end/testcases/general/crashes/crash_03/main.dart.weak.expect
index 3789d00..02e0ecc 100644
--- a/pkg/front_end/testcases/general/crashes/crash_03/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/crashes/crash_03/main.dart.weak.expect
@@ -43,15 +43,15 @@
 }
 abstract class _PlatformViewGestureMixin extends mai::RenderBox /*isMixinDeclaration*/  {
   method hitTestSelf(self::Offset position) → core::bool
-    return !(invalid-expression "pkg/front_end/testcases/general/crashes/crash_03/main.dart:9:7: Error: The getter '_hitTestBehavior' isn't defined for the class '_PlatformViewGestureMixin'.
+    return !invalid-expression "pkg/front_end/testcases/general/crashes/crash_03/main.dart:9:7: Error: The getter '_hitTestBehavior' isn't defined for the class '_PlatformViewGestureMixin'.
  - '_PlatformViewGestureMixin' is from 'pkg/front_end/testcases/general/crashes/crash_03/main.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named '_hitTestBehavior'.
       _hitTestBehavior != PlatformViewHitTestBehavior.transparent;
-      ^^^^^^^^^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} invalid-expression "pkg/front_end/testcases/general/crashes/crash_03/main.dart:9:27: Error: The getter 'PlatformViewHitTestBehavior' isn't defined for the class '_PlatformViewGestureMixin'.
+      ^^^^^^^^^^^^^^^^".{core::Object::==}(invalid-expression "pkg/front_end/testcases/general/crashes/crash_03/main.dart:9:27: Error: The getter 'PlatformViewHitTestBehavior' isn't defined for the class '_PlatformViewGestureMixin'.
  - '_PlatformViewGestureMixin' is from 'pkg/front_end/testcases/general/crashes/crash_03/main.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'PlatformViewHitTestBehavior'.
       _hitTestBehavior != PlatformViewHitTestBehavior.transparent;
-                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^"{dynamic}.transparent);
+                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^".transparent);
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/crashes/crash_03/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/crashes/crash_03/main.dart.weak.transformed.expect
index f8c5132..e933f73 100644
--- a/pkg/front_end/testcases/general/crashes/crash_03/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/crashes/crash_03/main.dart.weak.transformed.expect
@@ -34,15 +34,15 @@
     : super mai::RenderBox::•()
     ;
   method hitTestSelf(self::Offset position) → core::bool
-    return !(invalid-expression "pkg/front_end/testcases/general/crashes/crash_03/main.dart:9:7: Error: The getter '_hitTestBehavior' isn't defined for the class '_PlatformViewGestureMixin'.
+    return !invalid-expression "pkg/front_end/testcases/general/crashes/crash_03/main.dart:9:7: Error: The getter '_hitTestBehavior' isn't defined for the class '_PlatformViewGestureMixin'.
  - '_PlatformViewGestureMixin' is from 'pkg/front_end/testcases/general/crashes/crash_03/main.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named '_hitTestBehavior'.
       _hitTestBehavior != PlatformViewHitTestBehavior.transparent;
-      ^^^^^^^^^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} invalid-expression "pkg/front_end/testcases/general/crashes/crash_03/main.dart:9:27: Error: The getter 'PlatformViewHitTestBehavior' isn't defined for the class '_PlatformViewGestureMixin'.
+      ^^^^^^^^^^^^^^^^".{core::Object::==}(invalid-expression "pkg/front_end/testcases/general/crashes/crash_03/main.dart:9:27: Error: The getter 'PlatformViewHitTestBehavior' isn't defined for the class '_PlatformViewGestureMixin'.
  - '_PlatformViewGestureMixin' is from 'pkg/front_end/testcases/general/crashes/crash_03/main.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'PlatformViewHitTestBehavior'.
       _hitTestBehavior != PlatformViewHitTestBehavior.transparent;
-                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^"{dynamic}.transparent);
+                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^".transparent);
 }
 class PlatformViewRenderBox extends self::_PlatformViewRenderBox&RenderBox&_PlatformViewGestureMixin {
   synthetic constructor •() → self::PlatformViewRenderBox
@@ -51,15 +51,15 @@
 }
 abstract class _PlatformViewGestureMixin extends mai::RenderBox /*isMixinDeclaration*/  {
   method hitTestSelf(self::Offset position) → core::bool
-    return !(invalid-expression "pkg/front_end/testcases/general/crashes/crash_03/main.dart:9:7: Error: The getter '_hitTestBehavior' isn't defined for the class '_PlatformViewGestureMixin'.
+    return !invalid-expression "pkg/front_end/testcases/general/crashes/crash_03/main.dart:9:7: Error: The getter '_hitTestBehavior' isn't defined for the class '_PlatformViewGestureMixin'.
  - '_PlatformViewGestureMixin' is from 'pkg/front_end/testcases/general/crashes/crash_03/main.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named '_hitTestBehavior'.
       _hitTestBehavior != PlatformViewHitTestBehavior.transparent;
-      ^^^^^^^^^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} invalid-expression "pkg/front_end/testcases/general/crashes/crash_03/main.dart:9:27: Error: The getter 'PlatformViewHitTestBehavior' isn't defined for the class '_PlatformViewGestureMixin'.
+      ^^^^^^^^^^^^^^^^".{core::Object::==}(invalid-expression "pkg/front_end/testcases/general/crashes/crash_03/main.dart:9:27: Error: The getter 'PlatformViewHitTestBehavior' isn't defined for the class '_PlatformViewGestureMixin'.
  - '_PlatformViewGestureMixin' is from 'pkg/front_end/testcases/general/crashes/crash_03/main.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'PlatformViewHitTestBehavior'.
       _hitTestBehavior != PlatformViewHitTestBehavior.transparent;
-                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^"{dynamic}.transparent);
+                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^".transparent);
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/demote_closure_types.dart.weak.expect b/pkg/front_end/testcases/general/demote_closure_types.dart.weak.expect
index 6128ffd0..8f683ca 100644
--- a/pkg/front_end/testcases/general/demote_closure_types.dart.weak.expect
+++ b/pkg/front_end/testcases/general/demote_closure_types.dart.weak.expect
@@ -14,7 +14,7 @@
     () →* self::method::T* f = () → self::method::T* => a{self::method::T* & core::String* /* '*' & '*' = '*' */};
     core::String* s = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/demote_closure_types.dart:8:17: Error: A value of type 'T' can't be assigned to a variable of type 'String'.
     String s = f();
-                ^" in f(){() →* self::method::T*} as{TypeError} core::String*;
+                ^" in f.call() as{TypeError} core::String*;
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/demote_closure_types.dart.weak.transformed.expect b/pkg/front_end/testcases/general/demote_closure_types.dart.weak.transformed.expect
index 6128ffd0..8f683ca 100644
--- a/pkg/front_end/testcases/general/demote_closure_types.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/demote_closure_types.dart.weak.transformed.expect
@@ -14,7 +14,7 @@
     () →* self::method::T* f = () → self::method::T* => a{self::method::T* & core::String* /* '*' & '*' = '*' */};
     core::String* s = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/demote_closure_types.dart:8:17: Error: A value of type 'T' can't be assigned to a variable of type 'String'.
     String s = f();
-                ^" in f(){() →* self::method::T*} as{TypeError} core::String*;
+                ^" in f.call() as{TypeError} core::String*;
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.expect b/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.expect
index dd633f4..2e4c25a 100644
--- a/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.expect
+++ b/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.expect
@@ -618,13 +618,13 @@
 static method foo() → dynamic {
   invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:34:3: Error: Can't use 'main' because it is declared more than once.
   main();
-  ^"{dynamic}.call();
+  ^".call();
   core::print(invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:35:9: Error: Can't use 'field' because it is declared more than once.
   print(field);
         ^");
   invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:36:3: Error: Can't use 'C' because it is declared more than once.
   C.s();
-  ^"{dynamic}.s();
+  ^".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/general/duplicated_declarations.dart:102:38: Error: Can't use '_name' because it is declared more than once.
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_01.dart.weak.expect b/pkg/front_end/testcases/general/error_locations/error_location_01.dart.weak.expect
index a1e0f80..7187612 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_01.dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_01.dart.weak.expect
@@ -17,7 +17,7 @@
 
 class Foo extends core::Object /*hasConstConstructor*/  {
   const constructor •(core::int* i) → err::Foo*
-    : assert(i.{core::num::>}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_01.dart.weak.outline.expect b/pkg/front_end/testcases/general/error_locations/error_location_01.dart.weak.outline.expect
index 77b03f4..cc57c39 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_01.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_01.dart.weak.outline.expect
@@ -13,7 +13,7 @@
 
 class Foo extends core::Object /*hasConstConstructor*/  {
   const constructor •(core::int* i) → self2::Foo*
-    : assert(i.{core::num::>}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_01.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_locations/error_location_01.dart.weak.transformed.expect
index a1e0f80..7187612 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_01.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_01.dart.weak.transformed.expect
@@ -17,7 +17,7 @@
 
 class Foo extends core::Object /*hasConstConstructor*/  {
   const constructor •(core::int* i) → err::Foo*
-    : assert(i.{core::num::>}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_02.dart.weak.expect b/pkg/front_end/testcases/general/error_locations/error_location_02.dart.weak.expect
index 4b68f2c..616bd79 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_02.dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_02.dart.weak.expect
@@ -18,7 +18,7 @@
 
 class Foo extends core::Object /*hasConstConstructor*/  {
   const constructor •(core::int* i) → err::Foo*
-    : assert(i.{core::num::>}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_02.dart.weak.outline.expect b/pkg/front_end/testcases/general/error_locations/error_location_02.dart.weak.outline.expect
index b534db4..23cb135 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_02.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_02.dart.weak.outline.expect
@@ -14,7 +14,7 @@
 
 class Foo extends core::Object /*hasConstConstructor*/  {
   const constructor •(core::int* i) → self2::Foo*
-    : assert(i.{core::num::>}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_02.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_locations/error_location_02.dart.weak.transformed.expect
index 4b68f2c..616bd79 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_02.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_02.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
 
 class Foo extends core::Object /*hasConstConstructor*/  {
   const constructor •(core::int* i) → err::Foo*
-    : assert(i.{core::num::>}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_03.dart.weak.expect b/pkg/front_end/testcases/general/error_locations/error_location_03.dart.weak.expect
index a11cbcd..8a85eea 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_03.dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_03.dart.weak.expect
@@ -19,7 +19,7 @@
 
 class Foo extends core::Object /*hasConstConstructor*/  {
   const constructor •(core::int* i) → err::Foo*
-    : assert(i.{core::num::>}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_03.dart.weak.outline.expect b/pkg/front_end/testcases/general/error_locations/error_location_03.dart.weak.outline.expect
index 86c9613..93c5c0c 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_03.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_03.dart.weak.outline.expect
@@ -14,7 +14,7 @@
 
 class Foo extends core::Object /*hasConstConstructor*/  {
   const constructor •(core::int* i) → self2::Foo*
-    : assert(i.{core::num::>}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_03.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_locations/error_location_03.dart.weak.transformed.expect
index a11cbcd..8a85eea 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_03.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_03.dart.weak.transformed.expect
@@ -19,7 +19,7 @@
 
 class Foo extends core::Object /*hasConstConstructor*/  {
   const constructor •(core::int* i) → err::Foo*
-    : assert(i.{core::num::>}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_04.dart.weak.expect b/pkg/front_end/testcases/general/error_locations/error_location_04.dart.weak.expect
index 32f4daa..43d683c 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_04.dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_04.dart.weak.expect
@@ -17,7 +17,7 @@
 
 class Foo extends core::Object /*hasConstConstructor*/  {
   const constructor •(core::int* i) → err::Foo*
-    : assert(i.{core::num::>}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_04.dart.weak.outline.expect b/pkg/front_end/testcases/general/error_locations/error_location_04.dart.weak.outline.expect
index c18e587..cb91977 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_04.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_04.dart.weak.outline.expect
@@ -13,7 +13,7 @@
 
 class Foo extends core::Object /*hasConstConstructor*/  {
   const constructor •(core::int* i) → self2::Foo*
-    : assert(i.{core::num::>}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_04.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_locations/error_location_04.dart.weak.transformed.expect
index 32f4daa..43d683c 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_04.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_04.dart.weak.transformed.expect
@@ -17,7 +17,7 @@
 
 class Foo extends core::Object /*hasConstConstructor*/  {
   const constructor •(core::int* i) → err::Foo*
-    : assert(i.{core::num::>}(0){(core::num*) →* core::bool*}), super core::Object::•()
+    : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.weak.expect
index fa47aba..528c1f6 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.weak.expect
@@ -79,64 +79,64 @@
   field core::int* foo;
   field core::int* bar;
   constructor •(core::int* x, core::int* y) → self::Key*
-    : self::Key::foo = x.{core::int::^}(y){(core::int*) →* core::int*}, self::Key::bar = x.{core::int::^}(y){(core::int*) →* core::int*}, super core::Object::•() {
-    core::print("hello ${x.{core::int::^}(y){(core::int*) →* core::int*}}");
+    : self::Key::foo = x.{core::int::^}(y), self::Key::bar = x.{core::int::^}(y), super core::Object::•() {
+    core::print("hello ${x.{core::int::^}(y)}");
   }
   constructor NotDuplicate(core::int* x, core::int* y) → self::Key*
-    : self::Key::foo = x.{core::int::^}(y){(core::int*) →* core::int*}, self::Key::bar = x.{core::int::^}(y){(core::int*) →* core::int*}, super core::Object::•() {
-    core::print("hello ${x.{core::int::^}(y){(core::int*) →* core::int*}}");
+    : self::Key::foo = x.{core::int::^}(y), self::Key::bar = x.{core::int::^}(y), super core::Object::•() {
+    core::print("hello ${x.{core::int::^}(y)}");
   }
   get a() → core::int*
-    return this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}){(core::int*) →* core::int*};
+    return this.{self::Key::runtimeType}.{core::Type::hashCode}.{core::int::^}(null.{core::Object::hashCode});
   get b() → core::int*
-    return this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}){(core::int*) →* core::int*};
+    return this.{self::Key::runtimeType}.{core::Type::hashCode}.{core::int::^}(null.{core::Object::hashCode});
   get c() → core::int* {
-    return this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}){(core::int*) →* core::int*};
+    return this.{self::Key::runtimeType}.{core::Type::hashCode}.{core::int::^}(null.{core::Object::hashCode});
   }
   get d() → core::int* {
-    return this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}){(core::int*) →* core::int*};
+    return this.{self::Key::runtimeType}.{core::Type::hashCode}.{core::int::^}(null.{core::Object::hashCode});
   }
   get e() → core::int*
-    return 1.{core::num::+}(this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}){(core::num*) →* core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Type::hashCode}).{core::int::^}(null.{core::Object::hashCode}.{core::num::+}(3));
   get f() → core::int*
-    return 1.{core::num::+}(this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}){(core::num*) →* core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Type::hashCode}).{core::int::^}(null.{core::Object::hashCode}.{core::num::+}(3));
   get g() → core::int* {
-    return 1.{core::num::+}(this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}){(core::num*) →* core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Type::hashCode}).{core::int::^}(null.{core::Object::hashCode}.{core::num::+}(3));
   }
   get h() → core::int* {
-    return 1.{core::num::+}(this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}){(core::num*) →* core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Type::hashCode}).{core::int::^}(null.{core::Object::hashCode}.{core::num::+}(3));
   }
   method i(core::int* x, core::int* y) → core::int*
-    return x.{core::int::^}(y){(core::int*) →* core::int*};
+    return x.{core::int::^}(y);
   method j(core::int* x, core::int* y) → core::int*
-    return x.{core::int::^}(y){(core::int*) →* core::int*};
+    return x.{core::int::^}(y);
   method k(core::int* x, core::int* y) → core::int* {
-    return x.{core::int::^}(y){(core::int*) →* core::int*};
+    return x.{core::int::^}(y);
   }
   method l(core::int* x, core::int* y) → core::int* {
-    return x.{core::int::^}(y){(core::int*) →* core::int*};
+    return x.{core::int::^}(y);
   }
   method m(core::int* x, core::int* y) → core::int* {
-    core::int* z = x.{core::int::^}(y){(core::int*) →* core::int*};
+    core::int* z = x.{core::int::^}(y);
     return z;
   }
   method n(core::int* x, core::int* y) → core::int* {
-    core::int* z = x.{core::int::^}(y){(core::int*) →* core::int*};
+    core::int* z = x.{core::int::^}(y);
     return z;
   }
   method o(core::int* x, core::int* y) → core::int*
-    return 1.{core::num::+}(x){(core::num*) →* core::int*}.{core::int::^}(y.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
   method p(core::int* x, core::int* y) → core::int*
-    return 1.{core::num::+}(x){(core::num*) →* core::int*}.{core::int::^}(y.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
   method q(core::int* x, core::int* y) → core::int* {
-    return 1.{core::num::+}(x){(core::num*) →* core::int*}.{core::int::^}(y.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
   }
   method r(core::int* x, core::int* y) → core::int* {
-    return 1.{core::num::+}(x){(core::num*) →* core::int*}.{core::int::^}(y.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
   }
   method s(core::int* x, core::int* y) → dynamic {
-    this.{self::Key::s}(x.{core::int::^}(y){(core::int*) →* core::int*}, x.{core::int::^}(y){(core::int*) →* core::int*}){(core::int*, core::int*) →* dynamic};
-    this.{self::Key::s}(x.{core::int::^}(y){(core::int*) →* core::int*}, x.{core::int::^}(y){(core::int*) →* core::int*}){(core::int*, core::int*) →* dynamic};
+    this.{self::Key::s}(x.{core::int::^}(y), x.{core::int::^}(y));
+    this.{self::Key::s}(x.{core::int::^}(y), x.{core::int::^}(y));
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.weak.transformed.expect
index fa47aba..528c1f6 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.weak.transformed.expect
@@ -79,64 +79,64 @@
   field core::int* foo;
   field core::int* bar;
   constructor •(core::int* x, core::int* y) → self::Key*
-    : self::Key::foo = x.{core::int::^}(y){(core::int*) →* core::int*}, self::Key::bar = x.{core::int::^}(y){(core::int*) →* core::int*}, super core::Object::•() {
-    core::print("hello ${x.{core::int::^}(y){(core::int*) →* core::int*}}");
+    : self::Key::foo = x.{core::int::^}(y), self::Key::bar = x.{core::int::^}(y), super core::Object::•() {
+    core::print("hello ${x.{core::int::^}(y)}");
   }
   constructor NotDuplicate(core::int* x, core::int* y) → self::Key*
-    : self::Key::foo = x.{core::int::^}(y){(core::int*) →* core::int*}, self::Key::bar = x.{core::int::^}(y){(core::int*) →* core::int*}, super core::Object::•() {
-    core::print("hello ${x.{core::int::^}(y){(core::int*) →* core::int*}}");
+    : self::Key::foo = x.{core::int::^}(y), self::Key::bar = x.{core::int::^}(y), super core::Object::•() {
+    core::print("hello ${x.{core::int::^}(y)}");
   }
   get a() → core::int*
-    return this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}){(core::int*) →* core::int*};
+    return this.{self::Key::runtimeType}.{core::Type::hashCode}.{core::int::^}(null.{core::Object::hashCode});
   get b() → core::int*
-    return this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}){(core::int*) →* core::int*};
+    return this.{self::Key::runtimeType}.{core::Type::hashCode}.{core::int::^}(null.{core::Object::hashCode});
   get c() → core::int* {
-    return this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}){(core::int*) →* core::int*};
+    return this.{self::Key::runtimeType}.{core::Type::hashCode}.{core::int::^}(null.{core::Object::hashCode});
   }
   get d() → core::int* {
-    return this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}){(core::int*) →* core::int*};
+    return this.{self::Key::runtimeType}.{core::Type::hashCode}.{core::int::^}(null.{core::Object::hashCode});
   }
   get e() → core::int*
-    return 1.{core::num::+}(this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}){(core::num*) →* core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Type::hashCode}).{core::int::^}(null.{core::Object::hashCode}.{core::num::+}(3));
   get f() → core::int*
-    return 1.{core::num::+}(this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}){(core::num*) →* core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Type::hashCode}).{core::int::^}(null.{core::Object::hashCode}.{core::num::+}(3));
   get g() → core::int* {
-    return 1.{core::num::+}(this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}){(core::num*) →* core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Type::hashCode}).{core::int::^}(null.{core::Object::hashCode}.{core::num::+}(3));
   }
   get h() → core::int* {
-    return 1.{core::num::+}(this.{self::Key::runtimeType}{core::Type*}.{core::Type::hashCode}{core::int*}){(core::num*) →* core::int*}.{core::int::^}(null.{core::Object::hashCode}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Type::hashCode}).{core::int::^}(null.{core::Object::hashCode}.{core::num::+}(3));
   }
   method i(core::int* x, core::int* y) → core::int*
-    return x.{core::int::^}(y){(core::int*) →* core::int*};
+    return x.{core::int::^}(y);
   method j(core::int* x, core::int* y) → core::int*
-    return x.{core::int::^}(y){(core::int*) →* core::int*};
+    return x.{core::int::^}(y);
   method k(core::int* x, core::int* y) → core::int* {
-    return x.{core::int::^}(y){(core::int*) →* core::int*};
+    return x.{core::int::^}(y);
   }
   method l(core::int* x, core::int* y) → core::int* {
-    return x.{core::int::^}(y){(core::int*) →* core::int*};
+    return x.{core::int::^}(y);
   }
   method m(core::int* x, core::int* y) → core::int* {
-    core::int* z = x.{core::int::^}(y){(core::int*) →* core::int*};
+    core::int* z = x.{core::int::^}(y);
     return z;
   }
   method n(core::int* x, core::int* y) → core::int* {
-    core::int* z = x.{core::int::^}(y){(core::int*) →* core::int*};
+    core::int* z = x.{core::int::^}(y);
     return z;
   }
   method o(core::int* x, core::int* y) → core::int*
-    return 1.{core::num::+}(x){(core::num*) →* core::int*}.{core::int::^}(y.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
   method p(core::int* x, core::int* y) → core::int*
-    return 1.{core::num::+}(x){(core::num*) →* core::int*}.{core::int::^}(y.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
   method q(core::int* x, core::int* y) → core::int* {
-    return 1.{core::num::+}(x){(core::num*) →* core::int*}.{core::int::^}(y.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
   }
   method r(core::int* x, core::int* y) → core::int* {
-    return 1.{core::num::+}(x){(core::num*) →* core::int*}.{core::int::^}(y.{core::num::+}(3){(core::num*) →* core::int*}){(core::int*) →* core::int*};
+    return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
   }
   method s(core::int* x, core::int* y) → dynamic {
-    this.{self::Key::s}(x.{core::int::^}(y){(core::int*) →* core::int*}, x.{core::int::^}(y){(core::int*) →* core::int*}){(core::int*, core::int*) →* dynamic};
-    this.{self::Key::s}(x.{core::int::^}(y){(core::int*) →* core::int*}, x.{core::int::^}(y){(core::int*) →* core::int*}){(core::int*, core::int*) →* dynamic};
+    this.{self::Key::s}(x.{core::int::^}(y), x.{core::int::^}(y));
+    this.{self::Key::s}(x.{core::int::^}(y), x.{core::int::^}(y));
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/escape.dart.weak.expect b/pkg/front_end/testcases/general/escape.dart.weak.expect
index e9c05d7..2a4b4c7 100644
--- a/pkg/front_end/testcases/general/escape.dart.weak.expect
+++ b/pkg/front_end/testcases/general/escape.dart.weak.expect
@@ -67,17 +67,17 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method useAsA(self::A* object) → void {
-  dynamic _ = object.{self::A::field}{dynamic};
+  dynamic _ = object.{self::A::field};
 }
 static method useAsB(self::B* object) → void {
-  dynamic _ = object.{self::B::field}{dynamic};
+  dynamic _ = object.{self::B::field};
   self::escape(object);
 }
 static method escape(dynamic x) → void {
-  x == null ?{dynamic} x = "" : null;
-  x == null ?{dynamic} x = 45 : null;
+  x.{core::Object::==}(null) ?{dynamic} x = "" : null;
+  x.{core::Object::==}(null) ?{dynamic} x = 45 : null;
   if(!(x is core::int*) && !(x is core::String*)) {
-    x{dynamic}.field = 45;
+    x.field = 45;
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/escape.dart.weak.transformed.expect b/pkg/front_end/testcases/general/escape.dart.weak.transformed.expect
index e9c05d7..2a4b4c7 100644
--- a/pkg/front_end/testcases/general/escape.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/escape.dart.weak.transformed.expect
@@ -67,17 +67,17 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method useAsA(self::A* object) → void {
-  dynamic _ = object.{self::A::field}{dynamic};
+  dynamic _ = object.{self::A::field};
 }
 static method useAsB(self::B* object) → void {
-  dynamic _ = object.{self::B::field}{dynamic};
+  dynamic _ = object.{self::B::field};
   self::escape(object);
 }
 static method escape(dynamic x) → void {
-  x == null ?{dynamic} x = "" : null;
-  x == null ?{dynamic} x = 45 : null;
+  x.{core::Object::==}(null) ?{dynamic} x = "" : null;
+  x.{core::Object::==}(null) ?{dynamic} x = 45 : null;
   if(!(x is core::int*) && !(x is core::String*)) {
-    x{dynamic}.field = 45;
+    x.field = 45;
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/expressions.dart.weak.expect b/pkg/front_end/testcases/general/expressions.dart.weak.expect
index f2ff8e6..5cb0aef 100644
--- a/pkg/front_end/testcases/general/expressions.dart.weak.expect
+++ b/pkg/front_end/testcases/general/expressions.dart.weak.expect
@@ -13,11 +13,11 @@
   core::print(fisk);
 }
 static method caller(dynamic f) → dynamic {
-  f{dynamic}.call();
+  f.call();
 }
 static method main() → dynamic {
   core::int* i = 0;
-  core::print(i =={core::num::==}{(core::Object*) →* core::bool*} 1 ?{core::String*} "bad" : "good");
+  core::print(i.{core::num::==}(1) ?{core::String*} "bad" : "good");
   core::print("${i}");
   core::print("'${i}'");
   core::print(" '${i}' ");
@@ -30,26 +30,26 @@
   }
   on core::String* catch(final core::String* e, final core::StackTrace* s) {
     core::print(e);
-    if(!(s == null))
+    if(!s.{core::Object::==}(null))
       core::print(s);
   }
   for (; false; ) {
   }
   core::List<core::String*>* list = <core::String*>["Hello, World!"];
-  core::print(list.{core::List::[]}(i){(core::int*) →* core::String*});
-  list.{core::List::[]=}(i, "Hello, Brave New World!"){(core::int*, core::String*) →* void};
-  core::print(list.{core::List::[]}(i){(core::int*) →* core::String*});
+  core::print(list.{core::List::[]}(i));
+  list.{core::List::[]=}(i, "Hello, Brave New World!");
+  core::print(list.{core::List::[]}(i));
   i = 87;
-  core::print(i.{core::int::unary-}(){() →* core::int*});
-  core::print(i.{core::int::~}(){() →* core::int*});
-  core::print(!(i =={core::num::==}{(core::Object*) →* core::bool*} 42));
-  core::print(i = i.{core::num::-}(1){(core::num*) →* core::int*});
-  core::print(i = i.{core::num::+}(1){(core::num*) →* core::int*});
-  core::print(let final core::int* #t1 = i in let final core::int* #t2 = i = #t1.{core::num::-}(1){(core::num*) →* core::int*} in #t1);
-  core::print(let final core::int* #t3 = i in let final core::int* #t4 = i = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3);
+  core::print(i.{core::int::unary-}());
+  core::print(i.{core::int::~}());
+  core::print(!i.{core::num::==}(42));
+  core::print(i = i.{core::num::-}(1));
+  core::print(i = i.{core::num::+}(1));
+  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(core::List::filled<core::String*>(2, null).{core::Object::runtimeType}{core::Type*});
+  core::print(core::List::filled<core::String*>(2, null).{core::Object::runtimeType});
   self::foo(fisk: "Blorp gulp");
   function f() → Null {
     core::print("f was called");
@@ -61,21 +61,21 @@
   function g([dynamic message = #C1]) → Null {
     core::print(message);
   }
-  g("Hello, World"){([dynamic]) →* Null};
+  g.call("Hello, World");
   self::caller(([dynamic x = #C1]) → Null {
     core::print("<anon> was called with ${x}");
   });
   function h({dynamic message = #C1}) → Null {
     core::print(message);
   }
-  h(message: "Hello, World"){({message: dynamic}) →* Null};
+  h.call(message: "Hello, World");
   self::caller(({dynamic x = #C1}) → Null {
     core::print("<anon> was called with ${x}");
   });
-  core::print((#C3).{core::Type::toString}(){() →* core::String*});
+  core::print((#C3).{core::Type::toString}());
   core::print(#C3);
   core::print(let final core::Type* #t5 = #C3 in block {
-    #t5.{core::Type::toString}(){() →* core::String*};
+    #t5.{core::Type::toString}();
   } =>#t5);
   try {
     core::print(invalid-expression "pkg/front_end/testcases/general/expressions.dart:74:16: Error: Method not found: 'int.toString'.
diff --git a/pkg/front_end/testcases/general/expressions.dart.weak.transformed.expect b/pkg/front_end/testcases/general/expressions.dart.weak.transformed.expect
index 17936f5..0e8e94f 100644
--- a/pkg/front_end/testcases/general/expressions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/expressions.dart.weak.transformed.expect
@@ -13,11 +13,11 @@
   core::print(fisk);
 }
 static method caller(dynamic f) → dynamic {
-  f{dynamic}.call();
+  f.call();
 }
 static method main() → dynamic {
   core::int* i = 0;
-  core::print(i =={core::num::==}{(core::Object*) →* core::bool*} 1 ?{core::String*} "bad" : "good");
+  core::print(i.{core::num::==}(1) ?{core::String*} "bad" : "good");
   core::print("${i}");
   core::print("'${i}'");
   core::print(" '${i}' ");
@@ -30,26 +30,26 @@
   }
   on core::String* catch(final core::String* e, final core::StackTrace* s) {
     core::print(e);
-    if(!(s == null))
+    if(!s.{core::Object::==}(null))
       core::print(s);
   }
   for (; false; ) {
   }
   core::List<core::String*>* list = core::_GrowableList::_literal1<core::String*>("Hello, World!");
-  core::print(list.{core::List::[]}(i){(core::int*) →* core::String*});
-  list.{core::List::[]=}(i, "Hello, Brave New World!"){(core::int*, core::String*) →* void};
-  core::print(list.{core::List::[]}(i){(core::int*) →* core::String*});
+  core::print(list.{core::List::[]}(i));
+  list.{core::List::[]=}(i, "Hello, Brave New World!");
+  core::print(list.{core::List::[]}(i));
   i = 87;
-  core::print(i.{core::int::unary-}(){() →* core::int*});
-  core::print(i.{core::int::~}(){() →* core::int*});
-  core::print(!(i =={core::num::==}{(core::Object*) →* core::bool*} 42));
-  core::print(i = i.{core::num::-}(1){(core::num*) →* core::int*});
-  core::print(i = i.{core::num::+}(1){(core::num*) →* core::int*});
-  core::print(let final core::int* #t1 = i in let final core::int* #t2 = i = #t1.{core::num::-}(1){(core::num*) →* core::int*} in #t1);
-  core::print(let final core::int* #t3 = i in let final core::int* #t4 = i = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3);
+  core::print(i.{core::int::unary-}());
+  core::print(i.{core::int::~}());
+  core::print(!i.{core::num::==}(42));
+  core::print(i = i.{core::num::-}(1));
+  core::print(i = i.{core::num::+}(1));
+  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(core::_List::•<core::String*>(2).{core::Object::runtimeType}{core::Type*});
+  core::print(core::_List::•<core::String*>(2).{core::Object::runtimeType});
   self::foo(fisk: "Blorp gulp");
   function f() → Null {
     core::print("f was called");
@@ -61,21 +61,21 @@
   function g([dynamic message = #C1]) → Null {
     core::print(message);
   }
-  g("Hello, World"){([dynamic]) →* Null};
+  g.call("Hello, World");
   self::caller(([dynamic x = #C1]) → Null {
     core::print("<anon> was called with ${x}");
   });
   function h({dynamic message = #C1}) → Null {
     core::print(message);
   }
-  h(message: "Hello, World"){({message: dynamic}) →* Null};
+  h.call(message: "Hello, World");
   self::caller(({dynamic x = #C1}) → Null {
     core::print("<anon> was called with ${x}");
   });
-  core::print((#C3).{core::Type::toString}(){() →* core::String*});
+  core::print((#C3).{core::Type::toString}());
   core::print(#C3);
   core::print(let final core::Type* #t5 = #C3 in block {
-    #t5.{core::Type::toString}(){() →* core::String*};
+    #t5.{core::Type::toString}();
   } =>#t5);
   try {
     core::print(invalid-expression "pkg/front_end/testcases/general/expressions.dart:74:16: Error: Method not found: 'int.toString'.
@@ -99,7 +99,7 @@
 Evaluated: StringConcatenation @ org-dartlang-testcase:///expressions.dart:21:8 -> StringConstant("foobar")
 Evaluated: VariableGetImpl @ org-dartlang-testcase:///expressions.dart:72:9 -> TypeLiteralConstant(int*)
 Evaluated: VariableGet @ org-dartlang-testcase:///expressions.dart:72:9 -> TypeLiteralConstant(int*)
-Extra constant evaluation: evaluated: 133, effectively constant: 3
+Extra constant evaluation: evaluated: 135, effectively constant: 3
 
 
 Constructor coverage from constants:
diff --git a/pkg/front_end/testcases/general/external.dart.weak.expect b/pkg/front_end/testcases/general/external.dart.weak.expect
index a768cb2..766ac5f 100644
--- a/pkg/front_end/testcases/general/external.dart.weak.expect
+++ b/pkg/front_end/testcases/general/external.dart.weak.expect
@@ -8,13 +8,13 @@
 static field dynamic subscription;
 static method onData(dynamic x) → void {
   core::print(x);
-  self::subscription{dynamic}.cancel();
+  self::subscription.cancel();
 }
 static method main() → dynamic {
   core::String* string = core::String::fromCharCode(65);
   iso::ReceivePort* port = iso::ReceivePort::•();
-  self::subscription = port.{iso::ReceivePort::listen}(#C1){((dynamic) →* void, {cancelOnError: core::bool*, onDone: () →* void, onError: core::Function*}) →* dart.async::StreamSubscription<dynamic>*};
-  port.{iso::ReceivePort::sendPort}{iso::SendPort*}.{iso::SendPort::send}(string){(core::Object*) →* void};
+  self::subscription = port.{iso::ReceivePort::listen}(#C1);
+  port.{iso::ReceivePort::sendPort}.{iso::SendPort::send}(string);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/external.dart.weak.transformed.expect b/pkg/front_end/testcases/general/external.dart.weak.transformed.expect
index a768cb2..766ac5f 100644
--- a/pkg/front_end/testcases/general/external.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/external.dart.weak.transformed.expect
@@ -8,13 +8,13 @@
 static field dynamic subscription;
 static method onData(dynamic x) → void {
   core::print(x);
-  self::subscription{dynamic}.cancel();
+  self::subscription.cancel();
 }
 static method main() → dynamic {
   core::String* string = core::String::fromCharCode(65);
   iso::ReceivePort* port = iso::ReceivePort::•();
-  self::subscription = port.{iso::ReceivePort::listen}(#C1){((dynamic) →* void, {cancelOnError: core::bool*, onDone: () →* void, onError: core::Function*}) →* dart.async::StreamSubscription<dynamic>*};
-  port.{iso::ReceivePort::sendPort}{iso::SendPort*}.{iso::SendPort::send}(string){(core::Object*) →* void};
+  self::subscription = port.{iso::ReceivePort::listen}(#C1);
+  port.{iso::ReceivePort::sendPort}.{iso::SendPort::send}(string);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/fallthrough.dart.weak.expect b/pkg/front_end/testcases/general/fallthrough.dart.weak.expect
index 4348081..75e6040 100644
--- a/pkg/front_end/testcases/general/fallthrough.dart.weak.expect
+++ b/pkg/front_end/testcases/general/fallthrough.dart.weak.expect
@@ -14,7 +14,7 @@
 import "dart:core" as core;
 
 static method main(core::List<core::String*>* args) → void {
-  core::int* x = args.{core::List::length}{core::int*};
+  core::int* x = args.{core::List::length};
   #L1:
   switch(x) {
     #L2:
@@ -32,7 +32,7 @@
     case #C3:
     case #C4:
       {
-        if(args.{core::List::[]}(0){(core::int*) →* core::String*} =={core::String::==}{(core::Object*) →* core::bool*} "") {
+        if(args.{core::List::[]}(0).{core::String::==}("")) {
           break #L1;
         }
         else {
diff --git a/pkg/front_end/testcases/general/fallthrough.dart.weak.transformed.expect b/pkg/front_end/testcases/general/fallthrough.dart.weak.transformed.expect
index 4348081..75e6040 100644
--- a/pkg/front_end/testcases/general/fallthrough.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/fallthrough.dart.weak.transformed.expect
@@ -14,7 +14,7 @@
 import "dart:core" as core;
 
 static method main(core::List<core::String*>* args) → void {
-  core::int* x = args.{core::List::length}{core::int*};
+  core::int* x = args.{core::List::length};
   #L1:
   switch(x) {
     #L2:
@@ -32,7 +32,7 @@
     case #C3:
     case #C4:
       {
-        if(args.{core::List::[]}(0){(core::int*) →* core::String*} =={core::String::==}{(core::Object*) →* core::bool*} "") {
+        if(args.{core::List::[]}(0).{core::String::==}("")) {
           break #L1;
         }
         else {
diff --git a/pkg/front_end/testcases/general/fibonacci.dart.weak.expect b/pkg/front_end/testcases/general/fibonacci.dart.weak.expect
index df2b7da..95dc207 100644
--- a/pkg/front_end/testcases/general/fibonacci.dart.weak.expect
+++ b/pkg/front_end/testcases/general/fibonacci.dart.weak.expect
@@ -3,12 +3,12 @@
 import "dart:core" as core;
 
 static method fibonacci(core::int* n) → core::int* {
-  if(n.{core::num::<}(2){(core::num*) →* core::bool*})
+  if(n.{core::num::<}(2))
     return n;
-  return self::fibonacci(n.{core::num::-}(1){(core::num*) →* core::int*}).{core::num::+}(self::fibonacci(n.{core::num::-}(2){(core::num*) →* core::int*})){(core::num*) →* core::int*};
+  return self::fibonacci(n.{core::num::-}(1)).{core::num::+}(self::fibonacci(n.{core::num::-}(2)));
 }
 static method main() → dynamic {
-  for (core::int* i = 0; i.{core::num::<}(20){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (core::int* i = 0; i.{core::num::<}(20); i = i.{core::num::+}(1)) {
     core::print(self::fibonacci(i));
   }
 }
diff --git a/pkg/front_end/testcases/general/fibonacci.dart.weak.transformed.expect b/pkg/front_end/testcases/general/fibonacci.dart.weak.transformed.expect
index df2b7da..95dc207 100644
--- a/pkg/front_end/testcases/general/fibonacci.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/fibonacci.dart.weak.transformed.expect
@@ -3,12 +3,12 @@
 import "dart:core" as core;
 
 static method fibonacci(core::int* n) → core::int* {
-  if(n.{core::num::<}(2){(core::num*) →* core::bool*})
+  if(n.{core::num::<}(2))
     return n;
-  return self::fibonacci(n.{core::num::-}(1){(core::num*) →* core::int*}).{core::num::+}(self::fibonacci(n.{core::num::-}(2){(core::num*) →* core::int*})){(core::num*) →* core::int*};
+  return self::fibonacci(n.{core::num::-}(1)).{core::num::+}(self::fibonacci(n.{core::num::-}(2)));
 }
 static method main() → dynamic {
-  for (core::int* i = 0; i.{core::num::<}(20){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (core::int* i = 0; i.{core::num::<}(20); i = i.{core::num::+}(1)) {
     core::print(self::fibonacci(i));
   }
 }
diff --git a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.expect b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.expect
index 085bed3..6c86016 100644
--- a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.expect
+++ b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.expect
@@ -8,11 +8,11 @@
     final self::TestMixin::R* response = await fetch;
     self::TestMixin::T* result;
     if(response is self::Response<dynamic>*) {
-      result = response{self::TestMixin::R* & self::Response<dynamic>* /* '*' & '*' = '*' */}.{self::Response::data}{dynamic} as{TypeError,ForDynamic} self::TestMixin::T*;
+      result = response{self::TestMixin::R* & self::Response<dynamic>* /* '*' & '*' = '*' */}.{self::Response::data} as{TypeError,ForDynamic} self::TestMixin::T*;
     }
     else
       if(response is self::PagingResponse<dynamic>*) {
-        result = response{self::TestMixin::R* & self::PagingResponse<dynamic>* /* '*' & '*' = '*' */}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>*}.{self::PagingResponseData::data}{core::List<dynamic>*} as self::TestMixin::T*;
+        result = response{self::TestMixin::R* & self::PagingResponse<dynamic>* /* '*' & '*' = '*' */}.{self::PagingResponse::data}.{self::PagingResponseData::data} as self::TestMixin::T*;
       }
       else
         if(response is self::TestMixin::T*) {
@@ -105,7 +105,7 @@
     ;
   method _test() → dynamic {
     final self::Response<core::String*>* response = new self::Response::•<core::String*>("test");
-    this.{self::_Class1&Object&TestMixin::test}(asy::Future::value<self::Response<core::String*>*>(response)){(asy::Future<self::Response<core::String*>*>*) →* asy::Future<core::String*>*};
+    this.{self::_Class1&Object&TestMixin::test}(asy::Future::value<self::Response<core::String*>*>(response));
   }
 }
 abstract class _Class2&Object&TestMixin = core::Object with self::TestMixin<self::PagingResponse<core::String*>*, core::String*> /*isAnonymousMixin,hasConstConstructor*/  {
@@ -131,7 +131,7 @@
     ;
   method _test() → dynamic {
     final self::PagingResponse<core::String*>* response = new self::PagingResponse::•<core::String*>(new self::PagingResponseData::•<core::String*>(<core::String*>["test"]));
-    this.{self::_Class2&Object&TestMixin::test}(asy::Future::value<self::PagingResponse<core::String*>*>(response)){(asy::Future<self::PagingResponse<core::String*>*>*) →* asy::Future<core::String*>*};
+    this.{self::_Class2&Object&TestMixin::test}(asy::Future::value<self::PagingResponse<core::String*>*>(response));
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect
index add51d0..f8c0120 100644
--- a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect
@@ -22,11 +22,11 @@
           final self::TestMixin::R* response = _in::unsafeCast<self::TestMixin::R*>(:result);
           self::TestMixin::T* result;
           if(response is self::Response<dynamic>*) {
-            result = response{self::TestMixin::R* & self::Response<dynamic>* /* '*' & '*' = '*' */}.{self::Response::data}{dynamic} as{TypeError,ForDynamic} self::TestMixin::T*;
+            result = response{self::TestMixin::R* & self::Response<dynamic>* /* '*' & '*' = '*' */}.{self::Response::data} as{TypeError,ForDynamic} self::TestMixin::T*;
           }
           else
             if(response is self::PagingResponse<dynamic>*) {
-              result = response{self::TestMixin::R* & self::PagingResponse<dynamic>* /* '*' & '*' = '*' */}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>*}.{self::PagingResponseData::data}{core::List<dynamic>*} as self::TestMixin::T*;
+              result = response{self::TestMixin::R* & self::PagingResponse<dynamic>* /* '*' & '*' = '*' */}.{self::PagingResponse::data}.{self::PagingResponseData::data} as self::TestMixin::T*;
             }
             else
               if(response is self::TestMixin::T*) {
@@ -130,11 +130,11 @@
           final self::Response<core::String*>* response = _in::unsafeCast<self::Response<core::String*>*>(:result);
           core::String* result;
           if(response is self::Response<dynamic>*) {
-            result = response{self::Response<core::String*>*}.{self::Response::data}{dynamic} as{TypeError,ForDynamic} core::String*;
+            result = response{self::Response<core::String*>*}.{self::Response::data};
           }
           else
             if(response is self::PagingResponse<dynamic>*) {
-              result = response{self::Response<core::String*>*}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>*}.{self::PagingResponseData::data}{core::List<dynamic>*} as core::String*;
+              result = response{self::Response<core::String*>*}.{self::PagingResponse::data}.{self::PagingResponseData::data} as core::String*;
             }
             else
               if(response is core::String*) {
@@ -175,7 +175,7 @@
     ;
   method _test() → dynamic {
     final self::Response<core::String*>* response = new self::Response::•<core::String*>("test");
-    this.{self::_Class1&Object&TestMixin::test}(asy::Future::value<self::Response<core::String*>*>(response)){(asy::Future<self::Response<core::String*>*>*) →* asy::Future<core::String*>*};
+    this.{self::_Class1&Object&TestMixin::test}(asy::Future::value<self::Response<core::String*>*>(response));
   }
 }
 abstract class _Class2&Object&TestMixin extends core::Object implements self::TestMixin<self::PagingResponse<core::String*>*, core::String*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
@@ -199,11 +199,11 @@
           final self::PagingResponse<core::String*>* response = _in::unsafeCast<self::PagingResponse<core::String*>*>(:result);
           core::String* result;
           if(response is self::Response<dynamic>*) {
-            result = response{self::PagingResponse<core::String*>*}.{self::Response::data}{dynamic} as{TypeError,ForDynamic} core::String*;
+            result = response{self::PagingResponse<core::String*>*}.{self::Response::data} as{TypeError,ForDynamic} core::String*;
           }
           else
             if(response is self::PagingResponse<dynamic>*) {
-              result = response{self::PagingResponse<core::String*>*}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>*}.{self::PagingResponseData::data}{core::List<dynamic>*} as core::String*;
+              result = response{self::PagingResponse<core::String*>*}.{self::PagingResponse::data}.{self::PagingResponseData::data} as core::String*;
             }
             else
               if(response is core::String*) {
@@ -244,7 +244,7 @@
     ;
   method _test() → dynamic {
     final self::PagingResponse<core::String*>* response = new self::PagingResponse::•<core::String*>(new self::PagingResponseData::•<core::String*>(core::_GrowableList::_literal1<core::String*>("test")));
-    this.{self::_Class2&Object&TestMixin::test}(asy::Future::value<self::PagingResponse<core::String*>*>(response)){(asy::Future<self::PagingResponse<core::String*>*>*) →* asy::Future<core::String*>*};
+    this.{self::_Class2&Object&TestMixin::test}(asy::Future::value<self::PagingResponse<core::String*>*>(response));
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/flutter_issue68092/main.dart.weak.expect b/pkg/front_end/testcases/general/flutter_issue68092/main.dart.weak.expect
index 13b9d4e..06e24b0 100644
--- a/pkg/front_end/testcases/general/flutter_issue68092/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/flutter_issue68092/main.dart.weak.expect
@@ -8,7 +8,7 @@
 static method main() → void {
   function f({core::int* x = #C1}) → core::int*
     return null;
-  new mai::Registry::•().{mai::DynamicDispatchRegistry::register}(f){(({x: core::int*}) →* core::int*) →* ({x: core::int*}) →* core::int*};
+  new mai::Registry::•().{mai::DynamicDispatchRegistry::register}(f);
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/flutter_issue68092/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/flutter_issue68092/main.dart.weak.transformed.expect
index 13b9d4e..06e24b0 100644
--- a/pkg/front_end/testcases/general/flutter_issue68092/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/flutter_issue68092/main.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
 static method main() → void {
   function f({core::int* x = #C1}) → core::int*
     return null;
-  new mai::Registry::•().{mai::DynamicDispatchRegistry::register}(f){(({x: core::int*}) →* core::int*) →* ({x: core::int*}) →* core::int*};
+  new mai::Registry::•().{mai::DynamicDispatchRegistry::register}(f);
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/for_in_without_declaration.dart.weak.expect b/pkg/front_end/testcases/general/for_in_without_declaration.dart.weak.expect
index 3360167..b1f7867 100644
--- a/pkg/front_end/testcases/general/for_in_without_declaration.dart.weak.expect
+++ b/pkg/front_end/testcases/general/for_in_without_declaration.dart.weak.expect
@@ -146,7 +146,7 @@
  - 'C' is from 'pkg/front_end/testcases/general/for_in_without_declaration.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'unresolved'.
     for (unresolved.foo in []) {}
-         ^^^^^^^^^^"{dynamic}.foo = #t14;
+         ^^^^^^^^^^".foo = #t14;
     }
     for (final dynamic #t15 in <dynamic>[]) {
       invalid-expression "pkg/front_end/testcases/general/for_in_without_declaration.dart:39:12: Error: The setter 'unresolved' isn't defined for the class 'C'.
diff --git a/pkg/front_end/testcases/general/for_in_without_declaration.dart.weak.transformed.expect b/pkg/front_end/testcases/general/for_in_without_declaration.dart.weak.transformed.expect
index 2e09441..cdc7b5c 100644
--- a/pkg/front_end/testcases/general/for_in_without_declaration.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/for_in_without_declaration.dart.weak.transformed.expect
@@ -228,7 +228,7 @@
  - 'C' is from 'pkg/front_end/testcases/general/for_in_without_declaration.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'unresolved'.
     for (unresolved.foo in []) {}
-         ^^^^^^^^^^"{dynamic}.foo = #t14;
+         ^^^^^^^^^^".foo = #t14;
         }
       }
     }
diff --git a/pkg/front_end/testcases/general/function_in_field.dart.weak.expect b/pkg/front_end/testcases/general/function_in_field.dart.weak.expect
index a2c6a44..ca264d4 100644
--- a/pkg/front_end/testcases/general/function_in_field.dart.weak.expect
+++ b/pkg/front_end/testcases/general/function_in_field.dart.weak.expect
@@ -7,5 +7,5 @@
   return y;
 };
 static method main() → dynamic {
-  core::print(self::x(){() →* core::int*});
+  core::print(self::x.call());
 }
diff --git a/pkg/front_end/testcases/general/function_in_field.dart.weak.transformed.expect b/pkg/front_end/testcases/general/function_in_field.dart.weak.transformed.expect
index a2c6a44..ca264d4 100644
--- a/pkg/front_end/testcases/general/function_in_field.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/function_in_field.dart.weak.transformed.expect
@@ -7,5 +7,5 @@
   return y;
 };
 static method main() → dynamic {
-  core::print(self::x(){() →* core::int*});
+  core::print(self::x.call());
 }
diff --git a/pkg/front_end/testcases/general/function_invocation_bounds.dart.weak.expect b/pkg/front_end/testcases/general/function_invocation_bounds.dart.weak.expect
index 530685e..fa6936b 100644
--- a/pkg/front_end/testcases/general/function_invocation_bounds.dart.weak.expect
+++ b/pkg/front_end/testcases/general/function_invocation_bounds.dart.weak.expect
@@ -37,20 +37,20 @@
 static method test() → dynamic {
   function local<T extends core::num>(T t) → T
     return t;
-  local<core::String>(""){(core::String) → core::String};
-  local<core::String>(throw ""){(core::String) → core::String};
-  local<core::int>(0){(core::int) → core::int};
-  local<core::int>(throw ""){(core::int) → core::int};
+  local.call<core::String>("");
+  local.call<core::String>(throw "");
+  local.call<core::int>(0);
+  local.call<core::int>(throw "");
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/general/function_invocation_bounds.dart:13:8: Error: Expected 1 type arguments.
   local<int, String>(throw '');
-       ^" in local{<inapplicable>}.<core::int, core::String>(throw "");
+       ^" in local.call<core::int, core::String>(throw "");
   <T extends core::num>(T) → T f = local;
-  f<core::String>(""){(core::String) → core::String};
-  f<core::String>(throw ""){(core::String) → core::String};
-  f<core::int>(0){(core::int) → core::int};
-  f<core::int>(throw ""){(core::int) → core::int};
+  f.call<core::String>("");
+  f.call<core::String>(throw "");
+  f.call<core::int>(0);
+  f.call<core::int>(throw "");
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/general/function_invocation_bounds.dart:19:4: Error: Expected 1 type arguments.
   f<int, String>(throw '');
-   ^" in f{<inapplicable>}.<core::int, core::String>(throw "");
+   ^" in f.call<core::int, core::String>(throw "");
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/function_invocation_bounds.dart.weak.transformed.expect b/pkg/front_end/testcases/general/function_invocation_bounds.dart.weak.transformed.expect
index 530685e..f71e3b1 100644
--- a/pkg/front_end/testcases/general/function_invocation_bounds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/function_invocation_bounds.dart.weak.transformed.expect
@@ -2,6 +2,10 @@
 //
 // Problems in library:
 //
+// pkg/front_end/testcases/general/function_invocation_bounds.dart:18:3: Error: 'F' isn't a type.
+//   F g = local;
+//   ^
+//
 // pkg/front_end/testcases/general/function_invocation_bounds.dart:9:8: Error: Inferred type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'local'.
 // Try specifying type arguments explicitly so that they conform to the bounds.
 //   local("");
@@ -12,45 +16,36 @@
 //   local<String>(throw '');
 //        ^
 //
-// pkg/front_end/testcases/general/function_invocation_bounds.dart:13:8: Error: Expected 1 type arguments.
-//   local<int, String>(throw '');
-//        ^
-//
-// pkg/front_end/testcases/general/function_invocation_bounds.dart:15:4: Error: Inferred type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'call'.
+// pkg/front_end/testcases/general/function_invocation_bounds.dart:14:4: Error: Inferred type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'call'.
 // Try specifying type arguments explicitly so that they conform to the bounds.
 //   f("");
 //    ^
 //
-// pkg/front_end/testcases/general/function_invocation_bounds.dart:16:4: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'call'.
+// pkg/front_end/testcases/general/function_invocation_bounds.dart:15:4: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'call'.
 // Try changing type arguments so that they conform to the bounds.
 //   f<String>(throw '');
 //    ^
 //
-// pkg/front_end/testcases/general/function_invocation_bounds.dart:19:4: Error: Expected 1 type arguments.
-//   f<int, String>(throw '');
-//    ^
-//
 import self as self;
 import "dart:core" as core;
 
 typedef G<invariant T extends core::Object? = dynamic> = (T%) → T%;
 static method test() → dynamic {
-  function local<T extends core::num>(T t) → T
+  function local<T extends core::num = core::num>(T t) → T
     return t;
-  local<core::String>(""){(core::String) → core::String};
-  local<core::String>(throw ""){(core::String) → core::String};
-  local<core::int>(0){(core::int) → core::int};
-  local<core::int>(throw ""){(core::int) → core::int};
-  let final Never #t1 = invalid-expression "pkg/front_end/testcases/general/function_invocation_bounds.dart:13:8: Error: Expected 1 type arguments.
-  local<int, String>(throw '');
-       ^" in local{<inapplicable>}.<core::int, core::String>(throw "");
-  <T extends core::num>(T) → T f = local;
-  f<core::String>(""){(core::String) → core::String};
-  f<core::String>(throw ""){(core::String) → core::String};
-  f<core::int>(0){(core::int) → core::int};
-  f<core::int>(throw ""){(core::int) → core::int};
-  let final Never #t2 = invalid-expression "pkg/front_end/testcases/general/function_invocation_bounds.dart:19:4: Error: Expected 1 type arguments.
-  f<int, String>(throw '');
-   ^" in f{<inapplicable>}.<core::int, core::String>(throw "");
+  local.call<core::String>("");
+  local.call<core::String>(throw "");
+  local.call<core::int>(0);
+  local.call<core::int>(throw "");
+  <T extends core::num = core::num>(T) → T f = local;
+  f.call<core::String>("");
+  f.call<core::String>(throw "");
+  f.call<core::int>(0);
+  f.call<core::int>(throw "");
+  invalid-type g = local;
+  g.call("");
+  g.call<core::String>(throw "");
+  g.call(0);
+  g.call<core::int>(throw "");
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/function_type_is_check.dart.weak.expect b/pkg/front_end/testcases/general/function_type_is_check.dart.weak.expect
index 3994837..3e17d2c 100644
--- a/pkg/front_end/testcases/general/function_type_is_check.dart.weak.expect
+++ b/pkg/front_end/testcases/general/function_type_is_check.dart.weak.expect
@@ -14,5 +14,5 @@
     return 100;
 }
 static method main() → dynamic {
-  exp::Expect::equals(111, self::test(() → Null => null){dynamic}.+(self::test((core::Object* o) → Null => null)){dynamic}.+(self::test((core::Object* o, core::StackTrace* t) → Null => null)));
+  exp::Expect::equals(111, self::test(() → Null => null).+(self::test((core::Object* o) → Null => null)).+(self::test((core::Object* o, core::StackTrace* t) → Null => null)));
 }
diff --git a/pkg/front_end/testcases/general/function_type_is_check.dart.weak.transformed.expect b/pkg/front_end/testcases/general/function_type_is_check.dart.weak.transformed.expect
index 3994837..3e17d2c 100644
--- a/pkg/front_end/testcases/general/function_type_is_check.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/function_type_is_check.dart.weak.transformed.expect
@@ -14,5 +14,5 @@
     return 100;
 }
 static method main() → dynamic {
-  exp::Expect::equals(111, self::test(() → Null => null){dynamic}.+(self::test((core::Object* o) → Null => null)){dynamic}.+(self::test((core::Object* o, core::StackTrace* t) → Null => null)));
+  exp::Expect::equals(111, self::test(() → Null => null).+(self::test((core::Object* o) → Null => null)).+(self::test((core::Object* o, core::StackTrace* t) → Null => null)));
 }
diff --git a/pkg/front_end/testcases/general/functions.dart.weak.expect b/pkg/front_end/testcases/general/functions.dart.weak.expect
index a0fd727..c10936d 100644
--- a/pkg/front_end/testcases/general/functions.dart.weak.expect
+++ b/pkg/front_end/testcases/general/functions.dart.weak.expect
@@ -4,12 +4,12 @@
 
 static method main() → dynamic {
   function local(({a: dynamic}) →* void f) → void {
-    f(a: "Hello, World"){({a: dynamic}) →* void};
-    f(){({a: dynamic}) →* void};
+    f.call(a: "Hello, World");
+    f.call();
   }
-  local(({dynamic a = #C1}) → Null {
+  local.call(({dynamic a = #C1}) → Null {
     core::print(a);
-  }){(({a: dynamic}) →* void) →* void};
+  });
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/functions.dart.weak.transformed.expect b/pkg/front_end/testcases/general/functions.dart.weak.transformed.expect
index a0fd727..c10936d 100644
--- a/pkg/front_end/testcases/general/functions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/functions.dart.weak.transformed.expect
@@ -4,12 +4,12 @@
 
 static method main() → dynamic {
   function local(({a: dynamic}) →* void f) → void {
-    f(a: "Hello, World"){({a: dynamic}) →* void};
-    f(){({a: dynamic}) →* void};
+    f.call(a: "Hello, World");
+    f.call();
   }
-  local(({dynamic a = #C1}) → Null {
+  local.call(({dynamic a = #C1}) → Null {
     core::print(a);
-  }){(({a: dynamic}) →* void) →* void};
+  });
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/future_or_test.dart.weak.expect b/pkg/front_end/testcases/general/future_or_test.dart.weak.expect
index cc061fb..2a464ed 100644
--- a/pkg/front_end/testcases/general/future_or_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/future_or_test.dart.weak.expect
@@ -28,7 +28,7 @@
     : super core::Object::•()
     ;
   method bar() → asy::Future<dynamic>* async 
-    return this.{self::B::a}{self::A*}.{self::A::foo}(){() →* dynamic};
+    return this.{self::B::a}.{self::A::foo}();
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -46,7 +46,7 @@
     : super core::Object::•()
     ;
   method baz() → asy::Future<core::int*>* async 
-    return this.{self::C::b}{self::B*}.{self::B::bar}(){() →* asy::Future<dynamic>*} as{TypeError} FutureOr<core::int*>*;
+    return this.{self::C::b}.{self::B::bar}() as{TypeError} FutureOr<core::int*>*;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect
index b322b55..f62a5eb 100644
--- a/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect
@@ -39,7 +39,7 @@
       try {
         #L1:
         {
-          :return_value = this.{self::B::a}{self::A*}.{self::A::foo}(){() →* dynamic};
+          :return_value = this.{self::B::a}.{self::A::foo}();
           break #L1;
         }
         asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
@@ -82,7 +82,7 @@
       try {
         #L2:
         {
-          :return_value = this.{self::C::b}{self::B*}.{self::B::bar}(){() →* asy::Future<dynamic>*} as{TypeError} FutureOr<core::int*>*;
+          :return_value = this.{self::C::b}.{self::B::bar}() as{TypeError} FutureOr<core::int*>*;
           break #L2;
         }
         asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
diff --git a/pkg/front_end/testcases/general/generic_function_type_in_message.dart.weak.expect b/pkg/front_end/testcases/general/generic_function_type_in_message.dart.weak.expect
index 61a26ba..96838f0 100644
--- a/pkg/front_end/testcases/general/generic_function_type_in_message.dart.weak.expect
+++ b/pkg/front_end/testcases/general/generic_function_type_in_message.dart.weak.expect
@@ -10,14 +10,14 @@
 import "dart:core" as core;
 
 static method add<A extends core::num*, B extends core::num*>(self::add::A* a, self::add::B* b) → core::num*
-  return a.{core::num::+}(b){(core::num*) →* core::num*};
+  return a.{core::num::+}(b);
 static method test() → dynamic {
   core::int* x = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/generic_function_type_in_message.dart:8:11: Error: A value of type 'num Function<A extends num, B extends num>(A, B)' can't be assigned to a variable of type 'int'.
   int x = add;
           ^" in (#C1) as{TypeError} core::int*;
 }
 static method main() → dynamic {
-  if(self::add<core::int*, core::int*>(1, 2).{core::num::<}(3){(core::num*) →* core::bool*})
+  if(self::add<core::int*, core::int*>(1, 2).{core::num::<}(3))
     self::test();
 }
 
diff --git a/pkg/front_end/testcases/general/generic_function_type_in_message.dart.weak.transformed.expect b/pkg/front_end/testcases/general/generic_function_type_in_message.dart.weak.transformed.expect
index 61a26ba..96838f0 100644
--- a/pkg/front_end/testcases/general/generic_function_type_in_message.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/generic_function_type_in_message.dart.weak.transformed.expect
@@ -10,14 +10,14 @@
 import "dart:core" as core;
 
 static method add<A extends core::num*, B extends core::num*>(self::add::A* a, self::add::B* b) → core::num*
-  return a.{core::num::+}(b){(core::num*) →* core::num*};
+  return a.{core::num::+}(b);
 static method test() → dynamic {
   core::int* x = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/generic_function_type_in_message.dart:8:11: Error: A value of type 'num Function<A extends num, B extends num>(A, B)' can't be assigned to a variable of type 'int'.
   int x = add;
           ^" in (#C1) as{TypeError} core::int*;
 }
 static method main() → dynamic {
-  if(self::add<core::int*, core::int*>(1, 2).{core::num::<}(3){(core::num*) →* core::bool*})
+  if(self::add<core::int*, core::int*>(1, 2).{core::num::<}(3))
     self::test();
 }
 
diff --git a/pkg/front_end/testcases/general/generic_typedef_in_generic_class.dart.weak.expect b/pkg/front_end/testcases/general/generic_typedef_in_generic_class.dart.weak.expect
index 9a41483..542c883 100644
--- a/pkg/front_end/testcases/general/generic_typedef_in_generic_class.dart.weak.expect
+++ b/pkg/front_end/testcases/general/generic_typedef_in_generic_class.dart.weak.expect
@@ -13,7 +13,7 @@
   }
 }
 static method main() → dynamic {
-  new self::Class::•<core::int>().{self::Class::method}(){() → dynamic};
+  new self::Class::•<core::int>().{self::Class::method}();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/generic_typedef_in_generic_class.dart.weak.transformed.expect b/pkg/front_end/testcases/general/generic_typedef_in_generic_class.dart.weak.transformed.expect
index 9a41483..542c883 100644
--- a/pkg/front_end/testcases/general/generic_typedef_in_generic_class.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/generic_typedef_in_generic_class.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
   }
 }
 static method main() → dynamic {
-  new self::Class::•<core::int>().{self::Class::method}(){() → dynamic};
+  new self::Class::•<core::int>().{self::Class::method}();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/getter_call.dart.weak.expect b/pkg/front_end/testcases/general/getter_call.dart.weak.expect
index 9430786..256e84e 100644
--- a/pkg/front_end/testcases/general/getter_call.dart.weak.expect
+++ b/pkg/front_end/testcases/general/getter_call.dart.weak.expect
@@ -112,21 +112,21 @@
 }
 static field core::bool* enableRead = true;
 static method read(core::int* value) → core::int*
-  return self::enableRead ?{core::int*} value : 1.{core::int::unary-}(){() →* core::int*};
+  return self::enableRead ?{core::int*} value : 1.{core::int::unary-}();
 static method method1() → core::int*
   return 0;
 static method method2(core::int* a) → core::int*
-  return a.{core::int::unary-}(){() →* core::int*};
+  return a.{core::int::unary-}();
 static method method3(core::int* a, core::int* b) → core::int*
-  return a.{core::num::-}(b){(core::num*) →* core::int*};
+  return a.{core::num::-}(b);
 static method method4(core::int* a, [core::int* b = #C8]) → core::int*
-  return a.{core::num::-}(b){(core::num*) →* core::int*};
+  return a.{core::num::-}(b);
 static method method5([core::int* a = #C8, core::int* b = #C8]) → core::int*
-  return a.{core::num::-}(b){(core::num*) →* core::int*};
+  return a.{core::num::-}(b);
 static method method6(core::int* a, {core::int* b = #C8}) → core::int*
-  return a.{core::num::-}(b){(core::num*) →* core::int*};
+  return a.{core::num::-}(b);
 static method method7({core::int* a = #C8, core::int* b = #C8}) → core::int*
-  return a.{core::num::-}(b){(core::num*) →* core::int*};
+  return a.{core::num::-}(b);
 static method main() → dynamic {
   self::callField(new self::Class::•());
   self::callGetter(new self::Class::•());
@@ -134,44 +134,44 @@
   self::callGetter(new self::Subclass::•());
 }
 static method callField(self::Class* c) → dynamic {
-  self::expect(0, c.{self::Class::field1a}{core::Function*}());
-  self::expect(0, c.{self::Class::field1b}{() →* core::int*}(){() →* core::int*});
-  self::expect(42.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t1 = c in let final core::int* #t2 = self::read(42) in #t1.{self::Class::field2}{(core::int*) →* core::int*}(#t2){(core::int*) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t3 = c in let final core::int* #t4 = self::read(12) in let final core::int* #t5 = self::read(23) in #t3.{self::Class::field3}{(core::int*, core::int*) →* core::int*}(#t4, #t5){(core::int*, core::int*) →* core::int*});
-  self::expect(12, let final self::Class* #t6 = c in let final core::int* #t7 = self::read(12) in #t6.{self::Class::field4}{(core::int*, [core::int*]) →* core::int*}(#t7){(core::int*, [core::int*]) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t8 = c in let final core::int* #t9 = self::read(12) in let final core::int* #t10 = self::read(23) in #t8.{self::Class::field4}{(core::int*, [core::int*]) →* core::int*}(#t9, #t10){(core::int*, [core::int*]) →* core::int*});
-  self::expect(0, c.{self::Class::field5}{([core::int*, core::int*]) →* core::int*}(){([core::int*, core::int*]) →* core::int*});
-  self::expect(12, let final self::Class* #t11 = c in let final core::int* #t12 = self::read(12) in #t11.{self::Class::field5}{([core::int*, core::int*]) →* core::int*}(#t12){([core::int*, core::int*]) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t13 = c in let final core::int* #t14 = self::read(12) in let final core::int* #t15 = self::read(23) in #t13.{self::Class::field5}{([core::int*, core::int*]) →* core::int*}(#t14, #t15){([core::int*, core::int*]) →* core::int*});
-  self::expect(12, let final self::Class* #t16 = c in let final core::int* #t17 = self::read(12) in #t16.{self::Class::field6}{(core::int*, {b: core::int*}) →* core::int*}(#t17){(core::int*, {b: core::int*}) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t18 = c in let final core::int* #t19 = self::read(12) in let final core::int* #t20 = self::read(23) in #t18.{self::Class::field6}{(core::int*, {b: core::int*}) →* core::int*}(#t19, b: #t20){(core::int*, {b: core::int*}) →* core::int*});
-  self::expect(0, c.{self::Class::field7}{({a: core::int*, b: core::int*}) →* core::int*}(){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(12, let final self::Class* #t21 = c in let final core::int* #t22 = self::read(12) in #t21.{self::Class::field7}{({a: core::int*, b: core::int*}) →* core::int*}(a: #t22){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(23.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t23 = c in let final core::int* #t24 = self::read(23) in #t23.{self::Class::field7}{({a: core::int*, b: core::int*}) →* core::int*}(b: #t24){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t25 = c in let final core::int* #t26 = self::read(12) in let final core::int* #t27 = self::read(23) in #t25.{self::Class::field7}{({a: core::int*, b: core::int*}) →* core::int*}(a: #t26, b: #t27){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t28 = c in let final core::int* #t29 = self::read(23) in let final core::int* #t30 = self::read(12) in #t28.{self::Class::field7}{({a: core::int*, b: core::int*}) →* core::int*}(b: #t29, a: #t30){({a: core::int*, b: core::int*}) →* core::int*});
+  self::expect(0, c.{self::Class::field1a}.call());
+  self::expect(0, c.{self::Class::field1b}.call());
+  self::expect(42.{core::int::unary-}(), let final self::Class* #t1 = c in let final core::int* #t2 = self::read(42) in #t1.{self::Class::field2}.call(#t2));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t3 = c in let final core::int* #t4 = self::read(12) in let final core::int* #t5 = self::read(23) in #t3.{self::Class::field3}.call(#t4, #t5));
+  self::expect(12, let final self::Class* #t6 = c in let final core::int* #t7 = self::read(12) in #t6.{self::Class::field4}.call(#t7));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t8 = c in let final core::int* #t9 = self::read(12) in let final core::int* #t10 = self::read(23) in #t8.{self::Class::field4}.call(#t9, #t10));
+  self::expect(0, c.{self::Class::field5}.call());
+  self::expect(12, let final self::Class* #t11 = c in let final core::int* #t12 = self::read(12) in #t11.{self::Class::field5}.call(#t12));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t13 = c in let final core::int* #t14 = self::read(12) in let final core::int* #t15 = self::read(23) in #t13.{self::Class::field5}.call(#t14, #t15));
+  self::expect(12, let final self::Class* #t16 = c in let final core::int* #t17 = self::read(12) in #t16.{self::Class::field6}.call(#t17));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t18 = c in let final core::int* #t19 = self::read(12) in let final core::int* #t20 = self::read(23) in #t18.{self::Class::field6}.call(#t19, b: #t20));
+  self::expect(0, c.{self::Class::field7}.call());
+  self::expect(12, let final self::Class* #t21 = c in let final core::int* #t22 = self::read(12) in #t21.{self::Class::field7}.call(a: #t22));
+  self::expect(23.{core::int::unary-}(), let final self::Class* #t23 = c in let final core::int* #t24 = self::read(23) in #t23.{self::Class::field7}.call(b: #t24));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t25 = c in let final core::int* #t26 = self::read(12) in let final core::int* #t27 = self::read(23) in #t25.{self::Class::field7}.call(a: #t26, b: #t27));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t28 = c in let final core::int* #t29 = self::read(23) in let final core::int* #t30 = self::read(12) in #t28.{self::Class::field7}.call(b: #t29, a: #t30));
 }
 static method callGetter(self::Class* c) → dynamic {
-  self::expect(0, c.{self::Class::getter1a}{core::Function*}());
-  self::expect(0, c.{self::Class::getter1b}{() →* core::int*}(){() →* core::int*});
-  self::expect(42.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t31 = c in let final core::int* #t32 = self::read(42) in #t31.{self::Class::getter2}{(core::int*) →* core::int*}(#t32){(core::int*) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t33 = c in let final core::int* #t34 = self::read(12) in let final core::int* #t35 = self::read(23) in #t33.{self::Class::getter3}{(core::int*, core::int*) →* core::int*}(#t34, #t35){(core::int*, core::int*) →* core::int*});
-  self::expect(12, let final self::Class* #t36 = c in let final core::int* #t37 = self::read(12) in #t36.{self::Class::getter4}{(core::int*, [core::int*]) →* core::int*}(#t37){(core::int*, [core::int*]) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t38 = c in let final core::int* #t39 = self::read(12) in let final core::int* #t40 = self::read(23) in #t38.{self::Class::getter4}{(core::int*, [core::int*]) →* core::int*}(#t39, #t40){(core::int*, [core::int*]) →* core::int*});
-  self::expect(0, c.{self::Class::getter5}{([core::int*, core::int*]) →* core::int*}(){([core::int*, core::int*]) →* core::int*});
-  self::expect(12, let final self::Class* #t41 = c in let final core::int* #t42 = self::read(12) in #t41.{self::Class::getter5}{([core::int*, core::int*]) →* core::int*}(#t42){([core::int*, core::int*]) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t43 = c in let final core::int* #t44 = self::read(12) in let final core::int* #t45 = self::read(23) in #t43.{self::Class::getter5}{([core::int*, core::int*]) →* core::int*}(#t44, #t45){([core::int*, core::int*]) →* core::int*});
-  self::expect(12, let final self::Class* #t46 = c in let final core::int* #t47 = self::read(12) in #t46.{self::Class::getter6}{(core::int*, {b: core::int*}) →* core::int*}(#t47){(core::int*, {b: core::int*}) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t48 = c in let final core::int* #t49 = self::read(12) in let final core::int* #t50 = self::read(23) in #t48.{self::Class::getter6}{(core::int*, {b: core::int*}) →* core::int*}(#t49, b: #t50){(core::int*, {b: core::int*}) →* core::int*});
-  self::expect(0, c.{self::Class::getter7}{({a: core::int*, b: core::int*}) →* core::int*}(){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(12, let final self::Class* #t51 = c in let final core::int* #t52 = self::read(12) in #t51.{self::Class::getter7}{({a: core::int*, b: core::int*}) →* core::int*}(a: #t52){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(23.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t53 = c in let final core::int* #t54 = self::read(23) in #t53.{self::Class::getter7}{({a: core::int*, b: core::int*}) →* core::int*}(b: #t54){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t55 = c in let final core::int* #t56 = self::read(12) in let final core::int* #t57 = self::read(23) in #t55.{self::Class::getter7}{({a: core::int*, b: core::int*}) →* core::int*}(a: #t56, b: #t57){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t58 = c in let final core::int* #t59 = self::read(23) in let final core::int* #t60 = self::read(12) in #t58.{self::Class::getter7}{({a: core::int*, b: core::int*}) →* core::int*}(b: #t59, a: #t60){({a: core::int*, b: core::int*}) →* core::int*});
+  self::expect(0, c.{self::Class::getter1a}.call());
+  self::expect(0, c.{self::Class::getter1b}.call());
+  self::expect(42.{core::int::unary-}(), let final self::Class* #t31 = c in let final core::int* #t32 = self::read(42) in #t31.{self::Class::getter2}.call(#t32));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t33 = c in let final core::int* #t34 = self::read(12) in let final core::int* #t35 = self::read(23) in #t33.{self::Class::getter3}.call(#t34, #t35));
+  self::expect(12, let final self::Class* #t36 = c in let final core::int* #t37 = self::read(12) in #t36.{self::Class::getter4}.call(#t37));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t38 = c in let final core::int* #t39 = self::read(12) in let final core::int* #t40 = self::read(23) in #t38.{self::Class::getter4}.call(#t39, #t40));
+  self::expect(0, c.{self::Class::getter5}.call());
+  self::expect(12, let final self::Class* #t41 = c in let final core::int* #t42 = self::read(12) in #t41.{self::Class::getter5}.call(#t42));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t43 = c in let final core::int* #t44 = self::read(12) in let final core::int* #t45 = self::read(23) in #t43.{self::Class::getter5}.call(#t44, #t45));
+  self::expect(12, let final self::Class* #t46 = c in let final core::int* #t47 = self::read(12) in #t46.{self::Class::getter6}.call(#t47));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t48 = c in let final core::int* #t49 = self::read(12) in let final core::int* #t50 = self::read(23) in #t48.{self::Class::getter6}.call(#t49, b: #t50));
+  self::expect(0, c.{self::Class::getter7}.call());
+  self::expect(12, let final self::Class* #t51 = c in let final core::int* #t52 = self::read(12) in #t51.{self::Class::getter7}.call(a: #t52));
+  self::expect(23.{core::int::unary-}(), let final self::Class* #t53 = c in let final core::int* #t54 = self::read(23) in #t53.{self::Class::getter7}.call(b: #t54));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t55 = c in let final core::int* #t56 = self::read(12) in let final core::int* #t57 = self::read(23) in #t55.{self::Class::getter7}.call(a: #t56, b: #t57));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t58 = c in let final core::int* #t59 = self::read(23) in let final core::int* #t60 = self::read(12) in #t58.{self::Class::getter7}.call(b: #t59, a: #t60));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
   self::enableRead = true;
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/general/getter_call.dart.weak.transformed.expect b/pkg/front_end/testcases/general/getter_call.dart.weak.transformed.expect
index c9ab79c..7d5a3ba 100644
--- a/pkg/front_end/testcases/general/getter_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/getter_call.dart.weak.transformed.expect
@@ -112,21 +112,21 @@
 }
 static field core::bool* enableRead = true;
 static method read(core::int* value) → core::int*
-  return self::enableRead ?{core::int*} value : 1.{core::int::unary-}(){() →* core::int*};
+  return self::enableRead ?{core::int*} value : 1.{core::int::unary-}();
 static method method1() → core::int*
   return 0;
 static method method2(core::int* a) → core::int*
-  return a.{core::int::unary-}(){() →* core::int*};
+  return a.{core::int::unary-}();
 static method method3(core::int* a, core::int* b) → core::int*
-  return a.{core::num::-}(b){(core::num*) →* core::int*};
+  return a.{core::num::-}(b);
 static method method4(core::int* a, [core::int* b = #C8]) → core::int*
-  return a.{core::num::-}(b){(core::num*) →* core::int*};
+  return a.{core::num::-}(b);
 static method method5([core::int* a = #C8, core::int* b = #C8]) → core::int*
-  return a.{core::num::-}(b){(core::num*) →* core::int*};
+  return a.{core::num::-}(b);
 static method method6(core::int* a, {core::int* b = #C8}) → core::int*
-  return a.{core::num::-}(b){(core::num*) →* core::int*};
+  return a.{core::num::-}(b);
 static method method7({core::int* a = #C8, core::int* b = #C8}) → core::int*
-  return a.{core::num::-}(b){(core::num*) →* core::int*};
+  return a.{core::num::-}(b);
 static method main() → dynamic {
   self::callField(new self::Class::•());
   self::callGetter(new self::Class::•());
@@ -134,44 +134,44 @@
   self::callGetter(new self::Subclass::•());
 }
 static method callField(self::Class* c) → dynamic {
-  self::expect(0, c.{self::Class::field1a}{core::Function*}());
-  self::expect(0, c.{self::Class::field1b}{() →* core::int*}(){() →* core::int*});
-  self::expect(42.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t1 = c in let final core::int* #t2 = self::read(42) in #t1.{self::Class::field2}{(core::int*) →* core::int*}(#t2){(core::int*) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t3 = c in let final core::int* #t4 = self::read(12) in let final core::int* #t5 = self::read(23) in #t3.{self::Class::field3}{(core::int*, core::int*) →* core::int*}(#t4, #t5){(core::int*, core::int*) →* core::int*});
-  self::expect(12, let final self::Class* #t6 = c in let final core::int* #t7 = self::read(12) in #t6.{self::Class::field4}{(core::int*, [core::int*]) →* core::int*}(#t7){(core::int*, [core::int*]) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t8 = c in let final core::int* #t9 = self::read(12) in let final core::int* #t10 = self::read(23) in #t8.{self::Class::field4}{(core::int*, [core::int*]) →* core::int*}(#t9, #t10){(core::int*, [core::int*]) →* core::int*});
-  self::expect(0, c.{self::Class::field5}{([core::int*, core::int*]) →* core::int*}(){([core::int*, core::int*]) →* core::int*});
-  self::expect(12, let final self::Class* #t11 = c in let final core::int* #t12 = self::read(12) in #t11.{self::Class::field5}{([core::int*, core::int*]) →* core::int*}(#t12){([core::int*, core::int*]) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t13 = c in let final core::int* #t14 = self::read(12) in let final core::int* #t15 = self::read(23) in #t13.{self::Class::field5}{([core::int*, core::int*]) →* core::int*}(#t14, #t15){([core::int*, core::int*]) →* core::int*});
-  self::expect(12, let final self::Class* #t16 = c in let final core::int* #t17 = self::read(12) in #t16.{self::Class::field6}{(core::int*, {b: core::int*}) →* core::int*}(#t17){(core::int*, {b: core::int*}) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t18 = c in let final core::int* #t19 = self::read(12) in let final core::int* #t20 = self::read(23) in #t18.{self::Class::field6}{(core::int*, {b: core::int*}) →* core::int*}(#t19, b: #t20){(core::int*, {b: core::int*}) →* core::int*});
-  self::expect(0, c.{self::Class::field7}{({a: core::int*, b: core::int*}) →* core::int*}(){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(12, let final self::Class* #t21 = c in let final core::int* #t22 = self::read(12) in #t21.{self::Class::field7}{({a: core::int*, b: core::int*}) →* core::int*}(a: #t22){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(23.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t23 = c in let final core::int* #t24 = self::read(23) in #t23.{self::Class::field7}{({a: core::int*, b: core::int*}) →* core::int*}(b: #t24){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t25 = c in let final core::int* #t26 = self::read(12) in let final core::int* #t27 = self::read(23) in #t25.{self::Class::field7}{({a: core::int*, b: core::int*}) →* core::int*}(a: #t26, b: #t27){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t28 = c in let final core::int* #t29 = self::read(23) in let final core::int* #t30 = self::read(12) in #t28.{self::Class::field7}{({a: core::int*, b: core::int*}) →* core::int*}(b: #t29, a: #t30){({a: core::int*, b: core::int*}) →* core::int*});
+  self::expect(0, c.{self::Class::field1a}.call());
+  self::expect(0, c.{self::Class::field1b}.call());
+  self::expect(42.{core::int::unary-}(), let final self::Class* #t1 = c in let final core::int* #t2 = self::read(42) in #t1.{self::Class::field2}.call(#t2));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t3 = c in let final core::int* #t4 = self::read(12) in let final core::int* #t5 = self::read(23) in #t3.{self::Class::field3}.call(#t4, #t5));
+  self::expect(12, let final self::Class* #t6 = c in let final core::int* #t7 = self::read(12) in #t6.{self::Class::field4}.call(#t7));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t8 = c in let final core::int* #t9 = self::read(12) in let final core::int* #t10 = self::read(23) in #t8.{self::Class::field4}.call(#t9, #t10));
+  self::expect(0, c.{self::Class::field5}.call());
+  self::expect(12, let final self::Class* #t11 = c in let final core::int* #t12 = self::read(12) in #t11.{self::Class::field5}.call(#t12));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t13 = c in let final core::int* #t14 = self::read(12) in let final core::int* #t15 = self::read(23) in #t13.{self::Class::field5}.call(#t14, #t15));
+  self::expect(12, let final self::Class* #t16 = c in let final core::int* #t17 = self::read(12) in #t16.{self::Class::field6}.call(#t17));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t18 = c in let final core::int* #t19 = self::read(12) in let final core::int* #t20 = self::read(23) in #t18.{self::Class::field6}.call(#t19, b: #t20));
+  self::expect(0, c.{self::Class::field7}.call());
+  self::expect(12, let final self::Class* #t21 = c in let final core::int* #t22 = self::read(12) in #t21.{self::Class::field7}.call(a: #t22));
+  self::expect(23.{core::int::unary-}(), let final self::Class* #t23 = c in let final core::int* #t24 = self::read(23) in #t23.{self::Class::field7}.call(b: #t24));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t25 = c in let final core::int* #t26 = self::read(12) in let final core::int* #t27 = self::read(23) in #t25.{self::Class::field7}.call(a: #t26, b: #t27));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t28 = c in let final core::int* #t29 = self::read(23) in let final core::int* #t30 = self::read(12) in #t28.{self::Class::field7}.call(b: #t29, a: #t30));
 }
 static method callGetter(self::Class* c) → dynamic {
-  self::expect(0, c.{self::Class::getter1a}{core::Function*}());
-  self::expect(0, c.{self::Class::getter1b}{() →* core::int*}(){() →* core::int*});
-  self::expect(42.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t31 = c in let final core::int* #t32 = self::read(42) in #t31.{self::Class::getter2}{(core::int*) →* core::int*}(#t32){(core::int*) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t33 = c in let final core::int* #t34 = self::read(12) in let final core::int* #t35 = self::read(23) in #t33.{self::Class::getter3}{(core::int*, core::int*) →* core::int*}(#t34, #t35){(core::int*, core::int*) →* core::int*});
-  self::expect(12, let final self::Class* #t36 = c in let final core::int* #t37 = self::read(12) in #t36.{self::Class::getter4}{(core::int*, [core::int*]) →* core::int*}(#t37){(core::int*, [core::int*]) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t38 = c in let final core::int* #t39 = self::read(12) in let final core::int* #t40 = self::read(23) in #t38.{self::Class::getter4}{(core::int*, [core::int*]) →* core::int*}(#t39, #t40){(core::int*, [core::int*]) →* core::int*});
-  self::expect(0, c.{self::Class::getter5}{([core::int*, core::int*]) →* core::int*}(){([core::int*, core::int*]) →* core::int*});
-  self::expect(12, let final self::Class* #t41 = c in let final core::int* #t42 = self::read(12) in #t41.{self::Class::getter5}{([core::int*, core::int*]) →* core::int*}(#t42){([core::int*, core::int*]) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t43 = c in let final core::int* #t44 = self::read(12) in let final core::int* #t45 = self::read(23) in #t43.{self::Class::getter5}{([core::int*, core::int*]) →* core::int*}(#t44, #t45){([core::int*, core::int*]) →* core::int*});
-  self::expect(12, let final self::Class* #t46 = c in let final core::int* #t47 = self::read(12) in #t46.{self::Class::getter6}{(core::int*, {b: core::int*}) →* core::int*}(#t47){(core::int*, {b: core::int*}) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t48 = c in let final core::int* #t49 = self::read(12) in let final core::int* #t50 = self::read(23) in #t48.{self::Class::getter6}{(core::int*, {b: core::int*}) →* core::int*}(#t49, b: #t50){(core::int*, {b: core::int*}) →* core::int*});
-  self::expect(0, c.{self::Class::getter7}{({a: core::int*, b: core::int*}) →* core::int*}(){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(12, let final self::Class* #t51 = c in let final core::int* #t52 = self::read(12) in #t51.{self::Class::getter7}{({a: core::int*, b: core::int*}) →* core::int*}(a: #t52){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(23.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t53 = c in let final core::int* #t54 = self::read(23) in #t53.{self::Class::getter7}{({a: core::int*, b: core::int*}) →* core::int*}(b: #t54){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t55 = c in let final core::int* #t56 = self::read(12) in let final core::int* #t57 = self::read(23) in #t55.{self::Class::getter7}{({a: core::int*, b: core::int*}) →* core::int*}(a: #t56, b: #t57){({a: core::int*, b: core::int*}) →* core::int*});
-  self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t58 = c in let final core::int* #t59 = self::read(23) in let final core::int* #t60 = self::read(12) in #t58.{self::Class::getter7}{({a: core::int*, b: core::int*}) →* core::int*}(b: #t59, a: #t60){({a: core::int*, b: core::int*}) →* core::int*});
+  self::expect(0, c.{self::Class::getter1a}.call());
+  self::expect(0, c.{self::Class::getter1b}.call());
+  self::expect(42.{core::int::unary-}(), let final self::Class* #t31 = c in let final core::int* #t32 = self::read(42) in #t31.{self::Class::getter2}.call(#t32));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t33 = c in let final core::int* #t34 = self::read(12) in let final core::int* #t35 = self::read(23) in #t33.{self::Class::getter3}.call(#t34, #t35));
+  self::expect(12, let final self::Class* #t36 = c in let final core::int* #t37 = self::read(12) in #t36.{self::Class::getter4}.call(#t37));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t38 = c in let final core::int* #t39 = self::read(12) in let final core::int* #t40 = self::read(23) in #t38.{self::Class::getter4}.call(#t39, #t40));
+  self::expect(0, c.{self::Class::getter5}.call());
+  self::expect(12, let final self::Class* #t41 = c in let final core::int* #t42 = self::read(12) in #t41.{self::Class::getter5}.call(#t42));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t43 = c in let final core::int* #t44 = self::read(12) in let final core::int* #t45 = self::read(23) in #t43.{self::Class::getter5}.call(#t44, #t45));
+  self::expect(12, let final self::Class* #t46 = c in let final core::int* #t47 = self::read(12) in #t46.{self::Class::getter6}.call(#t47));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t48 = c in let final core::int* #t49 = self::read(12) in let final core::int* #t50 = self::read(23) in #t48.{self::Class::getter6}.call(#t49, b: #t50));
+  self::expect(0, c.{self::Class::getter7}.call());
+  self::expect(12, let final self::Class* #t51 = c in let final core::int* #t52 = self::read(12) in #t51.{self::Class::getter7}.call(a: #t52));
+  self::expect(23.{core::int::unary-}(), let final self::Class* #t53 = c in let final core::int* #t54 = self::read(23) in #t53.{self::Class::getter7}.call(b: #t54));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t55 = c in let final core::int* #t56 = self::read(12) in let final core::int* #t57 = self::read(23) in #t55.{self::Class::getter7}.call(a: #t56, b: #t57));
+  self::expect(11.{core::int::unary-}(), let final self::Class* #t58 = c in let final core::int* #t59 = self::read(23) in let final core::int* #t60 = self::read(12) in #t58.{self::Class::getter7}.call(b: #t59, a: #t60));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
   self::enableRead = true;
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, ${actual}";
 }
 
@@ -187,21 +187,21 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:7:45 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:130:10 -> IntConstant(-42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:131:10 -> IntConstant(-11)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:133:10 -> IntConstant(-11)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:136:10 -> IntConstant(-11)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:138:10 -> IntConstant(-11)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:141:10 -> IntConstant(-23)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:142:10 -> IntConstant(-11)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:143:10 -> IntConstant(-11)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:149:10 -> IntConstant(-42)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:150:10 -> IntConstant(-11)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:152:10 -> IntConstant(-11)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:155:10 -> IntConstant(-11)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:157:10 -> IntConstant(-11)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:160:10 -> IntConstant(-23)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:161:10 -> IntConstant(-11)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///getter_call.dart:162:10 -> IntConstant(-11)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:7:45 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:130:10 -> IntConstant(-42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:131:10 -> IntConstant(-11)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:133:10 -> IntConstant(-11)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:136:10 -> IntConstant(-11)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:138:10 -> IntConstant(-11)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:141:10 -> IntConstant(-23)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:142:10 -> IntConstant(-11)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:143:10 -> IntConstant(-11)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:149:10 -> IntConstant(-42)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:150:10 -> IntConstant(-11)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:152:10 -> IntConstant(-11)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:155:10 -> IntConstant(-11)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:157:10 -> IntConstant(-11)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:160:10 -> IntConstant(-23)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:161:10 -> IntConstant(-11)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///getter_call.dart:162:10 -> IntConstant(-11)
 Extra constant evaluation: evaluated: 354, effectively constant: 17
diff --git a/pkg/front_end/testcases/general/if_null_in_cascade.dart.weak.expect b/pkg/front_end/testcases/general/if_null_in_cascade.dart.weak.expect
index 9873ac0..bb43faf 100644
--- a/pkg/front_end/testcases/general/if_null_in_cascade.dart.weak.expect
+++ b/pkg/front_end/testcases/general/if_null_in_cascade.dart.weak.expect
@@ -21,7 +21,7 @@
 static method main() → dynamic {
   self::Class* a;
   self::Class* b = new self::Class::•();
-  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2 == null ?{self::Class*} b : #t2 in block {
-    #t1.{self::Class::method}(){() →* dynamic};
+  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{self::Class::==}(null) ?{self::Class*} b : #t2 in block {
+    #t1.{self::Class::method}();
   } =>#t1;
 }
diff --git a/pkg/front_end/testcases/general/if_null_in_cascade.dart.weak.transformed.expect b/pkg/front_end/testcases/general/if_null_in_cascade.dart.weak.transformed.expect
index 9873ac0..bb43faf 100644
--- a/pkg/front_end/testcases/general/if_null_in_cascade.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/if_null_in_cascade.dart.weak.transformed.expect
@@ -21,7 +21,7 @@
 static method main() → dynamic {
   self::Class* a;
   self::Class* b = new self::Class::•();
-  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2 == null ?{self::Class*} b : #t2 in block {
-    #t1.{self::Class::method}(){() →* dynamic};
+  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{self::Class::==}(null) ?{self::Class*} b : #t2 in block {
+    #t1.{self::Class::method}();
   } =>#t1;
 }
diff --git a/pkg/front_end/testcases/general/if_null_in_list_literal.dart.weak.expect b/pkg/front_end/testcases/general/if_null_in_list_literal.dart.weak.expect
index e781dcd..0cc41e9 100644
--- a/pkg/front_end/testcases/general/if_null_in_list_literal.dart.weak.expect
+++ b/pkg/front_end/testcases/general/if_null_in_list_literal.dart.weak.expect
@@ -5,5 +5,5 @@
 static method main() → dynamic {
   core::Object* a;
   core::Object* b;
-  return <core::Object*>[let final core::Object* #t1 = a in #t1 == null ?{core::Object*} b : #t1];
+  return <core::Object*>[let final core::Object* #t1 = a in #t1.{core::Object::==}(null) ?{core::Object*} b : #t1];
 }
diff --git a/pkg/front_end/testcases/general/if_null_in_list_literal.dart.weak.transformed.expect b/pkg/front_end/testcases/general/if_null_in_list_literal.dart.weak.transformed.expect
index 607d0f5..188b5b3 100644
--- a/pkg/front_end/testcases/general/if_null_in_list_literal.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/if_null_in_list_literal.dart.weak.transformed.expect
@@ -5,5 +5,5 @@
 static method main() → dynamic {
   core::Object* a;
   core::Object* b;
-  return core::_GrowableList::_literal1<core::Object*>(let final core::Object* #t1 = a in #t1 == null ?{core::Object*} b : #t1);
+  return core::_GrowableList::_literal1<core::Object*>(let final core::Object* #t1 = a in #t1.{core::Object::==}(null) ?{core::Object*} b : #t1);
 }
diff --git a/pkg/front_end/testcases/general/if_null_in_set_literal.dart.weak.expect b/pkg/front_end/testcases/general/if_null_in_set_literal.dart.weak.expect
index b700240..bbc6109 100644
--- a/pkg/front_end/testcases/general/if_null_in_set_literal.dart.weak.expect
+++ b/pkg/front_end/testcases/general/if_null_in_set_literal.dart.weak.expect
@@ -8,6 +8,6 @@
   core::Object* b;
   return block {
     final core::Set<core::Object*>* #t1 = col::LinkedHashSet::•<core::Object*>();
-    #t1.{core::Set::add}(let final core::Object* #t2 = a in #t2 == null ?{core::Object*} b : #t2){(core::Object*) →* core::bool*};
+    #t1.{core::Set::add}{Invariant}(let final core::Object* #t2 = a in #t2.{core::Object::==}(null) ?{core::Object*} b : #t2);
   } =>#t1;
 }
diff --git a/pkg/front_end/testcases/general/if_null_in_set_literal.dart.weak.transformed.expect b/pkg/front_end/testcases/general/if_null_in_set_literal.dart.weak.transformed.expect
index 1cdc7aa..637e41b 100644
--- a/pkg/front_end/testcases/general/if_null_in_set_literal.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/if_null_in_set_literal.dart.weak.transformed.expect
@@ -8,6 +8,6 @@
   core::Object* b;
   return block {
     final core::Set<core::Object*>* #t1 = new col::_CompactLinkedHashSet::•<core::Object*>();
-    #t1.{core::Set::add}(let final core::Object* #t2 = a in #t2 == null ?{core::Object*} b : #t2){(core::Object*) →* core::bool*};
+    #t1.{core::Set::add}{Invariant}(let final core::Object* #t2 = a in #t2.{core::Object::==}(null) ?{core::Object*} b : #t2);
   } =>#t1;
 }
diff --git a/pkg/front_end/testcases/general/illegal_named_function_expression.dart.weak.expect b/pkg/front_end/testcases/general/illegal_named_function_expression.dart.weak.expect
index 96419b3..cedeb06 100644
--- a/pkg/front_end/testcases/general/illegal_named_function_expression.dart.weak.expect
+++ b/pkg/front_end/testcases/general/illegal_named_function_expression.dart.weak.expect
@@ -15,6 +15,6 @@
 
 static method main() → dynamic {
   <T extends core::Object* = dynamic>(T*) →* Null x = let final <T extends core::Object* = dynamic>(T*) →* Null f = <T extends core::Object* = dynamic>(T* t) → Null {} in f;
-  core::print(x.{core::Object::runtimeType}{core::Type*});
+  core::print(x.{core::Object::runtimeType});
   core::print(let final <T extends core::Object* = dynamic>(T*) →* Null g = <T extends core::Object* = dynamic>(T* t) → Null {} in g);
 }
diff --git a/pkg/front_end/testcases/general/illegal_named_function_expression.dart.weak.transformed.expect b/pkg/front_end/testcases/general/illegal_named_function_expression.dart.weak.transformed.expect
index 96419b3..cedeb06 100644
--- a/pkg/front_end/testcases/general/illegal_named_function_expression.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/illegal_named_function_expression.dart.weak.transformed.expect
@@ -15,6 +15,6 @@
 
 static method main() → dynamic {
   <T extends core::Object* = dynamic>(T*) →* Null x = let final <T extends core::Object* = dynamic>(T*) →* Null f = <T extends core::Object* = dynamic>(T* t) → Null {} in f;
-  core::print(x.{core::Object::runtimeType}{core::Type*});
+  core::print(x.{core::Object::runtimeType});
   core::print(let final <T extends core::Object* = dynamic>(T*) →* Null g = <T extends core::Object* = dynamic>(T* t) → Null {} in g);
 }
diff --git a/pkg/front_end/testcases/general/implicit_constructor_02.dart.weak.expect b/pkg/front_end/testcases/general/implicit_constructor_02.dart.weak.expect
index febd66a..ceafb22f 100644
--- a/pkg/front_end/testcases/general/implicit_constructor_02.dart.weak.expect
+++ b/pkg/front_end/testcases/general/implicit_constructor_02.dart.weak.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M1 extends core::Object {
-  field core::num* v2 = 1.{core::int::unary-}(){() →* core::int*};
+  field core::num* v2 = 1.{core::int::unary-}();
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
@@ -46,10 +46,10 @@
 }
 static method main() → dynamic {
   self::C* c = new self::C::•(true, 2);
-  self::expect(true, c.{self::A::v1}{core::bool*});
-  self::expect(1.{core::int::unary-}(){() →* core::int*}, c.{self::C::v2}{core::num*});
+  self::expect(true, c.{self::A::v1});
+  self::expect(1.{core::int::unary-}(), c.{self::C::v2});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/general/implicit_constructor_02.dart.weak.transformed.expect b/pkg/front_end/testcases/general/implicit_constructor_02.dart.weak.transformed.expect
index 2bee5f5..362f144 100644
--- a/pkg/front_end/testcases/general/implicit_constructor_02.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/implicit_constructor_02.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M1 extends core::Object {
-  field core::num* v2 = 1.{core::int::unary-}(){() →* core::int*};
+  field core::num* v2 = 1.{core::int::unary-}();
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
@@ -36,24 +36,24 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends self::A implements self::M1 /*isEliminatedMixin*/  {
-  field core::num* v2 = 1.{core::int::unary-}(){() →* core::int*};
+  field core::num* v2 = 1.{core::int::unary-}();
   synthetic constructor •(core::bool* v1, core::num* v2) → self::C*
     : super self::A::•(v1, v2)
     ;
 }
 static method main() → dynamic {
   self::C* c = new self::C::•(true, 2);
-  self::expect(true, c.{self::A::v1}{core::bool*});
-  self::expect(1.{core::int::unary-}(){() →* core::int*}, c.{self::C::v2}{core::num*});
+  self::expect(true, c.{self::A::v1});
+  self::expect(1.{core::int::unary-}(), c.{self::C::v2});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///implicit_constructor_02.dart:14:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///implicit_constructor_02.dart:14:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///implicit_constructor_02.dart:22:10 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///implicit_constructor_02.dart:14:12 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///implicit_constructor_02.dart:14:12 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///implicit_constructor_02.dart:22:10 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 22, effectively constant: 3
diff --git a/pkg/front_end/testcases/general/implicit_new.dart.weak.expect b/pkg/front_end/testcases/general/implicit_new.dart.weak.expect
index aa138c7..ee6950c 100644
--- a/pkg/front_end/testcases/general/implicit_new.dart.weak.expect
+++ b/pkg/front_end/testcases/general/implicit_new.dart.weak.expect
@@ -91,16 +91,16 @@
   core::Map<core::String*, core::Object*>* m = <core::String*, core::Object*>{"foo": new self::Foo::•(), "bar": new self::Bar::named()};
   m = <core::String*, core::Object*>{"foo": new self::Foo::•(), "bar": new self::Bar::named()};
   self::IndexTester* i = new self::IndexTester::•();
-  i.{self::IndexTester::[]}(new self::Foo::•()){(dynamic) →* dynamic};
-  i.{self::IndexTester::[]}(new self::Foo::•()){(dynamic) →* dynamic};
-  i.{self::IndexTester::[]}(new self::Bar::named()){(dynamic) →* dynamic};
-  i.{self::IndexTester::[]}(new self::Bar::named()){(dynamic) →* dynamic};
-  i.{self::IndexTester::[]=}(new self::Foo::•(), null){(dynamic, dynamic) →* void};
-  i.{self::IndexTester::[]=}(new self::Foo::•(), null){(dynamic, dynamic) →* void};
-  i.{self::IndexTester::[]=}(new self::Bar::named(), null){(dynamic, dynamic) →* void};
-  i.{self::IndexTester::[]=}(new self::Bar::named(), null){(dynamic, dynamic) →* void};
-  new self::Foo::•().{self::Foo::+}(new self::Bar::named()){(dynamic) →* dynamic};
-  new self::Foo::•().{self::Foo::+}(new self::Bar::named()){(dynamic) →* dynamic};
-  new self::Bar::named().{self::Bar::+}(new self::Foo::•()){(dynamic) →* dynamic};
-  new self::Bar::named().{self::Bar::+}(new self::Foo::•()){(dynamic) →* dynamic};
+  i.{self::IndexTester::[]}(new self::Foo::•());
+  i.{self::IndexTester::[]}(new self::Foo::•());
+  i.{self::IndexTester::[]}(new self::Bar::named());
+  i.{self::IndexTester::[]}(new self::Bar::named());
+  i.{self::IndexTester::[]=}(new self::Foo::•(), null);
+  i.{self::IndexTester::[]=}(new self::Foo::•(), null);
+  i.{self::IndexTester::[]=}(new self::Bar::named(), null);
+  i.{self::IndexTester::[]=}(new self::Bar::named(), null);
+  new self::Foo::•().{self::Foo::+}(new self::Bar::named());
+  new self::Foo::•().{self::Foo::+}(new self::Bar::named());
+  new self::Bar::named().{self::Bar::+}(new self::Foo::•());
+  new self::Bar::named().{self::Bar::+}(new self::Foo::•());
 }
diff --git a/pkg/front_end/testcases/general/implicit_new.dart.weak.transformed.expect b/pkg/front_end/testcases/general/implicit_new.dart.weak.transformed.expect
index 8007f6e..e510a2f 100644
--- a/pkg/front_end/testcases/general/implicit_new.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/implicit_new.dart.weak.transformed.expect
@@ -91,16 +91,16 @@
   core::Map<core::String*, core::Object*>* m = <core::String*, core::Object*>{"foo": new self::Foo::•(), "bar": new self::Bar::named()};
   m = <core::String*, core::Object*>{"foo": new self::Foo::•(), "bar": new self::Bar::named()};
   self::IndexTester* i = new self::IndexTester::•();
-  i.{self::IndexTester::[]}(new self::Foo::•()){(dynamic) →* dynamic};
-  i.{self::IndexTester::[]}(new self::Foo::•()){(dynamic) →* dynamic};
-  i.{self::IndexTester::[]}(new self::Bar::named()){(dynamic) →* dynamic};
-  i.{self::IndexTester::[]}(new self::Bar::named()){(dynamic) →* dynamic};
-  i.{self::IndexTester::[]=}(new self::Foo::•(), null){(dynamic, dynamic) →* void};
-  i.{self::IndexTester::[]=}(new self::Foo::•(), null){(dynamic, dynamic) →* void};
-  i.{self::IndexTester::[]=}(new self::Bar::named(), null){(dynamic, dynamic) →* void};
-  i.{self::IndexTester::[]=}(new self::Bar::named(), null){(dynamic, dynamic) →* void};
-  new self::Foo::•().{self::Foo::+}(new self::Bar::named()){(dynamic) →* dynamic};
-  new self::Foo::•().{self::Foo::+}(new self::Bar::named()){(dynamic) →* dynamic};
-  new self::Bar::named().{self::Bar::+}(new self::Foo::•()){(dynamic) →* dynamic};
-  new self::Bar::named().{self::Bar::+}(new self::Foo::•()){(dynamic) →* dynamic};
+  i.{self::IndexTester::[]}(new self::Foo::•());
+  i.{self::IndexTester::[]}(new self::Foo::•());
+  i.{self::IndexTester::[]}(new self::Bar::named());
+  i.{self::IndexTester::[]}(new self::Bar::named());
+  i.{self::IndexTester::[]=}(new self::Foo::•(), null);
+  i.{self::IndexTester::[]=}(new self::Foo::•(), null);
+  i.{self::IndexTester::[]=}(new self::Bar::named(), null);
+  i.{self::IndexTester::[]=}(new self::Bar::named(), null);
+  new self::Foo::•().{self::Foo::+}(new self::Bar::named());
+  new self::Foo::•().{self::Foo::+}(new self::Bar::named());
+  new self::Bar::named().{self::Bar::+}(new self::Foo::•());
+  new self::Bar::named().{self::Bar::+}(new self::Foo::•());
 }
diff --git a/pkg/front_end/testcases/general/implicit_scope_test.dart.weak.expect b/pkg/front_end/testcases/general/implicit_scope_test.dart.weak.expect
index ef54b52..f041292 100644
--- a/pkg/front_end/testcases/general/implicit_scope_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/implicit_scope_test.dart.weak.expect
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   static method alwaysTrue() → core::bool* {
-    return 1.{core::num::+}(1){(core::num*) →* core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 2;
+    return 1.{core::num::+}(1).{core::num::==}(2);
   }
   static method testMain() → dynamic {
     core::String* a = "foo";
@@ -29,7 +29,7 @@
     }
     exp::Expect::equals("foo", a);
     exp::Expect::equals(null, b);
-    for (core::int* i = 0; i.{core::num::<}(10){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
       core::String* a = "bar";
       core::String* b = "baz";
     }
@@ -39,7 +39,7 @@
       core::String* a = "bar";
       core::String* b = "baz";
     }
-    while ("black" =={core::String::==}{(core::Object*) →* core::bool*} "white")
+    while ("black".{core::String::==}("white"))
     exp::Expect::equals("foo", a);
     exp::Expect::equals(null, b);
   }
diff --git a/pkg/front_end/testcases/general/implicit_scope_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/implicit_scope_test.dart.weak.transformed.expect
index 444893e..19d91ae 100644
--- a/pkg/front_end/testcases/general/implicit_scope_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/implicit_scope_test.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   static method alwaysTrue() → core::bool* {
-    return 1.{core::num::+}(1){(core::num*) →* core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 2;
+    return 1.{core::num::+}(1).{core::num::==}(2);
   }
   static method testMain() → dynamic {
     core::String* a = "foo";
@@ -29,7 +29,7 @@
     }
     exp::Expect::equals("foo", a);
     exp::Expect::equals(null, b);
-    for (core::int* i = 0; i.{core::num::<}(10){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
       core::String* a = "bar";
       core::String* b = "baz";
     }
@@ -39,7 +39,7 @@
       core::String* a = "bar";
       core::String* b = "baz";
     }
-    while ("black" =={core::String::==}{(core::Object*) →* core::bool*} "white")
+    while ("black".{core::String::==}("white"))
     exp::Expect::equals("foo", a);
     exp::Expect::equals(null, b);
   }
@@ -60,6 +60,6 @@
 
 
 Extra constant evaluation status:
-Evaluated: EqualsCall @ org-dartlang-testcase:///implicit_scope_test.dart:11:18 -> BoolConstant(true)
-Evaluated: EqualsCall @ org-dartlang-testcase:///implicit_scope_test.dart:32:49 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///implicit_scope_test.dart:11:18 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///implicit_scope_test.dart:32:49 -> BoolConstant(false)
 Extra constant evaluation: evaluated: 28, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/implicit_this.dart.weak.expect b/pkg/front_end/testcases/general/implicit_this.dart.weak.expect
index 23d7a44..4eec5c6 100644
--- a/pkg/front_end/testcases/general/implicit_this.dart.weak.expect
+++ b/pkg/front_end/testcases/general/implicit_this.dart.weak.expect
@@ -10,7 +10,7 @@
     core::print("Called m");
   }
   method testC() → dynamic {
-    this.{self::C::m}(){() →* dynamic};
+    this.{self::C::m}();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -28,10 +28,10 @@
     : super self::C::•()
     ;
   method testD() → dynamic {
-    this.{self::C::m}(){() →* dynamic};
+    this.{self::C::m}();
   }
 }
 static method main() → dynamic {
-  new self::C::•().{self::C::testC}(){() →* dynamic};
-  new self::D::•().{self::D::testD}(){() →* dynamic};
+  new self::C::•().{self::C::testC}();
+  new self::D::•().{self::D::testD}();
 }
diff --git a/pkg/front_end/testcases/general/implicit_this.dart.weak.transformed.expect b/pkg/front_end/testcases/general/implicit_this.dart.weak.transformed.expect
index 23d7a44..4eec5c6 100644
--- a/pkg/front_end/testcases/general/implicit_this.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/implicit_this.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
     core::print("Called m");
   }
   method testC() → dynamic {
-    this.{self::C::m}(){() →* dynamic};
+    this.{self::C::m}();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -28,10 +28,10 @@
     : super self::C::•()
     ;
   method testD() → dynamic {
-    this.{self::C::m}(){() →* dynamic};
+    this.{self::C::m}();
   }
 }
 static method main() → dynamic {
-  new self::C::•().{self::C::testC}(){() →* dynamic};
-  new self::D::•().{self::D::testD}(){() →* dynamic};
+  new self::C::•().{self::C::testC}();
+  new self::D::•().{self::D::testD}();
 }
diff --git a/pkg/front_end/testcases/general/infer_equals.dart.weak.expect b/pkg/front_end/testcases/general/infer_equals.dart.weak.expect
index 4b8aa53e..f1fea95 100644
--- a/pkg/front_end/testcases/general/infer_equals.dart.weak.expect
+++ b/pkg/front_end/testcases/general/infer_equals.dart.weak.expect
@@ -10,7 +10,7 @@
   operator ==(dynamic o) → core::bool* {
     if(!(o is self::Class*))
       return false;
-    return this.{self::Class::field}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} o{dynamic}.field;
+    return this.{self::Class::field}.{core::Object::==}(o.field);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/infer_equals.dart.weak.transformed.expect b/pkg/front_end/testcases/general/infer_equals.dart.weak.transformed.expect
index 4b8aa53e..f1fea95 100644
--- a/pkg/front_end/testcases/general/infer_equals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/infer_equals.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
   operator ==(dynamic o) → core::bool* {
     if(!(o is self::Class*))
       return false;
-    return this.{self::Class::field}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} o{dynamic}.field;
+    return this.{self::Class::field}.{core::Object::==}(o.field);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/infer_field_type.dart.weak.expect b/pkg/front_end/testcases/general/infer_field_type.dart.weak.expect
index aa6a7e49..5e46a8e 100644
--- a/pkg/front_end/testcases/general/infer_field_type.dart.weak.expect
+++ b/pkg/front_end/testcases/general/infer_field_type.dart.weak.expect
@@ -32,7 +32,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field core::int* topLevelFieldFromA = new self::A::•().{self::A::field}{core::int*};
-static field core::int* topLevelFieldFromB = new self::B::•().{self::B::field}{core::int*};
-static field core::int* topLevelFieldFromC = new self::C::•().{self::C::field}{core::int*};
+static field core::int* topLevelFieldFromA = new self::A::•().{self::A::field};
+static field core::int* topLevelFieldFromB = new self::B::•().{self::B::field};
+static field core::int* topLevelFieldFromC = new self::C::•().{self::C::field};
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/infer_field_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general/infer_field_type.dart.weak.transformed.expect
index aa6a7e49..5e46a8e 100644
--- a/pkg/front_end/testcases/general/infer_field_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/infer_field_type.dart.weak.transformed.expect
@@ -32,7 +32,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field core::int* topLevelFieldFromA = new self::A::•().{self::A::field}{core::int*};
-static field core::int* topLevelFieldFromB = new self::B::•().{self::B::field}{core::int*};
-static field core::int* topLevelFieldFromC = new self::C::•().{self::C::field}{core::int*};
+static field core::int* topLevelFieldFromA = new self::A::•().{self::A::field};
+static field core::int* topLevelFieldFromB = new self::B::•().{self::B::field};
+static field core::int* topLevelFieldFromC = new self::C::•().{self::C::field};
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.weak.expect b/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.weak.expect
index 4e6b1e4..cb4d5f5 100644
--- a/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.weak.expect
+++ b/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.weak.expect
@@ -4,7 +4,7 @@
 
 class Class extends core::Object {
   field core::Map<core::String*, (core::String*) →* Null>* map = <core::String*, (core::String*) →* Null>{"foo": (core::String* a) → Null {
-    core::int* c = a.{core::String::length}{core::int*};
+    core::int* c = a.{core::String::length};
   }};
   synthetic constructor •() → self::Class*
     : super core::Object::•()
diff --git a/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.weak.transformed.expect b/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.weak.transformed.expect
index 4e6b1e4..cb4d5f5 100644
--- a/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 
 class Class extends core::Object {
   field core::Map<core::String*, (core::String*) →* Null>* map = <core::String*, (core::String*) →* Null>{"foo": (core::String* a) → Null {
-    core::int* c = a.{core::String::length}{core::int*};
+    core::int* c = a.{core::String::length};
   }};
   synthetic constructor •() → self::Class*
     : super core::Object::•()
diff --git a/pkg/front_end/testcases/general/invalid_assignment.dart.weak.expect b/pkg/front_end/testcases/general/invalid_assignment.dart.weak.expect
index c8d06c3..8e3787e 100644
--- a/pkg/front_end/testcases/general/invalid_assignment.dart.weak.expect
+++ b/pkg/front_end/testcases/general/invalid_assignment.dart.weak.expect
@@ -40,14 +40,14 @@
   i = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/invalid_assignment.dart:11:7: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   i = s;
       ^" in s as{TypeError} core::int*;
-  i == null ?{core::int*} i = 1 : null;
-  i == null ?{core::Object*} i = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/general/invalid_assignment.dart:13:9: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+  i.{core::num::==}(null) ?{core::int*} i = 1 : null;
+  i.{core::num::==}(null) ?{core::Object*} i = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/general/invalid_assignment.dart:13:9: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   i ??= s;
         ^" in s as{TypeError} core::int* : null;
   a = new self::A::•();
   a = let final Never* #t3 = invalid-expression "pkg/front_end/testcases/general/invalid_assignment.dart:15:5: Error: A value of type 'String' can't be assigned to a variable of type 'A'.
  - 'A' is from 'pkg/front_end/testcases/general/invalid_assignment.dart'.
   a += 1;
-    ^" in a.{self::A::+}(1){(core::int*) →* core::String*} as{TypeError} self::A*;
+    ^" in a.{self::A::+}(1) as{TypeError} self::A*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/invalid_assignment.dart.weak.transformed.expect b/pkg/front_end/testcases/general/invalid_assignment.dart.weak.transformed.expect
index c8d06c3..8e3787e 100644
--- a/pkg/front_end/testcases/general/invalid_assignment.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/invalid_assignment.dart.weak.transformed.expect
@@ -40,14 +40,14 @@
   i = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/invalid_assignment.dart:11:7: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   i = s;
       ^" in s as{TypeError} core::int*;
-  i == null ?{core::int*} i = 1 : null;
-  i == null ?{core::Object*} i = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/general/invalid_assignment.dart:13:9: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+  i.{core::num::==}(null) ?{core::int*} i = 1 : null;
+  i.{core::num::==}(null) ?{core::Object*} i = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/general/invalid_assignment.dart:13:9: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   i ??= s;
         ^" in s as{TypeError} core::int* : null;
   a = new self::A::•();
   a = let final Never* #t3 = invalid-expression "pkg/front_end/testcases/general/invalid_assignment.dart:15:5: Error: A value of type 'String' can't be assigned to a variable of type 'A'.
  - 'A' is from 'pkg/front_end/testcases/general/invalid_assignment.dart'.
   a += 1;
-    ^" in a.{self::A::+}(1){(core::int*) →* core::String*} as{TypeError} self::A*;
+    ^" in a.{self::A::+}(1) as{TypeError} self::A*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/invalid_type.dart.weak.expect b/pkg/front_end/testcases/general/invalid_type.dart.weak.expect
index 0dce077..eee2023 100644
--- a/pkg/front_end/testcases/general/invalid_type.dart.weak.expect
+++ b/pkg/front_end/testcases/general/invalid_type.dart.weak.expect
@@ -25,7 +25,7 @@
   static method foo() → dynamic {
     invalid-expression "pkg/front_end/testcases/general/invalid_type.dart:7:5: Error: Expected identifier, but got 'this'.
     this.bar();
-    ^^^^"{dynamic}.bar();
+    ^^^^".bar();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -39,7 +39,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test() → dynamic {
-  (null as invalid-type){dynamic}.bar();
+  (null as invalid-type).bar();
   invalid-expression "pkg/front_end/testcases/general/invalid_type.dart:13:8: Error: The method 'bar' isn't defined for the class 'Null'.
 Try correcting the name to the name of an existing method, or defining a method named 'bar'.
   null.bar();
diff --git a/pkg/front_end/testcases/general/invalid_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general/invalid_type.dart.weak.transformed.expect
index dae40b0..26b45d2 100644
--- a/pkg/front_end/testcases/general/invalid_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/invalid_type.dart.weak.transformed.expect
@@ -25,7 +25,7 @@
   static method foo() → dynamic {
     invalid-expression "pkg/front_end/testcases/general/invalid_type.dart:7:5: Error: Expected identifier, but got 'this'.
     this.bar();
-    ^^^^"{dynamic}.bar();
+    ^^^^".bar();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -39,7 +39,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test() → dynamic {
-  (null as invalid-type){dynamic}.bar();
+  (null as invalid-type).bar();
   invalid-expression "pkg/front_end/testcases/general/invalid_type.dart:13:8: Error: The method 'bar' isn't defined for the class 'Null'.
 Try correcting the name to the name of an existing method, or defining a method named 'bar'.
   null.bar();
diff --git a/pkg/front_end/testcases/general/invocations.dart.weak.expect b/pkg/front_end/testcases/general/invocations.dart.weak.expect
index f041994..9a47377 100644
--- a/pkg/front_end/testcases/general/invocations.dart.weak.expect
+++ b/pkg/front_end/testcases/general/invocations.dart.weak.expect
@@ -48,22 +48,22 @@
   ^";
   invalid-expression "pkg/front_end/testcases/general/invocations.dart:8:3: Error: Getter not found: 'z'.
   z.print(\"Hello, World!\");
-  ^"{dynamic}.print("Hello, World!");
+  ^".print("Hello, World!");
   invalid-expression "pkg/front_end/testcases/general/invocations.dart:9:3: Error: Getter not found: 'y'.
   y.z.print(\"Hello, World!\");
-  ^"{dynamic}.z{dynamic}.print("Hello, World!");
+  ^".z.print("Hello, World!");
   invalid-expression "pkg/front_end/testcases/general/invocations.dart:10:3: Error: Getter not found: 'x'.
   x.y.z.print(\"Hello, World!\");
-  ^"{dynamic}.y{dynamic}.z{dynamic}.print("Hello, World!");
+  ^".y.z.print("Hello, World!");
   1.{core::num::+}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/invocations.dart:13:7: Error: This expression has type 'void' and can't be used.
       print(\"Hello, World!\") +
-      ^" in core::print("Hello, World!")){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:14:7: Error: Method not found: 'z'.
+      ^" in core::print("Hello, World!")).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:14:7: Error: Method not found: 'z'.
       z(\"Hello, World!\") +
-      ^" as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:15:7: Error: Getter not found: 'z'.
+      ^" as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:15:7: Error: Getter not found: 'z'.
       z.print(\"Hello, World!\") +
-      ^"{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:16:7: Error: Getter not found: 'y'.
+      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:16:7: Error: Getter not found: 'y'.
       y.z.print(\"Hello, World!\") +
-      ^"{dynamic}.z{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:17:7: Error: Getter not found: 'x'.
+      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:17:7: Error: Getter not found: 'x'.
       x.y.z.print(\"Hello, World!\");
-      ^"{dynamic}.y{dynamic}.z{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num*);
 }
diff --git a/pkg/front_end/testcases/general/invocations.dart.weak.transformed.expect b/pkg/front_end/testcases/general/invocations.dart.weak.transformed.expect
index 0ba8884..de95b41 100644
--- a/pkg/front_end/testcases/general/invocations.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/invocations.dart.weak.transformed.expect
@@ -48,22 +48,22 @@
   ^";
   invalid-expression "pkg/front_end/testcases/general/invocations.dart:8:3: Error: Getter not found: 'z'.
   z.print(\"Hello, World!\");
-  ^"{dynamic}.print("Hello, World!");
+  ^".print("Hello, World!");
   invalid-expression "pkg/front_end/testcases/general/invocations.dart:9:3: Error: Getter not found: 'y'.
   y.z.print(\"Hello, World!\");
-  ^"{dynamic}.z{dynamic}.print("Hello, World!");
+  ^".z.print("Hello, World!");
   invalid-expression "pkg/front_end/testcases/general/invocations.dart:10:3: Error: Getter not found: 'x'.
   x.y.z.print(\"Hello, World!\");
-  ^"{dynamic}.y{dynamic}.z{dynamic}.print("Hello, World!");
+  ^".y.z.print("Hello, World!");
   1.{core::num::+}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/invocations.dart:13:7: Error: This expression has type 'void' and can't be used.
       print(\"Hello, World!\") +
-      ^" in core::print("Hello, World!")){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:14:7: Error: Method not found: 'z'.
+      ^" in core::print("Hello, World!")).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:14:7: Error: Method not found: 'z'.
       z(\"Hello, World!\") +
-      ^"){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:15:7: Error: Getter not found: 'z'.
+      ^").{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:15:7: Error: Getter not found: 'z'.
       z.print(\"Hello, World!\") +
-      ^"{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:16:7: Error: Getter not found: 'y'.
+      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:16:7: Error: Getter not found: 'y'.
       y.z.print(\"Hello, World!\") +
-      ^"{dynamic}.z{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:17:7: Error: Getter not found: 'x'.
+      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:17:7: Error: Getter not found: 'x'.
       x.y.z.print(\"Hello, World!\");
-      ^"{dynamic}.y{dynamic}.z{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num*);
 }
diff --git a/pkg/front_end/testcases/general/issue31767.dart.weak.expect b/pkg/front_end/testcases/general/issue31767.dart.weak.expect
index 02fa3bd..8e1ff2d 100644
--- a/pkg/front_end/testcases/general/issue31767.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue31767.dart.weak.expect
@@ -8,7 +8,7 @@
 class C extends core::Object {
   final field core::int* w;
   constructor foo(core::int* x, [core::int* y = #C1, core::int* z = #C1]) → self::C*
-    : self::C::w = self::p("x", x).{core::num::+}(self::p("y", y)){(core::num*) →* core::int*}.{core::num::+}(self::p("z", z)){(core::num*) →* core::int*}, super core::Object::•()
+    : self::C::w = self::p("x", x).{core::num::+}(self::p("y", y)).{core::num::+}(self::p("z", z)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -23,7 +23,7 @@
 }
 abstract class M extends self::C /*isMixinDeclaration*/  {
   get w2() → core::int*
-    return this.{self::C::w}{core::int*}.{core::num::*}(this.{self::C::w}{core::int*}){(core::num*) →* core::int*};
+    return this.{self::C::w}.{core::num::*}(this.{self::C::w});
 }
 class D = self::C with self::M {
   synthetic constructor foo(core::int* x, [core::int* y = #C1, core::int* z = #C1]) → self::D*
@@ -34,7 +34,7 @@
 }
 abstract class N extends iss::A /*isMixinDeclaration*/  {
   get w2() → core::int*
-    return this.{iss::A::w}{core::int*}.{core::num::*}(this.{iss::A::w}{core::int*}){(core::num*) →* core::int*};
+    return this.{iss::A::w}.{core::num::*}(this.{iss::A::w});
 }
 class E = iss::A with self::N {
   synthetic constructor foo(core::int* x, [core::int* y = #C2, core::int* z = #C2, iss::_A* a = #C4]) → self::E*
@@ -45,33 +45,33 @@
 }
 static field core::StringBuffer* sb;
 static method p(core::String* name, core::int* value) → core::int* {
-  self::sb.{core::StringBuffer::write}("${name} = ${value}, "){(core::Object*) →* void};
+  self::sb.{core::StringBuffer::write}("${name} = ${value}, ");
   return value;
 }
 static method main() → dynamic {
   self::sb = new core::StringBuffer::•();
   iss::A* a = new iss::A::foo(1, 2);
-  self::expect("x = 1, y = 2, z = 3, ", self::sb.{core::StringBuffer::toString}(){() →* core::String*});
-  self::expect(6, a.{iss::A::w}{core::int*});
-  self::expect(5, a.{iss::A::a}{iss::_A*}.{iss::_A::field}{core::int*});
+  self::expect("x = 1, y = 2, z = 3, ", self::sb.{core::StringBuffer::toString}());
+  self::expect(6, a.{iss::A::w});
+  self::expect(5, a.{iss::A::a}.{iss::_A::field});
   self::sb = new core::StringBuffer::•();
   self::C* c = new self::C::foo(1, 2);
-  self::expect("x = 1, y = 2, z = 0, ", self::sb.{core::StringBuffer::toString}(){() →* core::String*});
-  self::expect(3, c.{self::C::w}{core::int*});
+  self::expect("x = 1, y = 2, z = 0, ", self::sb.{core::StringBuffer::toString}());
+  self::expect(3, c.{self::C::w});
   self::sb = new core::StringBuffer::•();
   self::D* d = new self::D::foo(1, 2);
-  self::expect("x = 1, y = 2, z = 0, ", self::sb.{core::StringBuffer::toString}(){() →* core::String*});
-  self::expect(3, d.{self::C::w}{core::int*});
-  self::expect(9, d.{self::D::w2}{core::int*});
+  self::expect("x = 1, y = 2, z = 0, ", self::sb.{core::StringBuffer::toString}());
+  self::expect(3, d.{self::C::w});
+  self::expect(9, d.{self::D::w2});
   self::sb = new core::StringBuffer::•();
   self::E* e = new self::E::foo(1, 2);
-  self::expect("x = 1, y = 2, z = 3, ", self::sb.{core::StringBuffer::toString}(){() →* core::String*});
-  self::expect(6, e.{iss::A::w}{core::int*});
-  self::expect(36, e.{self::E::w2}{core::int*});
-  self::expect(5, e.{iss::A::a}{iss::_A*}.{iss::_A::field}{core::int*});
+  self::expect("x = 1, y = 2, z = 3, ", self::sb.{core::StringBuffer::toString}());
+  self::expect(6, e.{iss::A::w});
+  self::expect(36, e.{self::E::w2});
+  self::expect(5, e.{iss::A::a}.{iss::_A::field});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
@@ -86,7 +86,7 @@
   final field core::int* w;
   final field iss::_A* a;
   constructor foo(core::int* x, [core::int* y = #C2, core::int* z = #C2, iss::_A* a = #C4]) → iss::A*
-    : iss::A::a = a, iss::A::w = self::p("x", x).{core::num::+}(self::p("y", y)){(core::num*) →* core::int*}.{core::num::+}(self::p("z", z)){(core::num*) →* core::int*}, super core::Object::•()
+    : iss::A::a = a, iss::A::w = self::p("x", x).{core::num::+}(self::p("y", y)).{core::num::+}(self::p("z", z)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/issue31767.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue31767.dart.weak.transformed.expect
index e2ec61f..1692006 100644
--- a/pkg/front_end/testcases/general/issue31767.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue31767.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
 class C extends core::Object {
   final field core::int* w;
   constructor foo(core::int* x, [core::int* y = #C1, core::int* z = #C1]) → self::C*
-    : self::C::w = self::p("x", x).{core::num::+}(self::p("y", y)){(core::num*) →* core::int*}.{core::num::+}(self::p("z", z)){(core::num*) →* core::int*}, super core::Object::•()
+    : self::C::w = self::p("x", x).{core::num::+}(self::p("y", y)).{core::num::+}(self::p("z", z)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -23,55 +23,55 @@
 }
 abstract class M extends self::C /*isMixinDeclaration*/  {
   get w2() → core::int*
-    return this.{self::C::w}{core::int*}.{core::num::*}(this.{self::C::w}{core::int*}){(core::num*) →* core::int*};
+    return this.{self::C::w}.{core::num::*}(this.{self::C::w});
 }
 class D extends self::C implements self::M /*isEliminatedMixin*/  {
   synthetic constructor foo(core::int* x, [core::int* y = #C1, core::int* z = #C1]) → self::D*
     : super self::C::foo(x, y, z)
     ;
   get w2() → core::int*
-    return this.{self::C::w}{core::int*}.{core::num::*}(this.{self::C::w}{core::int*}){(core::num*) →* core::int*};
+    return this.{self::C::w}.{core::num::*}(this.{self::C::w});
 }
 abstract class N extends iss::A /*isMixinDeclaration*/  {
   get w2() → core::int*
-    return this.{iss::A::w}{core::int*}.{core::num::*}(this.{iss::A::w}{core::int*}){(core::num*) →* core::int*};
+    return this.{iss::A::w}.{core::num::*}(this.{iss::A::w});
 }
 class E extends iss::A implements self::N /*isEliminatedMixin*/  {
   synthetic constructor foo(core::int* x, [core::int* y = #C2, core::int* z = #C2, iss::_A* a = #C4]) → self::E*
     : super iss::A::foo(x, y, z, a)
     ;
   get w2() → core::int*
-    return this.{iss::A::w}{core::int*}.{core::num::*}(this.{iss::A::w}{core::int*}){(core::num*) →* core::int*};
+    return this.{iss::A::w}.{core::num::*}(this.{iss::A::w});
 }
 static field core::StringBuffer* sb;
 static method p(core::String* name, core::int* value) → core::int* {
-  self::sb.{core::StringBuffer::write}("${name} = ${value}, "){(core::Object*) →* void};
+  self::sb.{core::StringBuffer::write}("${name} = ${value}, ");
   return value;
 }
 static method main() → dynamic {
   self::sb = new core::StringBuffer::•();
   iss::A* a = new iss::A::foo(1, 2);
-  self::expect("x = 1, y = 2, z = 3, ", self::sb.{core::StringBuffer::toString}(){() →* core::String*});
-  self::expect(6, a.{iss::A::w}{core::int*});
-  self::expect(5, a.{iss::A::a}{iss::_A*}.{iss::_A::field}{core::int*});
+  self::expect("x = 1, y = 2, z = 3, ", self::sb.{core::StringBuffer::toString}());
+  self::expect(6, a.{iss::A::w});
+  self::expect(5, a.{iss::A::a}.{iss::_A::field});
   self::sb = new core::StringBuffer::•();
   self::C* c = new self::C::foo(1, 2);
-  self::expect("x = 1, y = 2, z = 0, ", self::sb.{core::StringBuffer::toString}(){() →* core::String*});
-  self::expect(3, c.{self::C::w}{core::int*});
+  self::expect("x = 1, y = 2, z = 0, ", self::sb.{core::StringBuffer::toString}());
+  self::expect(3, c.{self::C::w});
   self::sb = new core::StringBuffer::•();
   self::D* d = new self::D::foo(1, 2);
-  self::expect("x = 1, y = 2, z = 0, ", self::sb.{core::StringBuffer::toString}(){() →* core::String*});
-  self::expect(3, d.{self::C::w}{core::int*});
-  self::expect(9, d.{self::D::w2}{core::int*});
+  self::expect("x = 1, y = 2, z = 0, ", self::sb.{core::StringBuffer::toString}());
+  self::expect(3, d.{self::C::w});
+  self::expect(9, d.{self::D::w2});
   self::sb = new core::StringBuffer::•();
   self::E* e = new self::E::foo(1, 2);
-  self::expect("x = 1, y = 2, z = 3, ", self::sb.{core::StringBuffer::toString}(){() →* core::String*});
-  self::expect(6, e.{iss::A::w}{core::int*});
-  self::expect(36, e.{self::E::w2}{core::int*});
-  self::expect(5, e.{iss::A::a}{iss::_A*}.{iss::_A::field}{core::int*});
+  self::expect("x = 1, y = 2, z = 3, ", self::sb.{core::StringBuffer::toString}());
+  self::expect(6, e.{iss::A::w});
+  self::expect(36, e.{self::E::w2});
+  self::expect(5, e.{iss::A::a}.{iss::_A::field});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
@@ -86,7 +86,7 @@
   final field core::int* w;
   final field iss::_A* a;
   constructor foo(core::int* x, [core::int* y = #C2, core::int* z = #C2, iss::_A* a = #C4]) → iss::A*
-    : iss::A::a = a, iss::A::w = self::p("x", x).{core::num::+}(self::p("y", y)){(core::num*) →* core::int*}.{core::num::+}(self::p("z", z)){(core::num*) →* core::int*}, super core::Object::•()
+    : iss::A::a = a, iss::A::w = self::p("x", x).{core::num::+}(self::p("y", y)).{core::num::+}(self::p("z", z)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/issue34899.dart.weak.expect b/pkg/front_end/testcases/general/issue34899.dart.weak.expect
index 0d6c4cf..089fed4 100644
--- a/pkg/front_end/testcases/general/issue34899.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue34899.dart.weak.expect
@@ -10,7 +10,7 @@
     : self::Foo::quux = quux, self::Foo::t = t, super core::Object::•()
     ;
   method call() → asy::Future<self::Foo::T*>*
-    return this.{self::Foo::quux}{() →* asy::Future<dynamic>*}(){() →* asy::Future<dynamic>*}.{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t}{self::Foo::T*}){((dynamic) →* FutureOr<self::Foo::T*>*, {onError: core::Function*}) →* asy::Future<self::Foo::T*>*};
+    return this.{self::Foo::quux}.call().{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t});
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -28,7 +28,7 @@
     : super core::Object::•()
     ;
   method quuz() → asy::Future<void>*
-    return this.{self::Bar::qux}{self::Foo<self::Baz*>*}.{self::Foo::call}(){() →* asy::Future<self::Baz*>*}.{asy::Future::then}<self::Grault*>((self::Baz* baz) → self::Grault* => this.{self::Bar::corge}(baz){(self::Baz*) →* self::Grault*}){((self::Baz*) →* FutureOr<self::Grault*>*, {onError: core::Function*}) →* asy::Future<self::Grault*>*}.{asy::Future::then}<void>((self::Grault* grault) → void => this.{self::Bar::garply}(grault){(self::Grault*) →* void}){((self::Grault*) →* FutureOr<void>*, {onError: core::Function*}) →* asy::Future<void>*};
+    return this.{self::Bar::qux}.{self::Foo::call}().{asy::Future::then}<self::Grault*>((self::Baz* baz) → self::Grault* => this.{self::Bar::corge}(baz)).{asy::Future::then}<void>((self::Grault* grault) → void => this.{self::Bar::garply}(grault));
   method corge(self::Baz* baz) → self::Grault*
     return null;
   method garply(self::Grault* grault) → void {}
diff --git a/pkg/front_end/testcases/general/issue34899.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue34899.dart.weak.transformed.expect
index 0d6c4cf..089fed4 100644
--- a/pkg/front_end/testcases/general/issue34899.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue34899.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
     : self::Foo::quux = quux, self::Foo::t = t, super core::Object::•()
     ;
   method call() → asy::Future<self::Foo::T*>*
-    return this.{self::Foo::quux}{() →* asy::Future<dynamic>*}(){() →* asy::Future<dynamic>*}.{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t}{self::Foo::T*}){((dynamic) →* FutureOr<self::Foo::T*>*, {onError: core::Function*}) →* asy::Future<self::Foo::T*>*};
+    return this.{self::Foo::quux}.call().{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t});
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -28,7 +28,7 @@
     : super core::Object::•()
     ;
   method quuz() → asy::Future<void>*
-    return this.{self::Bar::qux}{self::Foo<self::Baz*>*}.{self::Foo::call}(){() →* asy::Future<self::Baz*>*}.{asy::Future::then}<self::Grault*>((self::Baz* baz) → self::Grault* => this.{self::Bar::corge}(baz){(self::Baz*) →* self::Grault*}){((self::Baz*) →* FutureOr<self::Grault*>*, {onError: core::Function*}) →* asy::Future<self::Grault*>*}.{asy::Future::then}<void>((self::Grault* grault) → void => this.{self::Bar::garply}(grault){(self::Grault*) →* void}){((self::Grault*) →* FutureOr<void>*, {onError: core::Function*}) →* asy::Future<void>*};
+    return this.{self::Bar::qux}.{self::Foo::call}().{asy::Future::then}<self::Grault*>((self::Baz* baz) → self::Grault* => this.{self::Bar::corge}(baz)).{asy::Future::then}<void>((self::Grault* grault) → void => this.{self::Bar::garply}(grault));
   method corge(self::Baz* baz) → self::Grault*
     return null;
   method garply(self::Grault* grault) → void {}
diff --git a/pkg/front_end/testcases/general/issue37027.dart.weak.expect b/pkg/front_end/testcases/general/issue37027.dart.weak.expect
index 531f7c1..d4abbbf 100644
--- a/pkg/front_end/testcases/general/issue37027.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue37027.dart.weak.expect
@@ -9,8 +9,8 @@
     : self::C::s = block {
       final core::Set<core::int> #t1 = col::LinkedHashSet::•<core::int>();
       for (core::int e in ell)
-        if(e.{core::int::isOdd}{core::bool})
-          #t1.{core::Set::add}(2.{core::num::*}(e){(core::num) → core::int}){(core::int) → core::bool};
+        if(e.{core::int::isOdd})
+          #t1.{core::Set::add}{Invariant}(2.{core::num::*}(e));
     } =>#t1, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue37027.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue37027.dart.weak.transformed.expect
index 29b2a47..8d726b5 100644
--- a/pkg/front_end/testcases/general/issue37027.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue37027.dart.weak.transformed.expect
@@ -12,8 +12,8 @@
         core::Iterator<core::int> :sync-for-iterator = ell.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           core::int e = :sync-for-iterator.{core::Iterator::current};
-          if(e.{core::int::isOdd}{core::bool})
-            #t1.{core::Set::add}(2.{core::num::*}(e){(core::num) → core::int}){(core::int) → core::bool};
+          if(e.{core::int::isOdd})
+            #t1.{core::Set::add}{Invariant}(2.{core::num::*}(e));
         }
       }
     } =>#t1, super core::Object::•()
diff --git a/pkg/front_end/testcases/general/issue37381.dart.weak.expect b/pkg/front_end/testcases/general/issue37381.dart.weak.expect
index 8ec0e22..dee4ed1 100644
--- a/pkg/front_end/testcases/general/issue37381.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue37381.dart.weak.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
-    return f<self::A::X*>(this){(self::A<self::A::X*>*) →* self::A::f::R*};
+    return f.call<self::A::X*>(this);
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -21,5 +21,5 @@
 }
 static method main() → dynamic {
   self::A<core::num*>* a = new self::A::•<core::int*>();
-  a.{self::A::f}<core::int*>(<X extends core::Object* = dynamic>(self::A<X*>* _) → core::int* => 42){(<X extends core::Object* = dynamic>(self::A<X*>*) →* core::int*) →* core::int*};
+  a.{self::A::f}<core::int*>(<X extends core::Object* = dynamic>(self::A<X*>* _) → core::int* => 42);
 }
diff --git a/pkg/front_end/testcases/general/issue37381.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue37381.dart.weak.transformed.expect
index 8ec0e22..dee4ed1 100644
--- a/pkg/front_end/testcases/general/issue37381.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue37381.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
-    return f<self::A::X*>(this){(self::A<self::A::X*>*) →* self::A::f::R*};
+    return f.call<self::A::X*>(this);
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -21,5 +21,5 @@
 }
 static method main() → dynamic {
   self::A<core::num*>* a = new self::A::•<core::int*>();
-  a.{self::A::f}<core::int*>(<X extends core::Object* = dynamic>(self::A<X*>* _) → core::int* => 42){(<X extends core::Object* = dynamic>(self::A<X*>*) →* core::int*) →* core::int*};
+  a.{self::A::f}<core::int*>(<X extends core::Object* = dynamic>(self::A<X*>* _) → core::int* => 42);
 }
diff --git a/pkg/front_end/testcases/general/issue39344.dart.weak.expect b/pkg/front_end/testcases/general/issue39344.dart.weak.expect
index d3e641b..07a4d30 100644
--- a/pkg/front_end/testcases/general/issue39344.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue39344.dart.weak.expect
@@ -92,21 +92,21 @@
 static field core::List<core::List<self::B*>*>* xss;
 static method main() → void {
   self::throws(() → Null {
-    new self::Class::•<self::A*>().{self::Class::method2a}(new self::B::•()){(self::A*) →* void};
-    core::print(self::xs.{core::Object::runtimeType}{core::Type*});
+    new self::Class::•<self::A*>().{self::Class::method2a}(new self::B::•());
+    core::print(self::xs.{core::Object::runtimeType});
   });
   self::throws(() → Null {
-    new self::Class::•<self::A*>().{self::Class::method2b}(new self::B::•()){(self::A*) →* void};
-    core::print(self::xs.{core::Object::runtimeType}{core::Type*});
+    new self::Class::•<self::A*>().{self::Class::method2b}(new self::B::•());
+    core::print(self::xs.{core::Object::runtimeType});
   });
 }
 static method errors() → void {
-  new self::Class::•<self::A*>().{self::Class::method1a}(new self::B::•()){(self::A*) →* void};
-  new self::Class::•<self::A*>().{self::Class::method1b}(new self::B::•()){(self::A*) →* void};
+  new self::Class::•<self::A*>().{self::Class::method1a}(new self::B::•());
+  new self::Class::•<self::A*>().{self::Class::method1b}(new self::B::•());
 }
 static method throws(() →* void f) → void {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/general/issue39344.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue39344.dart.weak.transformed.expect
index c78819b8..7fe41a0 100644
--- a/pkg/front_end/testcases/general/issue39344.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue39344.dart.weak.transformed.expect
@@ -92,21 +92,21 @@
 static field core::List<core::List<self::B*>*>* xss;
 static method main() → void {
   self::throws(() → Null {
-    new self::Class::•<self::A*>().{self::Class::method2a}(new self::B::•()){(self::A*) →* void};
-    core::print(self::xs.{core::Object::runtimeType}{core::Type*});
+    new self::Class::•<self::A*>().{self::Class::method2a}(new self::B::•());
+    core::print(self::xs.{core::Object::runtimeType});
   });
   self::throws(() → Null {
-    new self::Class::•<self::A*>().{self::Class::method2b}(new self::B::•()){(self::A*) →* void};
-    core::print(self::xs.{core::Object::runtimeType}{core::Type*});
+    new self::Class::•<self::A*>().{self::Class::method2b}(new self::B::•());
+    core::print(self::xs.{core::Object::runtimeType});
   });
 }
 static method errors() → void {
-  new self::Class::•<self::A*>().{self::Class::method1a}(new self::B::•()){(self::A*) →* void};
-  new self::Class::•<self::A*>().{self::Class::method1b}(new self::B::•()){(self::A*) →* void};
+  new self::Class::•<self::A*>().{self::Class::method1a}(new self::B::•());
+  new self::Class::•<self::A*>().{self::Class::method1b}(new self::B::•());
 }
 static method throws(() →* void f) → void {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/general/issue40662.dart.weak.expect b/pkg/front_end/testcases/general/issue40662.dart.weak.expect
index dc6a6d8..d0d2fa1 100644
--- a/pkg/front_end/testcases/general/issue40662.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue40662.dart.weak.expect
@@ -3,14 +3,14 @@
 import "dart:core" as core;
 
 static method bar(core::int* a, core::List<core::int*>* b) → dynamic {
-  self::expect(1.{core::int::unary-}(){() →* core::int*}, a);
-  self::expect(1.{core::int::unary-}(){() →* core::int*}, b.{core::List::[]}(0){(core::int*) →* core::int*}.{core::num::-}(2){(core::num*) →* core::int*});
+  self::expect(1.{core::int::unary-}(), a);
+  self::expect(1.{core::int::unary-}(), b.{core::List::[]}(0).{core::num::-}(2));
 }
 static method foo(core::int* x) → dynamic async 
-  return self::bar(x.{core::num::-}(1){(core::num*) →* core::int*}, !(x == null) ?{core::List<core::int*>*} <core::int*>[x.{core::num::+}(1){(core::num*) →* core::int*}, x.{core::num::+}(2){(core::num*) →* core::int*}, await null] : null);
+  return self::bar(x.{core::num::-}(1), !x.{core::num::==}(null) ?{core::List<core::int*>*} <core::int*>[x.{core::num::+}(1), x.{core::num::+}(2), await null] : null);
 static method main() → void async 
   return await self::foo(0);
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect
index c811d62..96339d0 100644
--- a/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect
@@ -5,8 +5,8 @@
 import "dart:_internal" as _in;
 
 static method bar(core::int* a, core::List<core::int*>* b) → dynamic {
-  self::expect(1.{core::int::unary-}(){() →* core::int*}, a);
-  self::expect(1.{core::int::unary-}(){() →* core::int*}, b.{core::List::[]}(0){(core::int*) →* core::int*}.{core::num::-}(2){(core::num*) →* core::int*});
+  self::expect(1.{core::int::unary-}(), a);
+  self::expect(1.{core::int::unary-}(), b.{core::List::[]}(0).{core::num::-}(2));
 }
 static method foo(core::int* x) → dynamic /* originally async */ {
   final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
@@ -25,10 +25,10 @@
     try {
       #L1:
       {
-        :async_temporary_3 = x.{core::num::-}(1){(core::num*) →* core::int*};
-        if(!(x == null)) {
-          :async_temporary_1 = x.{core::num::+}(1){(core::num*) →* core::int*};
-          :async_temporary_0 = x.{core::num::+}(2){(core::num*) →* core::int*};
+        :async_temporary_3 = x.{core::num::-}(1);
+        if(!x.{core::num::==}(null)) {
+          :async_temporary_1 = x.{core::num::+}(1);
+          :async_temporary_0 = x.{core::num::+}(2);
           [yield] let dynamic #t1 = asy::_awaitHelper(null, :async_op_then, :async_op_error, :async_op) in null;
           :async_temporary_2 = core::_GrowableList::_literal3<core::int*>(_in::unsafeCast<core::int*>(:async_temporary_1), _in::unsafeCast<core::int*>(:async_temporary_0), _in::unsafeCast<Null>(:result));
         }
@@ -80,12 +80,12 @@
   return :async_future;
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue40662.dart:8:10 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue40662.dart:9:10 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///issue40662.dart:8:10 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///issue40662.dart:9:10 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 95, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/issue40744.dart.weak.expect b/pkg/front_end/testcases/general/issue40744.dart.weak.expect
index b193d72..ba04d64 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.weak.expect
@@ -7,7 +7,7 @@
   core::print(input);
 }
 static method main() → void {
-  final core::Map<core::String*, Null>* nullValueMap = core::Map::fromEntries<core::String*, Null>((#C4).{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>*>*}.{core::Iterable::map}<core::MapEntry<core::String*, Null>*>((core::MapEntry<core::String*, dynamic>* e) → core::MapEntry<core::String*, Null>* => new core::MapEntry::_<core::String*, Null>(e.{core::MapEntry::key}{core::String*}, null)){((core::MapEntry<core::String*, dynamic>*) →* core::MapEntry<core::String*, Null>*) →* core::Iterable<core::MapEntry<core::String*, Null>*>*});
+  final core::Map<core::String*, Null>* nullValueMap = core::Map::fromEntries<core::String*, Null>((#C4).{core::Map::entries}.{core::Iterable::map}<core::MapEntry<core::String*, Null>*>((core::MapEntry<core::String*, dynamic>* e) → core::MapEntry<core::String*, Null>* => new core::MapEntry::_<core::String*, Null>(e.{core::MapEntry::key}, null)));
   self::helper(nullValueMap);
 }
 
diff --git a/pkg/front_end/testcases/general/issue40744.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue40744.dart.weak.transformed.expect
index b193d72..ba04d64 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
   core::print(input);
 }
 static method main() → void {
-  final core::Map<core::String*, Null>* nullValueMap = core::Map::fromEntries<core::String*, Null>((#C4).{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>*>*}.{core::Iterable::map}<core::MapEntry<core::String*, Null>*>((core::MapEntry<core::String*, dynamic>* e) → core::MapEntry<core::String*, Null>* => new core::MapEntry::_<core::String*, Null>(e.{core::MapEntry::key}{core::String*}, null)){((core::MapEntry<core::String*, dynamic>*) →* core::MapEntry<core::String*, Null>*) →* core::Iterable<core::MapEntry<core::String*, Null>*>*});
+  final core::Map<core::String*, Null>* nullValueMap = core::Map::fromEntries<core::String*, Null>((#C4).{core::Map::entries}.{core::Iterable::map}<core::MapEntry<core::String*, Null>*>((core::MapEntry<core::String*, dynamic>* e) → core::MapEntry<core::String*, Null>* => new core::MapEntry::_<core::String*, Null>(e.{core::MapEntry::key}, null)));
   self::helper(nullValueMap);
 }
 
diff --git a/pkg/front_end/testcases/general/issue41070.dart.weak.expect b/pkg/front_end/testcases/general/issue41070.dart.weak.expect
index 7a1c9bb..71da7fe 100644
--- a/pkg/front_end/testcases/general/issue41070.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue41070.dart.weak.expect
@@ -39,10 +39,10 @@
     ;
 }
 static method main() → dynamic {
-  self::expect(42, (#C2).{self::Base::x}{core::int*});
+  self::expect(42, (#C2).{self::Base::x});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/general/issue41070.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue41070.dart.weak.transformed.expect
index b7cbfbd..cf254b2 100644
--- a/pkg/front_end/testcases/general/issue41070.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue41070.dart.weak.transformed.expect
@@ -39,10 +39,10 @@
     ;
 }
 static method main() → dynamic {
-  self::expect(42, (#C2).{self::Base::x}{core::int*});
+  self::expect(42, (#C2).{self::Base::x});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/general/issue41210a.dart.weak.expect b/pkg/front_end/testcases/general/issue41210a.dart.weak.expect
index b5abffb..10d9bf9 100644
--- a/pkg/front_end/testcases/general/issue41210a.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue41210a.dart.weak.expect
@@ -193,7 +193,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::_C&Object&A&B::method}(0){(core::num*) →* core::String*});
+  core::print(new self::C::•().{self::_C&Object&A&B::method}(0));
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/issue41210b/issue41210.dart.weak.expect b/pkg/front_end/testcases/general/issue41210b/issue41210.dart.weak.expect
index b2f0c55..38f8cf0 100644
--- a/pkg/front_end/testcases/general/issue41210b/issue41210.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue41210b/issue41210.dart.weak.expect
@@ -103,7 +103,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::_C&Object&A&B::method}(0){(core::num*) →* core::String*});
+  core::print(new self::C::•().{self::_C&Object&A&B::method}(0));
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/issue41210b/issue41210.no_link.dart.weak.expect b/pkg/front_end/testcases/general/issue41210b/issue41210.no_link.dart.weak.expect
index 1692897..f5e9904 100644
--- a/pkg/front_end/testcases/general/issue41210b/issue41210.no_link.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue41210b/issue41210.no_link.dart.weak.expect
@@ -103,7 +103,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::_C&Object&A&B::method}(0){(core::num*) →* core::String*});
+  core::print(new self::C::•().{self::_C&Object&A&B::method}(0));
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/issue42435.dart.weak.expect b/pkg/front_end/testcases/general/issue42435.dart.weak.expect
index 3dd8dc5..4c809d0 100644
--- a/pkg/front_end/testcases/general/issue42435.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue42435.dart.weak.expect
@@ -149,7 +149,7 @@
     ;
 }
 class B extends core::Object {
-  field <Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic foo6 = let final Never #t1 = (() → Never => throw 42)(){() → Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  field <Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic foo6 = let final Never #t1 = (() → Never => throw 42).call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
   constructor •(<Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic a) → self::B
     : super core::Object::•()
     ;
@@ -170,7 +170,7 @@
   get baz4 = self::E|get#baz4;
   set baz5 = self::E|set#baz5;
 }
-static field <Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic bar6 = let final Never #t2 = (() → Never => throw 42)(){() → Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+static field <Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic bar6 = let final Never #t2 = (() → Never => throw 42).call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 static method bar2(<Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic a) → dynamic {}
 static method bar3() → <Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic
   return throw 42;
diff --git a/pkg/front_end/testcases/general/issue42435.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue42435.dart.weak.transformed.expect
index 3dd8dc5..4c809d0 100644
--- a/pkg/front_end/testcases/general/issue42435.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue42435.dart.weak.transformed.expect
@@ -149,7 +149,7 @@
     ;
 }
 class B extends core::Object {
-  field <Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic foo6 = let final Never #t1 = (() → Never => throw 42)(){() → Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  field <Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic foo6 = let final Never #t1 = (() → Never => throw 42).call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
   constructor •(<Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic a) → self::B
     : super core::Object::•()
     ;
@@ -170,7 +170,7 @@
   get baz4 = self::E|get#baz4;
   set baz5 = self::E|set#baz5;
 }
-static field <Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic bar6 = let final Never #t2 = (() → Never => throw 42)(){() → Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+static field <Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic bar6 = let final Never #t2 = (() → Never => throw 42).call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 static method bar2(<Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic a) → dynamic {}
 static method bar3() → <Z extends self::A<self::A<dynamic>> = dynamic>() → dynamic
   return throw 42;
diff --git a/pkg/front_end/testcases/general/issue42997.dart.weak.expect b/pkg/front_end/testcases/general/issue42997.dart.weak.expect
index 9b90959..cfae480 100644
--- a/pkg/front_end/testcases/general/issue42997.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue42997.dart.weak.expect
@@ -57,7 +57,7 @@
   method dispose() → void {
     for (final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/issue42997.dart:12:10: Error: Can't use 'PropertyState' because it is declared more than once.
     for (PropertyState<Object, Object>> state in _states) ;
-         ^"{dynamic}.<(#C1); invalid-expression "pkg/front_end/testcases/general/issue42997.dart:12:30: Error: This couldn't be parsed.
+         ^".<(#C1); invalid-expression "pkg/front_end/testcases/general/issue42997.dart:12:30: Error: This couldn't be parsed.
     for (PropertyState<Object, Object>> state in _states) ;
                              ^" as{TypeError,ForDynamic} core::bool*; invalid-expression "pkg/front_end/testcases/general/issue42997.dart:12:30: Error: This couldn't be parsed.
     for (PropertyState<Object, Object>> state in _states) ;
diff --git a/pkg/front_end/testcases/general/issue42997.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue42997.dart.weak.transformed.expect
index 0d39294..96d6a7c 100644
--- a/pkg/front_end/testcases/general/issue42997.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue42997.dart.weak.transformed.expect
@@ -57,7 +57,7 @@
   method dispose() → void {
     for (final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/issue42997.dart:12:10: Error: Can't use 'PropertyState' because it is declared more than once.
     for (PropertyState<Object, Object>> state in _states) ;
-         ^"{dynamic}.<(#C1); invalid-expression "pkg/front_end/testcases/general/issue42997.dart:12:30: Error: This couldn't be parsed.
+         ^".<(#C1); invalid-expression "pkg/front_end/testcases/general/issue42997.dart:12:30: Error: This couldn't be parsed.
     for (PropertyState<Object, Object>> state in _states) ;
                              ^"; invalid-expression "pkg/front_end/testcases/general/issue42997.dart:12:30: Error: This couldn't be parsed.
     for (PropertyState<Object, Object>> state in _states) ;
diff --git a/pkg/front_end/testcases/general/issue44654.dart.weak.expect b/pkg/front_end/testcases/general/issue44654.dart.weak.expect
index 0832149..20db53d 100644
--- a/pkg/front_end/testcases/general/issue44654.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue44654.dart.weak.expect
@@ -4,7 +4,7 @@
 
 static method test2() → void {
   core::String* string = null;
-  if(let final core::String* #t1 = string in #t1 == null ?{core::bool*} null : #t1.{core::String::isNotEmpty}{core::bool*})
+  if(let final core::String* #t1 = string in #t1.{core::String::==}(null) ?{core::bool*} null : #t1.{core::String::isNotEmpty})
     ;
 }
 static method main() → void {
@@ -17,17 +17,17 @@
 }
 static method checkFirstLineHasPosition(core::StackTrace* stackTrace) → void {
   core::String* firstLine = "${stackTrace}".{core::String::split}("
-"){(core::Pattern*) →* core::List<core::String*>*}.{core::Iterable::firstWhere}((core::String* line) → core::bool* => line.{core::String::startsWith}("#0"){(core::Pattern*, [core::int*]) →* core::bool*}){((core::String*) →* core::bool*, {orElse: () →* core::String*}) →* core::String*};
-  core::int* lastParen = firstLine.{core::String::lastIndexOf}(")"){(core::Pattern*, [core::int*]) →* core::int*};
-  if(!(lastParen =={core::num::==}{(core::Object*) →* core::bool*} 1.{core::int::unary-}(){() →* core::int*})) {
-    core::int* secondColon = firstLine.{core::String::lastIndexOf}(":", lastParen.{core::num::-}(1){(core::num*) →* core::int*}){(core::Pattern*, [core::int*]) →* core::int*};
-    if(!(secondColon =={core::num::==}{(core::Object*) →* core::bool*} 1.{core::int::unary-}(){() →* core::int*})) {
-      core::int* firstColon = firstLine.{core::String::lastIndexOf}(":", secondColon.{core::num::-}(1){(core::num*) →* core::int*}){(core::Pattern*, [core::int*]) →* core::int*};
-      core::String* lineText = firstLine.{core::String::substring}(firstColon.{core::num::+}(1){(core::num*) →* core::int*}, secondColon){(core::int*, [core::int*]) →* core::String*};
-      core::String* posText = firstLine.{core::String::substring}(secondColon.{core::num::+}(1){(core::num*) →* core::int*}, lastParen){(core::int*, [core::int*]) →* core::String*};
+").{core::Iterable::firstWhere}((core::String* line) → core::bool* => line.{core::String::startsWith}("#0"));
+  core::int* lastParen = firstLine.{core::String::lastIndexOf}(")");
+  if(!lastParen.{core::num::==}(1.{core::int::unary-}())) {
+    core::int* secondColon = firstLine.{core::String::lastIndexOf}(":", lastParen.{core::num::-}(1));
+    if(!secondColon.{core::num::==}(1.{core::int::unary-}())) {
+      core::int* firstColon = firstLine.{core::String::lastIndexOf}(":", secondColon.{core::num::-}(1));
+      core::String* lineText = firstLine.{core::String::substring}(firstColon.{core::num::+}(1), secondColon);
+      core::String* posText = firstLine.{core::String::substring}(secondColon.{core::num::+}(1), lastParen);
       core::int* line = core::int::tryParse(lineText);
       core::int* pos = core::int::tryParse(posText);
-      if(!(line == null) && !(pos == null)) {
+      if(!line.{core::num::==}(null) && !pos.{core::num::==}(null)) {
         core::print("Found position ${line}:${pos}");
         return;
       }
diff --git a/pkg/front_end/testcases/general/issue44654.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue44654.dart.weak.transformed.expect
index 4f52310..dee713e 100644
--- a/pkg/front_end/testcases/general/issue44654.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue44654.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 
 static method test2() → void {
   core::String* string = null;
-  if(let final core::String* #t1 = string in #t1 == null ?{core::bool*} null : #t1.{core::String::isNotEmpty}{core::bool*})
+  if(let final core::String* #t1 = string in #t1.{core::String::==}(null) ?{core::bool*} null : #t1.{core::String::isNotEmpty})
     ;
 }
 static method main() → void {
@@ -17,17 +17,17 @@
 }
 static method checkFirstLineHasPosition(core::StackTrace* stackTrace) → void {
   core::String* firstLine = "${stackTrace}".{core::String::split}("
-"){(core::Pattern*) →* core::List<core::String*>*}.{core::Iterable::firstWhere}((core::String* line) → core::bool* => line.{core::String::startsWith}("#0"){(core::Pattern*, [core::int*]) →* core::bool*}){((core::String*) →* core::bool*, {orElse: () →* core::String*}) →* core::String*};
-  core::int* lastParen = firstLine.{core::String::lastIndexOf}(")"){(core::Pattern*, [core::int*]) →* core::int*};
-  if(!(lastParen =={core::num::==}{(core::Object*) →* core::bool*} 1.{core::int::unary-}(){() →* core::int*})) {
-    core::int* secondColon = firstLine.{core::String::lastIndexOf}(":", lastParen.{core::num::-}(1){(core::num*) →* core::int*}){(core::Pattern*, [core::int*]) →* core::int*};
-    if(!(secondColon =={core::num::==}{(core::Object*) →* core::bool*} 1.{core::int::unary-}(){() →* core::int*})) {
-      core::int* firstColon = firstLine.{core::String::lastIndexOf}(":", secondColon.{core::num::-}(1){(core::num*) →* core::int*}){(core::Pattern*, [core::int*]) →* core::int*};
-      core::String* lineText = firstLine.{core::String::substring}(firstColon.{core::num::+}(1){(core::num*) →* core::int*}, secondColon){(core::int*, [core::int*]) →* core::String*};
-      core::String* posText = firstLine.{core::String::substring}(secondColon.{core::num::+}(1){(core::num*) →* core::int*}, lastParen){(core::int*, [core::int*]) →* core::String*};
+").{core::Iterable::firstWhere}((core::String* line) → core::bool* => line.{core::String::startsWith}("#0"));
+  core::int* lastParen = firstLine.{core::String::lastIndexOf}(")");
+  if(!lastParen.{core::num::==}(1.{core::int::unary-}())) {
+    core::int* secondColon = firstLine.{core::String::lastIndexOf}(":", lastParen.{core::num::-}(1));
+    if(!secondColon.{core::num::==}(1.{core::int::unary-}())) {
+      core::int* firstColon = firstLine.{core::String::lastIndexOf}(":", secondColon.{core::num::-}(1));
+      core::String* lineText = firstLine.{core::String::substring}(firstColon.{core::num::+}(1), secondColon);
+      core::String* posText = firstLine.{core::String::substring}(secondColon.{core::num::+}(1), lastParen);
       core::int* line = core::int::tryParse(lineText);
       core::int* pos = core::int::tryParse(posText);
-      if(!(line == null) && !(pos == null)) {
+      if(!line.{core::num::==}(null) && !pos.{core::num::==}(null)) {
         core::print("Found position ${line}:${pos}");
         return;
       }
@@ -38,6 +38,6 @@
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue44654.dart:25:20 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue44654.dart:27:24 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///issue44654.dart:25:20 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///issue44654.dart:27:24 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 63, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/issue45598.dart.weak.expect b/pkg/front_end/testcases/general/issue45598.dart.weak.expect
index 4463884..fc68d7b 100644
--- a/pkg/front_end/testcases/general/issue45598.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue45598.dart.weak.expect
@@ -3,6 +3,6 @@
 import "dart:core" as core;
 
 static method foo(<X extends Z* = dynamic, Y extends core::Object* = dynamic, Z extends core::Object* = dynamic>({m: core::Map<Y*, Z*>*}) →* dynamic bar, core::Map<core::String*, core::String*>* m) → dynamic {
-  bar<core::String*, core::String*, core::String*>(m: m){({m: core::Map<core::String*, core::String*>*}) →* dynamic};
+  bar.call<core::String*, core::String*, core::String*>(m: m);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue45598.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue45598.dart.weak.transformed.expect
index 4463884..fc68d7b 100644
--- a/pkg/front_end/testcases/general/issue45598.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue45598.dart.weak.transformed.expect
@@ -3,6 +3,6 @@
 import "dart:core" as core;
 
 static method foo(<X extends Z* = dynamic, Y extends core::Object* = dynamic, Z extends core::Object* = dynamic>({m: core::Map<Y*, Z*>*}) →* dynamic bar, core::Map<core::String*, core::String*>* m) → dynamic {
-  bar<core::String*, core::String*, core::String*>(m: m){({m: core::Map<core::String*, core::String*>*}) →* dynamic};
+  bar.call<core::String*, core::String*, core::String*>(m: m);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue45598_2.dart.weak.expect b/pkg/front_end/testcases/general/issue45598_2.dart.weak.expect
index eff30fa..d8d1fd0 100644
--- a/pkg/front_end/testcases/general/issue45598_2.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue45598_2.dart.weak.expect
@@ -4,7 +4,7 @@
 
 static method foo(core::Map<core::String*, core::String*>* m) → dynamic {
   function bar<X extends Z* = dynamic, Y extends core::Object* = dynamic, Z extends core::Object* = dynamic>({core::Map<Y*, Z*>* m = #C1}) → void {}
-  bar<core::String*, core::String*, core::String*>(m: m){({m: core::Map<core::String*, core::String*>*}) →* void};
+  bar.call<core::String*, core::String*, core::String*>(m: m);
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/issue45598_2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue45598_2.dart.weak.transformed.expect
index eff30fa..d8d1fd0 100644
--- a/pkg/front_end/testcases/general/issue45598_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue45598_2.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 
 static method foo(core::Map<core::String*, core::String*>* m) → dynamic {
   function bar<X extends Z* = dynamic, Y extends core::Object* = dynamic, Z extends core::Object* = dynamic>({core::Map<Y*, Z*>* m = #C1}) → void {}
-  bar<core::String*, core::String*, core::String*>(m: m){({m: core::Map<core::String*, core::String*>*}) →* void};
+  bar.call<core::String*, core::String*, core::String*>(m: m);
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/issue45660.dart.weak.expect b/pkg/front_end/testcases/general/issue45660.dart.weak.expect
index 5111de9..f65680e 100644
--- a/pkg/front_end/testcases/general/issue45660.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue45660.dart.weak.expect
@@ -12,7 +12,7 @@
 
 static field <T extends core::num* = dynamic>(T*) →* T* extendsNumReturnArg = <S extends core::num*>(S* s) → S* => s;
 static method functionInvocations() → dynamic {
-  self::extendsNumReturnArg<Null>(null){(Null) →* Null};
-  self::extendsNumReturnArg<core::String*>(""){(core::String*) →* core::String*};
+  self::extendsNumReturnArg.call<Null>(null);
+  self::extendsNumReturnArg.call<core::String*>("");
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue45660.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue45660.dart.weak.transformed.expect
index 5111de9..f65680e 100644
--- a/pkg/front_end/testcases/general/issue45660.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue45660.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
 
 static field <T extends core::num* = dynamic>(T*) →* T* extendsNumReturnArg = <S extends core::num*>(S* s) → S* => s;
 static method functionInvocations() → dynamic {
-  self::extendsNumReturnArg<Null>(null){(Null) →* Null};
-  self::extendsNumReturnArg<core::String*>(""){(core::String*) →* core::String*};
+  self::extendsNumReturnArg.call<Null>(null);
+  self::extendsNumReturnArg.call<core::String*>("");
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/local_generic_function.dart.weak.expect b/pkg/front_end/testcases/general/local_generic_function.dart.weak.expect
index b22d5a7..487fec1 100644
--- a/pkg/front_end/testcases/general/local_generic_function.dart.weak.expect
+++ b/pkg/front_end/testcases/general/local_generic_function.dart.weak.expect
@@ -4,6 +4,6 @@
 
 static method main() → dynamic {
   function f<T extends core::Object* = dynamic>(core::List<T*>* l) → T*
-    return l.{core::List::[]}(0){(core::int*) →* T*};
-  core::int* x = f<core::int*>(<core::int*>[0]){(core::List<core::int*>*) →* core::int*};
+    return l.{core::List::[]}(0);
+  core::int* x = f.call<core::int*>(<core::int*>[0]);
 }
diff --git a/pkg/front_end/testcases/general/local_generic_function.dart.weak.transformed.expect b/pkg/front_end/testcases/general/local_generic_function.dart.weak.transformed.expect
index 6c7e013..328d4cc 100644
--- a/pkg/front_end/testcases/general/local_generic_function.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/local_generic_function.dart.weak.transformed.expect
@@ -4,6 +4,6 @@
 
 static method main() → dynamic {
   function f<T extends core::Object* = dynamic>(core::List<T*>* l) → T*
-    return l.{core::List::[]}(0){(core::int*) →* T*};
-  core::int* x = f<core::int*>(core::_GrowableList::_literal1<core::int*>(0)){(core::List<core::int*>*) →* core::int*};
+    return l.{core::List::[]}(0);
+  core::int* x = f.call<core::int*>(core::_GrowableList::_literal1<core::int*>(0));
 }
diff --git a/pkg/front_end/testcases/general/many_errors.dart.weak.expect b/pkg/front_end/testcases/general/many_errors.dart.weak.expect
index 6de22e5..c04f498 100644
--- a/pkg/front_end/testcases/general/many_errors.dart.weak.expect
+++ b/pkg/front_end/testcases/general/many_errors.dart.weak.expect
@@ -127,7 +127,7 @@
 external foo(String x) {
                        ^";
   {
-    return x.{core::String::length}{core::int*};
+    return x.{core::String::length};
   }
 }
 static method m() → dynamic {
diff --git a/pkg/front_end/testcases/general/many_errors.dart.weak.transformed.expect b/pkg/front_end/testcases/general/many_errors.dart.weak.transformed.expect
index 6de22e5..c04f498 100644
--- a/pkg/front_end/testcases/general/many_errors.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/many_errors.dart.weak.transformed.expect
@@ -127,7 +127,7 @@
 external foo(String x) {
                        ^";
   {
-    return x.{core::String::length}{core::int*};
+    return x.{core::String::length};
   }
 }
 static method m() → dynamic {
diff --git a/pkg/front_end/testcases/general/micro.dart.weak.expect b/pkg/front_end/testcases/general/micro.dart.weak.expect
index 8bd8f18..74e0279 100644
--- a/pkg/front_end/testcases/general/micro.dart.weak.expect
+++ b/pkg/front_end/testcases/general/micro.dart.weak.expect
@@ -128,24 +128,24 @@
 static method stringArgument(dynamic x) → dynamic {}
 static method intArgument(dynamic x) → dynamic {}
 static method makeDynamicCall(dynamic receiver) → void {
-  receiver{dynamic}.dynamicallyCalled("sdfg");
+  receiver.dynamicallyCalled("sdfg");
 }
 static method main() → dynamic {
   dynamic x = self::staticMethod();
-  dynamic y = new self::Foo::•().{self::Foo::instanceMethod}(){() →* dynamic};
+  dynamic y = new self::Foo::•().{self::Foo::instanceMethod}();
   core::bool* z = self::externalStatic();
-  self::ExternalValue* w = self::createBar().{self::Bar::externalInstanceMethod}(){() →* self::ExternalValue*};
+  self::ExternalValue* w = self::createBar().{self::Bar::externalInstanceMethod}();
   self::stringArgument("sdfg");
   self::intArgument(42);
   self::Box* box = new self::Box::•();
   box.{self::Box::field} = "sdfg";
-  dynamic a = box.{self::Box::field}{dynamic};
+  dynamic a = box.{self::Box::field};
   self::FinalBox* finalBox = new self::FinalBox::•("dfg");
-  dynamic b = finalBox.{self::FinalBox::finalField}{dynamic};
+  dynamic b = finalBox.{self::FinalBox::finalField};
   self::SubFinalBox* subBox = new self::SubFinalBox::•("dfg");
-  dynamic c = subBox.{self::FinalBox::finalField}{dynamic};
+  dynamic c = subBox.{self::FinalBox::finalField};
   self::makeDynamicCall(new self::DynamicReceiver1::•());
   self::makeDynamicCall(new self::DynamicReceiver2::•());
   core::List<core::String*>* list = <core::String*>["string"];
-  core::String* d = list.{core::List::[]}(0){(core::int*) →* core::String*};
+  core::String* d = list.{core::List::[]}(0);
 }
diff --git a/pkg/front_end/testcases/general/micro.dart.weak.transformed.expect b/pkg/front_end/testcases/general/micro.dart.weak.transformed.expect
index 23f0c21..30a9c46 100644
--- a/pkg/front_end/testcases/general/micro.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/micro.dart.weak.transformed.expect
@@ -128,24 +128,24 @@
 static method stringArgument(dynamic x) → dynamic {}
 static method intArgument(dynamic x) → dynamic {}
 static method makeDynamicCall(dynamic receiver) → void {
-  receiver{dynamic}.dynamicallyCalled("sdfg");
+  receiver.dynamicallyCalled("sdfg");
 }
 static method main() → dynamic {
   dynamic x = self::staticMethod();
-  dynamic y = new self::Foo::•().{self::Foo::instanceMethod}(){() →* dynamic};
+  dynamic y = new self::Foo::•().{self::Foo::instanceMethod}();
   core::bool* z = self::externalStatic();
-  self::ExternalValue* w = self::createBar().{self::Bar::externalInstanceMethod}(){() →* self::ExternalValue*};
+  self::ExternalValue* w = self::createBar().{self::Bar::externalInstanceMethod}();
   self::stringArgument("sdfg");
   self::intArgument(42);
   self::Box* box = new self::Box::•();
   box.{self::Box::field} = "sdfg";
-  dynamic a = box.{self::Box::field}{dynamic};
+  dynamic a = box.{self::Box::field};
   self::FinalBox* finalBox = new self::FinalBox::•("dfg");
-  dynamic b = finalBox.{self::FinalBox::finalField}{dynamic};
+  dynamic b = finalBox.{self::FinalBox::finalField};
   self::SubFinalBox* subBox = new self::SubFinalBox::•("dfg");
-  dynamic c = subBox.{self::FinalBox::finalField}{dynamic};
+  dynamic c = subBox.{self::FinalBox::finalField};
   self::makeDynamicCall(new self::DynamicReceiver1::•());
   self::makeDynamicCall(new self::DynamicReceiver2::•());
   core::List<core::String*>* list = core::_GrowableList::_literal1<core::String*>("string");
-  core::String* d = list.{core::List::[]}(0){(core::int*) →* core::String*};
+  core::String* d = list.{core::List::[]}(0);
 }
diff --git a/pkg/front_end/testcases/general/minimum_int.dart.weak.expect b/pkg/front_end/testcases/general/minimum_int.dart.weak.expect
index 65f7c38..17fdfdc 100644
--- a/pkg/front_end/testcases/general/minimum_int.dart.weak.expect
+++ b/pkg/front_end/testcases/general/minimum_int.dart.weak.expect
@@ -3,4 +3,4 @@
 import "dart:core" as core;
 
 static method main() → dynamic
-  return core::print(-9223372036854775808.{core::int::unary-}(){() →* core::int*});
+  return core::print(-9223372036854775808.{core::int::unary-}());
diff --git a/pkg/front_end/testcases/general/minimum_int.dart.weak.transformed.expect b/pkg/front_end/testcases/general/minimum_int.dart.weak.transformed.expect
index 349fd7e..9628dc6 100644
--- a/pkg/front_end/testcases/general/minimum_int.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/minimum_int.dart.weak.transformed.expect
@@ -3,9 +3,9 @@
 import "dart:core" as core;
 
 static method main() → dynamic
-  return core::print(-9223372036854775808.{core::int::unary-}(){() →* core::int*});
+  return core::print(-9223372036854775808.{core::int::unary-}());
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///minimum_int.dart:2:17 -> IntConstant(-9223372036854775808)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///minimum_int.dart:2:17 -> IntConstant(-9223372036854775808)
 Extra constant evaluation: evaluated: 2, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.expect
index fe0c5d0..734ecfe 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.expect
@@ -112,8 +112,8 @@
  - 'ClassWithIndexSet' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '[]' operator.
 var missingIndexGet = classWithIndexSet[0] ??= 2;
-                                       ^" in #t4 == null ?{dynamic} let final core::int* #t5 = 2 in let final void #t6 = #t2.{self::ClassWithIndexSet::[]=}(#t3, #t5){(core::int*, core::int*) →* void} in #t5 : #t4;
-static field core::int* missingIndexSet = let final self::ClassWithIndexGet* #t7 = self::classWithIndexGet in let final core::int* #t8 = 0 in let final core::int* #t9 = #t7.{self::ClassWithIndexGet::[]}(#t8){(core::int*) →* core::int*} in #t9 == null ?{core::int*} let final core::int* #t10 = 2 in let final void #t11 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:29:40: Error: The operator '[]=' isn't defined for the class 'ClassWithIndexGet'.
+                                       ^" in #t4.{core::Object::==}(null) ?{dynamic} let final core::int* #t5 = 2 in let final void #t6 = #t2.{self::ClassWithIndexSet::[]=}(#t3, #t5) in #t5 : #t4;
+static field core::int* missingIndexSet = let final self::ClassWithIndexGet* #t7 = self::classWithIndexGet in let final core::int* #t8 = 0 in let final core::int* #t9 = #t7.{self::ClassWithIndexGet::[]}(#t8) in #t9.{core::num::==}(null) ?{core::int*} let final core::int* #t10 = 2 in let final void #t11 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:29:40: Error: The operator '[]=' isn't defined for the class 'ClassWithIndexGet'.
  - 'ClassWithIndexGet' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '[]=' operator.
 var missingIndexSet = classWithIndexGet[0] ??= 2;
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect
index 2ddf977..20fffed 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect
@@ -112,8 +112,8 @@
  - 'ClassWithIndexSet' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '[]' operator.
 var missingIndexGet = classWithIndexSet[0] ??= 2;
-                                       ^" in #t4 == null ?{dynamic} let final core::int* #t5 = 2 in let final void #t6 = #t2.{self::ClassWithIndexSet::[]=}(#t3, #t5){(core::int*, core::int*) →* void} in #t5 : #t4;
-static field core::int* missingIndexSet = let final self::ClassWithIndexGet* #t7 = self::classWithIndexGet in let final core::int* #t8 = 0 in let final core::int* #t9 = #t7.{self::ClassWithIndexGet::[]}(#t8){(core::int*) →* core::int*} in #t9 == null ?{core::int*} let final core::int* #t10 = 2 in let final void #t11 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:29:40: Error: The operator '[]=' isn't defined for the class 'ClassWithIndexGet'.
+                                       ^" in #t4.{core::Object::==}(null) ?{dynamic} let final core::int* #t5 = 2 in let final void #t6 = #t2.{self::ClassWithIndexSet::[]=}(#t3, #t5) in #t5 : #t4;
+static field core::int* missingIndexSet = let final self::ClassWithIndexGet* #t7 = self::classWithIndexGet in let final core::int* #t8 = 0 in let final core::int* #t9 = #t7.{self::ClassWithIndexGet::[]}(#t8) in #t9.{core::num::==}(null) ?{core::int*} let final core::int* #t10 = 2 in let final void #t11 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:29:40: Error: The operator '[]=' isn't defined for the class 'ClassWithIndexGet'.
  - 'ClassWithIndexGet' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '[]=' operator.
 var missingIndexSet = classWithIndexGet[0] ??= 2;
diff --git a/pkg/front_end/testcases/general/mixin.dart.weak.expect b/pkg/front_end/testcases/general/mixin.dart.weak.expect
index 9ec9ad2d..1f1f19e 100644
--- a/pkg/front_end/testcases/general/mixin.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin.dart.weak.expect
@@ -134,9 +134,9 @@
     ;
 }
 static method main() → dynamic {
-  new self::B::•(null).{self::_B&Object&M1&M2::m}(){() →* dynamic};
-  new self::C::•(null).{self::_C&Object&M1&M2::m}(){() →* dynamic};
-  new self::D::•<dynamic>().{self::_D&Object&G1::m}(){() →* dynamic};
-  new self::D::•<core::int*>().{self::_D&Object&G1::m}(){() →* dynamic};
-  new self::D::•<core::List<core::int*>*>().{self::_D&Object&G1::m}(){() →* dynamic};
+  new self::B::•(null).{self::_B&Object&M1&M2::m}();
+  new self::C::•(null).{self::_C&Object&M1&M2::m}();
+  new self::D::•<dynamic>().{self::_D&Object&G1::m}();
+  new self::D::•<core::int*>().{self::_D&Object&G1::m}();
+  new self::D::•<core::List<core::int*>*>().{self::_D&Object&G1::m}();
 }
diff --git a/pkg/front_end/testcases/general/mixin.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin.dart.weak.transformed.expect
index fe35f14..241fd10 100644
--- a/pkg/front_end/testcases/general/mixin.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin.dart.weak.transformed.expect
@@ -134,9 +134,9 @@
     ;
 }
 static method main() → dynamic {
-  new self::B::•(null).{self::_B&Object&M1&M2::m}(){() →* dynamic};
-  new self::C::•(null).{self::_C&Object&M1&M2::m}(){() →* dynamic};
-  new self::D::•<dynamic>().{self::_D&Object&G1::m}(){() →* dynamic};
-  new self::D::•<core::int*>().{self::_D&Object&G1::m}(){() →* dynamic};
-  new self::D::•<core::List<core::int*>*>().{self::_D&Object&G1::m}(){() →* dynamic};
+  new self::B::•(null).{self::_B&Object&M1&M2::m}();
+  new self::C::•(null).{self::_C&Object&M1&M2::m}();
+  new self::D::•<dynamic>().{self::_D&Object&G1::m}();
+  new self::D::•<core::int*>().{self::_D&Object&G1::m}();
+  new self::D::•<core::List<core::int*>*>().{self::_D&Object&G1::m}();
 }
diff --git a/pkg/front_end/testcases/general/mixin_application_lub.dart.weak.expect b/pkg/front_end/testcases/general/mixin_application_lub.dart.weak.expect
index 8972ec3..e277693 100644
--- a/pkg/front_end/testcases/general/mixin_application_lub.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_application_lub.dart.weak.expect
@@ -73,6 +73,6 @@
   core::print(self::foo::T*);
 }
 static method main() → dynamic {
-  self::Diagnosticable* x = let final self::StateA* #t1 = self::a in #t1 == null ?{self::Diagnosticable*} self::b : #t1;
+  self::Diagnosticable* x = let final self::StateA* #t1 = self::a in #t1.{self::_State&Object&Diagnosticable::==}(null) ?{self::Diagnosticable*} self::b : #t1;
   self::foo<self::Diagnosticable*>(x);
 }
diff --git a/pkg/front_end/testcases/general/mixin_application_lub.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_application_lub.dart.weak.transformed.expect
index a392cca..421798b 100644
--- a/pkg/front_end/testcases/general/mixin_application_lub.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_application_lub.dart.weak.transformed.expect
@@ -73,6 +73,6 @@
   core::print(self::foo::T*);
 }
 static method main() → dynamic {
-  self::Diagnosticable* x = let final self::StateA* #t1 = self::a in #t1 == null ?{self::Diagnosticable*} self::b : #t1;
+  self::Diagnosticable* x = let final self::StateA* #t1 = self::a in #t1.{self::_State&Object&Diagnosticable::==}(null) ?{self::Diagnosticable*} self::b : #t1;
   self::foo<self::Diagnosticable*>(x);
 }
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.expect
index e433f66..daa1e5a 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.expect
@@ -70,11 +70,11 @@
     ;
 }
 static method main() → dynamic {
-  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object*>().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace}{core::String*});
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object*>().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.transformed.expect
index 3a642dd..4d8d5b4 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.transformed.expect
@@ -70,11 +70,11 @@
     ;
 }
 static method main() → dynamic {
-  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object*>().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace}{core::String*});
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object*>().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.expect b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.expect
index eaf50de..4fd3d8d 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.expect
@@ -310,42 +310,42 @@
   self::testMixed();
 }
 static method testDirect() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Direct::•().{self::Direct::positional}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
+  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Direct::•().{self::Direct::positional};
   self::isTrue(positional is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
   self::isTrue(positional is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Direct::•().{self::Direct::optional}{([core::int*, core::int*, core::int*, core::int*]) →* void};
+  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Direct::•().{self::Direct::optional};
   self::isTrue(optional is ([core::int*, core::int*, core::int*, core::int*]) →* void);
   self::isTrue(optional is ([core::Object*, core::int*, core::Object*, core::int*]) →* void);
-  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Direct::•().{self::Direct::named}{({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void};
+  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Direct::•().{self::Direct::named};
   self::isTrue(named is ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void);
   self::isTrue(named is ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void);
 }
 static method testInherited() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Inherited::•().{self::Direct::positional}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
+  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Inherited::•().{self::Direct::positional};
   self::isTrue(positional is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
   self::isTrue(positional is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Inherited::•().{self::Direct::optional}{([core::int*, core::int*, core::int*, core::int*]) →* void};
+  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Inherited::•().{self::Direct::optional};
   self::isTrue(optional is ([core::int*, core::int*, core::int*, core::int*]) →* void);
   self::isTrue(optional is ([core::Object*, core::int*, core::Object*, core::int*]) →* void);
-  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Inherited::•().{self::Direct::named}{({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void};
+  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Inherited::•().{self::Direct::named};
   self::isTrue(named is ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void);
   self::isTrue(named is ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void);
 }
 static method testOverridden() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method2 = new self::Override2::•().{self::Override2::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
+  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method2 = new self::Override2::•().{self::Override2::method};
   self::isTrue(method2 is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
   self::isTrue(method2 is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method3 = new self::Override3::•().{self::Override3::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
+  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method3 = new self::Override3::•().{self::Override3::method};
   self::isTrue(method3 is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
   self::isTrue(method3 is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
 }
 static method testImplemented() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Implement5::•().{self::Implement5::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
+  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Implement5::•().{self::Implement5::method};
   self::isTrue(method is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
   self::isTrue(method is (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void);
 }
 static method testMixed() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Mixed::•().{self::Mixed::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
+  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Mixed::•().{self::Mixed::method};
   self::isTrue(method is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
   self::isTrue(method is (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void);
 }
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.transformed.expect
index 00fb601..bf43d45 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.transformed.expect
@@ -306,42 +306,42 @@
   self::testMixed();
 }
 static method testDirect() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Direct::•().{self::Direct::positional}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
+  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Direct::•().{self::Direct::positional};
   self::isTrue(positional is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
   self::isTrue(positional is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Direct::•().{self::Direct::optional}{([core::int*, core::int*, core::int*, core::int*]) →* void};
+  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Direct::•().{self::Direct::optional};
   self::isTrue(optional is ([core::int*, core::int*, core::int*, core::int*]) →* void);
   self::isTrue(optional is ([core::Object*, core::int*, core::Object*, core::int*]) →* void);
-  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Direct::•().{self::Direct::named}{({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void};
+  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Direct::•().{self::Direct::named};
   self::isTrue(named is ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void);
   self::isTrue(named is ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void);
 }
 static method testInherited() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Inherited::•().{self::Direct::positional}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
+  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Inherited::•().{self::Direct::positional};
   self::isTrue(positional is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
   self::isTrue(positional is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Inherited::•().{self::Direct::optional}{([core::int*, core::int*, core::int*, core::int*]) →* void};
+  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Inherited::•().{self::Direct::optional};
   self::isTrue(optional is ([core::int*, core::int*, core::int*, core::int*]) →* void);
   self::isTrue(optional is ([core::Object*, core::int*, core::Object*, core::int*]) →* void);
-  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Inherited::•().{self::Direct::named}{({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void};
+  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Inherited::•().{self::Direct::named};
   self::isTrue(named is ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void);
   self::isTrue(named is ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void);
 }
 static method testOverridden() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method2 = new self::Override2::•().{self::Override2::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
+  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method2 = new self::Override2::•().{self::Override2::method};
   self::isTrue(method2 is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
   self::isTrue(method2 is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method3 = new self::Override3::•().{self::Override3::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
+  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method3 = new self::Override3::•().{self::Override3::method};
   self::isTrue(method3 is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
   self::isTrue(method3 is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
 }
 static method testImplemented() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Implement5::•().{self::Implement5::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
+  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Implement5::•().{self::Implement5::method};
   self::isTrue(method is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
   self::isTrue(method is (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void);
 }
 static method testMixed() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Mixed::•().{self::Mixed::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
+  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Mixed::•().{self::Mixed::method};
   self::isTrue(method is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
   self::isTrue(method is (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void);
 }
diff --git a/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.expect b/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.expect
index f97e4ab..f6a8a4d 100644
--- a/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.expect
@@ -68,29 +68,29 @@
 }
 static method main() → dynamic {
   self::Class* c = new self::Class::•();
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method1}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method2}(0, 1){(core::int*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method3}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method4}(0, 1){(core::int*, core::int*) →* core::String*});
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method1}(0, 1));
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method2}(0, 1));
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method3}(0, 1));
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method4}(0, 1));
   self::Superclass* s = c;
-  self::expect("Mixin", s.{self::Superclass::method1}(0.5, 1.5){(core::num*, core::num*) →* core::String*});
-  self::throws(() → core::String* => s.{self::Superclass::method2}(0.5, 1.5){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", s.{self::Superclass::method3}(0.5, 1){(core::num*, core::int*) →* core::String*});
-  self::throws(() → core::String* => s.{self::Superclass::method4}(0.5, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", s.{self::Superclass::method4}(1, 0.5){(core::num*, core::num*) →* core::String*});
+  self::expect("Mixin", s.{self::Superclass::method1}(0.5, 1.5));
+  self::throws(() → core::String* => s.{self::Superclass::method2}(0.5, 1.5));
+  self::expect("Mixin", s.{self::Superclass::method3}(0.5, 1));
+  self::throws(() → core::String* => s.{self::Superclass::method4}(0.5, 1));
+  self::expect("Mixin", s.{self::Superclass::method4}(1, 0.5));
   self::Mixin* m = c;
-  self::expect("Mixin", m.{self::Mixin::method1}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method2}(0, 1){(core::int*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method3}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method4}(0, 1){(core::int*, core::int*) →* core::String*});
+  self::expect("Mixin", m.{self::Mixin::method1}(0, 1));
+  self::expect("Mixin", m.{self::Mixin::method2}(0, 1));
+  self::expect("Mixin", m.{self::Mixin::method3}(0, 1));
+  self::expect("Mixin", m.{self::Mixin::method4}(0, 1));
 }
 static method expect(dynamic expected, dynamic actual) → void {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() →* void f) → void {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic _) {
     return;
diff --git a/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.transformed.expect
index 9dafbb8..e1c8da2 100644
--- a/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.transformed.expect
@@ -68,29 +68,29 @@
 }
 static method main() → dynamic {
   self::Class* c = new self::Class::•();
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method1}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method2}(0, 1){(core::int*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method3}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method4}(0, 1){(core::int*, core::int*) →* core::String*});
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method1}(0, 1));
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method2}(0, 1));
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method3}(0, 1));
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method4}(0, 1));
   self::Superclass* s = c;
-  self::expect("Mixin", s.{self::Superclass::method1}(0.5, 1.5){(core::num*, core::num*) →* core::String*});
-  self::throws(() → core::String* => s.{self::Superclass::method2}(0.5, 1.5){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", s.{self::Superclass::method3}(0.5, 1){(core::num*, core::int*) →* core::String*});
-  self::throws(() → core::String* => s.{self::Superclass::method4}(0.5, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", s.{self::Superclass::method4}(1, 0.5){(core::num*, core::num*) →* core::String*});
+  self::expect("Mixin", s.{self::Superclass::method1}(0.5, 1.5));
+  self::throws(() → core::String* => s.{self::Superclass::method2}(0.5, 1.5));
+  self::expect("Mixin", s.{self::Superclass::method3}(0.5, 1));
+  self::throws(() → core::String* => s.{self::Superclass::method4}(0.5, 1));
+  self::expect("Mixin", s.{self::Superclass::method4}(1, 0.5));
   self::Mixin* m = c;
-  self::expect("Mixin", m.{self::Mixin::method1}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method2}(0, 1){(core::int*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method3}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method4}(0, 1){(core::int*, core::int*) →* core::String*});
+  self::expect("Mixin", m.{self::Mixin::method1}(0, 1));
+  self::expect("Mixin", m.{self::Mixin::method2}(0, 1));
+  self::expect("Mixin", m.{self::Mixin::method3}(0, 1));
+  self::expect("Mixin", m.{self::Mixin::method4}(0, 1));
 }
 static method expect(dynamic expected, dynamic actual) → void {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() →* void f) → void {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic _) {
     return;
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.weak.expect b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.weak.expect
index 3587556..fce001a 100644
--- a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.weak.expect
@@ -74,5 +74,5 @@
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
-  foo.{self::_Foo&Object&C::foo}(new self::B::•()){(self::B*) →* dynamic};
+  foo.{self::_Foo&Object&C::foo}(new self::B::•());
 }
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.weak.transformed.expect
index 408bf4c..cd6518b 100644
--- a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.weak.transformed.expect
@@ -72,5 +72,5 @@
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
-  foo.{self::_Foo&Object&C::foo}(new self::B::•()){(self::B*) →* dynamic};
+  foo.{self::_Foo&Object&C::foo}(new self::B::•());
 }
diff --git a/pkg/front_end/testcases/general/mixin_stubs.dart.weak.expect b/pkg/front_end/testcases/general/mixin_stubs.dart.weak.expect
index 32aae43..1a74047 100644
--- a/pkg/front_end/testcases/general/mixin_stubs.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_stubs.dart.weak.expect
@@ -131,12 +131,12 @@
     : super self::ClassEqMixinClass::•()
     ;
   method method() → dynamic {
-    this.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::concreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractMixin}(){() →* void};
+    this.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}();
+    this.{self::ClassEqMixinClass::concreteExtendsAbstractMixin}();
+    this.{self::ClassEqMixinClass::concreteMixin}();
+    this.{self::ClassEqMixinClass::abstractExtendsConcreteMixin}();
+    this.{self::ClassEqMixinClass::abstractExtendsAbstractMixin}();
+    this.{self::ClassEqMixinClass::abstractMixin}();
     super.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::ClassEqMixinClass::concreteMixin}();
@@ -148,12 +148,12 @@
     : super self::ClassExtendsMixinClass::•()
     ;
   method method() → dynamic {
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractMixin}(){() →* void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}();
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}();
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsAbstractMixin}();
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsConcreteMixin}();
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsAbstractMixin}();
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractMixin}();
     super.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}();
@@ -165,12 +165,12 @@
     : super self::ClassEqMixin::•()
     ;
   method method() → dynamic {
-    this.{self::ClassEqMixin::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixin::concreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractMixin}(){() →* void};
+    this.{self::ClassEqMixin::concreteExtendsConcreteMixin}();
+    this.{self::ClassEqMixin::concreteExtendsAbstractMixin}();
+    this.{self::ClassEqMixin::concreteMixin}();
+    this.{self::ClassEqMixin::abstractExtendsConcreteMixin}();
+    this.{self::ClassEqMixin::abstractExtendsAbstractMixin}();
+    this.{self::ClassEqMixin::abstractMixin}();
     super.{self::ClassEqMixin::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::ClassEqMixin::concreteMixin}();
@@ -182,12 +182,12 @@
     : super self::ClassExtendsMixin::•()
     ;
   method method() → dynamic {
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractMixin}(){() →* void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}();
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsAbstractMixin}();
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}();
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsConcreteMixin}();
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsAbstractMixin}();
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractMixin}();
     super.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}();
diff --git a/pkg/front_end/testcases/general/mixin_stubs.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_stubs.dart.weak.transformed.expect
index 3b87509..8493bcd 100644
--- a/pkg/front_end/testcases/general/mixin_stubs.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_stubs.dart.weak.transformed.expect
@@ -119,12 +119,12 @@
     : super self::ClassEqMixinClass::•()
     ;
   method method() → dynamic {
-    this.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::concreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractMixin}(){() →* void};
+    this.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}();
+    this.{self::ClassEqMixinClass::concreteExtendsAbstractMixin}();
+    this.{self::ClassEqMixinClass::concreteMixin}();
+    this.{self::ClassEqMixinClass::abstractExtendsConcreteMixin}();
+    this.{self::ClassEqMixinClass::abstractExtendsAbstractMixin}();
+    this.{self::ClassEqMixinClass::abstractMixin}();
     super.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::ClassEqMixinClass::concreteMixin}();
@@ -136,12 +136,12 @@
     : super self::ClassExtendsMixinClass::•()
     ;
   method method() → dynamic {
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractMixin}(){() →* void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}();
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}();
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsAbstractMixin}();
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsConcreteMixin}();
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsAbstractMixin}();
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractMixin}();
     super.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}();
@@ -153,12 +153,12 @@
     : super self::ClassEqMixin::•()
     ;
   method method() → dynamic {
-    this.{self::ClassEqMixin::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixin::concreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractMixin}(){() →* void};
+    this.{self::ClassEqMixin::concreteExtendsConcreteMixin}();
+    this.{self::ClassEqMixin::concreteExtendsAbstractMixin}();
+    this.{self::ClassEqMixin::concreteMixin}();
+    this.{self::ClassEqMixin::abstractExtendsConcreteMixin}();
+    this.{self::ClassEqMixin::abstractExtendsAbstractMixin}();
+    this.{self::ClassEqMixin::abstractMixin}();
     super.{self::ClassEqMixin::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::ClassEqMixin::concreteMixin}();
@@ -170,12 +170,12 @@
     : super self::ClassExtendsMixin::•()
     ;
   method method() → dynamic {
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractMixin}(){() →* void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}();
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsAbstractMixin}();
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}();
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsConcreteMixin}();
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsAbstractMixin}();
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractMixin}();
     super.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}();
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.expect b/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.expect
index 526ec74..e9d4ae3 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.expect
@@ -74,10 +74,10 @@
   self::Named* named = new self::Named::•();
   named.{self::Named::m} = 42;
   named.{self::_Named&S&M&N::superM} = 87;
-  if(!(named.{self::Named::m}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} 42)) {
+  if(!named.{self::Named::m}.{core::Object::==}(42)) {
     throw "Bad mixin translation of set:superM";
   }
-  if(!(named.{self::_Named&S&M&N::superM}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} 87)) {
+  if(!named.{self::_Named&S&M&N::superM}.{core::Object::==}(87)) {
     throw "Bad mixin translation of get:superM";
   }
 }
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.transformed.expect
index e0aa9ba..b86d9b1 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.transformed.expect
@@ -69,10 +69,10 @@
   self::Named* named = new self::Named::•();
   named.{self::Named::m} = 42;
   named.{self::_Named&S&M&N::superM} = 87;
-  if(!(named.{self::Named::m}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} 42)) {
+  if(!named.{self::Named::m}.{core::Object::==}(42)) {
     throw "Bad mixin translation of set:superM";
   }
-  if(!(named.{self::_Named&S&M&N::superM}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} 87)) {
+  if(!named.{self::_Named&S&M&N::superM}.{core::Object::==}(87)) {
     throw "Bad mixin translation of get:superM";
   }
 }
diff --git a/pkg/front_end/testcases/general/named_parameters.dart.weak.expect b/pkg/front_end/testcases/general/named_parameters.dart.weak.expect
index ad0b537..1a4d59b 100644
--- a/pkg/front_end/testcases/general/named_parameters.dart.weak.expect
+++ b/pkg/front_end/testcases/general/named_parameters.dart.weak.expect
@@ -9,8 +9,8 @@
   method foo({dynamic alpha = #C1, dynamic beta = #C1}) → dynamic {}
   method bar({dynamic beta = #C1, dynamic alpha = #C1}) → dynamic {}
   method namedCallback(({alpha: core::String, beta: core::int}) → dynamic callback) → dynamic {
-    callback(alpha: "one", beta: 2){({alpha: core::String, beta: core::int}) → dynamic};
-    callback(beta: 1, alpha: "two"){({alpha: core::String, beta: core::int}) → dynamic};
+    callback.call(alpha: "one", beta: 2);
+    callback.call(beta: 1, alpha: "two");
   }
 }
 class Subclass extends self::Superclass {
@@ -24,8 +24,8 @@
 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 main() → dynamic {
-  new self::Subclass::•().{self::Subclass::foo}(beta: 1, alpha: 2){({alpha: dynamic, beta: dynamic}) → dynamic};
-  new self::Subclass::•().{self::Subclass::foo}(alpha: 1, beta: 2){({alpha: dynamic, beta: dynamic}) → dynamic};
+  new self::Subclass::•().{self::Subclass::foo}(beta: 1, alpha: 2);
+  new self::Subclass::•().{self::Subclass::foo}(alpha: 1, beta: 2);
   self::topLevelNamed(1, 2, gamma: 3, delta: 4);
   self::topLevelNamed(1, 2, delta: 3, gamma: 4);
 }
diff --git a/pkg/front_end/testcases/general/named_parameters.dart.weak.transformed.expect b/pkg/front_end/testcases/general/named_parameters.dart.weak.transformed.expect
index ad0b537..1a4d59b 100644
--- a/pkg/front_end/testcases/general/named_parameters.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/named_parameters.dart.weak.transformed.expect
@@ -9,8 +9,8 @@
   method foo({dynamic alpha = #C1, dynamic beta = #C1}) → dynamic {}
   method bar({dynamic beta = #C1, dynamic alpha = #C1}) → dynamic {}
   method namedCallback(({alpha: core::String, beta: core::int}) → dynamic callback) → dynamic {
-    callback(alpha: "one", beta: 2){({alpha: core::String, beta: core::int}) → dynamic};
-    callback(beta: 1, alpha: "two"){({alpha: core::String, beta: core::int}) → dynamic};
+    callback.call(alpha: "one", beta: 2);
+    callback.call(beta: 1, alpha: "two");
   }
 }
 class Subclass extends self::Superclass {
@@ -24,8 +24,8 @@
 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 main() → dynamic {
-  new self::Subclass::•().{self::Subclass::foo}(beta: 1, alpha: 2){({alpha: dynamic, beta: dynamic}) → dynamic};
-  new self::Subclass::•().{self::Subclass::foo}(alpha: 1, beta: 2){({alpha: dynamic, beta: dynamic}) → dynamic};
+  new self::Subclass::•().{self::Subclass::foo}(beta: 1, alpha: 2);
+  new self::Subclass::•().{self::Subclass::foo}(alpha: 1, beta: 2);
   self::topLevelNamed(1, 2, gamma: 3, delta: 4);
   self::topLevelNamed(1, 2, delta: 3, gamma: 4);
 }
diff --git a/pkg/front_end/testcases/general/native_as_name.dart.weak.expect b/pkg/front_end/testcases/general/native_as_name.dart.weak.expect
index f85423d..1262765 100644
--- a/pkg/front_end/testcases/general/native_as_name.dart.weak.expect
+++ b/pkg/front_end/testcases/general/native_as_name.dart.weak.expect
@@ -78,12 +78,12 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::W::•().{self::W::native}{core::String*});
-  core::print(new self::X::•().{self::X::native}(){() →* core::String*});
-  core::print(new self::Y2::•().{self::Y2::native}{core::String*});
+  core::print(new self::W::•().{self::W::native});
+  core::print(new self::X::•().{self::X::native}());
+  core::print(new self::Y2::•().{self::Y2::native});
   core::print((let final self::Z* #t1 = new self::Z::•() in block {
     #t1.{self::Z::native} = "setter";
-  } =>#t1).{self::Z::f}{core::String*});
+  } =>#t1).{self::Z::f});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/native_as_name.dart.weak.transformed.expect b/pkg/front_end/testcases/general/native_as_name.dart.weak.transformed.expect
index f85423d..1262765 100644
--- a/pkg/front_end/testcases/general/native_as_name.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/native_as_name.dart.weak.transformed.expect
@@ -78,12 +78,12 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::W::•().{self::W::native}{core::String*});
-  core::print(new self::X::•().{self::X::native}(){() →* core::String*});
-  core::print(new self::Y2::•().{self::Y2::native}{core::String*});
+  core::print(new self::W::•().{self::W::native});
+  core::print(new self::X::•().{self::X::native}());
+  core::print(new self::Y2::•().{self::Y2::native});
   core::print((let final self::Z* #t1 = new self::Z::•() in block {
     #t1.{self::Z::native} = "setter";
-  } =>#t1).{self::Z::f}{core::String*});
+  } =>#t1).{self::Z::f});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/nested_property_set.dart.weak.expect b/pkg/front_end/testcases/general/nested_property_set.dart.weak.expect
index 692bedb..7283345 100644
--- a/pkg/front_end/testcases/general/nested_property_set.dart.weak.expect
+++ b/pkg/front_end/testcases/general/nested_property_set.dart.weak.expect
@@ -55,11 +55,11 @@
   self::IntField* intField2 = new self::IntField::•();
   self::NumField* numField = new self::NumField::•();
   self::DoubleField* doubleField = new self::DoubleField::•();
-  intField1.{self::IntField::field} = (intField2.{self::IntField::field} = numField.{self::NumField::field}{core::num*} as{TypeError} core::int*) as{TypeError} core::int*;
-  intField1.{self::IntField::field} = numField.{self::NumField::field} = intField2.{self::IntField::field}{core::int*};
+  intField1.{self::IntField::field} = (intField2.{self::IntField::field} = numField.{self::NumField::field} as{TypeError} core::int*) as{TypeError} core::int*;
+  intField1.{self::IntField::field} = numField.{self::NumField::field} = intField2.{self::IntField::field};
   try {
     numField.{self::NumField::field} = 0.5;
-    intField1.{self::IntField::field} = (doubleField.{self::DoubleField::field} = numField.{self::NumField::field}{core::num*} as{TypeError} core::double*) as{TypeError} core::int*;
+    intField1.{self::IntField::field} = (doubleField.{self::DoubleField::field} = numField.{self::NumField::field} as{TypeError} core::double*) as{TypeError} core::int*;
     throw "Should fail";
   }
   on dynamic catch(final dynamic _) {
diff --git a/pkg/front_end/testcases/general/nested_property_set.dart.weak.transformed.expect b/pkg/front_end/testcases/general/nested_property_set.dart.weak.transformed.expect
index d3d7620..61ef9de 100644
--- a/pkg/front_end/testcases/general/nested_property_set.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/nested_property_set.dart.weak.transformed.expect
@@ -55,11 +55,11 @@
   self::IntField* intField2 = new self::IntField::•();
   self::NumField* numField = new self::NumField::•();
   self::DoubleField* doubleField = new self::DoubleField::•();
-  intField1.{self::IntField::field} = intField2.{self::IntField::field} = numField.{self::NumField::field}{core::num*} as{TypeError} core::int*;
-  intField1.{self::IntField::field} = numField.{self::NumField::field} = intField2.{self::IntField::field}{core::int*};
+  intField1.{self::IntField::field} = intField2.{self::IntField::field} = numField.{self::NumField::field} as{TypeError} core::int*;
+  intField1.{self::IntField::field} = numField.{self::NumField::field} = intField2.{self::IntField::field};
   try {
     numField.{self::NumField::field} = 0.5;
-    intField1.{self::IntField::field} = (doubleField.{self::DoubleField::field} = numField.{self::NumField::field}{core::num*} as{TypeError} core::double*) as{TypeError} core::int*;
+    intField1.{self::IntField::field} = (doubleField.{self::DoubleField::field} = numField.{self::NumField::field} as{TypeError} core::double*) as{TypeError} core::int*;
     throw "Should fail";
   }
   on dynamic catch(final dynamic _) {
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.expect
index e2b0f2d..a1bc0ad 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.expect
@@ -11,7 +11,7 @@
     core::print("hello");
   }
   method foo() → void
-    return this.{self::X::_foo}(){() →* void};
+    return this.{self::X::_foo}();
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -40,13 +40,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder method foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   self::Y* y = new self::Y::•();
-  y.{self::X::foo}(){() →* void};
+  y.{self::X::foo}();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.outline.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.outline.expect
index 9be8c51..ac5db6a 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.outline.expect
@@ -35,9 +35,9 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* void};
+    return this.{self::Y::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/general/no_such_method_forwarder.dart.weak.transformed.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
index be2cc3e..72d4454 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
@@ -38,7 +38,7 @@
     return :async_future;
   }
   method foo() → void
-    return this.{self::X::_foo}(){() →* void};
+    return this.{self::X::_foo}();
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -67,13 +67,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder method foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   self::Y* y = new self::Y::•();
-  y.{self::X::foo}(){() →* void};
+  y.{self::X::foo}();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.expect
index 6728bd2..ddb32d6 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.expect
@@ -20,9 +20,9 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} 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.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.outline.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.outline.expect
index d5c3d92..14a8225 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.outline.expect
@@ -19,9 +19,9 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} 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.{self::Foo::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>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Foo::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
   ;
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.transformed.expect
index 79287b9..3e79735 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.transformed.expect
@@ -20,9 +20,9 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} 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.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
diff --git a/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.expect b/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.expect
index 5e6241d..2f9cd4a 100644
--- a/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.expect
+++ b/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.expect
@@ -22,35 +22,35 @@
     : self::C::field1 = field1, self::C::field2 = () → self::C::T* => field1, self::C::field3 = (self::C::T* t) → Null {}, self::C::field4 = (self::C::T* t) → self::C::T* => t, self::C::field5 = () → () →* self::C::T* => () → self::C::T* => field1, self::C::field6 = (() →* self::C::T* f) → Null {}, self::C::field7 = (() →* self::C::T* f) → self::C::T* => field1, self::C::field8 = ((self::C::T*) →* void f) → Null {}, self::C::field9 = ((self::C::T*) →* void f) → self::C::T* => field1, self::C::field10 = ((self::C::T*) →* self::C::T* f) → Null {}, self::C::field11 = ((self::C::T*) →* self::C::T* f) → self::C::T* => field1, self::C::field12 = <S extends self::C::T*>() → Null => null, self::C::field13 = <S extends self::C::T*>(S* s) → Null {}, self::C::field14 = <S extends self::C::T*>(S* s) → S* => s, self::C::field15 = (<S extends self::C::T*>() →* S* f) → Null {}, super core::Object::•()
     ;
   get getter1() → self::C::T*
-    return this.{self::C::field1}{self::C::T*};
+    return this.{self::C::field1};
   get getter2() → () →* self::C::T*
-    return this.{self::C::field2}{() →* self::C::T*};
+    return this.{self::C::field2};
   get getter3() → (self::C::T*) →* void
-    return this.{self::C::field3}{(self::C::T*) →* void};
+    return this.{self::C::field3};
   get getter4() → (self::C::T*) →* self::C::T*
-    return this.{self::C::field4}{(self::C::T*) →* self::C::T*};
+    return this.{self::C::field4};
   get getter5() → () →* () →* self::C::T*
-    return this.{self::C::field5}{() →* () →* self::C::T*};
+    return this.{self::C::field5};
   get getter6() → (() →* self::C::T*) →* void
-    return this.{self::C::field6}{(() →* self::C::T*) →* void};
+    return this.{self::C::field6};
   get getter7() → (() →* self::C::T*) →* self::C::T*
-    return this.{self::C::field7}{(() →* self::C::T*) →* self::C::T*};
+    return this.{self::C::field7};
   get getter8() → ((self::C::T*) →* void) →* void
-    return this.{self::C::field8}{((self::C::T*) →* void) →* void};
+    return this.{self::C::field8};
   get getter9() → ((self::C::T*) →* void) →* self::C::T*
-    return this.{self::C::field9}{((self::C::T*) →* void) →* self::C::T*};
+    return this.{self::C::field9};
   get getter10() → ((self::C::T*) →* self::C::T*) →* void
-    return this.{self::C::field10}{((self::C::T*) →* self::C::T*) →* void};
+    return this.{self::C::field10};
   get getter11() → ((self::C::T*) →* self::C::T*) →* self::C::T*
-    return this.{self::C::field11}{((self::C::T*) →* self::C::T*) →* self::C::T*};
+    return this.{self::C::field11};
   get getter12() → <S extends self::C::T* = dynamic>() →* S*
-    return this.{self::C::field12}{<S extends self::C::T* = dynamic>() →* S*};
+    return this.{self::C::field12};
   get getter13() → <S extends self::C::T* = dynamic>(S*) →* void
-    return this.{self::C::field13}{<S extends self::C::T* = dynamic>(S*) →* void};
+    return this.{self::C::field13};
   get getter14() → <S extends self::C::T* = dynamic>(S*) →* S*
-    return this.{self::C::field14}{<S extends self::C::T* = dynamic>(S*) →* S*};
+    return this.{self::C::field14};
   get getter15() → (<S extends self::C::T* = dynamic>() →* S*) →* void
-    return this.{self::C::field15}{(<S extends self::C::T* = dynamic>() →* S*) →* void};
+    return this.{self::C::field15};
   set setter1(generic-covariant-impl self::C::T* value) → void {
     this.{self::C::field1} = value;
   }
@@ -154,151 +154,151 @@
 }
 static method main() → dynamic {
   self::C<core::num*>* c = new self::C::•<core::int*>(0);
-  c.{self::C::field1}{core::num*};
-  c.{self::C::field2}{() →* core::num*};
+  c.{self::C::field1};
+  c.{self::C::field2};
   try {
-    c.{self::C::field3}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+    c.{self::C::field3} as{TypeError,CovarianceCheck} (core::num*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field4}{(core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
+    c.{self::C::field4} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::field5}{() →* () →* core::num*};
+  c.{self::C::field5};
   try {
-    c.{self::C::field6}{(() →* core::num*) →* void} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
+    c.{self::C::field6} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field7}{(() →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
+    c.{self::C::field7} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::field8}{((core::num*) →* void) →* void};
-  c.{self::C::field9}{((core::num*) →* void) →* core::num*};
+  c.{self::C::field8};
+  c.{self::C::field9};
   try {
-    c.{self::C::field10}{((core::num*) →* core::num*) →* void} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
+    c.{self::C::field10} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field11}{((core::num*) →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
+    c.{self::C::field11} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field12}{<S extends core::num* = dynamic>() →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
+    c.{self::C::field12} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field13}{<S extends core::num* = dynamic>(S*) →* void} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
+    c.{self::C::field13} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field14}{<S extends core::num* = dynamic>(S*) →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
+    c.{self::C::field14} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field15}{(<S extends core::num* = dynamic>() →* S*) →* void} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
+    c.{self::C::field15} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::getter1}{core::num*};
-  c.{self::C::getter2}{() →* core::num*};
+  c.{self::C::getter1};
+  c.{self::C::getter2};
   try {
-    c.{self::C::getter3}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+    c.{self::C::getter3} as{TypeError,CovarianceCheck} (core::num*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter4}{(core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
+    c.{self::C::getter4} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::getter5}{() →* () →* core::num*};
+  c.{self::C::getter5};
   try {
-    c.{self::C::getter6}{(() →* core::num*) →* void} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
+    c.{self::C::getter6} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter7}{(() →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
+    c.{self::C::getter7} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::getter8}{((core::num*) →* void) →* void};
-  c.{self::C::getter9}{((core::num*) →* void) →* core::num*};
+  c.{self::C::getter8};
+  c.{self::C::getter9};
   try {
-    c.{self::C::getter10}{((core::num*) →* core::num*) →* void} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
+    c.{self::C::getter10} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter11}{((core::num*) →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
+    c.{self::C::getter11} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter12}{<S extends core::num* = dynamic>() →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
+    c.{self::C::getter12} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter13}{<S extends core::num* = dynamic>(S*) →* void} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
+    c.{self::C::getter13} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter14}{<S extends core::num* = dynamic>(S*) →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
+    c.{self::C::getter14} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter15}{(<S extends core::num* = dynamic>() →* S*) →* void} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
+    c.{self::C::getter15} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
@@ -398,93 +398,93 @@
     core::print(e);
   }
   try {
-    c.{self::C::method1}(0.5){(core::num*) →* void};
+    c.{self::C::method1}(0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method2}(() → core::double* => 0.5){(() →* core::num*) →* void};
+    c.{self::C::method2}(() → core::double* => 0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::method3}((core::num* n) → Null {}){((core::num*) →* void) →* void};
+  c.{self::C::method3}((core::num* n) → Null {});
   try {
-    c.{self::C::method4}((core::num* n) → core::double* => 0.5){((core::num*) →* core::num*) →* void};
+    c.{self::C::method4}((core::num* n) → core::double* => 0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method5}(() → () →* core::double* => () → core::double* => 0.5){(() →* () →* core::num*) →* void};
+    c.{self::C::method5}(() → () →* core::double* => () → core::double* => 0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::method6}((() →* core::num* f) → Null {}){((() →* core::num*) →* void) →* void};
+  c.{self::C::method6}((() →* core::num* f) → Null {});
   try {
-    c.{self::C::method7}((() →* core::num* f) → core::double* => 0.5){((() →* core::num*) →* core::num*) →* void};
+    c.{self::C::method7}((() →* core::num* f) → core::double* => 0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method8}(((core::double*) →* void f) → Null {}){(((core::num*) →* void) →* void) →* void};
+    c.{self::C::method8}(((core::double*) →* void f) → Null {});
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method9}(((core::double*) →* void f) → core::double* => 0.5){(((core::num*) →* void) →* core::num*) →* void};
+    c.{self::C::method9}(((core::double*) →* void f) → core::double* => 0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method10}(((core::double*) →* core::num* f) → Null {}){(((core::num*) →* core::num*) →* void) →* void};
+    c.{self::C::method10}(((core::double*) →* core::num* f) → Null {});
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method11}(((core::double*) →* core::num* f) → core::double* => 0.5){(((core::num*) →* core::num*) →* core::num*) →* void};
+    c.{self::C::method11}(((core::double*) →* core::num* f) → core::double* => 0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method12}(<S extends core::num*>() → Null => null){(<S extends core::num* = dynamic>() →* S*) →* void};
+    c.{self::C::method12}(<S extends core::num*>() → Null => null);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method13}(<S extends core::num*>(S* s) → Null {}){(<S extends core::num* = dynamic>(S*) →* void) →* void};
+    c.{self::C::method13}(<S extends core::num*>(S* s) → Null {});
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method14}(<S extends core::num*>(S* s) → S* => s){(<S extends core::num* = dynamic>(S*) →* S*) →* void};
+    c.{self::C::method14}(<S extends core::num*>(S* s) → S* => s);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method15}((<S extends core::num*>() →* S* f) → Null {}){((<S extends core::num* = dynamic>() →* S*) →* void) →* void};
+    c.{self::C::method15}((<S extends core::num*>() →* S* f) → Null {});
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
diff --git a/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.transformed.expect b/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.transformed.expect
index 5e6241d..2f9cd4a 100644
--- a/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.transformed.expect
@@ -22,35 +22,35 @@
     : self::C::field1 = field1, self::C::field2 = () → self::C::T* => field1, self::C::field3 = (self::C::T* t) → Null {}, self::C::field4 = (self::C::T* t) → self::C::T* => t, self::C::field5 = () → () →* self::C::T* => () → self::C::T* => field1, self::C::field6 = (() →* self::C::T* f) → Null {}, self::C::field7 = (() →* self::C::T* f) → self::C::T* => field1, self::C::field8 = ((self::C::T*) →* void f) → Null {}, self::C::field9 = ((self::C::T*) →* void f) → self::C::T* => field1, self::C::field10 = ((self::C::T*) →* self::C::T* f) → Null {}, self::C::field11 = ((self::C::T*) →* self::C::T* f) → self::C::T* => field1, self::C::field12 = <S extends self::C::T*>() → Null => null, self::C::field13 = <S extends self::C::T*>(S* s) → Null {}, self::C::field14 = <S extends self::C::T*>(S* s) → S* => s, self::C::field15 = (<S extends self::C::T*>() →* S* f) → Null {}, super core::Object::•()
     ;
   get getter1() → self::C::T*
-    return this.{self::C::field1}{self::C::T*};
+    return this.{self::C::field1};
   get getter2() → () →* self::C::T*
-    return this.{self::C::field2}{() →* self::C::T*};
+    return this.{self::C::field2};
   get getter3() → (self::C::T*) →* void
-    return this.{self::C::field3}{(self::C::T*) →* void};
+    return this.{self::C::field3};
   get getter4() → (self::C::T*) →* self::C::T*
-    return this.{self::C::field4}{(self::C::T*) →* self::C::T*};
+    return this.{self::C::field4};
   get getter5() → () →* () →* self::C::T*
-    return this.{self::C::field5}{() →* () →* self::C::T*};
+    return this.{self::C::field5};
   get getter6() → (() →* self::C::T*) →* void
-    return this.{self::C::field6}{(() →* self::C::T*) →* void};
+    return this.{self::C::field6};
   get getter7() → (() →* self::C::T*) →* self::C::T*
-    return this.{self::C::field7}{(() →* self::C::T*) →* self::C::T*};
+    return this.{self::C::field7};
   get getter8() → ((self::C::T*) →* void) →* void
-    return this.{self::C::field8}{((self::C::T*) →* void) →* void};
+    return this.{self::C::field8};
   get getter9() → ((self::C::T*) →* void) →* self::C::T*
-    return this.{self::C::field9}{((self::C::T*) →* void) →* self::C::T*};
+    return this.{self::C::field9};
   get getter10() → ((self::C::T*) →* self::C::T*) →* void
-    return this.{self::C::field10}{((self::C::T*) →* self::C::T*) →* void};
+    return this.{self::C::field10};
   get getter11() → ((self::C::T*) →* self::C::T*) →* self::C::T*
-    return this.{self::C::field11}{((self::C::T*) →* self::C::T*) →* self::C::T*};
+    return this.{self::C::field11};
   get getter12() → <S extends self::C::T* = dynamic>() →* S*
-    return this.{self::C::field12}{<S extends self::C::T* = dynamic>() →* S*};
+    return this.{self::C::field12};
   get getter13() → <S extends self::C::T* = dynamic>(S*) →* void
-    return this.{self::C::field13}{<S extends self::C::T* = dynamic>(S*) →* void};
+    return this.{self::C::field13};
   get getter14() → <S extends self::C::T* = dynamic>(S*) →* S*
-    return this.{self::C::field14}{<S extends self::C::T* = dynamic>(S*) →* S*};
+    return this.{self::C::field14};
   get getter15() → (<S extends self::C::T* = dynamic>() →* S*) →* void
-    return this.{self::C::field15}{(<S extends self::C::T* = dynamic>() →* S*) →* void};
+    return this.{self::C::field15};
   set setter1(generic-covariant-impl self::C::T* value) → void {
     this.{self::C::field1} = value;
   }
@@ -154,151 +154,151 @@
 }
 static method main() → dynamic {
   self::C<core::num*>* c = new self::C::•<core::int*>(0);
-  c.{self::C::field1}{core::num*};
-  c.{self::C::field2}{() →* core::num*};
+  c.{self::C::field1};
+  c.{self::C::field2};
   try {
-    c.{self::C::field3}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+    c.{self::C::field3} as{TypeError,CovarianceCheck} (core::num*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field4}{(core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
+    c.{self::C::field4} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::field5}{() →* () →* core::num*};
+  c.{self::C::field5};
   try {
-    c.{self::C::field6}{(() →* core::num*) →* void} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
+    c.{self::C::field6} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field7}{(() →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
+    c.{self::C::field7} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::field8}{((core::num*) →* void) →* void};
-  c.{self::C::field9}{((core::num*) →* void) →* core::num*};
+  c.{self::C::field8};
+  c.{self::C::field9};
   try {
-    c.{self::C::field10}{((core::num*) →* core::num*) →* void} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
+    c.{self::C::field10} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field11}{((core::num*) →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
+    c.{self::C::field11} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field12}{<S extends core::num* = dynamic>() →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
+    c.{self::C::field12} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field13}{<S extends core::num* = dynamic>(S*) →* void} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
+    c.{self::C::field13} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field14}{<S extends core::num* = dynamic>(S*) →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
+    c.{self::C::field14} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::field15}{(<S extends core::num* = dynamic>() →* S*) →* void} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
+    c.{self::C::field15} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::getter1}{core::num*};
-  c.{self::C::getter2}{() →* core::num*};
+  c.{self::C::getter1};
+  c.{self::C::getter2};
   try {
-    c.{self::C::getter3}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+    c.{self::C::getter3} as{TypeError,CovarianceCheck} (core::num*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter4}{(core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
+    c.{self::C::getter4} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::getter5}{() →* () →* core::num*};
+  c.{self::C::getter5};
   try {
-    c.{self::C::getter6}{(() →* core::num*) →* void} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
+    c.{self::C::getter6} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter7}{(() →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
+    c.{self::C::getter7} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::getter8}{((core::num*) →* void) →* void};
-  c.{self::C::getter9}{((core::num*) →* void) →* core::num*};
+  c.{self::C::getter8};
+  c.{self::C::getter9};
   try {
-    c.{self::C::getter10}{((core::num*) →* core::num*) →* void} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
+    c.{self::C::getter10} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter11}{((core::num*) →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
+    c.{self::C::getter11} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter12}{<S extends core::num* = dynamic>() →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
+    c.{self::C::getter12} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter13}{<S extends core::num* = dynamic>(S*) →* void} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
+    c.{self::C::getter13} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter14}{<S extends core::num* = dynamic>(S*) →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
+    c.{self::C::getter14} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter15}{(<S extends core::num* = dynamic>() →* S*) →* void} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
+    c.{self::C::getter15} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
@@ -398,93 +398,93 @@
     core::print(e);
   }
   try {
-    c.{self::C::method1}(0.5){(core::num*) →* void};
+    c.{self::C::method1}(0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method2}(() → core::double* => 0.5){(() →* core::num*) →* void};
+    c.{self::C::method2}(() → core::double* => 0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::method3}((core::num* n) → Null {}){((core::num*) →* void) →* void};
+  c.{self::C::method3}((core::num* n) → Null {});
   try {
-    c.{self::C::method4}((core::num* n) → core::double* => 0.5){((core::num*) →* core::num*) →* void};
+    c.{self::C::method4}((core::num* n) → core::double* => 0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method5}(() → () →* core::double* => () → core::double* => 0.5){(() →* () →* core::num*) →* void};
+    c.{self::C::method5}(() → () →* core::double* => () → core::double* => 0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
-  c.{self::C::method6}((() →* core::num* f) → Null {}){((() →* core::num*) →* void) →* void};
+  c.{self::C::method6}((() →* core::num* f) → Null {});
   try {
-    c.{self::C::method7}((() →* core::num* f) → core::double* => 0.5){((() →* core::num*) →* core::num*) →* void};
+    c.{self::C::method7}((() →* core::num* f) → core::double* => 0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method8}(((core::double*) →* void f) → Null {}){(((core::num*) →* void) →* void) →* void};
+    c.{self::C::method8}(((core::double*) →* void f) → Null {});
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method9}(((core::double*) →* void f) → core::double* => 0.5){(((core::num*) →* void) →* core::num*) →* void};
+    c.{self::C::method9}(((core::double*) →* void f) → core::double* => 0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method10}(((core::double*) →* core::num* f) → Null {}){(((core::num*) →* core::num*) →* void) →* void};
+    c.{self::C::method10}(((core::double*) →* core::num* f) → Null {});
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method11}(((core::double*) →* core::num* f) → core::double* => 0.5){(((core::num*) →* core::num*) →* core::num*) →* void};
+    c.{self::C::method11}(((core::double*) →* core::num* f) → core::double* => 0.5);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method12}(<S extends core::num*>() → Null => null){(<S extends core::num* = dynamic>() →* S*) →* void};
+    c.{self::C::method12}(<S extends core::num*>() → Null => null);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method13}(<S extends core::num*>(S* s) → Null {}){(<S extends core::num* = dynamic>(S*) →* void) →* void};
+    c.{self::C::method13}(<S extends core::num*>(S* s) → Null {});
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method14}(<S extends core::num*>(S* s) → S* => s){(<S extends core::num* = dynamic>(S*) →* S*) →* void};
+    c.{self::C::method14}(<S extends core::num*>(S* s) → S* => s);
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
     core::print(e);
   }
   try {
-    c.{self::C::method15}((<S extends core::num*>() →* S* f) → Null {}){((<S extends core::num* = dynamic>() →* S*) →* void) →* void};
+    c.{self::C::method15}((<S extends core::num*>() →* S* f) → Null {});
     throw "TypeError expected";
   }
   on core::TypeError* catch(final core::TypeError* e) {
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect
index 7f2d6c50..ee2b26a 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect
@@ -60,13 +60,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _method1(core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant core::int* a, generic-covariant-impl core::int* b) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
 }
 class D4 extends core::Object implements nsm::B, nsm::A<core::int*> {
   synthetic constructor •() → self::D4*
@@ -85,13 +85,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _method1(core::int* x, covariant core::int* y, generic-covariant-impl core::int* z, covariant generic-covariant-impl core::int* w) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant core::int* x, generic-covariant-impl core::int* y) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
 }
 static method main() → dynamic {}
 
@@ -192,13 +192,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _method1(core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant core::int* a, generic-covariant-impl core::int* b) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
 }
 class C4 extends core::Object implements nsm::B, nsm::A<core::int*> {
   synthetic constructor •() → nsm::C4*
@@ -217,13 +217,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _method1(core::int* x, covariant core::int* y, generic-covariant-impl core::int* z, covariant generic-covariant-impl core::int* w) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant core::int* x, generic-covariant-impl core::int* y) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect
index e07accc..0376936 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect
@@ -57,13 +57,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _method1(core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method _method2({core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d}))){(core::Invocation*) →* dynamic};
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d})));
   no-such-method-forwarder method _method3(covariant core::int* a, generic-covariant-impl core::int* b) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method _method4({covariant core::int* a, generic-covariant-impl core::int* b}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b}))){(core::Invocation*) →* dynamic};
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b})));
 }
 class D4 extends core::Object implements nsm::B, nsm::A<core::int*> {
   synthetic constructor •() → self::D4*
@@ -81,13 +81,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _method1(core::int* x, covariant core::int* y, generic-covariant-impl core::int* z, covariant generic-covariant-impl core::int* w) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method _method2({core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d}))){(core::Invocation*) →* dynamic};
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d})));
   no-such-method-forwarder method _method3(covariant core::int* x, generic-covariant-impl core::int* y) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method _method4({covariant core::int* a, generic-covariant-impl core::int* b}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b}))){(core::Invocation*) →* dynamic};
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b})));
 }
 static method main() → dynamic
   ;
@@ -184,13 +184,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _method1(core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method _method2({core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d})));
   no-such-method-forwarder method _method3(covariant core::int* a, generic-covariant-impl core::int* b) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method _method4({covariant core::int* a, generic-covariant-impl core::int* b}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b})));
 }
 class C4 extends core::Object implements nsm::B, nsm::A<core::int*> {
   synthetic constructor •() → nsm::C4*
@@ -208,13 +208,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _method1(core::int* x, covariant core::int* y, generic-covariant-impl core::int* z, covariant generic-covariant-impl core::int* w) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method _method2({core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d})));
   no-such-method-forwarder method _method3(covariant core::int* x, generic-covariant-impl core::int* y) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method _method4({covariant core::int* a, generic-covariant-impl core::int* b}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b})));
 }
 
 
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.transformed.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.transformed.expect
index e66febb..63f9b2e 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.transformed.expect
@@ -60,13 +60,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _method1(core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(a, b, c, d)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(a, b, c, d)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant core::int* a, generic-covariant-impl core::int* b) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
 }
 class D4 extends core::Object implements nsm::B, nsm::A<core::int*> {
   synthetic constructor •() → self::D4*
@@ -85,13 +85,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _method1(core::int* x, covariant core::int* y, generic-covariant-impl core::int* z, covariant generic-covariant-impl core::int* w) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(x, y, z, w)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(x, y, z, w)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant core::int* x, generic-covariant-impl core::int* y) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
 }
 static method main() → dynamic {}
 
@@ -192,13 +192,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _method1(core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(a, b, c, d)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(a, b, c, d)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant core::int* a, generic-covariant-impl core::int* b) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
 }
 class C4 extends core::Object implements nsm::B, nsm::A<core::int*> {
   synthetic constructor •() → nsm::C4*
@@ -217,13 +217,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _method1(core::int* x, covariant core::int* y, generic-covariant-impl core::int* z, covariant generic-covariant-impl core::int* w) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(x, y, z, w)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(x, y, z, w)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant core::int* x, generic-covariant-impl core::int* y) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6)));
   no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/null_aware.dart.weak.expect b/pkg/front_end/testcases/general/null_aware.dart.weak.expect
index 6e39869..6cfab2a 100644
--- a/pkg/front_end/testcases/general/null_aware.dart.weak.expect
+++ b/pkg/front_end/testcases/general/null_aware.dart.weak.expect
@@ -21,12 +21,12 @@
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
-  let final self::Foo* #t1 = foo in #t1 == null ?{core::int*} null : #t1.{self::Foo::field} = 5;
+  let final self::Foo* #t1 = foo in #t1.{self::Foo::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
   self::Foo::staticField = 5;
-  let final self::Foo* #t2 = foo in #t2.{self::Foo::field}{core::int*} == null ?{core::int*} #t2.{self::Foo::field} = 5 : null;
-  self::Foo::staticField == null ?{core::int*} self::Foo::staticField = 5 : null;
-  let final self::Foo* #t3 = foo in #t3 == null ?{core::int*} null : #t3.{self::Foo::field}{core::int*} == null ?{core::int*} #t3.{self::Foo::field} = 5 : null;
-  self::Foo::staticField == null ?{core::int*} self::Foo::staticField = 5 : null;
-  core::int* intValue = let final core::int* #t4 = foo.{self::Foo::field}{core::int*} in #t4 == null ?{core::int*} 6 : #t4;
-  core::num* numValue = let final core::int* #t5 = foo.{self::Foo::field}{core::int*} in #t5 == null ?{core::num*} 4.5 : #t5;
+  let final self::Foo* #t2 = foo in #t2.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t2.{self::Foo::field} = 5 : null;
+  self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
+  let final self::Foo* #t3 = foo in #t3.{self::Foo::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
+  self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
+  core::int* intValue = let final core::int* #t4 = foo.{self::Foo::field} in #t4.{core::num::==}(null) ?{core::int*} 6 : #t4;
+  core::num* numValue = let final core::int* #t5 = foo.{self::Foo::field} in #t5.{core::num::==}(null) ?{core::num*} 4.5 : #t5;
 }
diff --git a/pkg/front_end/testcases/general/null_aware.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware.dart.weak.transformed.expect
index 6e39869..6cfab2a 100644
--- a/pkg/front_end/testcases/general/null_aware.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/null_aware.dart.weak.transformed.expect
@@ -21,12 +21,12 @@
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
-  let final self::Foo* #t1 = foo in #t1 == null ?{core::int*} null : #t1.{self::Foo::field} = 5;
+  let final self::Foo* #t1 = foo in #t1.{self::Foo::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
   self::Foo::staticField = 5;
-  let final self::Foo* #t2 = foo in #t2.{self::Foo::field}{core::int*} == null ?{core::int*} #t2.{self::Foo::field} = 5 : null;
-  self::Foo::staticField == null ?{core::int*} self::Foo::staticField = 5 : null;
-  let final self::Foo* #t3 = foo in #t3 == null ?{core::int*} null : #t3.{self::Foo::field}{core::int*} == null ?{core::int*} #t3.{self::Foo::field} = 5 : null;
-  self::Foo::staticField == null ?{core::int*} self::Foo::staticField = 5 : null;
-  core::int* intValue = let final core::int* #t4 = foo.{self::Foo::field}{core::int*} in #t4 == null ?{core::int*} 6 : #t4;
-  core::num* numValue = let final core::int* #t5 = foo.{self::Foo::field}{core::int*} in #t5 == null ?{core::num*} 4.5 : #t5;
+  let final self::Foo* #t2 = foo in #t2.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t2.{self::Foo::field} = 5 : null;
+  self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
+  let final self::Foo* #t3 = foo in #t3.{self::Foo::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
+  self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
+  core::int* intValue = let final core::int* #t4 = foo.{self::Foo::field} in #t4.{core::num::==}(null) ?{core::int*} 6 : #t4;
+  core::num* numValue = let final core::int* #t5 = foo.{self::Foo::field} in #t5.{core::num::==}(null) ?{core::num*} 4.5 : #t5;
 }
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.expect b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.expect
index 46f5652..2c4a16c 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.expect
+++ b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.expect
@@ -20,7 +20,7 @@
 static method main() → dynamic {
   dynamic o;
   if(false) {
-    for (final dynamic #t1 in (let final dynamic #t2 = o in #t2 == null ?{dynamic} null : #t2{dynamic}.iterable) as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
+    for (final dynamic #t1 in (let final dynamic #t2 = o in #t2.{core::Object::==}(null) ?{dynamic} null : #t2.iterable) as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       self::Class* c = #t1 as{TypeError,ForDynamic} self::Class*;
     }
   }
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.transformed.expect
index dede444..8bd8e5e 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.transformed.expect
@@ -21,7 +21,7 @@
   dynamic o;
   if(false) {
     {
-      core::Iterator<dynamic>* :sync-for-iterator = ((let final dynamic #t1 = o in #t1 == null ?{dynamic} null : #t1{dynamic}.iterable) as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
+      core::Iterator<dynamic>* :sync-for-iterator = ((let final dynamic #t1 = o in #t1.{core::Object::==}(null) ?{dynamic} null : #t1.iterable) as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
         {
diff --git a/pkg/front_end/testcases/general/null_aware_postfix.dart.weak.expect b/pkg/front_end/testcases/general/null_aware_postfix.dart.weak.expect
index b31646a..e7859b1 100644
--- a/pkg/front_end/testcases/general/null_aware_postfix.dart.weak.expect
+++ b/pkg/front_end/testcases/general/null_aware_postfix.dart.weak.expect
@@ -42,6 +42,6 @@
 }
 static method main() → dynamic {
   self::A* a;
-  let final self::A* #t1 = a in #t1 == null ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}{self::B*}.{self::B::+}(1){(core::int*) →* self::C*};
-  self::C* c = (let final self::A* #t2 = a in #t2 == null ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b}{self::B*} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1){(core::int*) →* self::C*} in #t3) as{TypeError} self::C*;
+  let final self::A* #t1 = a in #t1.{self::A::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
+  self::C* c = (let final self::A* #t2 = a in #t2.{self::A::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
 }
diff --git a/pkg/front_end/testcases/general/null_aware_postfix.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware_postfix.dart.weak.transformed.expect
index b31646a..e7859b1 100644
--- a/pkg/front_end/testcases/general/null_aware_postfix.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/null_aware_postfix.dart.weak.transformed.expect
@@ -42,6 +42,6 @@
 }
 static method main() → dynamic {
   self::A* a;
-  let final self::A* #t1 = a in #t1 == null ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}{self::B*}.{self::B::+}(1){(core::int*) →* self::C*};
-  self::C* c = (let final self::A* #t2 = a in #t2 == null ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b}{self::B*} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1){(core::int*) →* self::C*} in #t3) as{TypeError} self::C*;
+  let final self::A* #t1 = a in #t1.{self::A::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
+  self::C* c = (let final self::A* #t2 = a in #t2.{self::A::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
 }
diff --git a/pkg/front_end/testcases/general/null_aware_spread.dart.weak.expect b/pkg/front_end/testcases/general/null_aware_spread.dart.weak.expect
index 897aefa..807a6b5 100644
--- a/pkg/front_end/testcases/general/null_aware_spread.dart.weak.expect
+++ b/pkg/front_end/testcases/general/null_aware_spread.dart.weak.expect
@@ -7,27 +7,27 @@
   list = block {
     final core::List<core::String*>* #t1 = <core::String*>["foo"];
     final core::Iterable<core::String*>* #t2 = list;
-    if(!(#t2 == null))
-      #t1.{core::List::addAll}(#t2){(core::Iterable<core::String*>*) →* void};
+    if(!#t2.{core::Object::==}(null))
+      #t1.{core::List::addAll}{Invariant}(#t2);
   } =>#t1;
 }
 static method nullAwareSetSpread(core::Set<core::String*>* set) → dynamic {
   set = block {
     final core::Set<core::String*>* #t3 = col::LinkedHashSet::•<core::String*>();
-    #t3.{core::Set::add}("foo"){(core::String*) →* core::bool*};
+    #t3.{core::Set::add}{Invariant}("foo");
     final core::Iterable<core::String*>* #t4 = set;
-    if(!(#t4 == null))
-      #t3.{core::Set::addAll}(#t4){(core::Iterable<core::String*>*) →* void};
+    if(!#t4.{core::Object::==}(null))
+      #t3.{core::Set::addAll}{Invariant}(#t4);
   } =>#t3;
 }
 static method nullAwareMapSpread(core::Map<core::int*, core::String*>* map) → dynamic {
   map = block {
     final core::Map<core::int*, core::String*>* #t5 = <core::int*, core::String*>{};
-    #t5.{core::Map::[]=}(0, "foo"){(core::int*, core::String*) →* void};
+    #t5.{core::Map::[]=}{Invariant}(0, "foo");
     final core::Map<core::int*, core::String*>* #t6 = map;
-    if(!(#t6 == null))
+    if(!#t6.{core::Object::==}(null))
       for (final core::MapEntry<core::int*, core::String*>* #t7 in #t6.{core::Map::entries})
-        #t5.{core::Map::[]=}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value}){(core::int*, core::String*) →* void};
+        #t5.{core::Map::[]=}{Invariant}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value});
   } =>#t5;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/null_aware_spread.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware_spread.dart.weak.transformed.expect
index ed90256..485db8b 100644
--- a/pkg/front_end/testcases/general/null_aware_spread.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/null_aware_spread.dart.weak.transformed.expect
@@ -7,29 +7,29 @@
   list = block {
     final core::List<core::String*>* #t1 = core::_GrowableList::_literal1<core::String*>("foo");
     final core::Iterable<core::String*>* #t2 = list;
-    if(!(#t2 == null))
-      #t1.{core::List::addAll}(#t2){(core::Iterable<core::String*>*) →* void};
+    if(!#t2.{core::Object::==}(null))
+      #t1.{core::List::addAll}{Invariant}(#t2);
   } =>#t1;
 }
 static method nullAwareSetSpread(core::Set<core::String*>* set) → dynamic {
   set = block {
     final core::Set<core::String*>* #t3 = new col::_CompactLinkedHashSet::•<core::String*>();
-    #t3.{core::Set::add}("foo"){(core::String*) →* core::bool*};
+    #t3.{core::Set::add}{Invariant}("foo");
     final core::Iterable<core::String*>* #t4 = set;
-    if(!(#t4 == null))
-      #t3.{core::Set::addAll}(#t4){(core::Iterable<core::String*>*) →* void};
+    if(!#t4.{core::Object::==}(null))
+      #t3.{core::Set::addAll}{Invariant}(#t4);
   } =>#t3;
 }
 static method nullAwareMapSpread(core::Map<core::int*, core::String*>* map) → dynamic {
   map = block {
     final core::Map<core::int*, core::String*>* #t5 = <core::int*, core::String*>{};
-    #t5.{core::Map::[]=}(0, "foo"){(core::int*, core::String*) →* void};
+    #t5.{core::Map::[]=}{Invariant}(0, "foo");
     final core::Map<core::int*, core::String*>* #t6 = map;
-    if(!(#t6 == null)) {
+    if(!#t6.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = #t6.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::String*>* #t7 = :sync-for-iterator.{core::Iterator::current};
-        #t5.{core::Map::[]=}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value}){(core::int*, core::String*) →* void};
+        #t5.{core::Map::[]=}{Invariant}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value});
       }
     }
   } =>#t5;
diff --git a/pkg/front_end/testcases/general/null_check_type_variable_type.dart.weak.expect b/pkg/front_end/testcases/general/null_check_type_variable_type.dart.weak.expect
index bafec9d..02008c5 100644
--- a/pkg/front_end/testcases/general/null_check_type_variable_type.dart.weak.expect
+++ b/pkg/front_end/testcases/general/null_check_type_variable_type.dart.weak.expect
@@ -14,14 +14,14 @@
     : self::Class::element = element, super core::Object::•()
     ;
   method setElement(generic-covariant-impl self::Class::E? element) → void {
-    if(!(this.{self::Class::element}{self::Class::E?} =={core::Object::==}{(core::Object) → core::bool} element)) {
+    if(!this.{self::Class::element}.{core::Object::==}(element)) {
       this.{self::Class::element} = element;
       core::Set<self::Element> elements = col::LinkedHashSet::•<self::Element>();
-      if(!(element == null)) {
-        elements.{core::Set::add}(element{self::Class::E% & self::Element /* '%' & '!' = '!' */}){(self::Element) → core::bool};
+      if(!element.{core::Object::==}(null)) {
+        elements.{core::Set::add}(element{self::Class::E% & self::Element /* '%' & '!' = '!' */});
       }
-      if(!(this.{self::Class::element}{self::Class::E?} == null)) {
-        elements.{core::Set::add}(this.{self::Class::element}{self::Class::E?}!){(self::Element) → core::bool};
+      if(!this.{self::Class::element}.{core::Object::==}(null)) {
+        elements.{core::Set::add}(this.{self::Class::element}!);
       }
     }
   }
diff --git a/pkg/front_end/testcases/general/null_check_type_variable_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_check_type_variable_type.dart.weak.transformed.expect
index 89db16d..c5d8066 100644
--- a/pkg/front_end/testcases/general/null_check_type_variable_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/null_check_type_variable_type.dart.weak.transformed.expect
@@ -14,14 +14,14 @@
     : self::Class::element = element, super core::Object::•()
     ;
   method setElement(generic-covariant-impl self::Class::E? element) → void {
-    if(!(this.{self::Class::element}{self::Class::E?} =={core::Object::==}{(core::Object) → core::bool} element)) {
+    if(!this.{self::Class::element}.{core::Object::==}(element)) {
       this.{self::Class::element} = element;
       core::Set<self::Element> elements = new col::_CompactLinkedHashSet::•<self::Element>();
-      if(!(element == null)) {
-        elements.{core::Set::add}(element{self::Class::E% & self::Element /* '%' & '!' = '!' */}){(self::Element) → core::bool};
+      if(!element.{core::Object::==}(null)) {
+        elements.{core::Set::add}(element{self::Class::E% & self::Element /* '%' & '!' = '!' */});
       }
-      if(!(this.{self::Class::element}{self::Class::E?} == null)) {
-        elements.{core::Set::add}(this.{self::Class::element}{self::Class::E?}!){(self::Element) → core::bool};
+      if(!this.{self::Class::element}.{core::Object::==}(null)) {
+        elements.{core::Set::add}(this.{self::Class::element}!);
       }
     }
   }
diff --git a/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.expect b/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.expect
index 882b6d8..0f69d4e 100644
--- a/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.expect
+++ b/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.expect
@@ -242,7 +242,7 @@
 Try correcting the operator to an existing operator, or defining a '>=' operator.
   print(foo >= 2);
             ^^");
-  core::print(foo =={self::Foo::==}{(dynamic) →* core::bool*} 2);
+  core::print(foo.{self::Foo::==}(2));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:17:13: Error: The operator '-' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '-' operator.
@@ -321,46 +321,46 @@
   core::print(<invalid-type>[]);
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:37:9: Error: This couldn't be parsed.
   print(>foo);
-        ^"{dynamic}.>(foo));
+        ^".>(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:38:9: Error: This couldn't be parsed.
   print(<=foo);
-        ^"{dynamic}.<=(foo));
+        ^".<=(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:39:9: Error: This couldn't be parsed.
   print(>=foo);
-        ^"{dynamic}.>=(foo));
+        ^".>=(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:40:9: Error: This couldn't be parsed.
   print(==foo);
-        ^" =={core::Object::==}{(core::Object*) →* core::bool*} foo);
+        ^".{core::Object::==}(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:41:9: Error: This couldn't be parsed.
   print(+foo);
-        ^"{dynamic}.+(foo));
+        ^".+(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:42:9: Error: This couldn't be parsed.
   print(/foo);
-        ^"{dynamic}./(foo));
+        ^"./(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:43:9: Error: This couldn't be parsed.
   print(~/foo);
-        ^"{dynamic}.~/(foo));
+        ^".~/(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:44:9: Error: This couldn't be parsed.
   print(*foo);
-        ^"{dynamic}.*(foo));
+        ^".*(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:45:9: Error: This couldn't be parsed.
   print(%foo);
-        ^"{dynamic}.%(foo));
+        ^".%(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:46:9: Error: This couldn't be parsed.
   print(|foo);
-        ^"{dynamic}.|(foo));
+        ^".|(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:47:9: Error: This couldn't be parsed.
   print(^foo);
-        ^"{dynamic}.^(foo));
+        ^".^(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:48:9: Error: This couldn't be parsed.
   print(&foo);
-        ^"{dynamic}.&(foo));
+        ^".&(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:49:9: Error: This couldn't be parsed.
   print(<<foo);
-        ^"{dynamic}.<<(foo));
+        ^".<<(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:50:9: Error: This couldn't be parsed.
   print(>>foo);
-        ^"{dynamic}.>>(foo));
+        ^".>>(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:54:13: Error: '~' isn't a binary operator.
   print(foo ~ 2);
             ^");
diff --git a/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.transformed.expect b/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.transformed.expect
index 6908374..47a50d4 100644
--- a/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.transformed.expect
@@ -242,7 +242,7 @@
 Try correcting the operator to an existing operator, or defining a '>=' operator.
   print(foo >= 2);
             ^^");
-  core::print(foo =={self::Foo::==}{(dynamic) →* core::bool*} 2);
+  core::print(foo.{self::Foo::==}(2));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:17:13: Error: The operator '-' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '-' operator.
@@ -321,46 +321,46 @@
   core::print(core::_GrowableList::•<invalid-type>(0));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:37:9: Error: This couldn't be parsed.
   print(>foo);
-        ^"{dynamic}.>(foo));
+        ^".>(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:38:9: Error: This couldn't be parsed.
   print(<=foo);
-        ^"{dynamic}.<=(foo));
+        ^".<=(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:39:9: Error: This couldn't be parsed.
   print(>=foo);
-        ^"{dynamic}.>=(foo));
+        ^".>=(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:40:9: Error: This couldn't be parsed.
   print(==foo);
-        ^" =={core::Object::==}{(core::Object*) →* core::bool*} foo);
+        ^".{core::Object::==}(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:41:9: Error: This couldn't be parsed.
   print(+foo);
-        ^"{dynamic}.+(foo));
+        ^".+(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:42:9: Error: This couldn't be parsed.
   print(/foo);
-        ^"{dynamic}./(foo));
+        ^"./(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:43:9: Error: This couldn't be parsed.
   print(~/foo);
-        ^"{dynamic}.~/(foo));
+        ^".~/(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:44:9: Error: This couldn't be parsed.
   print(*foo);
-        ^"{dynamic}.*(foo));
+        ^".*(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:45:9: Error: This couldn't be parsed.
   print(%foo);
-        ^"{dynamic}.%(foo));
+        ^".%(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:46:9: Error: This couldn't be parsed.
   print(|foo);
-        ^"{dynamic}.|(foo));
+        ^".|(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:47:9: Error: This couldn't be parsed.
   print(^foo);
-        ^"{dynamic}.^(foo));
+        ^".^(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:48:9: Error: This couldn't be parsed.
   print(&foo);
-        ^"{dynamic}.&(foo));
+        ^".&(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:49:9: Error: This couldn't be parsed.
   print(<<foo);
-        ^"{dynamic}.<<(foo));
+        ^".<<(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:50:9: Error: This couldn't be parsed.
   print(>>foo);
-        ^"{dynamic}.>>(foo));
+        ^".>>(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:54:13: Error: '~' isn't a binary operator.
   print(foo ~ 2);
             ^");
diff --git a/pkg/front_end/testcases/general/operators.dart.weak.expect b/pkg/front_end/testcases/general/operators.dart.weak.expect
index 8796e3d4..edc56e5 100644
--- a/pkg/front_end/testcases/general/operators.dart.weak.expect
+++ b/pkg/front_end/testcases/general/operators.dart.weak.expect
@@ -58,24 +58,24 @@
 static method main(dynamic arguments) → dynamic {
   self::Operators* a = new self::Operators::•();
   self::Operators* b = new self::Operators::•();
-  a.{self::Operators::+}(b){(dynamic) →* dynamic};
-  a.{self::Operators::&}(b){(dynamic) →* dynamic};
-  a.{self::Operators::~}(){() →* dynamic};
-  a.{self::Operators::|}(b){(dynamic) →* dynamic};
-  a.{self::Operators::^}(b){(dynamic) →* dynamic};
-  a.{self::Operators::/}(b){(dynamic) →* dynamic};
-  a =={self::Operators::==}{(dynamic) →* core::bool*} b;
-  a.{self::Operators::>}(b){(dynamic) →* dynamic};
-  a.{self::Operators::>=}(b){(dynamic) →* dynamic};
-  a.{self::Operators::[]}(0){(dynamic) →* dynamic};
-  a.{self::Operators::[]=}(0, b){(dynamic, dynamic) →* void};
-  a.{self::Operators::<<}(b){(dynamic) →* dynamic};
-  a.{self::Operators::<}(b){(dynamic) →* dynamic};
-  a.{self::Operators::<=}(b){(dynamic) →* dynamic};
-  a.{self::Operators::*}(b){(dynamic) →* dynamic};
-  a.{self::Operators::%}(b){(dynamic) →* dynamic};
-  a.{self::Operators::>>}(b){(dynamic) →* dynamic};
-  a.{self::Operators::-}(b){(dynamic) →* dynamic};
-  a.{self::Operators::~/}(b){(dynamic) →* dynamic};
-  a.{self::Operators::unary-}(){() →* dynamic};
+  a.{self::Operators::+}(b);
+  a.{self::Operators::&}(b);
+  a.{self::Operators::~}();
+  a.{self::Operators::|}(b);
+  a.{self::Operators::^}(b);
+  a.{self::Operators::/}(b);
+  a.{self::Operators::==}(b);
+  a.{self::Operators::>}(b);
+  a.{self::Operators::>=}(b);
+  a.{self::Operators::[]}(0);
+  a.{self::Operators::[]=}(0, b);
+  a.{self::Operators::<<}(b);
+  a.{self::Operators::<}(b);
+  a.{self::Operators::<=}(b);
+  a.{self::Operators::*}(b);
+  a.{self::Operators::%}(b);
+  a.{self::Operators::>>}(b);
+  a.{self::Operators::-}(b);
+  a.{self::Operators::~/}(b);
+  a.{self::Operators::unary-}();
 }
diff --git a/pkg/front_end/testcases/general/operators.dart.weak.transformed.expect b/pkg/front_end/testcases/general/operators.dart.weak.transformed.expect
index 8796e3d4..edc56e5 100644
--- a/pkg/front_end/testcases/general/operators.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/operators.dart.weak.transformed.expect
@@ -58,24 +58,24 @@
 static method main(dynamic arguments) → dynamic {
   self::Operators* a = new self::Operators::•();
   self::Operators* b = new self::Operators::•();
-  a.{self::Operators::+}(b){(dynamic) →* dynamic};
-  a.{self::Operators::&}(b){(dynamic) →* dynamic};
-  a.{self::Operators::~}(){() →* dynamic};
-  a.{self::Operators::|}(b){(dynamic) →* dynamic};
-  a.{self::Operators::^}(b){(dynamic) →* dynamic};
-  a.{self::Operators::/}(b){(dynamic) →* dynamic};
-  a =={self::Operators::==}{(dynamic) →* core::bool*} b;
-  a.{self::Operators::>}(b){(dynamic) →* dynamic};
-  a.{self::Operators::>=}(b){(dynamic) →* dynamic};
-  a.{self::Operators::[]}(0){(dynamic) →* dynamic};
-  a.{self::Operators::[]=}(0, b){(dynamic, dynamic) →* void};
-  a.{self::Operators::<<}(b){(dynamic) →* dynamic};
-  a.{self::Operators::<}(b){(dynamic) →* dynamic};
-  a.{self::Operators::<=}(b){(dynamic) →* dynamic};
-  a.{self::Operators::*}(b){(dynamic) →* dynamic};
-  a.{self::Operators::%}(b){(dynamic) →* dynamic};
-  a.{self::Operators::>>}(b){(dynamic) →* dynamic};
-  a.{self::Operators::-}(b){(dynamic) →* dynamic};
-  a.{self::Operators::~/}(b){(dynamic) →* dynamic};
-  a.{self::Operators::unary-}(){() →* dynamic};
+  a.{self::Operators::+}(b);
+  a.{self::Operators::&}(b);
+  a.{self::Operators::~}();
+  a.{self::Operators::|}(b);
+  a.{self::Operators::^}(b);
+  a.{self::Operators::/}(b);
+  a.{self::Operators::==}(b);
+  a.{self::Operators::>}(b);
+  a.{self::Operators::>=}(b);
+  a.{self::Operators::[]}(0);
+  a.{self::Operators::[]=}(0, b);
+  a.{self::Operators::<<}(b);
+  a.{self::Operators::<}(b);
+  a.{self::Operators::<=}(b);
+  a.{self::Operators::*}(b);
+  a.{self::Operators::%}(b);
+  a.{self::Operators::>>}(b);
+  a.{self::Operators::-}(b);
+  a.{self::Operators::~/}(b);
+  a.{self::Operators::unary-}();
 }
diff --git a/pkg/front_end/testcases/general/optional.dart.weak.expect b/pkg/front_end/testcases/general/optional.dart.weak.expect
index 0c2ea45..2641647 100644
--- a/pkg/front_end/testcases/general/optional.dart.weak.expect
+++ b/pkg/front_end/testcases/general/optional.dart.weak.expect
@@ -111,34 +111,34 @@
 external static method createExternal() → self::External*;
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
-  dynamic string1 = foo.{self::Foo::method}(1){(dynamic, [dynamic, dynamic]) →* dynamic};
-  dynamic string2 = foo.{self::Foo::method}(1, 2){(dynamic, [dynamic, dynamic]) →* dynamic};
-  dynamic string3 = foo.{self::Foo::method}(1, 2, 3){(dynamic, [dynamic, dynamic]) →* dynamic};
+  dynamic string1 = foo.{self::Foo::method}(1);
+  dynamic string2 = foo.{self::Foo::method}(1, 2);
+  dynamic string3 = foo.{self::Foo::method}(1, 2, 3);
   self::External* extern = self::createExternal();
-  core::String* string4 = extern.{self::External::externalMethod}(1){(core::int*, [core::int*, core::int*]) →* core::String*};
-  core::String* string5 = extern.{self::External::externalMethod}(1, 2){(core::int*, [core::int*, core::int*]) →* core::String*};
-  core::String* string6 = extern.{self::External::externalMethod}(1, 2, 3){(core::int*, [core::int*, core::int*]) →* core::String*};
-  extern.{self::External::listen}(new self::TestListener::•()){(self::Listener*) →* void};
-  extern.{self::External::listen}(new self::ExtendedListener::•()){(self::Listener*) →* void};
+  core::String* string4 = extern.{self::External::externalMethod}(1);
+  core::String* string5 = extern.{self::External::externalMethod}(1, 2);
+  core::String* string6 = extern.{self::External::externalMethod}(1, 2, 3);
+  extern.{self::External::listen}(new self::TestListener::•());
+  extern.{self::External::listen}(new self::ExtendedListener::•());
   extern.{self::External::listen}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/optional.dart:47:21: Error: The argument type 'InvalidListener' can't be assigned to the parameter type 'Listener'.
  - 'InvalidListener' is from 'pkg/front_end/testcases/general/optional.dart'.
  - 'Listener' is from 'pkg/front_end/testcases/general/optional.dart'.
   extern.listen(new InvalidListener());
-                    ^" in new self::InvalidListener::•() as{TypeError} self::Listener*){(self::Listener*) →* void};
+                    ^" in new self::InvalidListener::•() as{TypeError} self::Listener*);
   invalid-type nothing1 = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/general/optional.dart:49:28: Error: Too few positional arguments: 1 required, 0 given.
   var nothing1 = foo.method();
-                           ^" in foo.{self::Foo::method}{<inapplicable>}.(){() →* invalid-type};
+                           ^" in foo.{self::Foo::method}();
   invalid-type nothing2 = let final Never* #t3 = invalid-expression "pkg/front_end/testcases/general/optional.dart:50:28: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   var nothing2 = foo.method(1, 2, 3, 4);
-                           ^" in foo.{self::Foo::method}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) →* invalid-type};
+                           ^" in foo.{self::Foo::method}(1, 2, 3, 4);
   invalid-type nothing3 = let final Never* #t4 = invalid-expression "pkg/front_end/testcases/general/optional.dart:51:39: Error: Too few positional arguments: 1 required, 0 given.
   var nothing3 = extern.externalMethod();
-                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(){() →* invalid-type};
+                                      ^" in extern.{self::External::externalMethod}();
   invalid-type nothing4 = let final Never* #t5 = invalid-expression "pkg/front_end/testcases/general/optional.dart:52:39: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   var nothing4 = extern.externalMethod(1, 2, 3, 4);
-                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) →* invalid-type};
+                                      ^" in extern.{self::External::externalMethod}(1, 2, 3, 4);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/override.dart.weak.expect b/pkg/front_end/testcases/general/override.dart.weak.expect
index 2ce1243..a968ece 100644
--- a/pkg/front_end/testcases/general/override.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override.dart.weak.expect
@@ -49,7 +49,7 @@
   }
 }
 static method main(core::List<core::String*>* args) → dynamic {
-  self::Base* object = args.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{self::Base*} new self::Base::•() : new self::Sub::•();
-  self::Foo* a = object.{self::Base::method}(){() →* self::Foo*};
+  self::Base* object = args.{core::List::length}.{core::num::==}(0) ?{self::Base*} new self::Base::•() : new self::Sub::•();
+  self::Foo* a = object.{self::Base::method}();
   core::print(a);
 }
diff --git a/pkg/front_end/testcases/general/override.dart.weak.transformed.expect b/pkg/front_end/testcases/general/override.dart.weak.transformed.expect
index 2ce1243..a968ece 100644
--- a/pkg/front_end/testcases/general/override.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/override.dart.weak.transformed.expect
@@ -49,7 +49,7 @@
   }
 }
 static method main(core::List<core::String*>* args) → dynamic {
-  self::Base* object = args.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{self::Base*} new self::Base::•() : new self::Sub::•();
-  self::Foo* a = object.{self::Base::method}(){() →* self::Foo*};
+  self::Base* object = args.{core::List::length}.{core::num::==}(0) ?{self::Base*} new self::Base::•() : new self::Sub::•();
+  self::Foo* a = object.{self::Base::method}();
   core::print(a);
 }
diff --git a/pkg/front_end/testcases/general/private_members.dart.weak.expect b/pkg/front_end/testcases/general/private_members.dart.weak.expect
index 7320fdc..ce24406 100644
--- a/pkg/front_end/testcases/general/private_members.dart.weak.expect
+++ b/pkg/front_end/testcases/general/private_members.dart.weak.expect
@@ -35,17 +35,17 @@
 static field core::int _Extension|_privateField = 1 /* from org-dartlang-testcase:///private_members_part.dart */;
 static field core::int _Extension|_privateFinalField = 1 /* from org-dartlang-testcase:///private_members_part.dart */;
 static method test(self::_AbstractClass c) → dynamic {
-  c.{self::_AbstractClass::_privateAbstractField} = c.{self::_AbstractClass::_privateAbstractField}{core::int};
+  c.{self::_AbstractClass::_privateAbstractField} = c.{self::_AbstractClass::_privateAbstractField};
 }
 static method main() → dynamic {
   self::_Class c = new self::_Class::_privateConstructor();
   c = new self::_Class::_privateConstructor();
-  c.{self::_Class::_privateMethod}(){() → void};
-  c.{self::_Class::_privateSetter} = c.{self::_Class::_privateGetter}{core::int};
-  c.{self::_Class::_privateField} = c.{self::_Class::_privateField}{core::int};
-  c.{self::_Class::_privateFinalField}{core::int};
+  c.{self::_Class::_privateMethod}();
+  c.{self::_Class::_privateSetter} = c.{self::_Class::_privateGetter};
+  c.{self::_Class::_privateField} = c.{self::_Class::_privateField};
+  c.{self::_Class::_privateFinalField};
   self::_Extension|_privateMethod(0);
-  self::_Extension|get#_privateMethod(0)(){() → void};
+  self::_Extension|get#_privateMethod(0).call();
   self::_Extension|set#_privateSetter(0, self::_Extension|get#_privateGetter(0));
   self::_Extension|_privateField = self::_Extension|_privateField;
   self::_Extension|_privateFinalField;
diff --git a/pkg/front_end/testcases/general/private_members.dart.weak.transformed.expect b/pkg/front_end/testcases/general/private_members.dart.weak.transformed.expect
index fd8fbf9..920e92f 100644
--- a/pkg/front_end/testcases/general/private_members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/private_members.dart.weak.transformed.expect
@@ -35,17 +35,17 @@
 static field core::int _Extension|_privateField = 1 /* from org-dartlang-testcase:///private_members_part.dart */;
 static field core::int _Extension|_privateFinalField = 1 /* from org-dartlang-testcase:///private_members_part.dart */;
 static method test(self::_AbstractClass c) → dynamic {
-  c.{self::_AbstractClass::_privateAbstractField} = c.{self::_AbstractClass::_privateAbstractField}{core::int};
+  c.{self::_AbstractClass::_privateAbstractField} = c.{self::_AbstractClass::_privateAbstractField};
 }
 static method main() → dynamic {
   self::_Class c = new self::_Class::_privateConstructor();
   c = new self::_Class::_privateConstructor();
-  c.{self::_Class::_privateMethod}(){() → void};
-  c.{self::_Class::_privateSetter} = c.{self::_Class::_privateGetter}{core::int};
-  c.{self::_Class::_privateField} = c.{self::_Class::_privateField}{core::int};
-  c.{self::_Class::_privateFinalField}{core::int};
+  c.{self::_Class::_privateMethod}();
+  c.{self::_Class::_privateSetter} = c.{self::_Class::_privateGetter};
+  c.{self::_Class::_privateField} = c.{self::_Class::_privateField};
+  c.{self::_Class::_privateFinalField};
   self::_Extension|_privateMethod(0);
-  self::_Extension|get#_privateMethod(0)(){() → void};
+  self::_Extension|get#_privateMethod(0).call();
   self::_Extension|set#_privateSetter(0, self::_Extension|get#_privateGetter(0));
   self::_Extension|_privateField = self::_Extension|_privateField;
   self::_Extension|_privateFinalField;
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.expect
index 4ada913..a2148b7 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.expect
@@ -20,7 +20,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz*
@@ -52,7 +52,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method baz(pri::Bar* bar) → void {
-  core::print("${bar.{pri::Bar::_f}{() →* void}.{core::Object::runtimeType}{core::Type*}}");
+  core::print("${bar.{pri::Bar::_f}.{core::Object::runtimeType}}");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.outline.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.outline.expect
index 6cb829a..095531c 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.outline.expect
@@ -19,7 +19,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Foo::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/general/private_method_tearoff.dart.weak.transformed.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.transformed.expect
index 4ada913..a2148b7 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz*
@@ -52,7 +52,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method baz(pri::Bar* bar) → void {
-  core::print("${bar.{pri::Bar::_f}{() →* void}.{core::Object::runtimeType}{core::Type*}}");
+  core::print("${bar.{pri::Bar::_f}.{core::Object::runtimeType}}");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/promoted_access.dart.weak.expect b/pkg/front_end/testcases/general/promoted_access.dart.weak.expect
index 5baecb1..6999b2b 100644
--- a/pkg/front_end/testcases/general/promoted_access.dart.weak.expect
+++ b/pkg/front_end/testcases/general/promoted_access.dart.weak.expect
@@ -8,7 +8,7 @@
     ;
   method method(generic-covariant-impl self::Class::T* o) → dynamic {
     if(o is self::Class<dynamic>*) {
-      o{self::Class::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null){(dynamic) →* dynamic};
+      o{self::Class::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null);
     }
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -24,10 +24,10 @@
 }
 static method method<T extends core::Object* = dynamic>(self::method::T* o) → dynamic {
   if(o is self::Class<dynamic>*) {
-    o{self::method::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null){(dynamic) →* dynamic};
+    o{self::method::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null);
   }
 }
 static method main() → dynamic {
-  new self::Class::•<dynamic>().{self::Class::method}(new self::Class::•<dynamic>()){(dynamic) →* dynamic};
+  new self::Class::•<dynamic>().{self::Class::method}(new self::Class::•<dynamic>());
   self::method<self::Class<dynamic>*>(new self::Class::•<dynamic>());
 }
diff --git a/pkg/front_end/testcases/general/promoted_access.dart.weak.transformed.expect b/pkg/front_end/testcases/general/promoted_access.dart.weak.transformed.expect
index 5baecb1..6999b2b 100644
--- a/pkg/front_end/testcases/general/promoted_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/promoted_access.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
     ;
   method method(generic-covariant-impl self::Class::T* o) → dynamic {
     if(o is self::Class<dynamic>*) {
-      o{self::Class::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null){(dynamic) →* dynamic};
+      o{self::Class::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null);
     }
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -24,10 +24,10 @@
 }
 static method method<T extends core::Object* = dynamic>(self::method::T* o) → dynamic {
   if(o is self::Class<dynamic>*) {
-    o{self::method::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null){(dynamic) →* dynamic};
+    o{self::method::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null);
   }
 }
 static method main() → dynamic {
-  new self::Class::•<dynamic>().{self::Class::method}(new self::Class::•<dynamic>()){(dynamic) →* dynamic};
+  new self::Class::•<dynamic>().{self::Class::method}(new self::Class::•<dynamic>());
   self::method<self::Class<dynamic>*>(new self::Class::•<dynamic>());
 }
diff --git a/pkg/front_end/testcases/general/promoted_null_aware_access.dart.weak.expect b/pkg/front_end/testcases/general/promoted_null_aware_access.dart.weak.expect
index 09affa3..b7c4248 100644
--- a/pkg/front_end/testcases/general/promoted_null_aware_access.dart.weak.expect
+++ b/pkg/front_end/testcases/general/promoted_null_aware_access.dart.weak.expect
@@ -4,7 +4,7 @@
 
 static method method<T extends core::Object* = dynamic>(self::method::T* o) → dynamic {
   if(o is core::String*) {
-    let final self::method::T* & core::String* /* '*' & '*' = '*' */ #t1 = o{self::method::T* & core::String* /* '*' & '*' = '*' */} in #t1 == null ?{core::int*} null : #t1.{core::String::length}{core::int*};
+    let final self::method::T* & core::String* /* '*' & '*' = '*' */ #t1 = o{self::method::T* & core::String* /* '*' & '*' = '*' */} in #t1.{core::String::==}(null) ?{core::int*} null : #t1.{core::String::length};
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/promoted_null_aware_access.dart.weak.transformed.expect b/pkg/front_end/testcases/general/promoted_null_aware_access.dart.weak.transformed.expect
index 09affa3..b7c4248 100644
--- a/pkg/front_end/testcases/general/promoted_null_aware_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/promoted_null_aware_access.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 
 static method method<T extends core::Object* = dynamic>(self::method::T* o) → dynamic {
   if(o is core::String*) {
-    let final self::method::T* & core::String* /* '*' & '*' = '*' */ #t1 = o{self::method::T* & core::String* /* '*' & '*' = '*' */} in #t1 == null ?{core::int*} null : #t1.{core::String::length}{core::int*};
+    let final self::method::T* & core::String* /* '*' & '*' = '*' */ #t1 = o{self::method::T* & core::String* /* '*' & '*' = '*' */} in #t1.{core::String::==}(null) ?{core::int*} null : #t1.{core::String::length};
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.expect b/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.expect
index 6fc1a72..370b63e 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.expect
+++ b/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.expect
@@ -34,5 +34,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method baz(pub::Bar* bar) → void {
-  core::print("${bar.{pub::Bar::f}{() →* void}.{core::Object::runtimeType}{core::Type*}}");
+  core::print("${bar.{pub::Bar::f}.{core::Object::runtimeType}}");
 }
diff --git a/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.transformed.expect b/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.transformed.expect
index 6fc1a72..370b63e 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.transformed.expect
@@ -34,5 +34,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method baz(pub::Bar* bar) → void {
-  core::print("${bar.{pub::Bar::f}{() →* void}.{core::Object::runtimeType}{core::Type*}}");
+  core::print("${bar.{pub::Bar::f}.{core::Object::runtimeType}}");
 }
diff --git a/pkg/front_end/testcases/general/pure_index_expressions.dart.weak.expect b/pkg/front_end/testcases/general/pure_index_expressions.dart.weak.expect
index e1a3cd8..ed17f97 100644
--- a/pkg/front_end/testcases/general/pure_index_expressions.dart.weak.expect
+++ b/pkg/front_end/testcases/general/pure_index_expressions.dart.weak.expect
@@ -13,72 +13,72 @@
     return cls;
   method indexGetSetForEffect(core::Map<self::Class*, self::Class*>* map) → void {
     final self::Class* self = this;
-    let final core::Map<self::Class*, self::Class*>* #t1 = map in #t1.{core::Map::[]}(this){(core::Object*) →* self::Class*} == null ?{self::Class*} #t1.{core::Map::[]=}(this, this){(self::Class*, self::Class*) →* void} : null;
-    let final core::Map<self::Class*, self::Class*>* #t2 = map in #t2.{core::Map::[]}(self){(core::Object*) →* self::Class*} == null ?{self::Class*} #t2.{core::Map::[]=}(self, self){(self::Class*, self::Class*) →* void} : null;
-    map.{core::Map::[]=}(this, this){(self::Class*, self::Class*) →* void};
-    map.{core::Map::[]=}(self, self){(self::Class*, self::Class*) →* void};
-    map.{core::Map::[]}(this){(core::Object*) →* self::Class*};
-    map.{core::Map::[]}(self){(core::Object*) →* self::Class*};
-    let final core::Map<self::Class*, self::Class*>* #t3 = map in #t3.{core::Map::[]=}(this, #t3.{core::Map::[]}(this){(core::Object*) →* self::Class*}.{self::Class::+}(this){(self::Class*) →* self::Class*}){(self::Class*, self::Class*) →* void};
-    let final core::Map<self::Class*, self::Class*>* #t4 = map in #t4.{core::Map::[]=}(self, #t4.{core::Map::[]}(self){(core::Object*) →* self::Class*}.{self::Class::+}(self){(self::Class*) →* self::Class*}){(self::Class*, self::Class*) →* void};
+    let final core::Map<self::Class*, self::Class*>* #t1 = map in #t1.{core::Map::[]}(this).{self::Class::==}(null) ?{self::Class*} #t1.{core::Map::[]=}(this, this) : null;
+    let final core::Map<self::Class*, self::Class*>* #t2 = map in #t2.{core::Map::[]}(self).{self::Class::==}(null) ?{self::Class*} #t2.{core::Map::[]=}(self, self) : null;
+    map.{core::Map::[]=}(this, this);
+    map.{core::Map::[]=}(self, self);
+    map.{core::Map::[]}(this);
+    map.{core::Map::[]}(self);
+    let final core::Map<self::Class*, self::Class*>* #t3 = map in #t3.{core::Map::[]=}(this, #t3.{core::Map::[]}(this).{self::Class::+}(this));
+    let final core::Map<self::Class*, self::Class*>* #t4 = map in #t4.{core::Map::[]=}(self, #t4.{core::Map::[]}(self).{self::Class::+}(self));
   }
   method indexGetSetForValue(core::Map<self::Class*, self::Class*>* map) → void {
     final self::Class* self = this;
     dynamic v;
-    v = let final core::Map<self::Class*, self::Class*>* #t5 = map in let final self::Class* #t6 = #t5.{core::Map::[]}(this){(core::Object*) →* self::Class*} in #t6 == null ?{self::Class*} let final void #t7 = #t5.{core::Map::[]=}(this, this){(self::Class*, self::Class*) →* void} in this : #t6;
-    v = let final core::Map<self::Class*, self::Class*>* #t8 = map in let final self::Class* #t9 = #t8.{core::Map::[]}(self){(core::Object*) →* self::Class*} in #t9 == null ?{self::Class*} let final void #t10 = #t8.{core::Map::[]=}(self, self){(self::Class*, self::Class*) →* void} in self : #t9;
-    v = let final core::Map<self::Class*, self::Class*>* #t11 = map in let final void #t12 = #t11.{core::Map::[]=}(this, this){(self::Class*, self::Class*) →* void} in this;
-    v = let final core::Map<self::Class*, self::Class*>* #t13 = map in let final void #t14 = #t13.{core::Map::[]=}(self, self){(self::Class*, self::Class*) →* void} in self;
-    v = map.{core::Map::[]}(this){(core::Object*) →* self::Class*};
-    v = map.{core::Map::[]}(self){(core::Object*) →* self::Class*};
-    v = let final core::Map<self::Class*, self::Class*>* #t15 = map in let final self::Class* #t16 = #t15.{core::Map::[]}(this){(core::Object*) →* self::Class*}.{self::Class::+}(this){(self::Class*) →* self::Class*} in let final void #t17 = #t15.{core::Map::[]=}(this, #t16){(self::Class*, self::Class*) →* void} in #t16;
-    v = let final core::Map<self::Class*, self::Class*>* #t18 = map in let final self::Class* #t19 = #t18.{core::Map::[]}(self){(core::Object*) →* self::Class*}.{self::Class::+}(self){(self::Class*) →* self::Class*} in let final void #t20 = #t18.{core::Map::[]=}(self, #t19){(self::Class*, self::Class*) →* void} in #t19;
+    v = let final core::Map<self::Class*, self::Class*>* #t5 = map in let final self::Class* #t6 = #t5.{core::Map::[]}(this) in #t6.{self::Class::==}(null) ?{self::Class*} let final void #t7 = #t5.{core::Map::[]=}(this, this) in this : #t6;
+    v = let final core::Map<self::Class*, self::Class*>* #t8 = map in let final self::Class* #t9 = #t8.{core::Map::[]}(self) in #t9.{self::Class::==}(null) ?{self::Class*} let final void #t10 = #t8.{core::Map::[]=}(self, self) in self : #t9;
+    v = let final core::Map<self::Class*, self::Class*>* #t11 = map in let final void #t12 = #t11.{core::Map::[]=}(this, this) in this;
+    v = let final core::Map<self::Class*, self::Class*>* #t13 = map in let final void #t14 = #t13.{core::Map::[]=}(self, self) in self;
+    v = map.{core::Map::[]}(this);
+    v = map.{core::Map::[]}(self);
+    v = let final core::Map<self::Class*, self::Class*>* #t15 = map in let final self::Class* #t16 = #t15.{core::Map::[]}(this).{self::Class::+}(this) in let final void #t17 = #t15.{core::Map::[]=}(this, #t16) in #t16;
+    v = let final core::Map<self::Class*, self::Class*>* #t18 = map in let final self::Class* #t19 = #t18.{core::Map::[]}(self).{self::Class::+}(self) in let final void #t20 = #t18.{core::Map::[]=}(self, #t19) in #t19;
   }
   method implicitExtensionGetSetForEffect(core::int* i) → void {
     final self::Class* self = this;
-    let final core::int* #t21 = i in self::Extension|[](#t21, this) == null ?{self::Class*} self::Extension|[]=(#t21, this, this) : null;
-    let final core::int* #t22 = i in self::Extension|[](#t22, self) == null ?{self::Class*} self::Extension|[]=(#t22, self, self) : null;
+    let final core::int* #t21 = i in self::Extension|[](#t21, this).{self::Class::==}(null) ?{self::Class*} self::Extension|[]=(#t21, this, this) : null;
+    let final core::int* #t22 = i in self::Extension|[](#t22, self).{self::Class::==}(null) ?{self::Class*} self::Extension|[]=(#t22, self, self) : null;
     self::Extension|[]=(i, this, this);
     self::Extension|[]=(i, self, self);
     self::Extension|[](i, this);
     self::Extension|[](i, self);
-    let final core::int* #t23 = i in self::Extension|[]=(#t23, this, self::Extension|[](#t23, this).{self::Class::+}(this){(self::Class*) →* self::Class*});
-    let final core::int* #t24 = i in self::Extension|[]=(#t24, self, self::Extension|[](#t24, self).{self::Class::+}(self){(self::Class*) →* self::Class*});
+    let final core::int* #t23 = i in self::Extension|[]=(#t23, this, self::Extension|[](#t23, this).{self::Class::+}(this));
+    let final core::int* #t24 = i in self::Extension|[]=(#t24, self, self::Extension|[](#t24, self).{self::Class::+}(self));
   }
   method implicitExtensionGetSetForValue(core::int* i) → void {
     final self::Class* self = this;
     dynamic v;
-    v = let final core::int* #t25 = i in let final self::Class* #t26 = self::Extension|[](#t25, this) in #t26 == null ?{self::Class*} let final void #t27 = self::Extension|[]=(#t25, this, this) in this : #t26;
-    v = let final core::int* #t28 = i in let final self::Class* #t29 = self::Extension|[](#t28, self) in #t29 == null ?{self::Class*} let final void #t30 = self::Extension|[]=(#t28, self, self) in self : #t29;
+    v = let final core::int* #t25 = i in let final self::Class* #t26 = self::Extension|[](#t25, this) in #t26.{self::Class::==}(null) ?{self::Class*} let final void #t27 = self::Extension|[]=(#t25, this, this) in this : #t26;
+    v = let final core::int* #t28 = i in let final self::Class* #t29 = self::Extension|[](#t28, self) in #t29.{self::Class::==}(null) ?{self::Class*} let final void #t30 = self::Extension|[]=(#t28, self, self) in self : #t29;
     v = let final core::int* #t31 = i in let final void #t32 = self::Extension|[]=(#t31, this, this) in this;
     v = let final core::int* #t33 = i in let final void #t34 = self::Extension|[]=(#t33, self, self) in self;
     v = self::Extension|[](i, this);
     v = self::Extension|[](i, self);
-    v = let final core::int* #t35 = i in let final self::Class* #t36 = self::Extension|[](#t35, this).{self::Class::+}(this){(self::Class*) →* self::Class*} in let final void #t37 = self::Extension|[]=(#t35, this, #t36) in #t36;
-    v = let final core::int* #t38 = i in let final self::Class* #t39 = self::Extension|[](#t38, self).{self::Class::+}(self){(self::Class*) →* self::Class*} in let final void #t40 = self::Extension|[]=(#t38, self, #t39) in #t39;
+    v = let final core::int* #t35 = i in let final self::Class* #t36 = self::Extension|[](#t35, this).{self::Class::+}(this) in let final void #t37 = self::Extension|[]=(#t35, this, #t36) in #t36;
+    v = let final core::int* #t38 = i in let final self::Class* #t39 = self::Extension|[](#t38, self).{self::Class::+}(self) in let final void #t40 = self::Extension|[]=(#t38, self, #t39) in #t39;
   }
   method explicitExtensionGetSetForEffect(core::int* i) → void {
     final self::Class* self = this;
-    let final core::int* #t41 = i in self::Extension|[](#t41, this) == null ?{self::Class*} self::Extension|[]=(#t41, this, this) : null;
-    let final core::int* #t42 = i in self::Extension|[](#t42, self) == null ?{self::Class*} self::Extension|[]=(#t42, self, self) : null;
+    let final core::int* #t41 = i in self::Extension|[](#t41, this).{self::Class::==}(null) ?{self::Class*} self::Extension|[]=(#t41, this, this) : null;
+    let final core::int* #t42 = i in self::Extension|[](#t42, self).{self::Class::==}(null) ?{self::Class*} self::Extension|[]=(#t42, self, self) : null;
     self::Extension|[]=(i, this, this);
     self::Extension|[]=(i, self, self);
     self::Extension|[](i, this);
     self::Extension|[](i, self);
-    let final core::int* #t43 = i in self::Extension|[]=(#t43, this, self::Extension|[](#t43, this).{self::Class::+}(this){(self::Class*) →* self::Class*});
-    let final core::int* #t44 = i in self::Extension|[]=(#t44, self, self::Extension|[](#t44, self).{self::Class::+}(self){(self::Class*) →* self::Class*});
+    let final core::int* #t43 = i in self::Extension|[]=(#t43, this, self::Extension|[](#t43, this).{self::Class::+}(this));
+    let final core::int* #t44 = i in self::Extension|[]=(#t44, self, self::Extension|[](#t44, self).{self::Class::+}(self));
   }
   method explicitExtensionGetSetForValue(core::int* i) → void {
     final self::Class* self = this;
     dynamic v;
-    v = let final core::int* #t45 = i in let final self::Class* #t46 = self::Extension|[](#t45, this) in #t46 == null ?{self::Class*} let final void #t47 = self::Extension|[]=(#t45, this, this) in this : #t46;
-    v = let final core::int* #t48 = i in let final self::Class* #t49 = self::Extension|[](#t48, self) in #t49 == null ?{self::Class*} let final void #t50 = self::Extension|[]=(#t48, self, self) in self : #t49;
+    v = let final core::int* #t45 = i in let final self::Class* #t46 = self::Extension|[](#t45, this) in #t46.{self::Class::==}(null) ?{self::Class*} let final void #t47 = self::Extension|[]=(#t45, this, this) in this : #t46;
+    v = let final core::int* #t48 = i in let final self::Class* #t49 = self::Extension|[](#t48, self) in #t49.{self::Class::==}(null) ?{self::Class*} let final void #t50 = self::Extension|[]=(#t48, self, self) in self : #t49;
     v = let final core::int* #t51 = i in let final void #t52 = self::Extension|[]=(#t51, this, this) in this;
     v = let final core::int* #t53 = i in let final void #t54 = self::Extension|[]=(#t53, self, self) in self;
     v = self::Extension|[](i, this);
     v = self::Extension|[](i, self);
-    v = let final core::int* #t55 = i in let final self::Class* #t56 = self::Extension|[](#t55, this).{self::Class::+}(this){(self::Class*) →* self::Class*} in let final void #t57 = self::Extension|[]=(#t55, this, #t56) in #t56;
-    v = let final core::int* #t58 = i in let final self::Class* #t59 = self::Extension|[](#t58, self).{self::Class::+}(self){(self::Class*) →* self::Class*} in let final void #t60 = self::Extension|[]=(#t58, self, #t59) in #t59;
+    v = let final core::int* #t55 = i in let final self::Class* #t56 = self::Extension|[](#t55, this).{self::Class::+}(this) in let final void #t57 = self::Extension|[]=(#t55, this, #t56) in #t56;
+    v = let final core::int* #t58 = i in let final self::Class* #t59 = self::Extension|[](#t58, self).{self::Class::+}(self) in let final void #t60 = self::Extension|[]=(#t58, self, #t59) in #t59;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -97,26 +97,26 @@
     ;
   method superIndexGetSetForEffect() → void {
     final self::Class* self = this;
-    super.{self::Class::[]}(this) == null ?{self::Class*} super.{self::Class::[]=}(this, this) : null;
-    super.{self::Class::[]}(self) == null ?{self::Class*} super.{self::Class::[]=}(self, self) : null;
+    super.{self::Class::[]}(this).{self::Class::==}(null) ?{self::Class*} super.{self::Class::[]=}(this, this) : null;
+    super.{self::Class::[]}(self).{self::Class::==}(null) ?{self::Class*} super.{self::Class::[]=}(self, self) : null;
     super.{self::Class::[]=}(this, this);
     super.{self::Class::[]=}(self, self);
     super.{self::Class::[]}(this);
     super.{self::Class::[]}(self);
-    super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class*) →* self::Class*});
-    super.{self::Class::[]=}(self, super.{self::Class::[]}(self).{self::Class::+}(self){(self::Class*) →* self::Class*});
+    super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this));
+    super.{self::Class::[]=}(self, super.{self::Class::[]}(self).{self::Class::+}(self));
   }
   method superIndexGetSetForValue() → void {
     final self::Class* self = this;
     dynamic v;
-    v = let final self::Class* #t61 = super.{self::Class::[]}(this) in #t61 == null ?{self::Class*} let final void #t62 = super.{self::Class::[]=}(this, this) in this : #t61;
-    v = let final self::Class* #t63 = super.{self::Class::[]}(self) in #t63 == null ?{self::Class*} let final void #t64 = super.{self::Class::[]=}(self, self) in self : #t63;
+    v = let final self::Class* #t61 = super.{self::Class::[]}(this) in #t61.{self::Class::==}(null) ?{self::Class*} let final void #t62 = super.{self::Class::[]=}(this, this) in this : #t61;
+    v = let final self::Class* #t63 = super.{self::Class::[]}(self) in #t63.{self::Class::==}(null) ?{self::Class*} let final void #t64 = super.{self::Class::[]=}(self, self) in self : #t63;
     v = let final void #t65 = super.{self::Class::[]=}(this, this) in this;
     v = let final void #t66 = super.{self::Class::[]=}(self, self) in self;
     v = super.{self::Class::[]}(this);
     v = super.{self::Class::[]}(self);
-    v = let final self::Class* #t67 = super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class*) →* self::Class*} in let final void #t68 = super.{self::Class::[]=}(this, #t67) in #t67;
-    v = let final self::Class* #t69 = super.{self::Class::[]}(self).{self::Class::+}(self){(self::Class*) →* self::Class*} in let final void #t70 = super.{self::Class::[]=}(self, #t69) in #t69;
+    v = let final self::Class* #t67 = super.{self::Class::[]}(this).{self::Class::+}(this) in let final void #t68 = super.{self::Class::[]=}(this, #t67) in #t67;
+    v = let final self::Class* #t69 = super.{self::Class::[]}(self).{self::Class::+}(self) in let final void #t70 = super.{self::Class::[]=}(self, #t69) in #t69;
   }
 }
 class Class2 extends core::Object {
@@ -127,49 +127,49 @@
     return cls;
   method implicitExtensionGetSetForEffect() → void {
     final self::Class2* self = this;
-    self::Extension2|[](this, this) == null ?{self::Class2*} self::Extension2|[]=(this, this, this) : null;
-    self::Extension2|[](self, self) == null ?{self::Class2*} self::Extension2|[]=(self, self, self) : null;
+    self::Extension2|[](this, this).{self::Class2::==}(null) ?{self::Class2*} self::Extension2|[]=(this, this, this) : null;
+    self::Extension2|[](self, self).{self::Class2::==}(null) ?{self::Class2*} self::Extension2|[]=(self, self, self) : null;
     self::Extension2|[]=(this, this, this);
     self::Extension2|[]=(self, self, self);
     self::Extension2|[](this, this);
     self::Extension2|[](self, self);
-    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2*) →* self::Class2*});
-    self::Extension2|[]=(self, self, self::Extension2|[](self, self).{self::Class2::+}(self){(self::Class2*) →* self::Class2*});
+    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this));
+    self::Extension2|[]=(self, self, self::Extension2|[](self, self).{self::Class2::+}(self));
   }
   method implicitExtensionGetSetForValue() → void {
     final self::Class2* self = this;
     dynamic v;
-    v = let final self::Class2* #t71 = self::Extension2|[](this, this) in #t71 == null ?{self::Class2*} let final void #t72 = self::Extension2|[]=(this, this, this) in this : #t71;
-    v = let final self::Class2* #t73 = self::Extension2|[](self, self) in #t73 == null ?{self::Class2*} let final void #t74 = self::Extension2|[]=(self, self, self) in self : #t73;
+    v = let final self::Class2* #t71 = self::Extension2|[](this, this) in #t71.{self::Class2::==}(null) ?{self::Class2*} let final void #t72 = self::Extension2|[]=(this, this, this) in this : #t71;
+    v = let final self::Class2* #t73 = self::Extension2|[](self, self) in #t73.{self::Class2::==}(null) ?{self::Class2*} let final void #t74 = self::Extension2|[]=(self, self, self) in self : #t73;
     v = let final void #t75 = self::Extension2|[]=(this, this, this) in this;
     v = let final void #t76 = self::Extension2|[]=(self, self, self) in self;
     v = self::Extension2|[](this, this);
     v = self::Extension2|[](self, self);
-    v = let final self::Class2* #t77 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2*) →* self::Class2*} in let final void #t78 = self::Extension2|[]=(this, this, #t77) in #t77;
-    v = let final self::Class2* #t79 = self::Extension2|[](self, self).{self::Class2::+}(self){(self::Class2*) →* self::Class2*} in let final void #t80 = self::Extension2|[]=(self, self, #t79) in #t79;
+    v = let final self::Class2* #t77 = self::Extension2|[](this, this).{self::Class2::+}(this) in let final void #t78 = self::Extension2|[]=(this, this, #t77) in #t77;
+    v = let final self::Class2* #t79 = self::Extension2|[](self, self).{self::Class2::+}(self) in let final void #t80 = self::Extension2|[]=(self, self, #t79) in #t79;
   }
   method explicitExtensionGetSetForEffect() → void {
     final self::Class2* self = this;
-    self::Extension2|[](this, this) == null ?{self::Class2*} self::Extension2|[]=(this, this, this) : null;
-    self::Extension2|[](self, self) == null ?{self::Class2*} self::Extension2|[]=(self, self, self) : null;
+    self::Extension2|[](this, this).{self::Class2::==}(null) ?{self::Class2*} self::Extension2|[]=(this, this, this) : null;
+    self::Extension2|[](self, self).{self::Class2::==}(null) ?{self::Class2*} self::Extension2|[]=(self, self, self) : null;
     self::Extension2|[]=(this, this, this);
     self::Extension2|[]=(self, self, self);
     self::Extension2|[](this, this);
     self::Extension2|[](self, self);
-    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2*) →* self::Class2*});
-    self::Extension2|[]=(self, self, self::Extension2|[](self, self).{self::Class2::+}(self){(self::Class2*) →* self::Class2*});
+    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this));
+    self::Extension2|[]=(self, self, self::Extension2|[](self, self).{self::Class2::+}(self));
   }
   method explicitExtensionGetSetForValue() → void {
     final self::Class2* self = this;
     dynamic v;
-    v = let final self::Class2* #t81 = self::Extension2|[](this, this) in #t81 == null ?{self::Class2*} let final void #t82 = self::Extension2|[]=(this, this, this) in this : #t81;
-    v = let final self::Class2* #t83 = self::Extension2|[](self, self) in #t83 == null ?{self::Class2*} let final void #t84 = self::Extension2|[]=(self, self, self) in self : #t83;
+    v = let final self::Class2* #t81 = self::Extension2|[](this, this) in #t81.{self::Class2::==}(null) ?{self::Class2*} let final void #t82 = self::Extension2|[]=(this, this, this) in this : #t81;
+    v = let final self::Class2* #t83 = self::Extension2|[](self, self) in #t83.{self::Class2::==}(null) ?{self::Class2*} let final void #t84 = self::Extension2|[]=(self, self, self) in self : #t83;
     v = let final void #t85 = self::Extension2|[]=(this, this, this) in this;
     v = let final void #t86 = self::Extension2|[]=(self, self, self) in self;
     v = self::Extension2|[](this, this);
     v = self::Extension2|[](self, self);
-    v = let final self::Class2* #t87 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2*) →* self::Class2*} in let final void #t88 = self::Extension2|[]=(this, this, #t87) in #t87;
-    v = let final self::Class2* #t89 = self::Extension2|[](self, self).{self::Class2::+}(self){(self::Class2*) →* self::Class2*} in let final void #t90 = self::Extension2|[]=(self, self, #t89) in #t89;
+    v = let final self::Class2* #t87 = self::Extension2|[](this, this).{self::Class2::+}(this) in let final void #t88 = self::Extension2|[]=(this, this, #t87) in #t87;
+    v = let final self::Class2* #t89 = self::Extension2|[](self, self).{self::Class2::+}(self) in let final void #t90 = self::Extension2|[]=(self, self, #t89) in #t89;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/pure_index_expressions.dart.weak.transformed.expect b/pkg/front_end/testcases/general/pure_index_expressions.dart.weak.transformed.expect
index e1a3cd8..ed17f97 100644
--- a/pkg/front_end/testcases/general/pure_index_expressions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/pure_index_expressions.dart.weak.transformed.expect
@@ -13,72 +13,72 @@
     return cls;
   method indexGetSetForEffect(core::Map<self::Class*, self::Class*>* map) → void {
     final self::Class* self = this;
-    let final core::Map<self::Class*, self::Class*>* #t1 = map in #t1.{core::Map::[]}(this){(core::Object*) →* self::Class*} == null ?{self::Class*} #t1.{core::Map::[]=}(this, this){(self::Class*, self::Class*) →* void} : null;
-    let final core::Map<self::Class*, self::Class*>* #t2 = map in #t2.{core::Map::[]}(self){(core::Object*) →* self::Class*} == null ?{self::Class*} #t2.{core::Map::[]=}(self, self){(self::Class*, self::Class*) →* void} : null;
-    map.{core::Map::[]=}(this, this){(self::Class*, self::Class*) →* void};
-    map.{core::Map::[]=}(self, self){(self::Class*, self::Class*) →* void};
-    map.{core::Map::[]}(this){(core::Object*) →* self::Class*};
-    map.{core::Map::[]}(self){(core::Object*) →* self::Class*};
-    let final core::Map<self::Class*, self::Class*>* #t3 = map in #t3.{core::Map::[]=}(this, #t3.{core::Map::[]}(this){(core::Object*) →* self::Class*}.{self::Class::+}(this){(self::Class*) →* self::Class*}){(self::Class*, self::Class*) →* void};
-    let final core::Map<self::Class*, self::Class*>* #t4 = map in #t4.{core::Map::[]=}(self, #t4.{core::Map::[]}(self){(core::Object*) →* self::Class*}.{self::Class::+}(self){(self::Class*) →* self::Class*}){(self::Class*, self::Class*) →* void};
+    let final core::Map<self::Class*, self::Class*>* #t1 = map in #t1.{core::Map::[]}(this).{self::Class::==}(null) ?{self::Class*} #t1.{core::Map::[]=}(this, this) : null;
+    let final core::Map<self::Class*, self::Class*>* #t2 = map in #t2.{core::Map::[]}(self).{self::Class::==}(null) ?{self::Class*} #t2.{core::Map::[]=}(self, self) : null;
+    map.{core::Map::[]=}(this, this);
+    map.{core::Map::[]=}(self, self);
+    map.{core::Map::[]}(this);
+    map.{core::Map::[]}(self);
+    let final core::Map<self::Class*, self::Class*>* #t3 = map in #t3.{core::Map::[]=}(this, #t3.{core::Map::[]}(this).{self::Class::+}(this));
+    let final core::Map<self::Class*, self::Class*>* #t4 = map in #t4.{core::Map::[]=}(self, #t4.{core::Map::[]}(self).{self::Class::+}(self));
   }
   method indexGetSetForValue(core::Map<self::Class*, self::Class*>* map) → void {
     final self::Class* self = this;
     dynamic v;
-    v = let final core::Map<self::Class*, self::Class*>* #t5 = map in let final self::Class* #t6 = #t5.{core::Map::[]}(this){(core::Object*) →* self::Class*} in #t6 == null ?{self::Class*} let final void #t7 = #t5.{core::Map::[]=}(this, this){(self::Class*, self::Class*) →* void} in this : #t6;
-    v = let final core::Map<self::Class*, self::Class*>* #t8 = map in let final self::Class* #t9 = #t8.{core::Map::[]}(self){(core::Object*) →* self::Class*} in #t9 == null ?{self::Class*} let final void #t10 = #t8.{core::Map::[]=}(self, self){(self::Class*, self::Class*) →* void} in self : #t9;
-    v = let final core::Map<self::Class*, self::Class*>* #t11 = map in let final void #t12 = #t11.{core::Map::[]=}(this, this){(self::Class*, self::Class*) →* void} in this;
-    v = let final core::Map<self::Class*, self::Class*>* #t13 = map in let final void #t14 = #t13.{core::Map::[]=}(self, self){(self::Class*, self::Class*) →* void} in self;
-    v = map.{core::Map::[]}(this){(core::Object*) →* self::Class*};
-    v = map.{core::Map::[]}(self){(core::Object*) →* self::Class*};
-    v = let final core::Map<self::Class*, self::Class*>* #t15 = map in let final self::Class* #t16 = #t15.{core::Map::[]}(this){(core::Object*) →* self::Class*}.{self::Class::+}(this){(self::Class*) →* self::Class*} in let final void #t17 = #t15.{core::Map::[]=}(this, #t16){(self::Class*, self::Class*) →* void} in #t16;
-    v = let final core::Map<self::Class*, self::Class*>* #t18 = map in let final self::Class* #t19 = #t18.{core::Map::[]}(self){(core::Object*) →* self::Class*}.{self::Class::+}(self){(self::Class*) →* self::Class*} in let final void #t20 = #t18.{core::Map::[]=}(self, #t19){(self::Class*, self::Class*) →* void} in #t19;
+    v = let final core::Map<self::Class*, self::Class*>* #t5 = map in let final self::Class* #t6 = #t5.{core::Map::[]}(this) in #t6.{self::Class::==}(null) ?{self::Class*} let final void #t7 = #t5.{core::Map::[]=}(this, this) in this : #t6;
+    v = let final core::Map<self::Class*, self::Class*>* #t8 = map in let final self::Class* #t9 = #t8.{core::Map::[]}(self) in #t9.{self::Class::==}(null) ?{self::Class*} let final void #t10 = #t8.{core::Map::[]=}(self, self) in self : #t9;
+    v = let final core::Map<self::Class*, self::Class*>* #t11 = map in let final void #t12 = #t11.{core::Map::[]=}(this, this) in this;
+    v = let final core::Map<self::Class*, self::Class*>* #t13 = map in let final void #t14 = #t13.{core::Map::[]=}(self, self) in self;
+    v = map.{core::Map::[]}(this);
+    v = map.{core::Map::[]}(self);
+    v = let final core::Map<self::Class*, self::Class*>* #t15 = map in let final self::Class* #t16 = #t15.{core::Map::[]}(this).{self::Class::+}(this) in let final void #t17 = #t15.{core::Map::[]=}(this, #t16) in #t16;
+    v = let final core::Map<self::Class*, self::Class*>* #t18 = map in let final self::Class* #t19 = #t18.{core::Map::[]}(self).{self::Class::+}(self) in let final void #t20 = #t18.{core::Map::[]=}(self, #t19) in #t19;
   }
   method implicitExtensionGetSetForEffect(core::int* i) → void {
     final self::Class* self = this;
-    let final core::int* #t21 = i in self::Extension|[](#t21, this) == null ?{self::Class*} self::Extension|[]=(#t21, this, this) : null;
-    let final core::int* #t22 = i in self::Extension|[](#t22, self) == null ?{self::Class*} self::Extension|[]=(#t22, self, self) : null;
+    let final core::int* #t21 = i in self::Extension|[](#t21, this).{self::Class::==}(null) ?{self::Class*} self::Extension|[]=(#t21, this, this) : null;
+    let final core::int* #t22 = i in self::Extension|[](#t22, self).{self::Class::==}(null) ?{self::Class*} self::Extension|[]=(#t22, self, self) : null;
     self::Extension|[]=(i, this, this);
     self::Extension|[]=(i, self, self);
     self::Extension|[](i, this);
     self::Extension|[](i, self);
-    let final core::int* #t23 = i in self::Extension|[]=(#t23, this, self::Extension|[](#t23, this).{self::Class::+}(this){(self::Class*) →* self::Class*});
-    let final core::int* #t24 = i in self::Extension|[]=(#t24, self, self::Extension|[](#t24, self).{self::Class::+}(self){(self::Class*) →* self::Class*});
+    let final core::int* #t23 = i in self::Extension|[]=(#t23, this, self::Extension|[](#t23, this).{self::Class::+}(this));
+    let final core::int* #t24 = i in self::Extension|[]=(#t24, self, self::Extension|[](#t24, self).{self::Class::+}(self));
   }
   method implicitExtensionGetSetForValue(core::int* i) → void {
     final self::Class* self = this;
     dynamic v;
-    v = let final core::int* #t25 = i in let final self::Class* #t26 = self::Extension|[](#t25, this) in #t26 == null ?{self::Class*} let final void #t27 = self::Extension|[]=(#t25, this, this) in this : #t26;
-    v = let final core::int* #t28 = i in let final self::Class* #t29 = self::Extension|[](#t28, self) in #t29 == null ?{self::Class*} let final void #t30 = self::Extension|[]=(#t28, self, self) in self : #t29;
+    v = let final core::int* #t25 = i in let final self::Class* #t26 = self::Extension|[](#t25, this) in #t26.{self::Class::==}(null) ?{self::Class*} let final void #t27 = self::Extension|[]=(#t25, this, this) in this : #t26;
+    v = let final core::int* #t28 = i in let final self::Class* #t29 = self::Extension|[](#t28, self) in #t29.{self::Class::==}(null) ?{self::Class*} let final void #t30 = self::Extension|[]=(#t28, self, self) in self : #t29;
     v = let final core::int* #t31 = i in let final void #t32 = self::Extension|[]=(#t31, this, this) in this;
     v = let final core::int* #t33 = i in let final void #t34 = self::Extension|[]=(#t33, self, self) in self;
     v = self::Extension|[](i, this);
     v = self::Extension|[](i, self);
-    v = let final core::int* #t35 = i in let final self::Class* #t36 = self::Extension|[](#t35, this).{self::Class::+}(this){(self::Class*) →* self::Class*} in let final void #t37 = self::Extension|[]=(#t35, this, #t36) in #t36;
-    v = let final core::int* #t38 = i in let final self::Class* #t39 = self::Extension|[](#t38, self).{self::Class::+}(self){(self::Class*) →* self::Class*} in let final void #t40 = self::Extension|[]=(#t38, self, #t39) in #t39;
+    v = let final core::int* #t35 = i in let final self::Class* #t36 = self::Extension|[](#t35, this).{self::Class::+}(this) in let final void #t37 = self::Extension|[]=(#t35, this, #t36) in #t36;
+    v = let final core::int* #t38 = i in let final self::Class* #t39 = self::Extension|[](#t38, self).{self::Class::+}(self) in let final void #t40 = self::Extension|[]=(#t38, self, #t39) in #t39;
   }
   method explicitExtensionGetSetForEffect(core::int* i) → void {
     final self::Class* self = this;
-    let final core::int* #t41 = i in self::Extension|[](#t41, this) == null ?{self::Class*} self::Extension|[]=(#t41, this, this) : null;
-    let final core::int* #t42 = i in self::Extension|[](#t42, self) == null ?{self::Class*} self::Extension|[]=(#t42, self, self) : null;
+    let final core::int* #t41 = i in self::Extension|[](#t41, this).{self::Class::==}(null) ?{self::Class*} self::Extension|[]=(#t41, this, this) : null;
+    let final core::int* #t42 = i in self::Extension|[](#t42, self).{self::Class::==}(null) ?{self::Class*} self::Extension|[]=(#t42, self, self) : null;
     self::Extension|[]=(i, this, this);
     self::Extension|[]=(i, self, self);
     self::Extension|[](i, this);
     self::Extension|[](i, self);
-    let final core::int* #t43 = i in self::Extension|[]=(#t43, this, self::Extension|[](#t43, this).{self::Class::+}(this){(self::Class*) →* self::Class*});
-    let final core::int* #t44 = i in self::Extension|[]=(#t44, self, self::Extension|[](#t44, self).{self::Class::+}(self){(self::Class*) →* self::Class*});
+    let final core::int* #t43 = i in self::Extension|[]=(#t43, this, self::Extension|[](#t43, this).{self::Class::+}(this));
+    let final core::int* #t44 = i in self::Extension|[]=(#t44, self, self::Extension|[](#t44, self).{self::Class::+}(self));
   }
   method explicitExtensionGetSetForValue(core::int* i) → void {
     final self::Class* self = this;
     dynamic v;
-    v = let final core::int* #t45 = i in let final self::Class* #t46 = self::Extension|[](#t45, this) in #t46 == null ?{self::Class*} let final void #t47 = self::Extension|[]=(#t45, this, this) in this : #t46;
-    v = let final core::int* #t48 = i in let final self::Class* #t49 = self::Extension|[](#t48, self) in #t49 == null ?{self::Class*} let final void #t50 = self::Extension|[]=(#t48, self, self) in self : #t49;
+    v = let final core::int* #t45 = i in let final self::Class* #t46 = self::Extension|[](#t45, this) in #t46.{self::Class::==}(null) ?{self::Class*} let final void #t47 = self::Extension|[]=(#t45, this, this) in this : #t46;
+    v = let final core::int* #t48 = i in let final self::Class* #t49 = self::Extension|[](#t48, self) in #t49.{self::Class::==}(null) ?{self::Class*} let final void #t50 = self::Extension|[]=(#t48, self, self) in self : #t49;
     v = let final core::int* #t51 = i in let final void #t52 = self::Extension|[]=(#t51, this, this) in this;
     v = let final core::int* #t53 = i in let final void #t54 = self::Extension|[]=(#t53, self, self) in self;
     v = self::Extension|[](i, this);
     v = self::Extension|[](i, self);
-    v = let final core::int* #t55 = i in let final self::Class* #t56 = self::Extension|[](#t55, this).{self::Class::+}(this){(self::Class*) →* self::Class*} in let final void #t57 = self::Extension|[]=(#t55, this, #t56) in #t56;
-    v = let final core::int* #t58 = i in let final self::Class* #t59 = self::Extension|[](#t58, self).{self::Class::+}(self){(self::Class*) →* self::Class*} in let final void #t60 = self::Extension|[]=(#t58, self, #t59) in #t59;
+    v = let final core::int* #t55 = i in let final self::Class* #t56 = self::Extension|[](#t55, this).{self::Class::+}(this) in let final void #t57 = self::Extension|[]=(#t55, this, #t56) in #t56;
+    v = let final core::int* #t58 = i in let final self::Class* #t59 = self::Extension|[](#t58, self).{self::Class::+}(self) in let final void #t60 = self::Extension|[]=(#t58, self, #t59) in #t59;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -97,26 +97,26 @@
     ;
   method superIndexGetSetForEffect() → void {
     final self::Class* self = this;
-    super.{self::Class::[]}(this) == null ?{self::Class*} super.{self::Class::[]=}(this, this) : null;
-    super.{self::Class::[]}(self) == null ?{self::Class*} super.{self::Class::[]=}(self, self) : null;
+    super.{self::Class::[]}(this).{self::Class::==}(null) ?{self::Class*} super.{self::Class::[]=}(this, this) : null;
+    super.{self::Class::[]}(self).{self::Class::==}(null) ?{self::Class*} super.{self::Class::[]=}(self, self) : null;
     super.{self::Class::[]=}(this, this);
     super.{self::Class::[]=}(self, self);
     super.{self::Class::[]}(this);
     super.{self::Class::[]}(self);
-    super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class*) →* self::Class*});
-    super.{self::Class::[]=}(self, super.{self::Class::[]}(self).{self::Class::+}(self){(self::Class*) →* self::Class*});
+    super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this));
+    super.{self::Class::[]=}(self, super.{self::Class::[]}(self).{self::Class::+}(self));
   }
   method superIndexGetSetForValue() → void {
     final self::Class* self = this;
     dynamic v;
-    v = let final self::Class* #t61 = super.{self::Class::[]}(this) in #t61 == null ?{self::Class*} let final void #t62 = super.{self::Class::[]=}(this, this) in this : #t61;
-    v = let final self::Class* #t63 = super.{self::Class::[]}(self) in #t63 == null ?{self::Class*} let final void #t64 = super.{self::Class::[]=}(self, self) in self : #t63;
+    v = let final self::Class* #t61 = super.{self::Class::[]}(this) in #t61.{self::Class::==}(null) ?{self::Class*} let final void #t62 = super.{self::Class::[]=}(this, this) in this : #t61;
+    v = let final self::Class* #t63 = super.{self::Class::[]}(self) in #t63.{self::Class::==}(null) ?{self::Class*} let final void #t64 = super.{self::Class::[]=}(self, self) in self : #t63;
     v = let final void #t65 = super.{self::Class::[]=}(this, this) in this;
     v = let final void #t66 = super.{self::Class::[]=}(self, self) in self;
     v = super.{self::Class::[]}(this);
     v = super.{self::Class::[]}(self);
-    v = let final self::Class* #t67 = super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class*) →* self::Class*} in let final void #t68 = super.{self::Class::[]=}(this, #t67) in #t67;
-    v = let final self::Class* #t69 = super.{self::Class::[]}(self).{self::Class::+}(self){(self::Class*) →* self::Class*} in let final void #t70 = super.{self::Class::[]=}(self, #t69) in #t69;
+    v = let final self::Class* #t67 = super.{self::Class::[]}(this).{self::Class::+}(this) in let final void #t68 = super.{self::Class::[]=}(this, #t67) in #t67;
+    v = let final self::Class* #t69 = super.{self::Class::[]}(self).{self::Class::+}(self) in let final void #t70 = super.{self::Class::[]=}(self, #t69) in #t69;
   }
 }
 class Class2 extends core::Object {
@@ -127,49 +127,49 @@
     return cls;
   method implicitExtensionGetSetForEffect() → void {
     final self::Class2* self = this;
-    self::Extension2|[](this, this) == null ?{self::Class2*} self::Extension2|[]=(this, this, this) : null;
-    self::Extension2|[](self, self) == null ?{self::Class2*} self::Extension2|[]=(self, self, self) : null;
+    self::Extension2|[](this, this).{self::Class2::==}(null) ?{self::Class2*} self::Extension2|[]=(this, this, this) : null;
+    self::Extension2|[](self, self).{self::Class2::==}(null) ?{self::Class2*} self::Extension2|[]=(self, self, self) : null;
     self::Extension2|[]=(this, this, this);
     self::Extension2|[]=(self, self, self);
     self::Extension2|[](this, this);
     self::Extension2|[](self, self);
-    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2*) →* self::Class2*});
-    self::Extension2|[]=(self, self, self::Extension2|[](self, self).{self::Class2::+}(self){(self::Class2*) →* self::Class2*});
+    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this));
+    self::Extension2|[]=(self, self, self::Extension2|[](self, self).{self::Class2::+}(self));
   }
   method implicitExtensionGetSetForValue() → void {
     final self::Class2* self = this;
     dynamic v;
-    v = let final self::Class2* #t71 = self::Extension2|[](this, this) in #t71 == null ?{self::Class2*} let final void #t72 = self::Extension2|[]=(this, this, this) in this : #t71;
-    v = let final self::Class2* #t73 = self::Extension2|[](self, self) in #t73 == null ?{self::Class2*} let final void #t74 = self::Extension2|[]=(self, self, self) in self : #t73;
+    v = let final self::Class2* #t71 = self::Extension2|[](this, this) in #t71.{self::Class2::==}(null) ?{self::Class2*} let final void #t72 = self::Extension2|[]=(this, this, this) in this : #t71;
+    v = let final self::Class2* #t73 = self::Extension2|[](self, self) in #t73.{self::Class2::==}(null) ?{self::Class2*} let final void #t74 = self::Extension2|[]=(self, self, self) in self : #t73;
     v = let final void #t75 = self::Extension2|[]=(this, this, this) in this;
     v = let final void #t76 = self::Extension2|[]=(self, self, self) in self;
     v = self::Extension2|[](this, this);
     v = self::Extension2|[](self, self);
-    v = let final self::Class2* #t77 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2*) →* self::Class2*} in let final void #t78 = self::Extension2|[]=(this, this, #t77) in #t77;
-    v = let final self::Class2* #t79 = self::Extension2|[](self, self).{self::Class2::+}(self){(self::Class2*) →* self::Class2*} in let final void #t80 = self::Extension2|[]=(self, self, #t79) in #t79;
+    v = let final self::Class2* #t77 = self::Extension2|[](this, this).{self::Class2::+}(this) in let final void #t78 = self::Extension2|[]=(this, this, #t77) in #t77;
+    v = let final self::Class2* #t79 = self::Extension2|[](self, self).{self::Class2::+}(self) in let final void #t80 = self::Extension2|[]=(self, self, #t79) in #t79;
   }
   method explicitExtensionGetSetForEffect() → void {
     final self::Class2* self = this;
-    self::Extension2|[](this, this) == null ?{self::Class2*} self::Extension2|[]=(this, this, this) : null;
-    self::Extension2|[](self, self) == null ?{self::Class2*} self::Extension2|[]=(self, self, self) : null;
+    self::Extension2|[](this, this).{self::Class2::==}(null) ?{self::Class2*} self::Extension2|[]=(this, this, this) : null;
+    self::Extension2|[](self, self).{self::Class2::==}(null) ?{self::Class2*} self::Extension2|[]=(self, self, self) : null;
     self::Extension2|[]=(this, this, this);
     self::Extension2|[]=(self, self, self);
     self::Extension2|[](this, this);
     self::Extension2|[](self, self);
-    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2*) →* self::Class2*});
-    self::Extension2|[]=(self, self, self::Extension2|[](self, self).{self::Class2::+}(self){(self::Class2*) →* self::Class2*});
+    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this));
+    self::Extension2|[]=(self, self, self::Extension2|[](self, self).{self::Class2::+}(self));
   }
   method explicitExtensionGetSetForValue() → void {
     final self::Class2* self = this;
     dynamic v;
-    v = let final self::Class2* #t81 = self::Extension2|[](this, this) in #t81 == null ?{self::Class2*} let final void #t82 = self::Extension2|[]=(this, this, this) in this : #t81;
-    v = let final self::Class2* #t83 = self::Extension2|[](self, self) in #t83 == null ?{self::Class2*} let final void #t84 = self::Extension2|[]=(self, self, self) in self : #t83;
+    v = let final self::Class2* #t81 = self::Extension2|[](this, this) in #t81.{self::Class2::==}(null) ?{self::Class2*} let final void #t82 = self::Extension2|[]=(this, this, this) in this : #t81;
+    v = let final self::Class2* #t83 = self::Extension2|[](self, self) in #t83.{self::Class2::==}(null) ?{self::Class2*} let final void #t84 = self::Extension2|[]=(self, self, self) in self : #t83;
     v = let final void #t85 = self::Extension2|[]=(this, this, this) in this;
     v = let final void #t86 = self::Extension2|[]=(self, self, self) in self;
     v = self::Extension2|[](this, this);
     v = self::Extension2|[](self, self);
-    v = let final self::Class2* #t87 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2*) →* self::Class2*} in let final void #t88 = self::Extension2|[]=(this, this, #t87) in #t87;
-    v = let final self::Class2* #t89 = self::Extension2|[](self, self).{self::Class2::+}(self){(self::Class2*) →* self::Class2*} in let final void #t90 = self::Extension2|[]=(self, self, #t89) in #t89;
+    v = let final self::Class2* #t87 = self::Extension2|[](this, this).{self::Class2::+}(this) in let final void #t88 = self::Extension2|[]=(this, this, #t87) in #t87;
+    v = let final self::Class2* #t89 = self::Extension2|[](self, self).{self::Class2::+}(self) in let final void #t90 = self::Extension2|[]=(self, self, #t89) in #t89;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/qualified.dart.weak.expect b/pkg/front_end/testcases/general/qualified.dart.weak.expect
index 6bf765c..b829051 100644
--- a/pkg/front_end/testcases/general/qualified.dart.weak.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.weak.expect
@@ -100,8 +100,8 @@
   new lib::C::•<core::String*>();
   new lib::C::a<core::String*>();
   new lib::C::a<core::String*>();
-  new self::WithMixin::•().{lib::Supertype::supertypeMethod}(){() →* dynamic};
-  new self::WithMixin::•().{self::_WithMixin&Supertype&Mixin::foo}(){() →* dynamic};
+  new self::WithMixin::•().{lib::Supertype::supertypeMethod}();
+  new self::WithMixin::•().{self::_WithMixin&Supertype&Mixin::foo}();
   new self::IllegalSupertype::•();
 }
 
diff --git a/pkg/front_end/testcases/general/qualified.dart.weak.transformed.expect b/pkg/front_end/testcases/general/qualified.dart.weak.transformed.expect
index ea5014d..003ca00 100644
--- a/pkg/front_end/testcases/general/qualified.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.weak.transformed.expect
@@ -101,8 +101,8 @@
   new lib::C::•<core::String*>();
   new lib::C::a<core::String*>();
   new lib::C::a<core::String*>();
-  new self::WithMixin::•().{lib::Supertype::supertypeMethod}(){() →* dynamic};
-  new self::WithMixin::•().{self::_WithMixin&Supertype&Mixin::foo}(){() →* dynamic};
+  new self::WithMixin::•().{lib::Supertype::supertypeMethod}();
+  new self::WithMixin::•().{self::_WithMixin&Supertype&Mixin::foo}();
   new self::IllegalSupertype::•();
 }
 
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.expect
index aa4bbfe..71c6c5f 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.expect
@@ -158,7 +158,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::Bar::•<core::String*, core::double*>(4).{self::FooBase::x}{core::int*});
+  core::print(new self::Bar::•<core::String*, core::double*>(4).{self::FooBase::x});
   new self::SimpleCaseImpl2::•<core::int*, core::double*>();
   new self::Mix::•<core::double*>();
 }
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.transformed.expect
index e22b2b0..704411a 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.transformed.expect
@@ -158,7 +158,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::Bar::•<core::String*, core::double*>(4).{self::FooBase::x}{core::int*});
+  core::print(new self::Bar::•<core::String*, core::double*>(4).{self::FooBase::x});
   new self::SimpleCaseImpl2::•<core::int*, core::double*>();
   new self::Mix::•<core::double*>();
 }
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.expect
index 3841bc7..85d39b62 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.expect
@@ -54,9 +54,9 @@
     ;
 }
 static method main() → dynamic {
-  dynamic x = new self::B::•<dynamic>().{self::A::x}{self::_X<dynamic>*};
+  dynamic x = new self::B::•<dynamic>().{self::A::x};
   if(!(x is self::_Y<Null>*)) {
-    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}{core::Type*}}, but `_Y<Null>` expected";
+    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}}, but `_Y<Null>` expected";
   }
 }
 
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.transformed.expect
index ce397b6..46c38ec 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.transformed.expect
@@ -54,9 +54,9 @@
     ;
 }
 static method main() → dynamic {
-  dynamic x = new self::B::•<dynamic>().{self::A::x}{self::_X<dynamic>*};
+  dynamic x = new self::B::•<dynamic>().{self::A::x};
   if(!(x is self::_Y<Null>*)) {
-    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}{core::Type*}}, but `_Y<Null>` expected";
+    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}}, but `_Y<Null>` expected";
   }
 }
 
diff --git a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.expect b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.expect
index 7cc953e..f3a4286 100644
--- a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.expect
+++ b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.expect
@@ -36,4 +36,4 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic async 
-  return <asy::Future<void>*>[new self::A::•().{self::A::foo}(await null){(dynamic) →* asy::Future<void>*}, new self::B::•().{self::B::bar}(await null){(dynamic) →* asy::Future<void>*}];
+  return <asy::Future<void>*>[new self::A::•().{self::A::foo}(await null), new self::B::•().{self::B::bar}(await null)];
diff --git a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect
index 90952fd..d5f89c9 100644
--- a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect
@@ -99,10 +99,10 @@
       {
         :async_temporary_1 = new self::A::•();
         [yield] let dynamic #t1 = asy::_awaitHelper(null, :async_op_then, :async_op_error, :async_op) in null;
-        :async_temporary_1 = _in::unsafeCast<self::A*>(:async_temporary_1).{self::A::foo}(_in::unsafeCast<Null>(:result)){(dynamic) →* asy::Future<void>*};
+        :async_temporary_1 = _in::unsafeCast<self::A*>(:async_temporary_1).{self::A::foo}(_in::unsafeCast<Null>(:result));
         :async_temporary_0 = new self::B::•();
         [yield] let dynamic #t2 = asy::_awaitHelper(null, :async_op_then, :async_op_error, :async_op) in null;
-        :return_value = core::_GrowableList::_literal2<asy::Future<void>*>(_in::unsafeCast<asy::Future<void>*>(:async_temporary_1), _in::unsafeCast<self::B*>(:async_temporary_0).{self::B::bar}(_in::unsafeCast<Null>(:result)){(dynamic) →* asy::Future<void>*});
+        :return_value = core::_GrowableList::_literal2<asy::Future<void>*>(_in::unsafeCast<asy::Future<void>*>(:async_temporary_1), _in::unsafeCast<self::B*>(:async_temporary_0).{self::B::bar}(_in::unsafeCast<Null>(:result)));
         break #L3;
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
diff --git a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.expect b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.expect
index 7704535..4bfac34 100644
--- a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.expect
+++ b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.expect
@@ -4,7 +4,7 @@
 
 static method f(core::List<dynamic>* x) → core::bool* {
   return x.{core::Iterable::expand}<dynamic>((dynamic y) → core::Iterable<dynamic>* {
-    return y{dynamic}.split(",") as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-  }){((dynamic) →* core::Iterable<dynamic>*) →* core::Iterable<dynamic>*}.{core::Iterable::any}((dynamic y) → core::bool* => y =={core::Object::==}{(core::Object*) →* core::bool*} "z"){((dynamic) →* core::bool*) →* core::bool*};
+    return y.split(",") as{TypeError,ForDynamic} core::Iterable<dynamic>*;
+  }).{core::Iterable::any}((dynamic y) → core::bool* => y.{core::Object::==}("z"));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.transformed.expect b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.transformed.expect
index 7704535..4bfac34 100644
--- a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 
 static method f(core::List<dynamic>* x) → core::bool* {
   return x.{core::Iterable::expand}<dynamic>((dynamic y) → core::Iterable<dynamic>* {
-    return y{dynamic}.split(",") as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-  }){((dynamic) →* core::Iterable<dynamic>*) →* core::Iterable<dynamic>*}.{core::Iterable::any}((dynamic y) → core::bool* => y =={core::Object::==}{(core::Object*) →* core::bool*} "z"){((dynamic) →* core::bool*) →* core::bool*};
+    return y.split(",") as{TypeError,ForDynamic} core::Iterable<dynamic>*;
+  }).{core::Iterable::any}((dynamic y) → core::bool* => y.{core::Object::==}("z"));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/spread_collection.dart.weak.expect b/pkg/front_end/testcases/general/spread_collection.dart.weak.expect
index 7a97667..2fda137 100644
--- a/pkg/front_end/testcases/general/spread_collection.dart.weak.expect
+++ b/pkg/front_end/testcases/general/spread_collection.dart.weak.expect
@@ -14,28 +14,28 @@
 static method main() → dynamic {
   final core::List<core::int*>* aList = block {
     final core::List<core::int*>* #t1 = <core::int*>[1];
-    #t1.{core::List::addAll}(<core::int*>[2]){(core::Iterable<core::int*>*) →* void};
+    #t1.{core::List::addAll}{Invariant}(<core::int*>[2]);
     final core::Iterable<core::int*>* #t2 = <core::int*>[3];
-    if(!(#t2 == null))
-      #t1.{core::List::addAll}(#t2){(core::Iterable<core::int*>*) →* void};
+    if(!#t2.{core::Object::==}(null))
+      #t1.{core::List::addAll}{Invariant}(#t2);
   } =>#t1;
   final core::Map<core::int*, core::int*>* aMap = block {
     final core::Map<core::int*, core::int*>* #t3 = <core::int*, core::int*>{};
-    #t3.{core::Map::[]=}(1, 1){(core::int*, core::int*) →* void};
+    #t3.{core::Map::[]=}{Invariant}(1, 1);
     for (final core::MapEntry<core::int*, core::int*>* #t4 in <core::int*, core::int*>{2: 2}.{core::Map::entries})
-      #t3.{core::Map::[]=}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value}){(core::int*, core::int*) →* void};
+      #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value});
     final core::Map<core::int*, core::int*>* #t5 = <core::int*, core::int*>{3: 3};
-    if(!(#t5 == null))
+    if(!#t5.{core::Object::==}(null))
       for (final core::MapEntry<core::int*, core::int*>* #t6 in #t5.{core::Map::entries})
-        #t3.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value}){(core::int*, core::int*) →* void};
+        #t3.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
   } =>#t3;
   final core::Set<core::int*>* aSet = block {
     final core::Set<core::int*>* #t7 = col::LinkedHashSet::•<core::int*>();
-    #t7.{core::Set::add}(1){(core::int*) →* core::bool*};
-    #t7.{core::Set::addAll}(<core::int*>[2]){(core::Iterable<core::int*>*) →* void};
+    #t7.{core::Set::add}{Invariant}(1);
+    #t7.{core::Set::addAll}{Invariant}(<core::int*>[2]);
     final core::Iterable<core::int*>* #t8 = <core::int*>[3];
-    if(!(#t8 == null))
-      #t7.{core::Set::addAll}(#t8){(core::Iterable<core::int*>*) →* void};
+    if(!#t8.{core::Object::==}(null))
+      #t7.{core::Set::addAll}{Invariant}(#t8);
   } =>#t7;
   final Never* aSetOrMap = invalid-expression "pkg/front_end/testcases/general/spread_collection.dart:21:21: Error: Not enough type information to disambiguate between literal set and literal map.
 Try providing type arguments for the literal explicitly to disambiguate it.
diff --git a/pkg/front_end/testcases/general/spread_collection.dart.weak.transformed.expect b/pkg/front_end/testcases/general/spread_collection.dart.weak.transformed.expect
index de72845..a2765d8 100644
--- a/pkg/front_end/testcases/general/spread_collection.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/spread_collection.dart.weak.transformed.expect
@@ -14,37 +14,37 @@
 static method main() → dynamic {
   final core::List<core::int*>* aList = block {
     final core::List<core::int*>* #t1 = core::_GrowableList::_literal1<core::int*>(1);
-    #t1.{core::List::addAll}(core::_GrowableList::_literal1<core::int*>(2)){(core::Iterable<core::int*>*) →* void};
+    #t1.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(2));
     final core::Iterable<core::int*>* #t2 = core::_GrowableList::_literal1<core::int*>(3);
-    if(!(#t2 == null))
-      #t1.{core::List::addAll}(#t2){(core::Iterable<core::int*>*) →* void};
+    if(!#t2.{core::Object::==}(null))
+      #t1.{core::List::addAll}{Invariant}(#t2);
   } =>#t1;
   final core::Map<core::int*, core::int*>* aMap = block {
     final core::Map<core::int*, core::int*>* #t3 = <core::int*, core::int*>{};
-    #t3.{core::Map::[]=}(1, 1){(core::int*, core::int*) →* void};
+    #t3.{core::Map::[]=}{Invariant}(1, 1);
     {
       core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{2: 2}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::int*>* #t4 = :sync-for-iterator.{core::Iterator::current};
-        #t3.{core::Map::[]=}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value}){(core::int*, core::int*) →* void};
+        #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value});
       }
     }
     final core::Map<core::int*, core::int*>* #t5 = <core::int*, core::int*>{3: 3};
-    if(!(#t5 == null)) {
+    if(!#t5.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = #t5.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::int*>* #t6 = :sync-for-iterator.{core::Iterator::current};
-        #t3.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value}){(core::int*, core::int*) →* void};
+        #t3.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
       }
     }
   } =>#t3;
   final core::Set<core::int*>* aSet = block {
     final core::Set<core::int*>* #t7 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t7.{core::Set::add}(1){(core::int*) →* core::bool*};
-    #t7.{core::Set::addAll}(core::_GrowableList::_literal1<core::int*>(2)){(core::Iterable<core::int*>*) →* void};
+    #t7.{core::Set::add}{Invariant}(1);
+    #t7.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(2));
     final core::Iterable<core::int*>* #t8 = core::_GrowableList::_literal1<core::int*>(3);
-    if(!(#t8 == null))
-      #t7.{core::Set::addAll}(#t8){(core::Iterable<core::int*>*) →* void};
+    if(!#t8.{core::Object::==}(null))
+      #t7.{core::Set::addAll}{Invariant}(#t8);
   } =>#t7;
   final Never* aSetOrMap = invalid-expression "pkg/front_end/testcases/general/spread_collection.dart:21:21: Error: Not enough type information to disambiguate between literal set and literal map.
 Try providing type arguments for the literal explicitly to disambiguate it.
diff --git a/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.expect b/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.expect
index 538d685..ce15d14 100644
--- a/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.expect
@@ -114,50 +114,50 @@
   core::Map<dynamic, dynamic>* map10 = block {
     final core::Map<dynamic, dynamic>* #t3 = <dynamic, dynamic>{};
     for (final core::MapEntry<dynamic, dynamic>* #t4 in <dynamic, dynamic>{}.{core::Map::entries})
-      #t3.{core::Map::[]=}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+      #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value});
   } =>#t3;
   core::Map<dynamic, dynamic>* map10ambiguous = block {
     final core::Map<dynamic, dynamic>* #t5 = <dynamic, dynamic>{};
     for (final core::MapEntry<dynamic, dynamic>* #t6 in <dynamic, dynamic>{}.{core::Map::entries})
-      #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+      #t5.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
   } =>#t5;
   core::List<core::int*>* lhs20 = block {
     final core::List<core::int*>* #t7 = core::List::of<core::int*>(spread);
   } =>#t7;
   core::Set<core::int*>* set20 = block {
     final core::Set<core::int*>* #t8 = col::LinkedHashSet::of<core::int*>(spread);
-    #t8.{core::Set::add}(42){(core::int*) →* core::bool*};
+    #t8.{core::Set::add}{Invariant}(42);
   } =>#t8;
   core::Set<core::int*>* set20ambiguous = block {
     final core::Set<core::int*>* #t9 = col::LinkedHashSet::•<core::int*>();
     for (final dynamic #t10 in spread) {
       final core::int* #t11 = #t10 as{TypeError} core::int*;
-      #t9.{core::Set::add}(#t11){(core::int*) →* core::bool*};
+      #t9.{core::Set::add}{Invariant}(#t11);
     }
   } =>#t9;
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t12 = <core::String*, core::int*>{};
     for (final core::MapEntry<core::String*, core::int*>* #t13 in mapSpread.{core::Map::entries})
-      #t12.{core::Map::[]=}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value}){(core::String*, core::int*) →* void};
-    #t12.{core::Map::[]=}("baz", 42){(core::String*, core::int*) →* void};
+      #t12.{core::Map::[]=}{Invariant}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value});
+    #t12.{core::Map::[]=}{Invariant}("baz", 42);
   } =>#t12;
   core::Map<core::String*, core::int*>* map20ambiguous = block {
     final core::Map<core::String*, core::int*>* #t14 = <core::String*, core::int*>{};
     for (final core::MapEntry<core::String*, core::int*>* #t15 in mapSpread.{core::Map::entries})
-      #t14.{core::Map::[]=}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+      #t14.{core::Map::[]=}{Invariant}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value});
   } =>#t14;
   core::List<dynamic>* lhs21 = block {
     final core::List<dynamic>* #t16 = core::List::of<dynamic>((spread as dynamic) as{TypeError,ForDynamic} core::Iterable<dynamic>*);
   } =>#t16;
   core::Set<dynamic>* set21 = block {
     final core::Set<dynamic>* #t17 = col::LinkedHashSet::of<dynamic>((spread as dynamic) as{TypeError,ForDynamic} core::Iterable<dynamic>*);
-    #t17.{core::Set::add}(42){(dynamic) →* core::bool*};
+    #t17.{core::Set::add}{Invariant}(42);
   } =>#t17;
   core::Map<dynamic, dynamic>* map21 = block {
     final core::Map<dynamic, dynamic>* #t18 = <dynamic, dynamic>{};
     for (final core::MapEntry<dynamic, dynamic>* #t19 in ((mapSpread as dynamic) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries})
-      #t18.{core::Map::[]=}(#t19.{core::MapEntry::key}, #t19.{core::MapEntry::value}){(dynamic, dynamic) →* void};
-    #t18.{core::Map::[]=}("baz", 42){(dynamic, dynamic) →* void};
+      #t18.{core::Map::[]=}{Invariant}(#t19.{core::MapEntry::key}, #t19.{core::MapEntry::value});
+    #t18.{core::Map::[]=}{Invariant}("baz", 42);
   } =>#t18;
   dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:64:28: Error: Not enough type information to disambiguate between literal set and literal map.
 Try providing type arguments for the literal explicitly to disambiguate it.
@@ -168,38 +168,38 @@
   } =>#t20;
   core::Set<core::int*>* set22 = block {
     final core::Set<core::int*>* #t21 = col::LinkedHashSet::of<core::int*>(<core::int*>[]);
-    #t21.{core::Set::add}(42){(core::int*) →* core::bool*};
+    #t21.{core::Set::add}{Invariant}(42);
   } =>#t21;
   core::Set<core::int*>* set22ambiguous = block {
     final core::Set<core::int*>* #t22 = col::LinkedHashSet::•<core::int*>();
     for (final dynamic #t23 in <core::int*>[]) {
       final core::int* #t24 = #t23 as{TypeError} core::int*;
-      #t22.{core::Set::add}(#t24){(core::int*) →* core::bool*};
+      #t22.{core::Set::add}{Invariant}(#t24);
     }
   } =>#t22;
   core::Map<core::String*, core::int*>* map22 = block {
     final core::Map<core::String*, core::int*>* #t25 = <core::String*, core::int*>{};
     for (final core::MapEntry<core::String*, core::int*>* #t26 in <core::String*, core::int*>{}.{core::Map::entries})
-      #t25.{core::Map::[]=}(#t26.{core::MapEntry::key}, #t26.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+      #t25.{core::Map::[]=}{Invariant}(#t26.{core::MapEntry::key}, #t26.{core::MapEntry::value});
   } =>#t25;
   core::List<core::List<core::int*>*>* lhs23 = block {
     final core::List<core::List<core::int*>*>* #t27 = core::List::of<core::List<core::int*>*>(<core::List<core::int*>*>[<core::int*>[]]);
   } =>#t27;
   core::Set<core::List<core::int*>*>* set23 = block {
     final core::Set<core::List<core::int*>*>* #t28 = col::LinkedHashSet::of<core::List<core::int*>*>(<core::List<core::int*>*>[<core::int*>[]]);
-    #t28.{core::Set::add}(<core::int*>[42]){(core::List<core::int*>*) →* core::bool*};
+    #t28.{core::Set::add}{Invariant}(<core::int*>[42]);
   } =>#t28;
   core::Set<core::List<core::int*>*>* set23ambiguous = block {
     final core::Set<core::List<core::int*>*>* #t29 = col::LinkedHashSet::•<core::List<core::int*>*>();
     for (final dynamic #t30 in <core::List<core::int*>*>[<core::int*>[]]) {
       final core::List<core::int*>* #t31 = #t30 as{TypeError} core::List<core::int*>*;
-      #t29.{core::Set::add}(#t31){(core::List<core::int*>*) →* core::bool*};
+      #t29.{core::Set::add}{Invariant}(#t31);
     }
   } =>#t29;
   core::Map<core::String*, core::List<core::int*>*>* map23 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t32 = <core::String*, core::List<core::int*>*>{};
     for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t33 in <core::String*, core::List<core::int*>*>{"baz": <core::int*>[]}.{core::Map::entries})
-      #t32.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+      #t32.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
   } =>#t32;
   dynamic map24ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:96:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
   dynamic map24ambiguous = {...spread, ...mapSpread};
@@ -215,7 +215,7 @@
   int set30 = /*@ typeArgs=int* */ {...spread, 42};
                                    ^" in ( block {
     final core::Set<core::int*>* #t37 = col::LinkedHashSet::of<core::int*>(spread);
-    #t37.{core::Set::add}(42){(core::int*) →* core::bool*};
+    #t37.{core::Set::add}{Invariant}(42);
   } =>#t37) as{TypeError} core::int*;
   core::int* set30ambiguous = let final Never* #t38 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:103:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
  - 'Set' is from 'dart:core'.
@@ -224,7 +224,7 @@
     final core::Set<core::int*>* #t39 = col::LinkedHashSet::•<core::int*>();
     for (final dynamic #t40 in spread) {
       final core::int* #t41 = #t40 as{TypeError} core::int*;
-      #t39.{core::Set::add}(#t41){(core::int*) →* core::bool*};
+      #t39.{core::Set::add}{Invariant}(#t41);
     }
   } =>#t39) as{TypeError} core::int*;
   core::int* map30 = let final Never* #t42 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:106:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
@@ -233,8 +233,8 @@
       ^" in ( block {
     final core::Map<core::String*, core::int*>* #t43 = <core::String*, core::int*>{};
     for (final core::MapEntry<core::String*, core::int*>* #t44 in mapSpread.{core::Map::entries})
-      #t43.{core::Map::[]=}(#t44.{core::MapEntry::key}, #t44.{core::MapEntry::value}){(core::String*, core::int*) →* void};
-    #t43.{core::Map::[]=}("baz", 42){(core::String*, core::int*) →* void};
+      #t43.{core::Map::[]=}{Invariant}(#t44.{core::MapEntry::key}, #t44.{core::MapEntry::value});
+    #t43.{core::Map::[]=}{Invariant}("baz", 42);
   } =>#t43) as{TypeError} core::int*;
   core::int* map30ambiguous = let final Never* #t45 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:109:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
  - 'Map' is from 'dart:core'.
@@ -242,16 +242,16 @@
       ^" in ( block {
     final core::Map<core::String*, core::int*>* #t46 = <core::String*, core::int*>{};
     for (final core::MapEntry<core::String*, core::int*>* #t47 in mapSpread.{core::Map::entries})
-      #t46.{core::Map::[]=}(#t47.{core::MapEntry::key}, #t47.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+      #t46.{core::Map::[]=}{Invariant}(#t47.{core::MapEntry::key}, #t47.{core::MapEntry::value});
   } =>#t46) as{TypeError} core::int*;
   core::List<dynamic>* lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:111:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
                                      ^"];
   core::Set<dynamic>* set40 = block {
     final core::Set<dynamic>* #t48 = col::LinkedHashSet::•<dynamic>();
-    #t48.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:113:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+    #t48.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:113:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
-                                    ^"){(dynamic) →* core::bool*};
+                                    ^");
   } =>#t48;
   core::Map<dynamic, dynamic>* map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:115:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
@@ -261,9 +261,9 @@
                                      ^"];
   core::Set<dynamic>* set50 = block {
     final core::Set<dynamic>* #t49 = col::LinkedHashSet::•<dynamic>();
-    #t49.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:119:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+    #t49.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:119:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
-                                    ^"){(dynamic) →* core::bool*};
+                                    ^");
   } =>#t49;
   core::Map<dynamic, dynamic>* map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:121:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
@@ -273,9 +273,9 @@
                                    ^"];
   core::Set<core::String*>* set60 = block {
     final core::Set<core::String*>* #t50 = col::LinkedHashSet::•<core::String*>();
-    #t50.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:125:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+    #t50.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:125:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   Set<String> set60 = <String>{...spread};
-                                  ^"){(core::String*) →* core::bool*};
+                                  ^");
   } =>#t50;
   core::Map<core::int*, core::int*>* map60 = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:127:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
   Map<int, int> map60 = <int, int>{...mapSpread};
@@ -288,18 +288,18 @@
                              ^"];
   core::Set<core::int*>* set70 = block {
     final core::Set<core::int*>* #t51 = col::LinkedHashSet::•<core::int*>();
-    #t51.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
+    #t51.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
   Set<int> set70 = <int>{...null};
-                            ^"){(core::int*) →* core::bool*};
+                            ^");
   } =>#t51;
   core::Set<dynamic>* set71ambiguous = block {
     final core::Set<dynamic>* #t52 = col::LinkedHashSet::•<dynamic>();
-    #t52.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type 'Null'.
+    #t52.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type 'Null'.
     ...null,
-       ^"){(dynamic) →* core::bool*};
+       ^");
     for (final dynamic #t53 in <dynamic>[]) {
       final dynamic #t54 = #t53 as{TypeError} dynamic;
-      #t52.{core::Set::add}(#t54){(dynamic) →* core::bool*};
+      #t52.{core::Set::add}{Invariant}(#t54);
     }
   } =>#t52;
   core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type 'Null'.
@@ -308,45 +308,45 @@
   core::List<core::int*>* lhs80 = block {
     final core::List<core::int*>* #t55 = <core::int*>[];
     final core::Iterable<core::int*>* #t56 = null;
-    if(!(#t56 == null))
-      #t55.{core::List::addAll}(#t56){(core::Iterable<core::int*>*) →* void};
+    if(!#t56.{core::Object::==}(null))
+      #t55.{core::List::addAll}{Invariant}(#t56);
   } =>#t55;
   core::Set<core::int*>* set80 = block {
     final core::Set<core::int*>* #t57 = col::LinkedHashSet::•<core::int*>();
     final core::Iterable<core::int*>* #t58 = null;
-    if(!(#t58 == null))
-      #t57.{core::Set::addAll}(#t58){(core::Iterable<core::int*>*) →* void};
+    if(!#t58.{core::Object::==}(null))
+      #t57.{core::Set::addAll}{Invariant}(#t58);
   } =>#t57;
   core::Set<dynamic>* set81ambiguous = block {
     final core::Set<dynamic>* #t59 = col::LinkedHashSet::•<dynamic>();
     final core::Iterable<dynamic>* #t60 = null;
-    if(!(#t60 == null))
+    if(!#t60.{core::Object::==}(null))
       for (final dynamic #t61 in #t60) {
         final dynamic #t62 = #t61 as{TypeError} dynamic;
-        #t59.{core::Set::add}(#t62){(dynamic) →* core::bool*};
+        #t59.{core::Set::add}{Invariant}(#t62);
       }
     for (final dynamic #t63 in <dynamic>[]) {
       final dynamic #t64 = #t63 as{TypeError} dynamic;
-      #t59.{core::Set::add}(#t64){(dynamic) →* core::bool*};
+      #t59.{core::Set::add}{Invariant}(#t64);
     }
   } =>#t59;
   core::Map<core::String*, core::int*>* map80 = block {
     final core::Map<core::String*, core::int*>* #t65 = <core::String*, core::int*>{};
     final core::Map<core::String*, core::int*>* #t66 = null;
-    if(!(#t66 == null))
+    if(!#t66.{core::Object::==}(null))
       for (final core::MapEntry<core::String*, core::int*>* #t67 in #t66.{core::Map::entries})
-        #t65.{core::Map::[]=}(#t67.{core::MapEntry::key}, #t67.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t65.{core::Map::[]=}{Invariant}(#t67.{core::MapEntry::key}, #t67.{core::MapEntry::value});
   } =>#t65;
   core::Map<core::String*, core::int*>* map90 = block {
     final core::Map<core::String*, core::int*>* #t68 = <core::String*, core::int*>{};
     for (final core::MapEntry<core::String*, core::int*>* #t69 in self::bar<core::String*, core::int*>().{core::Map::entries})
-      #t68.{core::Map::[]=}(#t69.{core::MapEntry::key}, #t69.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+      #t68.{core::Map::[]=}{Invariant}(#t69.{core::MapEntry::key}, #t69.{core::MapEntry::value});
   } =>#t68;
   core::List<core::int*>* list100 = block {
     final core::List<core::int*>* #t70 = <core::int*>[];
     for (final dynamic #t71 in listNum) {
       final core::int* #t72 = #t71 as{TypeError} core::int*;
-      #t70.{core::List::add}(#t72){(core::int*) →* void};
+      #t70.{core::List::add}{Invariant}(#t72);
     }
   } =>#t70;
   core::Map<core::num*, core::int*>* map100 = block {
@@ -354,14 +354,14 @@
     for (final core::MapEntry<dynamic, dynamic>* #t74 in mapIntNum.{core::Map::entries}) {
       final core::num* #t75 = #t74.{core::MapEntry::key} as{TypeError} core::num*;
       final core::int* #t76 = #t74.{core::MapEntry::value} as{TypeError} core::int*;
-      #t73.{core::Map::[]=}(#t75, #t76){(core::num*, core::int*) →* void};
+      #t73.{core::Map::[]=}{Invariant}(#t75, #t76);
     }
   } =>#t73;
   core::List<core::int*>* list110 = block {
     final core::List<core::int*>* #t77 = <core::int*>[];
     for (final dynamic #t78 in dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::int* #t79 = #t78 as{TypeError} core::int*;
-      #t77.{core::List::add}(#t79){(core::int*) →* void};
+      #t77.{core::List::add}{Invariant}(#t79);
     }
   } =>#t77;
   core::Map<core::num*, core::int*>* map110 = block {
@@ -369,7 +369,7 @@
     for (final core::MapEntry<dynamic, dynamic>* #t81 in (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}) {
       final core::num* #t82 = #t81.{core::MapEntry::key} as{TypeError} core::num*;
       final core::int* #t83 = #t81.{core::MapEntry::value} as{TypeError} core::int*;
-      #t80.{core::Map::[]=}(#t82, #t83){(core::num*, core::int*) →* void};
+      #t80.{core::Map::[]=}{Invariant}(#t82, #t83);
     }
   } =>#t80;
 }
diff --git a/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.transformed.expect
index 05a7ebb..ceca37a 100644
--- a/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.transformed.expect
@@ -117,7 +117,7 @@
       core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t4 = :sync-for-iterator.{core::Iterator::current};
-        #t3.{core::Map::[]=}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+        #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value});
       }
     }
   } =>#t3;
@@ -127,7 +127,7 @@
       core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t6 = :sync-for-iterator.{core::Iterator::current};
-        #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+        #t5.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
       }
     }
   } =>#t5;
@@ -136,7 +136,7 @@
   } =>#t7;
   core::Set<core::int*>* set20 = block {
     final core::Set<core::int*>* #t8 = col::LinkedHashSet::of<core::int*>(spread);
-    #t8.{core::Set::add}(42){(core::int*) →* core::bool*};
+    #t8.{core::Set::add}{Invariant}(42);
   } =>#t8;
   core::Set<core::int*>* set20ambiguous = block {
     final core::Set<core::int*>* #t9 = new col::_CompactLinkedHashSet::•<core::int*>();
@@ -146,7 +146,7 @@
         final dynamic #t10 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t11 = #t10 as{TypeError} core::int*;
-          #t9.{core::Set::add}(#t11){(core::int*) →* core::bool*};
+          #t9.{core::Set::add}{Invariant}(#t11);
         }
       }
     }
@@ -157,10 +157,10 @@
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t13 = :sync-for-iterator.{core::Iterator::current};
-        #t12.{core::Map::[]=}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t12.{core::Map::[]=}{Invariant}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value});
       }
     }
-    #t12.{core::Map::[]=}("baz", 42){(core::String*, core::int*) →* void};
+    #t12.{core::Map::[]=}{Invariant}("baz", 42);
   } =>#t12;
   core::Map<core::String*, core::int*>* map20ambiguous = block {
     final core::Map<core::String*, core::int*>* #t14 = <core::String*, core::int*>{};
@@ -168,7 +168,7 @@
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t15 = :sync-for-iterator.{core::Iterator::current};
-        #t14.{core::Map::[]=}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t14.{core::Map::[]=}{Invariant}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value});
       }
     }
   } =>#t14;
@@ -177,7 +177,7 @@
   } =>#t16;
   core::Set<dynamic>* set21 = block {
     final core::Set<dynamic>* #t17 = col::LinkedHashSet::of<dynamic>((spread as dynamic) as{TypeError,ForDynamic} core::Iterable<dynamic>*);
-    #t17.{core::Set::add}(42){(dynamic) →* core::bool*};
+    #t17.{core::Set::add}{Invariant}(42);
   } =>#t17;
   core::Map<dynamic, dynamic>* map21 = block {
     final core::Map<dynamic, dynamic>* #t18 = <dynamic, dynamic>{};
@@ -185,10 +185,10 @@
       core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = ((mapSpread as dynamic) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t19 = :sync-for-iterator.{core::Iterator::current};
-        #t18.{core::Map::[]=}(#t19.{core::MapEntry::key}, #t19.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+        #t18.{core::Map::[]=}{Invariant}(#t19.{core::MapEntry::key}, #t19.{core::MapEntry::value});
       }
     }
-    #t18.{core::Map::[]=}("baz", 42){(dynamic, dynamic) →* void};
+    #t18.{core::Map::[]=}{Invariant}("baz", 42);
   } =>#t18;
   dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:64:28: Error: Not enough type information to disambiguate between literal set and literal map.
 Try providing type arguments for the literal explicitly to disambiguate it.
@@ -199,7 +199,7 @@
   } =>#t20;
   core::Set<core::int*>* set22 = block {
     final core::Set<core::int*>* #t21 = col::LinkedHashSet::of<core::int*>(core::_GrowableList::•<core::int*>(0));
-    #t21.{core::Set::add}(42){(core::int*) →* core::bool*};
+    #t21.{core::Set::add}{Invariant}(42);
   } =>#t21;
   core::Set<core::int*>* set22ambiguous = block {
     final core::Set<core::int*>* #t22 = new col::_CompactLinkedHashSet::•<core::int*>();
@@ -209,7 +209,7 @@
         final dynamic #t23 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t24 = #t23 as{TypeError} core::int*;
-          #t22.{core::Set::add}(#t24){(core::int*) →* core::bool*};
+          #t22.{core::Set::add}{Invariant}(#t24);
         }
       }
     }
@@ -220,7 +220,7 @@
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t26 = :sync-for-iterator.{core::Iterator::current};
-        #t25.{core::Map::[]=}(#t26.{core::MapEntry::key}, #t26.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t25.{core::Map::[]=}{Invariant}(#t26.{core::MapEntry::key}, #t26.{core::MapEntry::value});
       }
     }
   } =>#t25;
@@ -229,7 +229,7 @@
   } =>#t27;
   core::Set<core::List<core::int*>*>* set23 = block {
     final core::Set<core::List<core::int*>*>* #t28 = col::LinkedHashSet::of<core::List<core::int*>*>(core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)));
-    #t28.{core::Set::add}(core::_GrowableList::_literal1<core::int*>(42)){(core::List<core::int*>*) →* core::bool*};
+    #t28.{core::Set::add}{Invariant}(core::_GrowableList::_literal1<core::int*>(42));
   } =>#t28;
   core::Set<core::List<core::int*>*>* set23ambiguous = block {
     final core::Set<core::List<core::int*>*>* #t29 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
@@ -239,7 +239,7 @@
         final dynamic #t30 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::List<core::int*>* #t31 = #t30 as{TypeError} core::List<core::int*>*;
-          #t29.{core::Set::add}(#t31){(core::List<core::int*>*) →* core::bool*};
+          #t29.{core::Set::add}{Invariant}(#t31);
         }
       }
     }
@@ -250,7 +250,7 @@
       core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"baz": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t33 = :sync-for-iterator.{core::Iterator::current};
-        #t32.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value}){(core::String*, core::List<core::int*>*) →* void};
+        #t32.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
       }
     }
   } =>#t32;
@@ -268,7 +268,7 @@
   int set30 = /*@ typeArgs=int* */ {...spread, 42};
                                    ^" in ( block {
     final core::Set<core::int*>* #t37 = col::LinkedHashSet::of<core::int*>(spread);
-    #t37.{core::Set::add}(42){(core::int*) →* core::bool*};
+    #t37.{core::Set::add}{Invariant}(42);
   } =>#t37) as{TypeError} core::int*;
   core::int* set30ambiguous = let final Never* #t38 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:103:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
  - 'Set' is from 'dart:core'.
@@ -281,7 +281,7 @@
         final dynamic #t40 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t41 = #t40 as{TypeError} core::int*;
-          #t39.{core::Set::add}(#t41){(core::int*) →* core::bool*};
+          #t39.{core::Set::add}{Invariant}(#t41);
         }
       }
     }
@@ -295,10 +295,10 @@
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t44 = :sync-for-iterator.{core::Iterator::current};
-        #t43.{core::Map::[]=}(#t44.{core::MapEntry::key}, #t44.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t43.{core::Map::[]=}{Invariant}(#t44.{core::MapEntry::key}, #t44.{core::MapEntry::value});
       }
     }
-    #t43.{core::Map::[]=}("baz", 42){(core::String*, core::int*) →* void};
+    #t43.{core::Map::[]=}{Invariant}("baz", 42);
   } =>#t43) as{TypeError} core::int*;
   core::int* map30ambiguous = let final Never* #t45 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:109:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
  - 'Map' is from 'dart:core'.
@@ -309,7 +309,7 @@
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t47 = :sync-for-iterator.{core::Iterator::current};
-        #t46.{core::Map::[]=}(#t47.{core::MapEntry::key}, #t47.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t46.{core::Map::[]=}{Invariant}(#t47.{core::MapEntry::key}, #t47.{core::MapEntry::value});
       }
     }
   } =>#t46) as{TypeError} core::int*;
@@ -318,9 +318,9 @@
                                      ^");
   core::Set<dynamic>* set40 = block {
     final core::Set<dynamic>* #t48 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t48.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:113:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+    #t48.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:113:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
-                                    ^"){(dynamic) →* core::bool*};
+                                    ^");
   } =>#t48;
   core::Map<dynamic, dynamic>* map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:115:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
@@ -330,9 +330,9 @@
                                      ^");
   core::Set<dynamic>* set50 = block {
     final core::Set<dynamic>* #t49 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t49.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:119:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+    #t49.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:119:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
-                                    ^"){(dynamic) →* core::bool*};
+                                    ^");
   } =>#t49;
   core::Map<dynamic, dynamic>* map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:121:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
@@ -342,9 +342,9 @@
                                    ^");
   core::Set<core::String*>* set60 = block {
     final core::Set<core::String*>* #t50 = new col::_CompactLinkedHashSet::•<core::String*>();
-    #t50.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:125:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+    #t50.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:125:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   Set<String> set60 = <String>{...spread};
-                                  ^"){(core::String*) →* core::bool*};
+                                  ^");
   } =>#t50;
   core::Map<core::int*, core::int*>* map60 = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:127:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
   Map<int, int> map60 = <int, int>{...mapSpread};
@@ -357,22 +357,22 @@
                              ^");
   core::Set<core::int*>* set70 = block {
     final core::Set<core::int*>* #t51 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t51.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
+    #t51.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
   Set<int> set70 = <int>{...null};
-                            ^"){(core::int*) →* core::bool*};
+                            ^");
   } =>#t51;
   core::Set<dynamic>* set71ambiguous = block {
     final core::Set<dynamic>* #t52 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t52.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type 'Null'.
+    #t52.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type 'Null'.
     ...null,
-       ^"){(dynamic) →* core::bool*};
+       ^");
     {
       core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t53 = :sync-for-iterator.{core::Iterator::current};
         {
           final dynamic #t54 = #t53 as{TypeError} dynamic;
-          #t52.{core::Set::add}(#t54){(dynamic) →* core::bool*};
+          #t52.{core::Set::add}{Invariant}(#t54);
         }
       }
     }
@@ -383,25 +383,25 @@
   core::List<core::int*>* lhs80 = block {
     final core::List<core::int*>* #t55 = core::_GrowableList::•<core::int*>(0);
     final core::Iterable<core::int*>* #t56 = null;
-    if(!(#t56 == null))
-      #t55.{core::List::addAll}(#t56){(core::Iterable<core::int*>*) →* void};
+    if(!#t56.{core::Object::==}(null))
+      #t55.{core::List::addAll}{Invariant}(#t56);
   } =>#t55;
   core::Set<core::int*>* set80 = block {
     final core::Set<core::int*>* #t57 = new col::_CompactLinkedHashSet::•<core::int*>();
     final core::Iterable<core::int*>* #t58 = null;
-    if(!(#t58 == null))
-      #t57.{core::Set::addAll}(#t58){(core::Iterable<core::int*>*) →* void};
+    if(!#t58.{core::Object::==}(null))
+      #t57.{core::Set::addAll}{Invariant}(#t58);
   } =>#t57;
   core::Set<dynamic>* set81ambiguous = block {
     final core::Set<dynamic>* #t59 = new col::_CompactLinkedHashSet::•<dynamic>();
     final core::Iterable<dynamic>* #t60 = null;
-    if(!(#t60 == null)) {
+    if(!#t60.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t60.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t61 = :sync-for-iterator.{core::Iterator::current};
         {
           final dynamic #t62 = #t61 as{TypeError} dynamic;
-          #t59.{core::Set::add}(#t62){(dynamic) →* core::bool*};
+          #t59.{core::Set::add}{Invariant}(#t62);
         }
       }
     }
@@ -411,7 +411,7 @@
         final dynamic #t63 = :sync-for-iterator.{core::Iterator::current};
         {
           final dynamic #t64 = #t63 as{TypeError} dynamic;
-          #t59.{core::Set::add}(#t64){(dynamic) →* core::bool*};
+          #t59.{core::Set::add}{Invariant}(#t64);
         }
       }
     }
@@ -419,11 +419,11 @@
   core::Map<core::String*, core::int*>* map80 = block {
     final core::Map<core::String*, core::int*>* #t65 = <core::String*, core::int*>{};
     final core::Map<core::String*, core::int*>* #t66 = null;
-    if(!(#t66 == null)) {
+    if(!#t66.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = #t66.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t67 = :sync-for-iterator.{core::Iterator::current};
-        #t65.{core::Map::[]=}(#t67.{core::MapEntry::key}, #t67.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t65.{core::Map::[]=}{Invariant}(#t67.{core::MapEntry::key}, #t67.{core::MapEntry::value});
       }
     }
   } =>#t65;
@@ -433,7 +433,7 @@
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = self::bar<core::String*, core::int*>().{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t69 = :sync-for-iterator.{core::Iterator::current};
-        #t68.{core::Map::[]=}(#t69.{core::MapEntry::key}, #t69.{core::MapEntry::value}){(core::String*, core::int*) →* void};
+        #t68.{core::Map::[]=}{Invariant}(#t69.{core::MapEntry::key}, #t69.{core::MapEntry::value});
       }
     }
   } =>#t68;
@@ -445,7 +445,7 @@
         final dynamic #t71 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t72 = #t71 as{TypeError} core::int*;
-          #t70.{core::List::add}(#t72){(core::int*) →* void};
+          #t70.{core::List::add}{Invariant}(#t72);
         }
       }
     }
@@ -459,7 +459,7 @@
         {
           final core::num* #t75 = #t74.{core::MapEntry::key} as{TypeError} core::num*;
           final core::int* #t76 = #t74.{core::MapEntry::value} as{TypeError} core::int*;
-          #t73.{core::Map::[]=}(#t75, #t76){(core::num*, core::int*) →* void};
+          #t73.{core::Map::[]=}{Invariant}(#t75, #t76);
         }
       }
     }
@@ -472,7 +472,7 @@
         final dynamic #t78 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t79 = #t78 as{TypeError} core::int*;
-          #t77.{core::List::add}(#t79){(core::int*) →* void};
+          #t77.{core::List::add}{Invariant}(#t79);
         }
       }
     }
@@ -486,7 +486,7 @@
         {
           final core::num* #t82 = #t81.{core::MapEntry::key} as{TypeError} core::num*;
           final core::int* #t83 = #t81.{core::MapEntry::value} as{TypeError} core::int*;
-          #t80.{core::Map::[]=}(#t82, #t83){(core::num*, core::int*) →* void};
+          #t80.{core::Map::[]=}{Invariant}(#t82, #t83);
         }
       }
     }
diff --git a/pkg/front_end/testcases/general/statements.dart.weak.expect b/pkg/front_end/testcases/general/statements.dart.weak.expect
index 8d3c256..7e7194b 100644
--- a/pkg/front_end/testcases/general/statements.dart.weak.expect
+++ b/pkg/front_end/testcases/general/statements.dart.weak.expect
@@ -134,7 +134,7 @@
     #L14:
     {
       core::print("Hello from do-while!");
-      if((i = i.{core::num::+}(1){(core::num*) →* core::int*}).{core::num::<}(3){(core::num*) →* core::bool*})
+      if((i = i.{core::num::+}(1)).{core::num::<}(3))
         break #L14;
       break #L13;
     }
@@ -145,7 +145,7 @@
     #L16:
     {
       core::print("Hello from while!");
-      if((i = i.{core::num::+}(1){(core::num*) →* core::int*}).{core::num::<}(3){(core::num*) →* core::bool*})
+      if((i = i.{core::num::+}(1)).{core::num::<}(3))
         break #L16;
       break #L15;
     }
diff --git a/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect b/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect
index e0b0a7c..dd17252 100644
--- a/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect
@@ -214,7 +214,7 @@
     #L16:
     {
       core::print("Hello from do-while!");
-      if((i = i.{core::num::+}(1){(core::num*) →* core::int*}).{core::num::<}(3){(core::num*) →* core::bool*})
+      if((i = i.{core::num::+}(1)).{core::num::<}(3))
         break #L16;
       break #L15;
     }
@@ -225,7 +225,7 @@
     #L18:
     {
       core::print("Hello from while!");
-      if((i = i.{core::num::+}(1){(core::num*) →* core::int*}).{core::num::<}(3){(core::num*) →* core::bool*})
+      if((i = i.{core::num::+}(1)).{core::num::<}(3))
         break #L18;
       break #L17;
     }
diff --git a/pkg/front_end/testcases/general/store_load.dart.weak.expect b/pkg/front_end/testcases/general/store_load.dart.weak.expect
index b5b20a2..a6c7200 100644
--- a/pkg/front_end/testcases/general/store_load.dart.weak.expect
+++ b/pkg/front_end/testcases/general/store_load.dart.weak.expect
@@ -67,10 +67,10 @@
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
   foo.{self::Foo::_field} = new self::FooValue::•();
-  dynamic fooValue = foo.{self::Foo::_field}{dynamic};
+  dynamic fooValue = foo.{self::Foo::_field};
   core::print(fooValue);
   self::Bar* bar = new self::Bar::•();
   bar.{self::Bar::_field} = new self::BarValue::•();
-  dynamic barValue = bar.{self::Bar::_field}{dynamic};
+  dynamic barValue = bar.{self::Bar::_field};
   core::print(barValue);
 }
diff --git a/pkg/front_end/testcases/general/store_load.dart.weak.transformed.expect b/pkg/front_end/testcases/general/store_load.dart.weak.transformed.expect
index b5b20a2..a6c7200 100644
--- a/pkg/front_end/testcases/general/store_load.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/store_load.dart.weak.transformed.expect
@@ -67,10 +67,10 @@
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
   foo.{self::Foo::_field} = new self::FooValue::•();
-  dynamic fooValue = foo.{self::Foo::_field}{dynamic};
+  dynamic fooValue = foo.{self::Foo::_field};
   core::print(fooValue);
   self::Bar* bar = new self::Bar::•();
   bar.{self::Bar::_field} = new self::BarValue::•();
-  dynamic barValue = bar.{self::Bar::_field}{dynamic};
+  dynamic barValue = bar.{self::Bar::_field};
   core::print(barValue);
 }
diff --git a/pkg/front_end/testcases/general/super_call.dart.weak.expect b/pkg/front_end/testcases/general/super_call.dart.weak.expect
index 29d979a..b6efac9 100644
--- a/pkg/front_end/testcases/general/super_call.dart.weak.expect
+++ b/pkg/front_end/testcases/general/super_call.dart.weak.expect
@@ -15,7 +15,7 @@
     : super core::Object::•()
     ;
   method call(core::int* x) → core::int*
-    return x.{core::num::*}(2){(core::num*) →* core::int*};
+    return x.{core::num::*}(2);
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -32,7 +32,7 @@
     : super self::A::•()
     ;
   method call(core::int* x) → core::int*
-    return x.{core::num::*}(3){(core::num*) →* core::int*};
+    return x.{core::num::*}(3);
   method call_super() → core::int* {
     return invalid-expression "pkg/front_end/testcases/general/super_call.dart:17:12: Error: Can't use 'super' as an expression.
 To delegate a constructor to a super constructor, put the super call as an initializer.
@@ -41,5 +41,5 @@
   }
 }
 static method main() → dynamic {
-  assert(new self::B::•().{self::B::call_super}(){() →* core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 10);
+  assert(new self::B::•().{self::B::call_super}().{core::num::==}(10));
 }
diff --git a/pkg/front_end/testcases/general/super_call.dart.weak.transformed.expect b/pkg/front_end/testcases/general/super_call.dart.weak.transformed.expect
index 6c726a4..648c4cf 100644
--- a/pkg/front_end/testcases/general/super_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/super_call.dart.weak.transformed.expect
@@ -15,7 +15,7 @@
     : super core::Object::•()
     ;
   method call(core::int* x) → core::int*
-    return x.{core::num::*}(2){(core::num*) →* core::int*};
+    return x.{core::num::*}(2);
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -32,7 +32,7 @@
     : super self::A::•()
     ;
   method call(core::int* x) → core::int*
-    return x.{core::num::*}(3){(core::num*) →* core::int*};
+    return x.{core::num::*}(3);
   method call_super() → core::int* {
     return invalid-expression "pkg/front_end/testcases/general/super_call.dart:17:12: Error: Can't use 'super' as an expression.
 To delegate a constructor to a super constructor, put the super call as an initializer.
@@ -41,5 +41,5 @@
   }
 }
 static method main() → dynamic {
-  assert(new self::B::•().{self::B::call_super}(){() →* core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 10);
+  assert(new self::B::•().{self::B::call_super}().{core::num::==}(10));
 }
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.weak.expect b/pkg/front_end/testcases/general/super_nsm.dart.weak.expect
index 949ce24..0924671 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.weak.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.weak.expect
@@ -34,7 +34,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -46,8 +46,8 @@
     return super.{self::C::interfaceMethod}();
 }
 static method main() → dynamic {
-  dynamic result = new self::D::•().{self::D::dMethod}(){() →* dynamic};
-  if(!(result =={core::Object::==}{(core::Object*) →* core::bool*} "D"))
+  dynamic result = new self::D::•().{self::D::dMethod}();
+  if(!result.{core::Object::==}("D"))
     throw "Expected 'D' but got: '${result}'";
 }
 
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect b/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect
index 8b77ef2..1e84833 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect
@@ -32,7 +32,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method interfaceMethod() → 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} dynamic;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.weak.transformed.expect b/pkg/front_end/testcases/general/super_nsm.dart.weak.transformed.expect
index 949ce24..0924671 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.weak.transformed.expect
@@ -34,7 +34,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -46,8 +46,8 @@
     return super.{self::C::interfaceMethod}();
 }
 static method main() → dynamic {
-  dynamic result = new self::D::•().{self::D::dMethod}(){() →* dynamic};
-  if(!(result =={core::Object::==}{(core::Object*) →* core::bool*} "D"))
+  dynamic result = new self::D::•().{self::D::dMethod}();
+  if(!result.{core::Object::==}("D"))
     throw "Expected 'D' but got: '${result}'";
 }
 
diff --git a/pkg/front_end/testcases/general/this_field_call.dart.weak.expect b/pkg/front_end/testcases/general/this_field_call.dart.weak.expect
index 4acba29..28e7d76 100644
--- a/pkg/front_end/testcases/general/this_field_call.dart.weak.expect
+++ b/pkg/front_end/testcases/general/this_field_call.dart.weak.expect
@@ -8,7 +8,7 @@
     : self::A::f = f, super core::Object::•()
     ;
   method foo(generic-covariant-impl self::A::T* x) → dynamic
-    return let final self::A::T* #t1 = x in this.{self::A::f}{(self::A::T*) →* void}(#t1){(self::A::T*) →* void};
+    return let final self::A::T* #t1 = x in this.{self::A::f}.call(#t1);
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -21,5 +21,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  new self::A::•<core::int*>((core::int* x) → Null {}).{self::A::foo}(3){(core::int*) →* dynamic};
+  new self::A::•<core::int*>((core::int* x) → Null {}).{self::A::foo}(3);
 }
diff --git a/pkg/front_end/testcases/general/this_field_call.dart.weak.transformed.expect b/pkg/front_end/testcases/general/this_field_call.dart.weak.transformed.expect
index 4acba29..28e7d76 100644
--- a/pkg/front_end/testcases/general/this_field_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/this_field_call.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
     : self::A::f = f, super core::Object::•()
     ;
   method foo(generic-covariant-impl self::A::T* x) → dynamic
-    return let final self::A::T* #t1 = x in this.{self::A::f}{(self::A::T*) →* void}(#t1){(self::A::T*) →* void};
+    return let final self::A::T* #t1 = x in this.{self::A::f}.call(#t1);
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -21,5 +21,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  new self::A::•<core::int*>((core::int* x) → Null {}).{self::A::foo}(3){(core::int*) →* dynamic};
+  new self::A::•<core::int*>((core::int* x) → Null {}).{self::A::foo}(3);
 }
diff --git a/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.expect b/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.expect
index 13976c1..1e70230 100644
--- a/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.expect
@@ -17,7 +17,7 @@
     : self::DynamicClass::field1 = field1, self::DynamicClass::field2 = field2, super core::Object::•()
     ;
   method method() → dynamic
-    return this.{self::DynamicClass::field1}{self::DynamicClass::T*}{dynamic}.*(this.{self::DynamicClass::field2}{self::DynamicClass::T*});
+    return this.{self::DynamicClass::field1}.*(this.{self::DynamicClass::field2});
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -36,12 +36,12 @@
     : self::NumClass::field1 = field1, self::NumClass::field2 = field2, super core::Object::•()
     ;
   method method1() → core::num*
-    return this.{self::NumClass::field1}{self::NumClass::T*}.{core::num::*}(this.{self::NumClass::field2}{self::NumClass::S*}){(core::num*) →* core::num*};
+    return this.{self::NumClass::field1}.{core::num::*}(this.{self::NumClass::field2});
   method method2() → core::num*
-    return this.{self::NumClass::field1}{self::NumClass::T*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/type_variable_bound_access.dart:22:36: Error: The getter 'length' isn't defined for the class 'num'.
+    return this.{self::NumClass::field1}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/type_variable_bound_access.dart:22:36: Error: The getter 'length' isn't defined for the class 'num'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'length'.
   num method2() => field1 + field2.length;
-                                   ^^^^^^" as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
+                                   ^^^^^^" as{TypeError,ForDynamic} core::num*);
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -64,12 +64,12 @@
     : super core::Object::•()
     ;
   method method() → dynamic {
-    this.{self::Class::field0}{self::Class::X0*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field1}{self::Class::X1*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field2}{self::Class::X2*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field3}{self::Class::X3*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field4}{self::Class::X4*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field5}{self::Class::X5*}.{core::int::isEven}{core::bool*};
+    this.{self::Class::field0}.{core::int::isEven};
+    this.{self::Class::field1}.{core::int::isEven};
+    this.{self::Class::field2}.{core::int::isEven};
+    this.{self::Class::field3}.{core::int::isEven};
+    this.{self::Class::field4}.{core::int::isEven};
+    this.{self::Class::field5}.{core::int::isEven};
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -83,6 +83,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  new self::DynamicClass::•<core::num*, core::int*>(0.5, 2).{self::DynamicClass::method}(){() →* dynamic};
-  new self::NumClass::•<core::num*, core::double*>(2, 0.5).{self::NumClass::method1}(){() →* core::num*};
+  new self::DynamicClass::•<core::num*, core::int*>(0.5, 2).{self::DynamicClass::method}();
+  new self::NumClass::•<core::num*, core::double*>(2, 0.5).{self::NumClass::method1}();
 }
diff --git a/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.transformed.expect
index 6ed0eeb..d9c7800 100644
--- a/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.transformed.expect
@@ -17,7 +17,7 @@
     : self::DynamicClass::field1 = field1, self::DynamicClass::field2 = field2, super core::Object::•()
     ;
   method method() → dynamic
-    return this.{self::DynamicClass::field1}{self::DynamicClass::T*}{dynamic}.*(this.{self::DynamicClass::field2}{self::DynamicClass::T*});
+    return this.{self::DynamicClass::field1}.*(this.{self::DynamicClass::field2});
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -36,12 +36,12 @@
     : self::NumClass::field1 = field1, self::NumClass::field2 = field2, super core::Object::•()
     ;
   method method1() → core::num*
-    return this.{self::NumClass::field1}{self::NumClass::T*}.{core::num::*}(this.{self::NumClass::field2}{self::NumClass::S*}){(core::num*) →* core::num*};
+    return this.{self::NumClass::field1}.{core::num::*}(this.{self::NumClass::field2});
   method method2() → core::num*
-    return this.{self::NumClass::field1}{self::NumClass::T*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/type_variable_bound_access.dart:22:36: Error: The getter 'length' isn't defined for the class 'num'.
+    return this.{self::NumClass::field1}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/type_variable_bound_access.dart:22:36: Error: The getter 'length' isn't defined for the class 'num'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'length'.
   num method2() => field1 + field2.length;
-                                   ^^^^^^"){(core::num*) →* core::num*};
+                                   ^^^^^^");
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -64,12 +64,12 @@
     : super core::Object::•()
     ;
   method method() → dynamic {
-    this.{self::Class::field0}{self::Class::X0*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field1}{self::Class::X1*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field2}{self::Class::X2*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field3}{self::Class::X3*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field4}{self::Class::X4*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field5}{self::Class::X5*}.{core::int::isEven}{core::bool*};
+    this.{self::Class::field0}.{core::int::isEven};
+    this.{self::Class::field1}.{core::int::isEven};
+    this.{self::Class::field2}.{core::int::isEven};
+    this.{self::Class::field3}.{core::int::isEven};
+    this.{self::Class::field4}.{core::int::isEven};
+    this.{self::Class::field5}.{core::int::isEven};
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -83,6 +83,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  new self::DynamicClass::•<core::num*, core::int*>(0.5, 2).{self::DynamicClass::method}(){() →* dynamic};
-  new self::NumClass::•<core::num*, core::double*>(2, 0.5).{self::NumClass::method1}(){() →* core::num*};
+  new self::DynamicClass::•<core::num*, core::int*>(0.5, 2).{self::DynamicClass::method}();
+  new self::NumClass::•<core::num*, core::double*>(2, 0.5).{self::NumClass::method1}();
 }
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.expect
index 93f9c23..f33e878 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.expect
@@ -29,6 +29,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::String* s = new self::C::•<dynamic>().{self::C::method}(){() →* invalid-type};
+  core::String* s = new self::C::•<dynamic>().{self::C::method}();
   core::print(s);
 }
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.transformed.expect
index 93f9c23..f33e878 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.transformed.expect
@@ -29,6 +29,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::String* s = new self::C::•<dynamic>().{self::C::method}(){() →* invalid-type};
+  core::String* s = new self::C::•<dynamic>().{self::C::method}();
   core::print(s);
 }
diff --git a/pkg/front_end/testcases/general/undefined.dart.weak.expect b/pkg/front_end/testcases/general/undefined.dart.weak.expect
index dd04769..3bd9b1a 100644
--- a/pkg/front_end/testcases/general/undefined.dart.weak.expect
+++ b/pkg/front_end/testcases/general/undefined.dart.weak.expect
@@ -41,13 +41,13 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C* c) → void {
-  c.{self::C::x}{dynamic};
+  c.{self::C::x};
   invalid-expression "pkg/front_end/testcases/general/undefined.dart:12:5: Error: The getter 'y' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'y'.
   c.y;
     ^";
-  c.{self::C::f}(){() →* void};
+  c.{self::C::f}();
   invalid-expression "pkg/front_end/testcases/general/undefined.dart:14:5: Error: The method 'g' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined.dart'.
 Try correcting the name to the name of an existing method, or defining a method named 'g'.
diff --git a/pkg/front_end/testcases/general/undefined.dart.weak.transformed.expect b/pkg/front_end/testcases/general/undefined.dart.weak.transformed.expect
index dd04769..3bd9b1a 100644
--- a/pkg/front_end/testcases/general/undefined.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/undefined.dart.weak.transformed.expect
@@ -41,13 +41,13 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C* c) → void {
-  c.{self::C::x}{dynamic};
+  c.{self::C::x};
   invalid-expression "pkg/front_end/testcases/general/undefined.dart:12:5: Error: The getter 'y' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'y'.
   c.y;
     ^";
-  c.{self::C::f}(){() →* void};
+  c.{self::C::f}();
   invalid-expression "pkg/front_end/testcases/general/undefined.dart:14:5: Error: The method 'g' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined.dart'.
 Try correcting the name to the name of an existing method, or defining a method named 'g'.
diff --git a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.expect b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.expect
index 99c4726..b0b1563 100644
--- a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.expect
+++ b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.expect
@@ -39,11 +39,11 @@
  - 'C' is from 'pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c.x += 1;
-    ^"{dynamic}.+(1);
+    ^".+(1);
   let final self::C* #t2 = c in invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:12:5: Error: The getter 'x' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c.x ??= 1;
-    ^" == null ?{dynamic} #t2.{self::C::x} = 1 : null;
+    ^".{core::Object::==}(null) ?{dynamic} #t2.{self::C::x} = 1 : null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.transformed.expect b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.transformed.expect
index 99c4726..b0b1563 100644
--- a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.transformed.expect
@@ -39,11 +39,11 @@
  - 'C' is from 'pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c.x += 1;
-    ^"{dynamic}.+(1);
+    ^".+(1);
   let final self::C* #t2 = c in invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:12:5: Error: The getter 'x' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c.x ??= 1;
-    ^" == null ?{dynamic} #t2.{self::C::x} = 1 : null;
+    ^".{core::Object::==}(null) ?{dynamic} #t2.{self::C::x} = 1 : null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/unsound_promotion.dart.weak.expect b/pkg/front_end/testcases/general/unsound_promotion.dart.weak.expect
index e5a07f2..bf4731f 100644
--- a/pkg/front_end/testcases/general/unsound_promotion.dart.weak.expect
+++ b/pkg/front_end/testcases/general/unsound_promotion.dart.weak.expect
@@ -52,7 +52,7 @@
 static field core::List<self::A*>* list;
 static method g<T extends self::A*>(self::g::T* t) → core::List<self::g::T*>* {
   self::list = <self::g::T*>[];
-  core::print(self::list.{core::Object::runtimeType}{core::Type*});
+  core::print(self::list.{core::Object::runtimeType});
   return self::list as{TypeError} core::List<self::g::T*>*;
 }
 static method f<S extends core::Object* = dynamic>(self::f::S* s) → core::List<self::f::S*>* {
@@ -64,7 +64,7 @@
 }
 static method main() → dynamic {
   self::f<self::B*>(new self::C::•());
-  core::print(self::list.{core::Object::runtimeType}{core::Type*});
+  core::print(self::list.{core::Object::runtimeType});
   core::List<self::A*>* aList;
   aList = self::list;
   core::Object* o = aList;
diff --git a/pkg/front_end/testcases/general/unused_methods.dart.weak.expect b/pkg/front_end/testcases/general/unused_methods.dart.weak.expect
index 060120a..e571d37 100644
--- a/pkg/front_end/testcases/general/unused_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/general/unused_methods.dart.weak.expect
@@ -26,7 +26,7 @@
     core::print("Unused");
   }
   method calledFromB() → void {
-    this.{self::UsedAsBaseClass::calledFromSubclass}(){() →* void};
+    this.{self::UsedAsBaseClass::calledFromSubclass}();
   }
   method calledFromSubclass() → void {
     core::print("Unused");
@@ -92,21 +92,21 @@
     ;
   method usedInSubclass() → void {
     core::print("B");
-    this.{self::UsedAsBaseClass::calledFromB}(){() →* void};
+    this.{self::UsedAsBaseClass::calledFromB}();
   }
   method calledFromSubclass() → void {}
 }
 static method baseClassCall(self::UsedAsBaseClass* object) → void {
-  object.{self::UsedAsBaseClass::usedInSubclass}(){() →* void};
+  object.{self::UsedAsBaseClass::usedInSubclass}();
 }
 static method interfaceCall(self::UsedAsInterface* object) → void {
-  object.{self::UsedAsInterface::usedInSubclass}(){() →* void};
+  object.{self::UsedAsInterface::usedInSubclass}();
 }
 static method exactCallA(self::ClassA* object) → void {
-  object.{self::ClassA::usedInSubclass}(){() →* void};
+  object.{self::ClassA::usedInSubclass}();
 }
 static method exactCallB(self::ClassB* object) → void {
-  object.{self::ClassB::usedInSubclass}(){() →* void};
+  object.{self::ClassB::usedInSubclass}();
 }
 static method unusedTopLevel() → dynamic {
   core::print("Unused");
diff --git a/pkg/front_end/testcases/general/unused_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/general/unused_methods.dart.weak.transformed.expect
index 060120a..e571d37 100644
--- a/pkg/front_end/testcases/general/unused_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/unused_methods.dart.weak.transformed.expect
@@ -26,7 +26,7 @@
     core::print("Unused");
   }
   method calledFromB() → void {
-    this.{self::UsedAsBaseClass::calledFromSubclass}(){() →* void};
+    this.{self::UsedAsBaseClass::calledFromSubclass}();
   }
   method calledFromSubclass() → void {
     core::print("Unused");
@@ -92,21 +92,21 @@
     ;
   method usedInSubclass() → void {
     core::print("B");
-    this.{self::UsedAsBaseClass::calledFromB}(){() →* void};
+    this.{self::UsedAsBaseClass::calledFromB}();
   }
   method calledFromSubclass() → void {}
 }
 static method baseClassCall(self::UsedAsBaseClass* object) → void {
-  object.{self::UsedAsBaseClass::usedInSubclass}(){() →* void};
+  object.{self::UsedAsBaseClass::usedInSubclass}();
 }
 static method interfaceCall(self::UsedAsInterface* object) → void {
-  object.{self::UsedAsInterface::usedInSubclass}(){() →* void};
+  object.{self::UsedAsInterface::usedInSubclass}();
 }
 static method exactCallA(self::ClassA* object) → void {
-  object.{self::ClassA::usedInSubclass}(){() →* void};
+  object.{self::ClassA::usedInSubclass}();
 }
 static method exactCallB(self::ClassB* object) → void {
-  object.{self::ClassB::usedInSubclass}(){() →* void};
+  object.{self::ClassB::usedInSubclass}();
 }
 static method unusedTopLevel() → dynamic {
   core::print("Unused");
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart.weak.expect b/pkg/front_end/testcases/general/vm_type_ops.dart.weak.expect
index 017b651..2091c88 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart.weak.expect
+++ b/pkg/front_end/testcases/general/vm_type_ops.dart.weak.expect
@@ -48,7 +48,7 @@
     if(z is self::C<core::Map<self::D::foo3::T1*, self::D::P*>*, core::List<self::D::foo3::T2*>*, self::D::Q*>*) {
       core::print("32");
     }
-    return (z as core::Map<self::D::foo3::T2*, self::D::Q*>*).{core::Map::values}{core::Iterable<self::D::Q*>*};
+    return (z as core::Map<self::D::foo3::T2*, self::D::Q*>*).{core::Map::values};
   }
   method foo4(dynamic w) → core::Map<self::D::P*, self::D::Q*>* {
     core::List<core::Map<self::D::P*, self::D::Q*>*>* list = <core::Map<self::D::P*, self::D::Q*>*>[w as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*];
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart.weak.transformed.expect b/pkg/front_end/testcases/general/vm_type_ops.dart.weak.transformed.expect
index ace3959..ce44cfa 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/vm_type_ops.dart.weak.transformed.expect
@@ -48,7 +48,7 @@
     if(z is self::C<core::Map<self::D::foo3::T1*, self::D::P*>*, core::List<self::D::foo3::T2*>*, self::D::Q*>*) {
       core::print("32");
     }
-    return (z as core::Map<self::D::foo3::T2*, self::D::Q*>*).{core::Map::values}{core::Iterable<self::D::Q*>*};
+    return (z as core::Map<self::D::foo3::T2*, self::D::Q*>*).{core::Map::values};
   }
   method foo4(dynamic w) → core::Map<self::D::P*, self::D::Q*>* {
     core::List<core::Map<self::D::P*, self::D::Q*>*>* list = core::_GrowableList::_literal1<core::Map<self::D::P*, self::D::Q*>*>(w as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*);
diff --git a/pkg/front_end/testcases/general/void_methods.dart.weak.expect b/pkg/front_end/testcases/general/void_methods.dart.weak.expect
index dff46ae..70705a1 100644
--- a/pkg/front_end/testcases/general/void_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/general/void_methods.dart.weak.expect
@@ -8,11 +8,11 @@
     : super core::Object::•()
     ;
   set first(dynamic x) → void
-    return let final core::List<dynamic>* #t1 = this.{self::Foo::list}{core::List<dynamic>*} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int*, dynamic) →* void} in #t3;
+    return let final core::List<dynamic>* #t1 = this.{self::Foo::list} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3) in #t3;
   operator []=(dynamic x, dynamic y) → void
-    return let final core::List<dynamic>* #t5 = this.{self::Foo::list}{core::List<dynamic>*} in let final dynamic #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7){(core::int*, dynamic) →* void} in #t7;
+    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final dynamic #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
   method clear() → void
-    return this.{self::Foo::list}{core::List<dynamic>*}.{core::List::clear}(){() →* void};
+    return this.{self::Foo::list}.{core::List::clear}();
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -26,6 +26,6 @@
 }
 static method main() → dynamic {
   new self::Foo::•().{self::Foo::first} = 4;
-  new self::Foo::•().{self::Foo::[]=}(3, 4){(dynamic, dynamic) →* void};
-  new self::Foo::•().{self::Foo::clear}(){() →* void};
+  new self::Foo::•().{self::Foo::[]=}(3, 4);
+  new self::Foo::•().{self::Foo::clear}();
 }
diff --git a/pkg/front_end/testcases/general/void_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/general/void_methods.dart.weak.transformed.expect
index a6dfbf8..8844178 100644
--- a/pkg/front_end/testcases/general/void_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/void_methods.dart.weak.transformed.expect
@@ -8,11 +8,11 @@
     : super core::Object::•()
     ;
   set first(dynamic x) → void
-    return let final core::List<dynamic>* #t1 = this.{self::Foo::list}{core::List<dynamic>*} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int*, dynamic) →* void} in #t3;
+    return let final core::List<dynamic>* #t1 = this.{self::Foo::list} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3) in #t3;
   operator []=(dynamic x, dynamic y) → void
-    return let final core::List<dynamic>* #t5 = this.{self::Foo::list}{core::List<dynamic>*} in let final core::int* #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7){(core::int*, dynamic) →* void} in #t7;
+    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final core::int* #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
   method clear() → void
-    return this.{self::Foo::list}{core::List<dynamic>*}.{core::List::clear}(){() →* void};
+    return this.{self::Foo::list}.{core::List::clear}();
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -26,8 +26,8 @@
 }
 static method main() → dynamic {
   new self::Foo::•().{self::Foo::first} = 4;
-  new self::Foo::•().{self::Foo::[]=}(3, 4){(dynamic, dynamic) →* void};
-  new self::Foo::•().{self::Foo::clear}(){() →* void};
+  new self::Foo::•().{self::Foo::[]=}(3, 4);
+  new self::Foo::•().{self::Foo::clear}();
 }
 
 
diff --git a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.expect b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.expect
index aa48737..27e3b71 100644
--- a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.expect
+++ b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.expect
@@ -74,25 +74,25 @@
     return null;
   method method() → dynamic {}
   method test() → void {
-    this.{self::D::field}{dynamic};
-    this.{self::C::superField}{dynamic};
+    this.{self::D::field};
+    this.{self::C::superField};
     this.{self::D::field} = 0;
     this.{self::C::superField} = 0;
-    this.{self::D::method}(){() →* dynamic};
-    this.{self::C::superMethod}(){() →* dynamic};
-    this.{self::C::setterOnly}{dynamic};
+    this.{self::D::method}();
+    this.{self::C::superMethod}();
+    this.{self::C::setterOnly};
     this.{self::D::setterOnly} = 0;
-    this.{self::D::getterOnly}{dynamic};
+    this.{self::D::getterOnly};
     this.{self::C::getterOnly} = 0;
-    this.{self::D::field}{dynamic};
-    this.{self::C::superField}{dynamic};
+    this.{self::D::field};
+    this.{self::C::superField};
     this.{self::D::field} = 0;
     this.{self::C::superField} = 0;
-    this.{self::D::method}(){() →* dynamic};
-    this.{self::C::superMethod}(){() →* dynamic};
-    this.{self::C::setterOnly}{dynamic};
+    this.{self::D::method}();
+    this.{self::C::superMethod}();
+    this.{self::C::setterOnly};
     this.{self::D::setterOnly} = 0;
-    this.{self::D::getterOnly}{dynamic};
+    this.{self::D::getterOnly};
     this.{self::C::getterOnly} = 0;
     invalid-expression "pkg/front_end/testcases/general/warn_unresolved_sends.dart:48:10: Error: The getter 'missingField' isn't defined for the class 'D'.
  - 'D' is from 'pkg/front_end/testcases/general/warn_unresolved_sends.dart'.
diff --git a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.transformed.expect b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.transformed.expect
index aa48737..27e3b71 100644
--- a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.transformed.expect
@@ -74,25 +74,25 @@
     return null;
   method method() → dynamic {}
   method test() → void {
-    this.{self::D::field}{dynamic};
-    this.{self::C::superField}{dynamic};
+    this.{self::D::field};
+    this.{self::C::superField};
     this.{self::D::field} = 0;
     this.{self::C::superField} = 0;
-    this.{self::D::method}(){() →* dynamic};
-    this.{self::C::superMethod}(){() →* dynamic};
-    this.{self::C::setterOnly}{dynamic};
+    this.{self::D::method}();
+    this.{self::C::superMethod}();
+    this.{self::C::setterOnly};
     this.{self::D::setterOnly} = 0;
-    this.{self::D::getterOnly}{dynamic};
+    this.{self::D::getterOnly};
     this.{self::C::getterOnly} = 0;
-    this.{self::D::field}{dynamic};
-    this.{self::C::superField}{dynamic};
+    this.{self::D::field};
+    this.{self::C::superField};
     this.{self::D::field} = 0;
     this.{self::C::superField} = 0;
-    this.{self::D::method}(){() →* dynamic};
-    this.{self::C::superMethod}(){() →* dynamic};
-    this.{self::C::setterOnly}{dynamic};
+    this.{self::D::method}();
+    this.{self::C::superMethod}();
+    this.{self::C::setterOnly};
     this.{self::D::setterOnly} = 0;
-    this.{self::D::getterOnly}{dynamic};
+    this.{self::D::getterOnly};
     this.{self::C::getterOnly} = 0;
     invalid-expression "pkg/front_end/testcases/general/warn_unresolved_sends.dart:48:10: Error: The getter 'missingField' isn't defined for the class 'D'.
  - 'D' is from 'pkg/front_end/testcases/general/warn_unresolved_sends.dart'.
diff --git a/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.expect b/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.expect
index 9c0b260..99bdeb7 100644
--- a/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.expect
@@ -7,11 +7,11 @@
 
 static const field con::B* crossModule = #C3;
 static method main() → dynamic {
-  self::expect(2.71, (#C3).{con::A::d}{core::double*});
-  self::expect("default", (#C3).{con::A::s}{core::String*});
+  self::expect(2.71, (#C3).{con::A::d});
+  self::expect("default", (#C3).{con::A::s});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.transformed.expect
index 9c0b260..99bdeb7 100644
--- a/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.transformed.expect
@@ -7,11 +7,11 @@
 
 static const field con::B* crossModule = #C3;
 static method main() → dynamic {
-  self::expect(2.71, (#C3).{con::A::d}{core::double*});
-  self::expect("default", (#C3).{con::A::s}{core::String*});
+  self::expect(2.71, (#C3).{con::A::d});
+  self::expect("default", (#C3).{con::A::s});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.weak.expect b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.weak.expect
index 2b8aa68..477d3c1 100644
--- a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.weak.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.weak.expect
@@ -8,17 +8,17 @@
 
 static method main() → dynamic {
   mix::Foo* foo1 = new mix::Foo::•();
-  if(foo1 == null)
+  if(foo1.{mix::_Foo&B&D::==}(null))
     throw "what?";
-  if(!(foo1 =={mix::_Foo&B&D::==}{(dynamic) →* dart.core::bool*} foo1))
+  if(!foo1.{mix::_Foo&B&D::==}(foo1))
     throw "what?";
-  foo1.{mix::_Foo&B&D::x}(){() →* void};
+  foo1.{mix::_Foo&B&D::x}();
   mix2::Foo* foo2 = new mix2::Foo::•();
-  if(foo2 == null)
+  if(foo2.{mix2::_Foo&B&D::==}(null))
     throw "what?";
-  if(!(foo2 =={mix2::_Foo&B&D::==}{(dynamic) →* dart.core::bool*} foo2))
+  if(!foo2.{mix2::_Foo&B&D::==}(foo2))
     throw "what?";
-  foo2.{mix2::_Foo&B&D::x}(){() →* void};
+  foo2.{mix2::_Foo&B&D::x}();
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.weak.transformed.expect b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.weak.transformed.expect
index 33fa94c..82923f0 100644
--- a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.weak.transformed.expect
@@ -8,17 +8,17 @@
 
 static method main() → dynamic {
   mix::Foo* foo1 = new mix::Foo::•();
-  if(foo1 == null)
+  if(foo1.{mix::_Foo&B&D::==}(null))
     throw "what?";
-  if(!(foo1 =={mix::_Foo&B&D::==}{(dynamic) →* dart.core::bool*} foo1))
+  if(!foo1.{mix::_Foo&B&D::==}(foo1))
     throw "what?";
-  foo1.{mix::_Foo&B&D::x}(){() →* void};
+  foo1.{mix::_Foo&B&D::x}();
   mix2::Foo* foo2 = new mix2::Foo::•();
-  if(foo2 == null)
+  if(foo2.{mix2::_Foo&B&D::==}(null))
     throw "what?";
-  if(!(foo2 =={mix2::_Foo&B&D::==}{(dynamic) →* dart.core::bool*} foo2))
+  if(!foo2.{mix2::_Foo&B&D::==}(foo2))
     throw "what?";
-  foo2.{mix2::_Foo&B&D::x}(){() →* void};
+  foo2.{mix2::_Foo&B&D::x}();
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.no_link.dart.weak.expect b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.no_link.dart.weak.expect
index 9233b38..23b3c5d 100644
--- a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.no_link.dart.weak.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.no_link.dart.weak.expect
@@ -8,17 +8,17 @@
 
 static method main() → dynamic {
   mix::Foo* foo1 = new mix::Foo::•();
-  if(foo1 == null)
+  if(foo1.{mix::_Foo&B&D::==}(null))
     throw "what?";
-  if(!(foo1 =={mix::_Foo&B&D::==}{(dynamic) →* dart.core::bool*} foo1))
+  if(!foo1.{mix::_Foo&B&D::==}(foo1))
     throw "what?";
-  foo1.{mix::_Foo&B&D::x}(){() →* void};
+  foo1.{mix::_Foo&B&D::x}();
   mix2::Foo* foo2 = new mix2::Foo::•();
-  if(foo2 == null)
+  if(foo2.{mix2::_Foo&B&D::==}(null))
     throw "what?";
-  if(!(foo2 =={mix2::_Foo&B&D::==}{(dynamic) →* dart.core::bool*} foo2))
+  if(!foo2.{mix2::_Foo&B&D::==}(foo2))
     throw "what?";
-  foo2.{mix2::_Foo&B&D::x}(){() →* void};
+  foo2.{mix2::_Foo&B&D::x}();
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.no_link.dart.weak.transformed.expect b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.no_link.dart.weak.transformed.expect
index 01ffe09..06efdba 100644
--- a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.no_link.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.no_link.dart.weak.transformed.expect
@@ -8,17 +8,17 @@
 
 static method main() → dynamic {
   mix::Foo* foo1 = new mix::Foo::•();
-  if(foo1 == null)
+  if(foo1.{mix::_Foo&B&D::==}(null))
     throw "what?";
-  if(!(foo1 =={mix::_Foo&B&D::==}{(dynamic) →* dart.core::bool*} foo1))
+  if(!foo1.{mix::_Foo&B&D::==}(foo1))
     throw "what?";
-  foo1.{mix::_Foo&B&D::x}(){() →* void};
+  foo1.{mix::_Foo&B&D::x}();
   mix2::Foo* foo2 = new mix2::Foo::•();
-  if(foo2 == null)
+  if(foo2.{mix2::_Foo&B&D::==}(null))
     throw "what?";
-  if(!(foo2 =={mix2::_Foo&B&D::==}{(dynamic) →* dart.core::bool*} foo2))
+  if(!foo2.{mix2::_Foo&B&D::==}(foo2))
     throw "what?";
-  foo2.{mix2::_Foo&B&D::x}(){() →* void};
+  foo2.{mix2::_Foo&B&D::x}();
 }
 
 library;
diff --git a/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.strong.expect b/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.strong.expect
index 80cb97b..189f2c4 100644
--- a/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.strong.expect
+++ b/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.strong.expect
@@ -67,7 +67,7 @@
   }
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.strong.transformed.expect b/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.strong.transformed.expect
index 80cb97b..189f2c4 100644
--- a/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.strong.transformed.expect
@@ -67,7 +67,7 @@
   }
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.weak.expect b/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.weak.expect
index 979b373..941af3f 100644
--- a/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.weak.expect
+++ b/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.weak.expect
@@ -67,7 +67,7 @@
   }
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.weak.transformed.expect b/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.weak.transformed.expect
index 979b373..941af3f 100644
--- a/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/generic_metadata/from_dill/main.dart.weak.transformed.expect
@@ -67,7 +67,7 @@
   }
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.strong.expect b/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.strong.expect
index 7906e15..19d9303 100644
--- a/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.strong.expect
+++ b/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.strong.expect
@@ -15,7 +15,7 @@
   core::List<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> y = <<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>>[#C1];
   core::Set<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> z = block {
     final core::Set<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> #t1 = col::LinkedHashSet::•<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>>();
-    #t1.{core::Set::add}(y.{core::Iterable::first}{<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>}){(<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>) → core::bool};
+    #t1.{core::Set::add}{Invariant}(y.{core::Iterable::first});
   } =>#t1;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.strong.transformed.expect b/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.strong.transformed.expect
index 45504ea..82c52ba 100644
--- a/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
   core::List<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> y = core::_GrowableList::_literal1<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>>(#C1);
   core::Set<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> z = block {
     final core::Set<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> #t1 = new col::_CompactLinkedHashSet::•<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>>();
-    #t1.{core::Set::add}(y.{core::Iterable::first}{<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>}){(<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>) → core::bool};
+    #t1.{core::Set::add}{Invariant}(y.{core::Iterable::first});
   } =>#t1;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.weak.expect b/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.weak.expect
index 7906e15..19d9303 100644
--- a/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.weak.expect
+++ b/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.weak.expect
@@ -15,7 +15,7 @@
   core::List<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> y = <<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>>[#C1];
   core::Set<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> z = block {
     final core::Set<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> #t1 = col::LinkedHashSet::•<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>>();
-    #t1.{core::Set::add}(y.{core::Iterable::first}{<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>}){(<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>) → core::bool};
+    #t1.{core::Set::add}{Invariant}(y.{core::Iterable::first});
   } =>#t1;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.weak.transformed.expect b/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.weak.transformed.expect
index 45504ea..82c52ba 100644
--- a/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/generic_metadata/inferred_generic_types_in_arguments_and_bounds.dart.weak.transformed.expect
@@ -15,7 +15,7 @@
   core::List<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> y = core::_GrowableList::_literal1<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>>(#C1);
   core::Set<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> z = block {
     final core::Set<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> #t1 = new col::_CompactLinkedHashSet::•<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>>();
-    #t1.{core::Set::add}(y.{core::Iterable::first}{<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>}){(<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>) → core::bool};
+    #t1.{core::Set::add}{Invariant}(y.{core::Iterable::first});
   } =>#t1;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/incremental/changing_modules_4.yaml.world.1.expect b/pkg/front_end/testcases/incremental/changing_modules_4.yaml.world.1.expect
index 24ffa21..4f177a0 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_4.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/changing_modules_4.yaml.world.1.expect
@@ -4,7 +4,7 @@
   import "package:moduleB/b.dart";
 
   static field dart.core::String* foo = c::baz;
-  static field dart.core::int* x = b::mya2.{b::A2::bar}{dart.core::int*};
+  static field dart.core::int* x = b::mya2.{b::A2::bar};
 }
 library from "package:moduleB/b.dart" as b {
 additionalExports = (c::baz,
diff --git a/pkg/front_end/testcases/incremental/changing_modules_7.yaml.world.1.expect b/pkg/front_end/testcases/incremental/changing_modules_7.yaml.world.1.expect
index a3215f8d..00db382 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_7.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/changing_modules_7.yaml.world.1.expect
@@ -10,7 +10,7 @@
       ;
     method class1() → lib1::Class1* {
       lib1::Class1* class1 = new lib1::Class1::•();
-      class1.{lib1::Class1::c3a}{lib3::Class3a*}.{lib3::Class3a::c3b}{lib3::Class3b*}.{lib3::Class3b::str}(){() →* dart.core::String*};
+      class1.{lib1::Class1::c3a}.{lib3::Class3a::c3b}.{lib3::Class3b::str}();
       return class1;
     }
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change.yaml.world.1.expect b/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change.yaml.world.1.expect
index 45c9ab4..e4a08ef 100644
--- a/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change.yaml.world.1.expect
@@ -83,7 +83,7 @@
     get renderObject() → main::Adaptor*
       return super.{obj::RenderObject::renderObject} as{TypeError} main::Adaptor*;
     method foo() → void {
-      dart.core::print(this.{main::AdaptorElement::renderObject}{main::Adaptor*}.{main::_Adaptor&RenderFoo&LibMixin::constraints}{obj::FooConstraints*}.{obj::FooConstraints::axis}{dart.core::String*});
+      dart.core::print(this.{main::AdaptorElement::renderObject}.{main::_Adaptor&RenderFoo&LibMixin::constraints}.{obj::FooConstraints::axis});
     }
     abstract member-signature get constraints() → obj::Constraints*; -> obj::RenderObject::constraints
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change.yaml.world.2.expect b/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change.yaml.world.2.expect
index 45c9ab4..e4a08ef 100644
--- a/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change.yaml.world.2.expect
@@ -83,7 +83,7 @@
     get renderObject() → main::Adaptor*
       return super.{obj::RenderObject::renderObject} as{TypeError} main::Adaptor*;
     method foo() → void {
-      dart.core::print(this.{main::AdaptorElement::renderObject}{main::Adaptor*}.{main::_Adaptor&RenderFoo&LibMixin::constraints}{obj::FooConstraints*}.{obj::FooConstraints::axis}{dart.core::String*});
+      dart.core::print(this.{main::AdaptorElement::renderObject}.{main::_Adaptor&RenderFoo&LibMixin::constraints}.{obj::FooConstraints::axis});
     }
     abstract member-signature get constraints() → obj::Constraints*; -> obj::RenderObject::constraints
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change_02.yaml.world.1.expect b/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change_02.yaml.world.1.expect
index ec1075d..49289d9 100644
--- a/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change_02.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change_02.yaml.world.1.expect
@@ -89,7 +89,7 @@
     get renderObject() → lib1::Adaptor*
       return super.{obj::RenderObject::renderObject} as{TypeError} lib1::Adaptor*;
     method foo() → void {
-      dart.core::print(this.{main::AdaptorElement::renderObject}{lib1::Adaptor*}.{lib1::_Adaptor&RenderFoo&LibMixin::constraints}{obj::FooConstraints*}.{obj::FooConstraints::axis}{dart.core::String*});
+      dart.core::print(this.{main::AdaptorElement::renderObject}.{lib1::_Adaptor&RenderFoo&LibMixin::constraints}.{obj::FooConstraints::axis});
     }
     abstract member-signature get constraints() → obj::Constraints*; -> obj::RenderObject::constraints
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change_02.yaml.world.2.expect b/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change_02.yaml.world.2.expect
index ec1075d..49289d9 100644
--- a/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change_02.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change_02.yaml.world.2.expect
@@ -89,7 +89,7 @@
     get renderObject() → lib1::Adaptor*
       return super.{obj::RenderObject::renderObject} as{TypeError} lib1::Adaptor*;
     method foo() → void {
-      dart.core::print(this.{main::AdaptorElement::renderObject}{lib1::Adaptor*}.{lib1::_Adaptor&RenderFoo&LibMixin::constraints}{obj::FooConstraints*}.{obj::FooConstraints::axis}{dart.core::String*});
+      dart.core::print(this.{main::AdaptorElement::renderObject}.{lib1::_Adaptor&RenderFoo&LibMixin::constraints}.{obj::FooConstraints::axis});
     }
     abstract member-signature get constraints() → obj::Constraints*; -> obj::RenderObject::constraints
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/incremental/experiments_enabled_1.yaml.world.1.expect b/pkg/front_end/testcases/incremental/experiments_enabled_1.yaml.world.1.expect
index 976a041..2542952 100644
--- a/pkg/front_end/testcases/incremental/experiments_enabled_1.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/experiments_enabled_1.yaml.world.1.expect
@@ -8,7 +8,7 @@
   }
   static method main() → dynamic {
     dynamic x;
-    dart.core::print(x{dynamic}.>>>(2));
+    dart.core::print(x.>>>(2));
     main::Class? c = new main::Class::•();
     dart.core::print(c!);
   }
diff --git a/pkg/front_end/testcases/incremental/ffi_01.yaml.world.1.expect b/pkg/front_end/testcases/incremental/ffi_01.yaml.world.1.expect
index ab4cf52..481fe3f 100644
--- a/pkg/front_end/testcases/incremental/ffi_01.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/ffi_01.yaml.world.1.expect
@@ -45,9 +45,9 @@
 
   static method main() → dynamic {
     lib::Coordinate* coordinate = lib::Coordinate::allocate(42.0, 42.0, null);
-    dart.core::print(coordinate.{lib::Coordinate::x}{dart.core::double*});
-    dart.core::print(coordinate.{lib::Coordinate::y}{dart.core::double*});
-    dart.core::print(coordinate.{lib::Coordinate::next}{dart.ffi::Pointer<lib::Coordinate*>*});
+    dart.core::print(coordinate.{lib::Coordinate::x});
+    dart.core::print(coordinate.{lib::Coordinate::y});
+    dart.core::print(coordinate.{lib::Coordinate::next});
   }
 }
 constants  {
diff --git a/pkg/front_end/testcases/incremental/ffi_01.yaml.world.2.expect b/pkg/front_end/testcases/incremental/ffi_01.yaml.world.2.expect
index ba5c9d3..751d0a9 100644
--- a/pkg/front_end/testcases/incremental/ffi_01.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/ffi_01.yaml.world.2.expect
@@ -45,9 +45,9 @@
 
   static method main() → dynamic {
     lib::Coordinate* coordinate = lib::Coordinate::allocate(42.0, 42.0, null);
-    dart.core::print(coordinate.{lib::Coordinate::x}{dart.core::double*});
-    dart.core::print(coordinate.{lib::Coordinate::y}{dart.core::double*});
-    dart.core::print(coordinate.{lib::Coordinate::next}{dart.ffi::Pointer<lib::Coordinate*>*});
+    dart.core::print(coordinate.{lib::Coordinate::x});
+    dart.core::print(coordinate.{lib::Coordinate::y});
+    dart.core::print(coordinate.{lib::Coordinate::next});
     main::done();
   }
   static method done() → dynamic {
diff --git a/pkg/front_end/testcases/incremental/ffi_02.yaml.world.1.expect b/pkg/front_end/testcases/incremental/ffi_02.yaml.world.1.expect
index 182ee7a..deb8a44 100644
--- a/pkg/front_end/testcases/incremental/ffi_02.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/ffi_02.yaml.world.1.expect
@@ -46,9 +46,9 @@
   static field lib::Coordinate* coordinate;
   static method main() → dynamic {
     main::coordinate = lib::Coordinate::allocate(42.0, 42.0, null);
-    dart.core::print(main::coordinate.{lib::Coordinate::x}{dart.core::double*});
-    dart.core::print(main::coordinate.{lib::Coordinate::y}{dart.core::double*});
-    dart.core::print(main::coordinate.{lib::Coordinate::next}{dart.ffi::Pointer<lib::Coordinate*>*});
+    dart.core::print(main::coordinate.{lib::Coordinate::x});
+    dart.core::print(main::coordinate.{lib::Coordinate::y});
+    dart.core::print(main::coordinate.{lib::Coordinate::next});
   }
 }
 constants  {
diff --git a/pkg/front_end/testcases/incremental/ffi_02.yaml.world.1.expression.1.expect b/pkg/front_end/testcases/incremental/ffi_02.yaml.world.1.expression.1.expect
index c3ece07..35a37c6 100644
--- a/pkg/front_end/testcases/incremental/ffi_02.yaml.world.1.expression.1.expect
+++ b/pkg/front_end/testcases/incremental/ffi_02.yaml.world.1.expression.1.expect
@@ -1,2 +1,2 @@
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return dart.core::print(#lib1::coordinate.{#lib2::Coordinate::x}{dart.core::double*});
+  return dart.core::print(#lib1::coordinate.{#lib2::Coordinate::x});
diff --git a/pkg/front_end/testcases/incremental/initialize_with_file_then_use_type.yaml.world.1.expect b/pkg/front_end/testcases/incremental/initialize_with_file_then_use_type.yaml.world.1.expect
index 5296948..559b247 100644
--- a/pkg/front_end/testcases/incremental/initialize_with_file_then_use_type.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/initialize_with_file_then_use_type.yaml.world.1.expect
@@ -26,6 +26,6 @@
 
   static method main() → dynamic {
     foo::Foo* foo = new foo::Foo::•();
-    foo.{foo::Foo::foo}(){() →* dynamic};
+    foo.{foo::Foo::foo}();
   }
 }
diff --git a/pkg/front_end/testcases/incremental/initialize_with_file_then_use_type.yaml.world.3.expect b/pkg/front_end/testcases/incremental/initialize_with_file_then_use_type.yaml.world.3.expect
index 5296948..559b247 100644
--- a/pkg/front_end/testcases/incremental/initialize_with_file_then_use_type.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/initialize_with_file_then_use_type.yaml.world.3.expect
@@ -26,6 +26,6 @@
 
   static method main() → dynamic {
     foo::Foo* foo = new foo::Foo::•();
-    foo.{foo::Foo::foo}(){() →* dynamic};
+    foo.{foo::Foo::foo}();
   }
 }
diff --git a/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml.world.1.expect b/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml.world.1.expect
index 7f55824..ba7de5d 100644
--- a/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml.world.1.expect
@@ -5,7 +5,7 @@
 
   static method main() → dynamic {
     foo::Foo* foo = new foo::Foo::•();
-    foo.{foo::Foo::foo}(){() →* dynamic};
+    foo.{foo::Foo::foo}();
   }
 }
 library from "package:mypackage/foo.dart" as foo {
diff --git a/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml.world.3.expect b/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml.world.3.expect
index 7f55824..ba7de5d 100644
--- a/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml.world.3.expect
@@ -5,7 +5,7 @@
 
   static method main() → dynamic {
     foo::Foo* foo = new foo::Foo::•();
-    foo.{foo::Foo::foo}(){() →* dynamic};
+    foo.{foo::Foo::foo}();
   }
 }
 library from "package:mypackage/foo.dart" as foo {
diff --git a/pkg/front_end/testcases/incremental/issue_41976.yaml.world.1.expression.2.expect b/pkg/front_end/testcases/incremental/issue_41976.yaml.world.1.expression.2.expect
index caf27dd..97a108c 100644
--- a/pkg/front_end/testcases/incremental/issue_41976.yaml.world.1.expression.2.expect
+++ b/pkg/front_end/testcases/incremental/issue_41976.yaml.world.1.expression.2.expect
@@ -1,5 +1,5 @@
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return (() → dart.core::int* {
     #lib1::Key* x = new #lib1::ValueKey::•("t");
-    return x.{#lib1::Key::hashCode}{dart.core::int*};
-  })(){() →* dart.core::int*};
+    return x.{#lib1::Key::hashCode};
+  }).call();
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_10.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_10.yaml.world.1.expect
index 4843839..b05ab6a 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_10.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_10.yaml.world.1.expect
@@ -36,7 +36,7 @@
 
   static method lib3Method(lib1::Foo* foo) → void {
     lib1::Foo* bar = new lib2::Bar::•();
-    dart.core::bool* equal = foo =={lib1::Foo::==}{(dynamic) →* dart.core::bool*} bar;
+    dart.core::bool* equal = foo.{lib1::Foo::==}(bar);
     dart.core::print("foo == bar = ${equal}");
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_10.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_10.yaml.world.2.expect
index 8485011..1039ffd 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_10.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_10.yaml.world.2.expect
@@ -38,7 +38,7 @@
 
   static method lib3Method(lib1::Foo* foo) → void {
     lib1::Foo* bar = new lib2::Bar::•();
-    dart.core::bool* equal = foo =={lib1::Foo::==}{(dynamic) →* dart.core::bool*} bar;
+    dart.core::bool* equal = foo.{lib1::Foo::==}(bar);
     dart.core::print("foo == bar = ${equal}");
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_10.yaml.world.3.expect b/pkg/front_end/testcases/incremental/no_outline_change_10.yaml.world.3.expect
index d8f13774..aa0d21e 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_10.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_10.yaml.world.3.expect
@@ -38,7 +38,7 @@
 
   static method lib3Method(lib1::Foo* foo) → void {
     lib1::Foo* bar = new lib2::Bar::•();
-    dart.core::bool* equal = foo =={lib1::Foo::==}{(dynamic) →* dart.core::bool*} bar;
+    dart.core::bool* equal = foo.{lib1::Foo::==}(bar);
     dart.core::print("foo == bar = ${equal}");
     dart.core::print("Done!");
   }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_11.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_11.yaml.world.2.expect
index e289c2a..7eec56c 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_11.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_11.yaml.world.2.expect
@@ -21,7 +21,7 @@
   static method libMethod() → void {
     lib1::Foo* foo = new lib2::Bar::•();
     lib2::Bar* bar = new lib2::Bar::•();
-    dart.core::print(foo =={lib1::Foo::==}{(dynamic) →* dart.core::bool*} bar);
+    dart.core::print(foo.{lib1::Foo::==}(bar));
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.1.expect
index 9c81633..724237f 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.1.expect
@@ -33,11 +33,11 @@
       dart.core::print("noSouchMethod!");
     }
     no-such-method-forwarder get /* from org-dartlang-test:///lib1.dart */ getter() → dart.core::bool*
-      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dart.core::bool*;
+      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dart.core::bool*;
     no-such-method-forwarder method /* from org-dartlang-test:///lib1.dart */ method() → void
-      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic};
+      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
     no-such-method-forwarder set /* from org-dartlang-test:///lib1.dart */ setter(dart.core::bool* b) → void
-      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C6, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(b)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic};
+      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C6, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(b)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
   }
   class Foo2 extends dart.core::Object implements lib1::Bar {
     synthetic constructor •() → main::Foo2*
@@ -56,15 +56,15 @@
     abstract member-signature method toString() → dart.core::String*; -> dart.core::Object::toString
     abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
     no-such-method-forwarder get /* from org-dartlang-test:///lib1.dart */ getter() → dart.core::bool*
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dart.core::bool*;
+      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dart.core::bool*;
     no-such-method-forwarder get /* from org-dartlang-test:///lib1.dart */ field() → dart.core::bool*
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C7, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dart.core::bool*;
+      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C7, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dart.core::bool*;
     no-such-method-forwarder method /* from org-dartlang-test:///lib1.dart */ method() → void
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic};
+      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
     no-such-method-forwarder set /* from org-dartlang-test:///lib1.dart */ setter(dart.core::bool* b) → void
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C6, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(b)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic};
+      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C6, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(b)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
     no-such-method-forwarder set /* from org-dartlang-test:///lib1.dart */ field(dart.core::bool* value) → void
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C8, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(value)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic};
+      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C8, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(value)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
   }
 }
 constants  {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.2.expect
index b2fcdc2..80df4d2 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.2.expect
@@ -33,11 +33,11 @@
       dart.core::print("noSouchMethod!!");
     }
     no-such-method-forwarder get /* from org-dartlang-test:///lib1.dart */ getter() → dart.core::bool*
-      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dart.core::bool*;
+      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dart.core::bool*;
     no-such-method-forwarder method /* from org-dartlang-test:///lib1.dart */ method() → void
-      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic};
+      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
     no-such-method-forwarder set /* from org-dartlang-test:///lib1.dart */ setter(dart.core::bool* b) → void
-      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C6, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(b)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic};
+      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C6, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(b)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
   }
   class Foo2 extends dart.core::Object implements lib1::Bar {
     synthetic constructor •() → main::Foo2*
@@ -56,15 +56,15 @@
     abstract member-signature method toString() → dart.core::String*; -> dart.core::Object::toString
     abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
     no-such-method-forwarder get /* from org-dartlang-test:///lib1.dart */ getter() → dart.core::bool*
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dart.core::bool*;
+      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dart.core::bool*;
     no-such-method-forwarder get /* from org-dartlang-test:///lib1.dart */ field() → dart.core::bool*
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C7, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dart.core::bool*;
+      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C7, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dart.core::bool*;
     no-such-method-forwarder method /* from org-dartlang-test:///lib1.dart */ method() → void
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic};
+      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
     no-such-method-forwarder set /* from org-dartlang-test:///lib1.dart */ setter(dart.core::bool* b) → void
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C6, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(b)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic};
+      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C6, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(b)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
     no-such-method-forwarder set /* from org-dartlang-test:///lib1.dart */ field(dart.core::bool* value) → void
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C8, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(value)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation*) →* dynamic};
+      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C8, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(value)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
   }
 }
 constants  {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_17.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_17.yaml.world.1.expect
index 88cc8e1..c8ec18e 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_17.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_17.yaml.world.1.expect
@@ -11,7 +11,7 @@
 
   static method main() → dynamic {
     () →* dart.async::Future<dynamic>* f = #C1;
-    f(){() →* dart.async::Future<dynamic>*};
+    f.call();
   }
   static method _#loadLibrary_foo() → dart.async::Future<dynamic>*
     return LoadLibrary(foo);
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_17.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_17.yaml.world.2.expect
index 8edd69c..54f989f 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_17.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_17.yaml.world.2.expect
@@ -11,7 +11,7 @@
 
   static method main() → dynamic {
     () →* dart.async::Future<dynamic>* f = #C1;
-    f(){() →* dart.async::Future<dynamic>*};
+    f.call();
     dart.core::print("Done");
   }
   static method _#loadLibrary_foo() → dart.async::Future<dynamic>*
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.1.expect
index 4a1cc75..ecaf0eb 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.1.expect
@@ -18,7 +18,7 @@
       ;
     @#C1
     method toString() → dart.core::String* {
-      return "${this.{main::Foo::message}{dynamic}}";
+      return "${this.{main::Foo::message}}";
     }
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.2.expect
index dfceb85..3610c0e 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.2.expect
@@ -18,7 +18,7 @@
       ;
     @#C1
     method toString() → dart.core::String* {
-      return "${this.{main::Foo::message}{dynamic}}!";
+      return "${this.{main::Foo::message}}!";
     }
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.1.expect
index 97bf72f..8177839 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.1.expect
@@ -12,143 +12,143 @@
     abstract member-signature operator [](dart.core::int* index) → dart.core::int*; -> dart.core::List::[]
     abstract member-signature operator []=(dart.core::int* index, generic-covariant-impl dart.core::int* value) → void; -> dart.core::List::[]=
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first() → dart.core::int* {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
-      return this.{dart.core::List::[]}(0){(dart.core::int) → dart.core::int*};
+      return this.{dart.core::List::[]}(0);
     }
     set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first(generic-covariant-impl dart.core::int* value) → void {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
-      this.{dart.core::List::[]=}(0, value){(dart.core::int, dart.core::int*) → void};
+      this.{dart.core::List::[]=}(0, value);
     }
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last() → dart.core::int* {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
-      return this.{dart.core::List::[]}(this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}){(dart.core::int) → dart.core::int*};
+      return this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
     }
     set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last(generic-covariant-impl dart.core::int* value) → void {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
-      this.{dart.core::List::[]=}(this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}, value){(dart.core::int, dart.core::int*) → void};
+      this.{dart.core::List::[]=}(this.{dart.core::List::length}.{dart.core::num::-}(1), value);
     }
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ iterator() → dart.core::Iterator<dart.core::int*>
       return new dart._internal::ListIterator::•<dart.core::int*>(this);
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ elementAt(dart.core::int index) → dart.core::int*
-      return this.{dart.core::List::[]}(index){(dart.core::int) → dart.core::int*};
+      return this.{dart.core::List::[]}(index);
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ followedBy(generic-covariant-impl dart.core::Iterable<dart.core::int*> other) → dart.core::Iterable<dart.core::int*>
       return dart._internal::FollowedByIterable::firstEfficient<dart.core::int*>(this, other);
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ forEach((dart.core::int*) → void action) → void {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        action(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*) → void};
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        action.call(this.{dart.core::List::[]}(i));
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
     }
     @#C3
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ isEmpty() → dart.core::bool
-      return this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0;
+      return this.{dart.core::List::length}.{dart.core::num::==}(0);
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ isNotEmpty() → dart.core::bool
-      return !this.{dart.collection::ListMixin::isEmpty}{dart.core::bool};
+      return !this.{dart.collection::ListMixin::isEmpty};
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ single() → dart.core::int* {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
-      if(this.{dart.core::List::length}{dart.core::int}.{dart.core::num::>}(1){(dart.core::num) → dart.core::bool})
+      if(this.{dart.core::List::length}.{dart.core::num::>}(1))
         throw dart._internal::IterableElementError::tooMany();
-      return this.{dart.core::List::[]}(0){(dart.core::int) → dart.core::int*};
+      return this.{dart.core::List::[]}(0);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ contains(dart.core::Object? element) → dart.core::bool {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        if(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*} =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} element)
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element))
           return true;
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
       return false;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ every((dart.core::int*) → dart.core::bool test) → dart.core::bool {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        if(!test(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*) → dart.core::bool})
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        if(!test.call(this.{dart.core::List::[]}(i)))
           return false;
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
       return true;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ any((dart.core::int*) → dart.core::bool test) → dart.core::bool {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        if(test(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*) → dart.core::bool})
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        if(test.call(this.{dart.core::List::[]}(i)))
           return true;
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
       return false;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ firstWhere((dart.core::int*) → dart.core::bool test, {generic-covariant-impl () →? dart.core::int* orElse = #C2}) → dart.core::int* {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        dart.core::int* element = this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*};
-        if(test(element){(dart.core::int*) → dart.core::bool})
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        dart.core::int* element = this.{dart.core::List::[]}(i);
+        if(test.call(element))
           return element;
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
-      if(!(orElse == null))
-        return orElse{() → dart.core::int*}(){() → dart.core::int*};
+      if(!orElse.{dart.core::Object::==}(null))
+        return orElse{() → dart.core::int*}.call();
       throw dart._internal::IterableElementError::noElement();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ lastWhere((dart.core::int*) → dart.core::bool test, {generic-covariant-impl () →? dart.core::int* orElse = #C2}) → dart.core::int* {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = length.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}; i.{dart.core::num::>=}(0){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}) {
-        dart.core::int* element = this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*};
-        if(test(element){(dart.core::int*) → dart.core::bool})
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = length.{dart.core::num::-}(1); i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+        dart.core::int* element = this.{dart.core::List::[]}(i);
+        if(test.call(element))
           return element;
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
-      if(!(orElse == null))
-        return orElse{() → dart.core::int*}(){() → dart.core::int*};
+      if(!orElse.{dart.core::Object::==}(null))
+        return orElse{() → dart.core::int*}.call();
       throw dart._internal::IterableElementError::noElement();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ singleWhere((dart.core::int*) → dart.core::bool test, {generic-covariant-impl () →? dart.core::int* orElse = #C2}) → dart.core::int* {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
+      dart.core::int length = this.{dart.core::List::length};
       late dart.core::int* match;
       dart.core::bool matchFound = false;
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        dart.core::int* element = this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*};
-        if(test(element){(dart.core::int*) → dart.core::bool}) {
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        dart.core::int* element = this.{dart.core::List::[]}(i);
+        if(test.call(element)) {
           if(matchFound) {
             throw dart._internal::IterableElementError::tooMany();
           }
           matchFound = true;
           match = element;
         }
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
       if(matchFound)
         return match;
-      if(!(orElse == null))
-        return orElse{() → dart.core::int*}(){() → dart.core::int*};
+      if(!orElse.{dart.core::Object::==}(null))
+        return orElse{() → dart.core::int*}.call();
       throw dart._internal::IterableElementError::noElement();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ join([dart.core::String separator = #C4]) → dart.core::String {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         return "";
       dart.core::StringBuffer buffer = let final dart.core::StringBuffer #t1 = new dart.core::StringBuffer::•() in block {
-        #t1.{dart.core::StringBuffer::writeAll}(this, separator){(dart.core::Iterable<dynamic>, [dart.core::String]) → void};
+        #t1.{dart.core::StringBuffer::writeAll}(this, separator);
       } =>#t1;
-      return buffer.{dart.core::StringBuffer::toString}(){() → dart.core::String};
+      return buffer.{dart.core::StringBuffer::toString}();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ where((dart.core::int*) → dart.core::bool test) → dart.core::Iterable<dart.core::int*>
       return new dart._internal::WhereIterable::•<dart.core::int*>(this, test);
@@ -159,13 +159,13 @@
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ expand<T extends dart.core::Object? = dynamic>((dart.core::int*) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::expand::T%> f) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::expand::T%>
       return new dart._internal::ExpandIterable::•<dart.core::int*, main::_WithListMixin&Object&ListMixin::expand::T%>(this, f);
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ reduce(generic-covariant-impl (dart.core::int*, dart.core::int*) → dart.core::int* combine) → dart.core::int* {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      if(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      dart.core::int length = this.{dart.core::List::length};
+      if(length.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
-      dart.core::int* value = this.{dart.core::List::[]}(0){(dart.core::int) → dart.core::int*};
-      for (dart.core::int i = 1; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        value = combine(value, this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*, dart.core::int*) → dart.core::int*};
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+      dart.core::int* value = this.{dart.core::List::[]}(0);
+      for (dart.core::int i = 1; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        value = combine.call(value, this.{dart.core::List::[]}(i));
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
@@ -173,10 +173,10 @@
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fold<T extends dart.core::Object? = dynamic>(main::_WithListMixin&Object&ListMixin::fold::T% initialValue, (main::_WithListMixin&Object&ListMixin::fold::T%, dart.core::int*) → main::_WithListMixin&Object&ListMixin::fold::T% combine) → main::_WithListMixin&Object&ListMixin::fold::T% {
       main::_WithListMixin&Object&ListMixin::fold::T% value = initialValue;
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        value = combine(value, this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(main::_WithListMixin&Object&ListMixin::fold::T%, dart.core::int*) → main::_WithListMixin&Object&ListMixin::fold::T%};
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        value = combine.call(value, this.{dart.core::List::[]}(i));
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
@@ -193,80 +193,80 @@
       return new dart._internal::TakeWhileIterable::•<dart.core::int*>(this, test);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toList({dart.core::bool growable = #C5}) → dart.core::List<dart.core::int*> {
-      if(this.{dart.collection::ListMixin::isEmpty}{dart.core::bool})
+      if(this.{dart.collection::ListMixin::isEmpty})
         return dart.core::List::empty<dart.core::int*>(growable: growable);
-      dart.core::int* first = this.{dart.core::List::[]}(0){(dart.core::int) → dart.core::int*};
-      dart.core::List<dart.core::int*> result = dart.core::List::filled<dart.core::int*>(this.{dart.core::List::length}{dart.core::int}, first, growable: growable);
-      for (dart.core::int i = 1; i.{dart.core::num::<}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        result.{dart.core::List::[]=}(i, this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int, dart.core::int*) → void};
+      dart.core::int* first = this.{dart.core::List::[]}(0);
+      dart.core::List<dart.core::int*> result = dart.core::List::filled<dart.core::int*>(this.{dart.core::List::length}, first, growable: growable);
+      for (dart.core::int i = 1; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+        result.{dart.core::List::[]=}(i, this.{dart.core::List::[]}(i));
       }
       return result;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toSet() → dart.core::Set<dart.core::int*> {
       dart.core::Set<dart.core::int*> result = new dart.collection::_CompactLinkedHashSet::•<dart.core::int*>();
-      for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        result.{dart.core::Set::add}(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*) → dart.core::bool};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+        result.{dart.core::Set::add}(this.{dart.core::List::[]}(i));
       }
       return result;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ add(generic-covariant-impl dart.core::int* element) → void {
-      this.{dart.core::List::[]=}(let final dart.core::int #t2 = this.{dart.core::List::length}{dart.core::int} in let final dart.core::int #t3 = this.{dart.core::List::length} = #t2.{dart.core::num::+}(1){(dart.core::num) → dart.core::int} in #t2, element){(dart.core::int, dart.core::int*) → void};
+      this.{dart.core::List::[]=}(let final dart.core::int #t2 = this.{dart.core::List::length} in let final dart.core::int #t3 = this.{dart.core::List::length} = #t2.{dart.core::num::+}(1) in #t2, element);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ addAll(generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
-      dart.core::int i = this.{dart.core::List::length}{dart.core::int};
+      dart.core::int i = this.{dart.core::List::length};
       {
         dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
         for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
           dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
           {
-            assert(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} i || (throw new dart.core::ConcurrentModificationError::•(this)));
-            this.{dart.collection::ListMixin::add}(element){(dart.core::int*) → void};
-            i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int};
+            assert(this.{dart.core::List::length}.{dart.core::num::==}(i) || (throw new dart.core::ConcurrentModificationError::•(this)));
+            this.{dart.collection::ListMixin::add}(element);
+            i = i.{dart.core::num::+}(1);
           }
         }
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ remove(dart.core::Object? element) → dart.core::bool {
-      for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        if(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*} =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} element) {
-          this.{dart.collection::ListMixin::_closeGap}(i, i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}){(dart.core::int, dart.core::int) → void};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+        if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element)) {
+          this.{dart.collection::ListMixin::_closeGap}(i, i.{dart.core::num::+}(1));
           return true;
         }
       }
       return false;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _closeGap(dart.core::int start, dart.core::int end) → void {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      assert(0.{dart.core::num::<=}(start){(dart.core::num) → dart.core::bool});
-      assert(start.{dart.core::num::<}(end){(dart.core::num) → dart.core::bool});
-      assert(end.{dart.core::num::<=}(length){(dart.core::num) → dart.core::bool});
-      dart.core::int size = end.{dart.core::num::-}(start){(dart.core::num) → dart.core::int};
-      for (dart.core::int i = end; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        this.{dart.core::List::[]=}(i.{dart.core::num::-}(size){(dart.core::num) → dart.core::int}, this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int, dart.core::int*) → void};
+      dart.core::int length = this.{dart.core::List::length};
+      assert(0.{dart.core::num::<=}(start));
+      assert(start.{dart.core::num::<}(end));
+      assert(end.{dart.core::num::<=}(length));
+      dart.core::int size = end.{dart.core::num::-}(start);
+      for (dart.core::int i = end; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        this.{dart.core::List::[]=}(i.{dart.core::num::-}(size), this.{dart.core::List::[]}(i));
       }
-      this.{dart.core::List::length} = length.{dart.core::num::-}(size){(dart.core::num) → dart.core::int};
+      this.{dart.core::List::length} = length.{dart.core::num::-}(size);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeWhere((dart.core::int*) → dart.core::bool test) → void {
-      this.{dart.collection::ListMixin::_filter}(test, false){((dart.core::int*) → dart.core::bool, dart.core::bool) → void};
+      this.{dart.collection::ListMixin::_filter}(test, false);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ retainWhere((dart.core::int*) → dart.core::bool test) → void {
-      this.{dart.collection::ListMixin::_filter}(test, true){((dart.core::int*) → dart.core::bool, dart.core::bool) → void};
+      this.{dart.collection::ListMixin::_filter}(test, true);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _filter((dart.core::int*) → dart.core::bool test, dart.core::bool retainMatching) → void {
       dart.core::List<dart.core::int*> retained = dart.core::_GrowableList::•<dart.core::int*>(0);
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        dart.core::int* element = this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*};
-        if(test(element){(dart.core::int*) → dart.core::bool} =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} retainMatching) {
-          retained.{dart.core::List::add}(element){(dart.core::int*) → void};
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        dart.core::int* element = this.{dart.core::List::[]}(i);
+        if(test.call(element).{dart.core::Object::==}(retainMatching)) {
+          retained.{dart.core::List::add}(element);
         }
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
-      if(!(retained.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
-        this.{dart.collection::ListMixin::setRange}(0, retained.{dart.core::List::length}{dart.core::int}, retained){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
-        this.{dart.core::List::length} = retained.{dart.core::List::length}{dart.core::int};
+      if(!retained.{dart.core::List::length}.{dart.core::num::==}(this.{dart.core::List::length})) {
+        this.{dart.collection::ListMixin::setRange}(0, retained.{dart.core::List::length}, retained);
+        this.{dart.core::List::length} = retained.{dart.core::List::length};
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ clear() → void {
@@ -275,27 +275,27 @@
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ cast<R extends dart.core::Object? = dynamic>() → dart.core::List<main::_WithListMixin&Object&ListMixin::cast::R%>
       return dart.core::List::castFrom<dart.core::int*, main::_WithListMixin&Object&ListMixin::cast::R%>(this);
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeLast() → dart.core::int* {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0) {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0)) {
         throw dart._internal::IterableElementError::noElement();
       }
-      dart.core::int* result = this.{dart.core::List::[]}(this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}){(dart.core::int) → dart.core::int*};
-      this.{dart.core::List::length} = this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(1){(dart.core::num) → dart.core::int};
+      dart.core::int* result = this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
+      this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(1);
       return result;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ sort([(dart.core::int*, dart.core::int*) →? dart.core::int compare = #C2]) → void {
-      dart._internal::Sort::sort<dart.core::int*>(this, let final (dart.core::int*, dart.core::int*) →? dart.core::int #t4 = compare in #t4 == null ?{(dart.core::int*, dart.core::int*) → dart.core::int} #C6 : #t4{(dart.core::int*, dart.core::int*) → dart.core::int});
+      dart._internal::Sort::sort<dart.core::int*>(this, let final (dart.core::int*, dart.core::int*) →? dart.core::int #t4 = compare in #t4.{dart.core::Object::==}(null) ?{(dart.core::int*, dart.core::int*) → dart.core::int} #C6 : #t4{(dart.core::int*, dart.core::int*) → dart.core::int});
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ shuffle([dart.math::Random? random = #C2]) → void {
-      random == null ?{dart.math::Random} random = dart.math::Random::•() : null;
-      if(random{dart.math::Random} == null)
+      random.{dart.core::Object::==}(null) ?{dart.math::Random} random = dart.math::Random::•() : null;
+      if(random{dart.math::Random}.{dart.core::Object::==}(null))
         throw "!";
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      while (length.{dart.core::num::>}(1){(dart.core::num) → dart.core::bool}) {
-        dart.core::int pos = random{dart.math::Random}.{dart.math::Random::nextInt}(length){(dart.core::int) → dart.core::int};
-        length = length.{dart.core::num::-}(1){(dart.core::num) → dart.core::int};
-        dart.core::int* tmp = this.{dart.core::List::[]}(length){(dart.core::int) → dart.core::int*};
-        this.{dart.core::List::[]=}(length, this.{dart.core::List::[]}(pos){(dart.core::int) → dart.core::int*}){(dart.core::int, dart.core::int*) → void};
-        this.{dart.core::List::[]=}(pos, tmp){(dart.core::int, dart.core::int*) → void};
+      dart.core::int length = this.{dart.core::List::length};
+      while (length.{dart.core::num::>}(1)) {
+        dart.core::int pos = random{dart.math::Random}.{dart.math::Random::nextInt}(length);
+        length = length.{dart.core::num::-}(1);
+        dart.core::int* tmp = this.{dart.core::List::[]}(length);
+        this.{dart.core::List::[]=}(length, this.{dart.core::List::[]}(pos));
+        this.{dart.core::List::[]=}(pos, tmp);
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ asMap() → dart.core::Map<dart.core::int, dart.core::int*> {
@@ -304,37 +304,37 @@
     operator /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ +(generic-covariant-impl dart.core::List<dart.core::int*> other) → dart.core::List<dart.core::int*>
       return block {
         final dart.core::List<dart.core::int*> #t5 = dart.core::List::of<dart.core::int*>(this);
-        #t5.{dart.core::List::addAll}(other){(dart.core::Iterable<dart.core::int*>) → void};
+        #t5.{dart.core::List::addAll}{Invariant}(other);
       } =>#t5;
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ sublist(dart.core::int start, [dart.core::int? end = #C2]) → dart.core::List<dart.core::int*> {
-      dart.core::int listLength = this.{dart.core::List::length}{dart.core::int};
-      end == null ?{dart.core::int} end = listLength : null;
-      if(end{dart.core::int} == null)
+      dart.core::int listLength = this.{dart.core::List::length};
+      end.{dart.core::num::==}(null) ?{dart.core::int} end = listLength : null;
+      if(end{dart.core::int}.{dart.core::num::==}(null))
         throw "!";
       dart.core::RangeError::checkValidRange(start, end{dart.core::int}, listLength);
-      return dart.core::List::from<dart.core::int*>(this.{dart.collection::ListMixin::getRange}(start, end{dart.core::int}){(dart.core::int, dart.core::int) → dart.core::Iterable<dart.core::int*>});
+      return dart.core::List::from<dart.core::int*>(this.{dart.collection::ListMixin::getRange}(start, end{dart.core::int}));
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ getRange(dart.core::int start, dart.core::int end) → dart.core::Iterable<dart.core::int*> {
-      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length}{dart.core::int});
+      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
       return new dart._internal::SubListIterable::•<dart.core::int*>(this, start, end);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeRange(dart.core::int start, dart.core::int end) → void {
-      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length}{dart.core::int});
-      if(end.{dart.core::num::>}(start){(dart.core::num) → dart.core::bool}) {
-        this.{dart.collection::ListMixin::_closeGap}(start, end){(dart.core::int, dart.core::int) → void};
+      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
+      if(end.{dart.core::num::>}(start)) {
+        this.{dart.collection::ListMixin::_closeGap}(start, end);
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fillRange(dart.core::int start, dart.core::int end, [generic-covariant-impl dart.core::int? fill = #C2]) → void {
       dart.core::int* value = let dart.core::int? #t6 = fill in #t6.==(null) ?{dart.core::int*} #t6 : #t6{dart.core::int*};
-      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length}{dart.core::int});
-      for (dart.core::int i = start; i.{dart.core::num::<}(end){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        this.{dart.core::List::[]=}(i, value){(dart.core::int, dart.core::int*) → void};
+      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
+      for (dart.core::int i = start; i.{dart.core::num::<}(end); i = i.{dart.core::num::+}(1)) {
+        this.{dart.core::List::[]=}(i, value);
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ setRange(dart.core::int start, dart.core::int end, generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable, [dart.core::int skipCount = #C7]) → void {
-      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length}{dart.core::int});
-      dart.core::int length = end.{dart.core::num::-}(start){(dart.core::num) → dart.core::int};
-      if(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
+      dart.core::int length = end.{dart.core::num::-}(start);
+      if(length.{dart.core::num::==}(0))
         return;
       dart.core::RangeError::checkNotNegative(skipCount, "skipCount");
       dart.core::List<dart.core::int*> otherList;
@@ -344,158 +344,158 @@
         otherStart = skipCount;
       }
       else {
-        otherList = iterable.{dart.core::Iterable::skip}(skipCount){(dart.core::int) → dart.core::Iterable<dart.core::int*>}.{dart.core::Iterable::toList}(growable: false){({growable: dart.core::bool}) → dart.core::List<dart.core::int*>};
+        otherList = iterable.{dart.core::Iterable::skip}(skipCount).{dart.core::Iterable::toList}(growable: false);
         otherStart = 0;
       }
-      if(otherStart.{dart.core::num::+}(length){(dart.core::num) → dart.core::int}.{dart.core::num::>}(otherList.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}) {
+      if(otherStart.{dart.core::num::+}(length).{dart.core::num::>}(otherList.{dart.core::List::length})) {
         throw dart._internal::IterableElementError::tooFew();
       }
-      if(otherStart.{dart.core::num::<}(start){(dart.core::num) → dart.core::bool}) {
-        for (dart.core::int i = length.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}; i.{dart.core::num::>=}(0){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}) {
-          this.{dart.core::List::[]=}(start.{dart.core::num::+}(i){(dart.core::num) → dart.core::int}, otherList.{dart.core::List::[]}(otherStart.{dart.core::num::+}(i){(dart.core::num) → dart.core::int}){(dart.core::int) → dart.core::int*}){(dart.core::int, dart.core::int*) → void};
+      if(otherStart.{dart.core::num::<}(start)) {
+        for (dart.core::int i = length.{dart.core::num::-}(1); i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+          this.{dart.core::List::[]=}(start.{dart.core::num::+}(i), otherList.{dart.core::List::[]}(otherStart.{dart.core::num::+}(i)));
         }
       }
       else {
-        for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-          this.{dart.core::List::[]=}(start.{dart.core::num::+}(i){(dart.core::num) → dart.core::int}, otherList.{dart.core::List::[]}(otherStart.{dart.core::num::+}(i){(dart.core::num) → dart.core::int}){(dart.core::int) → dart.core::int*}){(dart.core::int, dart.core::int*) → void};
+        for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+          this.{dart.core::List::[]=}(start.{dart.core::num::+}(i), otherList.{dart.core::List::[]}(otherStart.{dart.core::num::+}(i)));
         }
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ replaceRange(dart.core::int start, dart.core::int end, generic-covariant-impl dart.core::Iterable<dart.core::int*> newContents) → void {
-      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length}{dart.core::int});
-      if(start =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int}) {
-        this.{dart.collection::ListMixin::addAll}(newContents){(dart.core::Iterable<dart.core::int*>) → void};
+      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
+      if(start.{dart.core::num::==}(this.{dart.core::List::length})) {
+        this.{dart.collection::ListMixin::addAll}(newContents);
         return;
       }
       if(!(newContents is{ForNonNullableByDefault} dart._internal::EfficientLengthIterable<dynamic>)) {
-        newContents = newContents.{dart.core::Iterable::toList}(){({growable: dart.core::bool}) → dart.core::List<dart.core::int*>};
+        newContents = newContents.{dart.core::Iterable::toList}();
       }
-      dart.core::int removeLength = end.{dart.core::num::-}(start){(dart.core::num) → dart.core::int};
-      dart.core::int insertLength = newContents.{dart.core::Iterable::length}{dart.core::int};
-      if(removeLength.{dart.core::num::>=}(insertLength){(dart.core::num) → dart.core::bool}) {
-        dart.core::int insertEnd = start.{dart.core::num::+}(insertLength){(dart.core::num) → dart.core::int};
-        this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
-        if(removeLength.{dart.core::num::>}(insertLength){(dart.core::num) → dart.core::bool}) {
-          this.{dart.collection::ListMixin::_closeGap}(insertEnd, end){(dart.core::int, dart.core::int) → void};
+      dart.core::int removeLength = end.{dart.core::num::-}(start);
+      dart.core::int insertLength = newContents.{dart.core::Iterable::length};
+      if(removeLength.{dart.core::num::>=}(insertLength)) {
+        dart.core::int insertEnd = start.{dart.core::num::+}(insertLength);
+        this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents);
+        if(removeLength.{dart.core::num::>}(insertLength)) {
+          this.{dart.collection::ListMixin::_closeGap}(insertEnd, end);
         }
       }
       else
-        if(end =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int}) {
+        if(end.{dart.core::num::==}(this.{dart.core::List::length})) {
           dart.core::int i = start;
           {
             dart.core::Iterator<dart.core::int*> :sync-for-iterator = newContents.{dart.core::Iterable::iterator};
             for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
               dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
               {
-                if(i.{dart.core::num::<}(end){(dart.core::num) → dart.core::bool}) {
-                  this.{dart.core::List::[]=}(i, element){(dart.core::int, dart.core::int*) → void};
+                if(i.{dart.core::num::<}(end)) {
+                  this.{dart.core::List::[]=}(i, element);
                 }
                 else {
-                  this.{dart.collection::ListMixin::add}(element){(dart.core::int*) → void};
+                  this.{dart.collection::ListMixin::add}(element);
                 }
-                i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int};
+                i = i.{dart.core::num::+}(1);
               }
             }
           }
         }
         else {
-          dart.core::int delta = insertLength.{dart.core::num::-}(removeLength){(dart.core::num) → dart.core::int};
-          dart.core::int oldLength = this.{dart.core::List::length}{dart.core::int};
-          dart.core::int insertEnd = start.{dart.core::num::+}(insertLength){(dart.core::num) → dart.core::int};
-          for (dart.core::int i = oldLength.{dart.core::num::-}(delta){(dart.core::num) → dart.core::int}; i.{dart.core::num::<}(oldLength){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-            this.{dart.collection::ListMixin::add}(this.{dart.core::List::[]}(i.{dart.core::num::>}(0){(dart.core::num) → dart.core::bool} ?{dart.core::int} i : 0){(dart.core::int) → dart.core::int*}){(dart.core::int*) → void};
+          dart.core::int delta = insertLength.{dart.core::num::-}(removeLength);
+          dart.core::int oldLength = this.{dart.core::List::length};
+          dart.core::int insertEnd = start.{dart.core::num::+}(insertLength);
+          for (dart.core::int i = oldLength.{dart.core::num::-}(delta); i.{dart.core::num::<}(oldLength); i = i.{dart.core::num::+}(1)) {
+            this.{dart.collection::ListMixin::add}(this.{dart.core::List::[]}(i.{dart.core::num::>}(0) ?{dart.core::int} i : 0));
           }
-          if(insertEnd.{dart.core::num::<}(oldLength){(dart.core::num) → dart.core::bool}) {
-            this.{dart.collection::ListMixin::setRange}(insertEnd, oldLength, this, end){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
+          if(insertEnd.{dart.core::num::<}(oldLength)) {
+            this.{dart.collection::ListMixin::setRange}(insertEnd, oldLength, this, end);
           }
-          this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
+          this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents);
         }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ indexOf(generic-covariant-impl dart.core::Object? element, [dart.core::int start = #C7]) → dart.core::int {
-      if(start.{dart.core::num::<}(0){(dart.core::num) → dart.core::bool})
+      if(start.{dart.core::num::<}(0))
         start = 0;
-      for (dart.core::int i = start; i.{dart.core::num::<}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        if(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*} =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} element)
+      for (dart.core::int i = start; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+        if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element))
           return i;
       }
-      return 1.{dart.core::int::unary-}(){() → dart.core::int};
+      return 1.{dart.core::int::unary-}();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ indexWhere((dart.core::int*) → dart.core::bool test, [dart.core::int start = #C7]) → dart.core::int {
-      if(start.{dart.core::num::<}(0){(dart.core::num) → dart.core::bool})
+      if(start.{dart.core::num::<}(0))
         start = 0;
-      for (dart.core::int i = start; i.{dart.core::num::<}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        if(test(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*) → dart.core::bool})
+      for (dart.core::int i = start; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+        if(test.call(this.{dart.core::List::[]}(i)))
           return i;
       }
-      return 1.{dart.core::int::unary-}(){() → dart.core::int};
+      return 1.{dart.core::int::unary-}();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ lastIndexOf(generic-covariant-impl dart.core::Object? element, [dart.core::int? start = #C2]) → dart.core::int {
-      if(start == null || start{dart.core::int}.{dart.core::num::>=}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool})
-        start = this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(1){(dart.core::num) → dart.core::int};
-      if(start{dart.core::int} == null)
+      if(start.{dart.core::num::==}(null) || start{dart.core::int}.{dart.core::num::>=}(this.{dart.core::List::length}))
+        start = this.{dart.core::List::length}.{dart.core::num::-}(1);
+      if(start{dart.core::int}.{dart.core::num::==}(null))
         throw "!";
-      for (dart.core::int i = start{dart.core::int}; i.{dart.core::num::>=}(0){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}) {
-        if(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*} =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} element)
+      for (dart.core::int i = start{dart.core::int}; i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+        if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element))
           return i;
       }
-      return 1.{dart.core::int::unary-}(){() → dart.core::int};
+      return 1.{dart.core::int::unary-}();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ lastIndexWhere((dart.core::int*) → dart.core::bool test, [dart.core::int? start = #C2]) → dart.core::int {
-      if(start == null || start{dart.core::int}.{dart.core::num::>=}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool})
-        start = this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(1){(dart.core::num) → dart.core::int};
-      if(start{dart.core::int} == null)
+      if(start.{dart.core::num::==}(null) || start{dart.core::int}.{dart.core::num::>=}(this.{dart.core::List::length}))
+        start = this.{dart.core::List::length}.{dart.core::num::-}(1);
+      if(start{dart.core::int}.{dart.core::num::==}(null))
         throw "!";
-      for (dart.core::int i = start{dart.core::int}; i.{dart.core::num::>=}(0){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}) {
-        if(test(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*) → dart.core::bool})
+      for (dart.core::int i = start{dart.core::int}; i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+        if(test.call(this.{dart.core::List::[]}(i)))
           return i;
       }
-      return 1.{dart.core::int::unary-}(){() → dart.core::int};
+      return 1.{dart.core::int::unary-}();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ insert(dart.core::int index, generic-covariant-impl dart.core::int* element) → void {
       dart._internal::checkNotNullable<dart.core::int>(index, "index");
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
+      dart.core::int length = this.{dart.core::List::length};
       dart.core::RangeError::checkValueInInterval(index, 0, length, "index");
-      this.{dart.collection::ListMixin::add}(element){(dart.core::int*) → void};
-      if(!(index =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} length)) {
-        this.{dart.collection::ListMixin::setRange}(index.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}, length.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}, this, index){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
-        this.{dart.core::List::[]=}(index, element){(dart.core::int, dart.core::int*) → void};
+      this.{dart.collection::ListMixin::add}(element);
+      if(!index.{dart.core::num::==}(length)) {
+        this.{dart.collection::ListMixin::setRange}(index.{dart.core::num::+}(1), length.{dart.core::num::+}(1), this, index);
+        this.{dart.core::List::[]=}(index, element);
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeAt(dart.core::int index) → dart.core::int* {
-      dart.core::int* result = this.{dart.core::List::[]}(index){(dart.core::int) → dart.core::int*};
-      this.{dart.collection::ListMixin::_closeGap}(index, index.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}){(dart.core::int, dart.core::int) → void};
+      dart.core::int* result = this.{dart.core::List::[]}(index);
+      this.{dart.collection::ListMixin::_closeGap}(index, index.{dart.core::num::+}(1));
       return result;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ insertAll(dart.core::int index, generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
-      dart.core::RangeError::checkValueInInterval(index, 0, this.{dart.core::List::length}{dart.core::int}, "index");
-      if(index =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int}) {
-        this.{dart.collection::ListMixin::addAll}(iterable){(dart.core::Iterable<dart.core::int*>) → void};
+      dart.core::RangeError::checkValueInInterval(index, 0, this.{dart.core::List::length}, "index");
+      if(index.{dart.core::num::==}(this.{dart.core::List::length})) {
+        this.{dart.collection::ListMixin::addAll}(iterable);
         return;
       }
       if(!(iterable is{ForNonNullableByDefault} dart._internal::EfficientLengthIterable<dynamic>) || dart.core::identical(iterable, this)) {
-        iterable = iterable.{dart.core::Iterable::toList}(){({growable: dart.core::bool}) → dart.core::List<dart.core::int*>};
+        iterable = iterable.{dart.core::Iterable::toList}();
       }
-      dart.core::int insertionLength = iterable.{dart.core::Iterable::length}{dart.core::int};
-      if(insertionLength =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0) {
+      dart.core::int insertionLength = iterable.{dart.core::Iterable::length};
+      if(insertionLength.{dart.core::num::==}(0)) {
         return;
       }
-      dart.core::int oldLength = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = oldLength.{dart.core::num::-}(insertionLength){(dart.core::num) → dart.core::int}; i.{dart.core::num::<}(oldLength){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        this.{dart.collection::ListMixin::add}(this.{dart.core::List::[]}(i.{dart.core::num::>}(0){(dart.core::num) → dart.core::bool} ?{dart.core::int} i : 0){(dart.core::int) → dart.core::int*}){(dart.core::int*) → void};
+      dart.core::int oldLength = this.{dart.core::List::length};
+      for (dart.core::int i = oldLength.{dart.core::num::-}(insertionLength); i.{dart.core::num::<}(oldLength); i = i.{dart.core::num::+}(1)) {
+        this.{dart.collection::ListMixin::add}(this.{dart.core::List::[]}(i.{dart.core::num::>}(0) ?{dart.core::int} i : 0));
       }
-      if(!(iterable.{dart.core::Iterable::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} insertionLength)) {
-        this.{dart.core::List::length} = this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(insertionLength){(dart.core::num) → dart.core::int};
+      if(!iterable.{dart.core::Iterable::length}.{dart.core::num::==}(insertionLength)) {
+        this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(insertionLength);
         throw new dart.core::ConcurrentModificationError::•(iterable);
       }
-      dart.core::int oldCopyStart = index.{dart.core::num::+}(insertionLength){(dart.core::num) → dart.core::int};
-      if(oldCopyStart.{dart.core::num::<}(oldLength){(dart.core::num) → dart.core::bool}) {
-        this.{dart.collection::ListMixin::setRange}(oldCopyStart, oldLength, this, index){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
+      dart.core::int oldCopyStart = index.{dart.core::num::+}(insertionLength);
+      if(oldCopyStart.{dart.core::num::<}(oldLength)) {
+        this.{dart.collection::ListMixin::setRange}(oldCopyStart, oldLength, this, index);
       }
-      this.{dart.collection::ListMixin::setAll}(index, iterable){(dart.core::int, dart.core::Iterable<dart.core::int*>) → void};
+      this.{dart.collection::ListMixin::setAll}(index, iterable);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ setAll(dart.core::int index, generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
       if(iterable is{ForNonNullableByDefault} dart.core::List<dynamic>) {
-        this.{dart.collection::ListMixin::setRange}(index, index.{dart.core::num::+}(iterable.{dart.core::Iterable::length}{dart.core::int}){(dart.core::num) → dart.core::int}, iterable){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
+        this.{dart.collection::ListMixin::setRange}(index, index.{dart.core::num::+}(iterable.{dart.core::Iterable::length}), iterable);
       }
       else {
         {
@@ -503,7 +503,7 @@
           for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
             dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
             {
-              this.{dart.core::List::[]=}(let final dart.core::int #t7 = index in let final dart.core::int #t8 = index = #t7.{dart.core::num::+}(1){(dart.core::num) → dart.core::int} in #t7, element){(dart.core::int, dart.core::int*) → void};
+              this.{dart.core::List::[]=}(let final dart.core::int #t7 = index in let final dart.core::int #t8 = index = #t7.{dart.core::num::+}(1) in #t7, element);
             }
           }
         }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.2.expect
index 97bf72f..8177839 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.2.expect
@@ -12,143 +12,143 @@
     abstract member-signature operator [](dart.core::int* index) → dart.core::int*; -> dart.core::List::[]
     abstract member-signature operator []=(dart.core::int* index, generic-covariant-impl dart.core::int* value) → void; -> dart.core::List::[]=
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first() → dart.core::int* {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
-      return this.{dart.core::List::[]}(0){(dart.core::int) → dart.core::int*};
+      return this.{dart.core::List::[]}(0);
     }
     set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first(generic-covariant-impl dart.core::int* value) → void {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
-      this.{dart.core::List::[]=}(0, value){(dart.core::int, dart.core::int*) → void};
+      this.{dart.core::List::[]=}(0, value);
     }
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last() → dart.core::int* {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
-      return this.{dart.core::List::[]}(this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}){(dart.core::int) → dart.core::int*};
+      return this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
     }
     set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last(generic-covariant-impl dart.core::int* value) → void {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
-      this.{dart.core::List::[]=}(this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}, value){(dart.core::int, dart.core::int*) → void};
+      this.{dart.core::List::[]=}(this.{dart.core::List::length}.{dart.core::num::-}(1), value);
     }
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ iterator() → dart.core::Iterator<dart.core::int*>
       return new dart._internal::ListIterator::•<dart.core::int*>(this);
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ elementAt(dart.core::int index) → dart.core::int*
-      return this.{dart.core::List::[]}(index){(dart.core::int) → dart.core::int*};
+      return this.{dart.core::List::[]}(index);
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ followedBy(generic-covariant-impl dart.core::Iterable<dart.core::int*> other) → dart.core::Iterable<dart.core::int*>
       return dart._internal::FollowedByIterable::firstEfficient<dart.core::int*>(this, other);
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ forEach((dart.core::int*) → void action) → void {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        action(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*) → void};
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        action.call(this.{dart.core::List::[]}(i));
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
     }
     @#C3
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ isEmpty() → dart.core::bool
-      return this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0;
+      return this.{dart.core::List::length}.{dart.core::num::==}(0);
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ isNotEmpty() → dart.core::bool
-      return !this.{dart.collection::ListMixin::isEmpty}{dart.core::bool};
+      return !this.{dart.collection::ListMixin::isEmpty};
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ single() → dart.core::int* {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
-      if(this.{dart.core::List::length}{dart.core::int}.{dart.core::num::>}(1){(dart.core::num) → dart.core::bool})
+      if(this.{dart.core::List::length}.{dart.core::num::>}(1))
         throw dart._internal::IterableElementError::tooMany();
-      return this.{dart.core::List::[]}(0){(dart.core::int) → dart.core::int*};
+      return this.{dart.core::List::[]}(0);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ contains(dart.core::Object? element) → dart.core::bool {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        if(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*} =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} element)
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element))
           return true;
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
       return false;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ every((dart.core::int*) → dart.core::bool test) → dart.core::bool {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        if(!test(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*) → dart.core::bool})
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        if(!test.call(this.{dart.core::List::[]}(i)))
           return false;
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
       return true;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ any((dart.core::int*) → dart.core::bool test) → dart.core::bool {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        if(test(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*) → dart.core::bool})
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        if(test.call(this.{dart.core::List::[]}(i)))
           return true;
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
       return false;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ firstWhere((dart.core::int*) → dart.core::bool test, {generic-covariant-impl () →? dart.core::int* orElse = #C2}) → dart.core::int* {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        dart.core::int* element = this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*};
-        if(test(element){(dart.core::int*) → dart.core::bool})
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        dart.core::int* element = this.{dart.core::List::[]}(i);
+        if(test.call(element))
           return element;
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
-      if(!(orElse == null))
-        return orElse{() → dart.core::int*}(){() → dart.core::int*};
+      if(!orElse.{dart.core::Object::==}(null))
+        return orElse{() → dart.core::int*}.call();
       throw dart._internal::IterableElementError::noElement();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ lastWhere((dart.core::int*) → dart.core::bool test, {generic-covariant-impl () →? dart.core::int* orElse = #C2}) → dart.core::int* {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = length.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}; i.{dart.core::num::>=}(0){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}) {
-        dart.core::int* element = this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*};
-        if(test(element){(dart.core::int*) → dart.core::bool})
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = length.{dart.core::num::-}(1); i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+        dart.core::int* element = this.{dart.core::List::[]}(i);
+        if(test.call(element))
           return element;
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
-      if(!(orElse == null))
-        return orElse{() → dart.core::int*}(){() → dart.core::int*};
+      if(!orElse.{dart.core::Object::==}(null))
+        return orElse{() → dart.core::int*}.call();
       throw dart._internal::IterableElementError::noElement();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ singleWhere((dart.core::int*) → dart.core::bool test, {generic-covariant-impl () →? dart.core::int* orElse = #C2}) → dart.core::int* {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
+      dart.core::int length = this.{dart.core::List::length};
       late dart.core::int* match;
       dart.core::bool matchFound = false;
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        dart.core::int* element = this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*};
-        if(test(element){(dart.core::int*) → dart.core::bool}) {
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        dart.core::int* element = this.{dart.core::List::[]}(i);
+        if(test.call(element)) {
           if(matchFound) {
             throw dart._internal::IterableElementError::tooMany();
           }
           matchFound = true;
           match = element;
         }
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
       if(matchFound)
         return match;
-      if(!(orElse == null))
-        return orElse{() → dart.core::int*}(){() → dart.core::int*};
+      if(!orElse.{dart.core::Object::==}(null))
+        return orElse{() → dart.core::int*}.call();
       throw dart._internal::IterableElementError::noElement();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ join([dart.core::String separator = #C4]) → dart.core::String {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         return "";
       dart.core::StringBuffer buffer = let final dart.core::StringBuffer #t1 = new dart.core::StringBuffer::•() in block {
-        #t1.{dart.core::StringBuffer::writeAll}(this, separator){(dart.core::Iterable<dynamic>, [dart.core::String]) → void};
+        #t1.{dart.core::StringBuffer::writeAll}(this, separator);
       } =>#t1;
-      return buffer.{dart.core::StringBuffer::toString}(){() → dart.core::String};
+      return buffer.{dart.core::StringBuffer::toString}();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ where((dart.core::int*) → dart.core::bool test) → dart.core::Iterable<dart.core::int*>
       return new dart._internal::WhereIterable::•<dart.core::int*>(this, test);
@@ -159,13 +159,13 @@
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ expand<T extends dart.core::Object? = dynamic>((dart.core::int*) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::expand::T%> f) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::expand::T%>
       return new dart._internal::ExpandIterable::•<dart.core::int*, main::_WithListMixin&Object&ListMixin::expand::T%>(this, f);
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ reduce(generic-covariant-impl (dart.core::int*, dart.core::int*) → dart.core::int* combine) → dart.core::int* {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      if(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      dart.core::int length = this.{dart.core::List::length};
+      if(length.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
-      dart.core::int* value = this.{dart.core::List::[]}(0){(dart.core::int) → dart.core::int*};
-      for (dart.core::int i = 1; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        value = combine(value, this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*, dart.core::int*) → dart.core::int*};
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+      dart.core::int* value = this.{dart.core::List::[]}(0);
+      for (dart.core::int i = 1; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        value = combine.call(value, this.{dart.core::List::[]}(i));
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
@@ -173,10 +173,10 @@
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fold<T extends dart.core::Object? = dynamic>(main::_WithListMixin&Object&ListMixin::fold::T% initialValue, (main::_WithListMixin&Object&ListMixin::fold::T%, dart.core::int*) → main::_WithListMixin&Object&ListMixin::fold::T% combine) → main::_WithListMixin&Object&ListMixin::fold::T% {
       main::_WithListMixin&Object&ListMixin::fold::T% value = initialValue;
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        value = combine(value, this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(main::_WithListMixin&Object&ListMixin::fold::T%, dart.core::int*) → main::_WithListMixin&Object&ListMixin::fold::T%};
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        value = combine.call(value, this.{dart.core::List::[]}(i));
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
@@ -193,80 +193,80 @@
       return new dart._internal::TakeWhileIterable::•<dart.core::int*>(this, test);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toList({dart.core::bool growable = #C5}) → dart.core::List<dart.core::int*> {
-      if(this.{dart.collection::ListMixin::isEmpty}{dart.core::bool})
+      if(this.{dart.collection::ListMixin::isEmpty})
         return dart.core::List::empty<dart.core::int*>(growable: growable);
-      dart.core::int* first = this.{dart.core::List::[]}(0){(dart.core::int) → dart.core::int*};
-      dart.core::List<dart.core::int*> result = dart.core::List::filled<dart.core::int*>(this.{dart.core::List::length}{dart.core::int}, first, growable: growable);
-      for (dart.core::int i = 1; i.{dart.core::num::<}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        result.{dart.core::List::[]=}(i, this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int, dart.core::int*) → void};
+      dart.core::int* first = this.{dart.core::List::[]}(0);
+      dart.core::List<dart.core::int*> result = dart.core::List::filled<dart.core::int*>(this.{dart.core::List::length}, first, growable: growable);
+      for (dart.core::int i = 1; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+        result.{dart.core::List::[]=}(i, this.{dart.core::List::[]}(i));
       }
       return result;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toSet() → dart.core::Set<dart.core::int*> {
       dart.core::Set<dart.core::int*> result = new dart.collection::_CompactLinkedHashSet::•<dart.core::int*>();
-      for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        result.{dart.core::Set::add}(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*) → dart.core::bool};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+        result.{dart.core::Set::add}(this.{dart.core::List::[]}(i));
       }
       return result;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ add(generic-covariant-impl dart.core::int* element) → void {
-      this.{dart.core::List::[]=}(let final dart.core::int #t2 = this.{dart.core::List::length}{dart.core::int} in let final dart.core::int #t3 = this.{dart.core::List::length} = #t2.{dart.core::num::+}(1){(dart.core::num) → dart.core::int} in #t2, element){(dart.core::int, dart.core::int*) → void};
+      this.{dart.core::List::[]=}(let final dart.core::int #t2 = this.{dart.core::List::length} in let final dart.core::int #t3 = this.{dart.core::List::length} = #t2.{dart.core::num::+}(1) in #t2, element);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ addAll(generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
-      dart.core::int i = this.{dart.core::List::length}{dart.core::int};
+      dart.core::int i = this.{dart.core::List::length};
       {
         dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
         for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
           dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
           {
-            assert(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} i || (throw new dart.core::ConcurrentModificationError::•(this)));
-            this.{dart.collection::ListMixin::add}(element){(dart.core::int*) → void};
-            i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int};
+            assert(this.{dart.core::List::length}.{dart.core::num::==}(i) || (throw new dart.core::ConcurrentModificationError::•(this)));
+            this.{dart.collection::ListMixin::add}(element);
+            i = i.{dart.core::num::+}(1);
           }
         }
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ remove(dart.core::Object? element) → dart.core::bool {
-      for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        if(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*} =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} element) {
-          this.{dart.collection::ListMixin::_closeGap}(i, i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}){(dart.core::int, dart.core::int) → void};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+        if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element)) {
+          this.{dart.collection::ListMixin::_closeGap}(i, i.{dart.core::num::+}(1));
           return true;
         }
       }
       return false;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _closeGap(dart.core::int start, dart.core::int end) → void {
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      assert(0.{dart.core::num::<=}(start){(dart.core::num) → dart.core::bool});
-      assert(start.{dart.core::num::<}(end){(dart.core::num) → dart.core::bool});
-      assert(end.{dart.core::num::<=}(length){(dart.core::num) → dart.core::bool});
-      dart.core::int size = end.{dart.core::num::-}(start){(dart.core::num) → dart.core::int};
-      for (dart.core::int i = end; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        this.{dart.core::List::[]=}(i.{dart.core::num::-}(size){(dart.core::num) → dart.core::int}, this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int, dart.core::int*) → void};
+      dart.core::int length = this.{dart.core::List::length};
+      assert(0.{dart.core::num::<=}(start));
+      assert(start.{dart.core::num::<}(end));
+      assert(end.{dart.core::num::<=}(length));
+      dart.core::int size = end.{dart.core::num::-}(start);
+      for (dart.core::int i = end; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        this.{dart.core::List::[]=}(i.{dart.core::num::-}(size), this.{dart.core::List::[]}(i));
       }
-      this.{dart.core::List::length} = length.{dart.core::num::-}(size){(dart.core::num) → dart.core::int};
+      this.{dart.core::List::length} = length.{dart.core::num::-}(size);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeWhere((dart.core::int*) → dart.core::bool test) → void {
-      this.{dart.collection::ListMixin::_filter}(test, false){((dart.core::int*) → dart.core::bool, dart.core::bool) → void};
+      this.{dart.collection::ListMixin::_filter}(test, false);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ retainWhere((dart.core::int*) → dart.core::bool test) → void {
-      this.{dart.collection::ListMixin::_filter}(test, true){((dart.core::int*) → dart.core::bool, dart.core::bool) → void};
+      this.{dart.collection::ListMixin::_filter}(test, true);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _filter((dart.core::int*) → dart.core::bool test, dart.core::bool retainMatching) → void {
       dart.core::List<dart.core::int*> retained = dart.core::_GrowableList::•<dart.core::int*>(0);
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        dart.core::int* element = this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*};
-        if(test(element){(dart.core::int*) → dart.core::bool} =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} retainMatching) {
-          retained.{dart.core::List::add}(element){(dart.core::int*) → void};
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        dart.core::int* element = this.{dart.core::List::[]}(i);
+        if(test.call(element).{dart.core::Object::==}(retainMatching)) {
+          retained.{dart.core::List::add}(element);
         }
-        if(!(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
+        if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
         }
       }
-      if(!(retained.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int})) {
-        this.{dart.collection::ListMixin::setRange}(0, retained.{dart.core::List::length}{dart.core::int}, retained){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
-        this.{dart.core::List::length} = retained.{dart.core::List::length}{dart.core::int};
+      if(!retained.{dart.core::List::length}.{dart.core::num::==}(this.{dart.core::List::length})) {
+        this.{dart.collection::ListMixin::setRange}(0, retained.{dart.core::List::length}, retained);
+        this.{dart.core::List::length} = retained.{dart.core::List::length};
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ clear() → void {
@@ -275,27 +275,27 @@
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ cast<R extends dart.core::Object? = dynamic>() → dart.core::List<main::_WithListMixin&Object&ListMixin::cast::R%>
       return dart.core::List::castFrom<dart.core::int*, main::_WithListMixin&Object&ListMixin::cast::R%>(this);
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeLast() → dart.core::int* {
-      if(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0) {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0)) {
         throw dart._internal::IterableElementError::noElement();
       }
-      dart.core::int* result = this.{dart.core::List::[]}(this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}){(dart.core::int) → dart.core::int*};
-      this.{dart.core::List::length} = this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(1){(dart.core::num) → dart.core::int};
+      dart.core::int* result = this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
+      this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(1);
       return result;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ sort([(dart.core::int*, dart.core::int*) →? dart.core::int compare = #C2]) → void {
-      dart._internal::Sort::sort<dart.core::int*>(this, let final (dart.core::int*, dart.core::int*) →? dart.core::int #t4 = compare in #t4 == null ?{(dart.core::int*, dart.core::int*) → dart.core::int} #C6 : #t4{(dart.core::int*, dart.core::int*) → dart.core::int});
+      dart._internal::Sort::sort<dart.core::int*>(this, let final (dart.core::int*, dart.core::int*) →? dart.core::int #t4 = compare in #t4.{dart.core::Object::==}(null) ?{(dart.core::int*, dart.core::int*) → dart.core::int} #C6 : #t4{(dart.core::int*, dart.core::int*) → dart.core::int});
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ shuffle([dart.math::Random? random = #C2]) → void {
-      random == null ?{dart.math::Random} random = dart.math::Random::•() : null;
-      if(random{dart.math::Random} == null)
+      random.{dart.core::Object::==}(null) ?{dart.math::Random} random = dart.math::Random::•() : null;
+      if(random{dart.math::Random}.{dart.core::Object::==}(null))
         throw "!";
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
-      while (length.{dart.core::num::>}(1){(dart.core::num) → dart.core::bool}) {
-        dart.core::int pos = random{dart.math::Random}.{dart.math::Random::nextInt}(length){(dart.core::int) → dart.core::int};
-        length = length.{dart.core::num::-}(1){(dart.core::num) → dart.core::int};
-        dart.core::int* tmp = this.{dart.core::List::[]}(length){(dart.core::int) → dart.core::int*};
-        this.{dart.core::List::[]=}(length, this.{dart.core::List::[]}(pos){(dart.core::int) → dart.core::int*}){(dart.core::int, dart.core::int*) → void};
-        this.{dart.core::List::[]=}(pos, tmp){(dart.core::int, dart.core::int*) → void};
+      dart.core::int length = this.{dart.core::List::length};
+      while (length.{dart.core::num::>}(1)) {
+        dart.core::int pos = random{dart.math::Random}.{dart.math::Random::nextInt}(length);
+        length = length.{dart.core::num::-}(1);
+        dart.core::int* tmp = this.{dart.core::List::[]}(length);
+        this.{dart.core::List::[]=}(length, this.{dart.core::List::[]}(pos));
+        this.{dart.core::List::[]=}(pos, tmp);
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ asMap() → dart.core::Map<dart.core::int, dart.core::int*> {
@@ -304,37 +304,37 @@
     operator /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ +(generic-covariant-impl dart.core::List<dart.core::int*> other) → dart.core::List<dart.core::int*>
       return block {
         final dart.core::List<dart.core::int*> #t5 = dart.core::List::of<dart.core::int*>(this);
-        #t5.{dart.core::List::addAll}(other){(dart.core::Iterable<dart.core::int*>) → void};
+        #t5.{dart.core::List::addAll}{Invariant}(other);
       } =>#t5;
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ sublist(dart.core::int start, [dart.core::int? end = #C2]) → dart.core::List<dart.core::int*> {
-      dart.core::int listLength = this.{dart.core::List::length}{dart.core::int};
-      end == null ?{dart.core::int} end = listLength : null;
-      if(end{dart.core::int} == null)
+      dart.core::int listLength = this.{dart.core::List::length};
+      end.{dart.core::num::==}(null) ?{dart.core::int} end = listLength : null;
+      if(end{dart.core::int}.{dart.core::num::==}(null))
         throw "!";
       dart.core::RangeError::checkValidRange(start, end{dart.core::int}, listLength);
-      return dart.core::List::from<dart.core::int*>(this.{dart.collection::ListMixin::getRange}(start, end{dart.core::int}){(dart.core::int, dart.core::int) → dart.core::Iterable<dart.core::int*>});
+      return dart.core::List::from<dart.core::int*>(this.{dart.collection::ListMixin::getRange}(start, end{dart.core::int}));
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ getRange(dart.core::int start, dart.core::int end) → dart.core::Iterable<dart.core::int*> {
-      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length}{dart.core::int});
+      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
       return new dart._internal::SubListIterable::•<dart.core::int*>(this, start, end);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeRange(dart.core::int start, dart.core::int end) → void {
-      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length}{dart.core::int});
-      if(end.{dart.core::num::>}(start){(dart.core::num) → dart.core::bool}) {
-        this.{dart.collection::ListMixin::_closeGap}(start, end){(dart.core::int, dart.core::int) → void};
+      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
+      if(end.{dart.core::num::>}(start)) {
+        this.{dart.collection::ListMixin::_closeGap}(start, end);
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fillRange(dart.core::int start, dart.core::int end, [generic-covariant-impl dart.core::int? fill = #C2]) → void {
       dart.core::int* value = let dart.core::int? #t6 = fill in #t6.==(null) ?{dart.core::int*} #t6 : #t6{dart.core::int*};
-      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length}{dart.core::int});
-      for (dart.core::int i = start; i.{dart.core::num::<}(end){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        this.{dart.core::List::[]=}(i, value){(dart.core::int, dart.core::int*) → void};
+      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
+      for (dart.core::int i = start; i.{dart.core::num::<}(end); i = i.{dart.core::num::+}(1)) {
+        this.{dart.core::List::[]=}(i, value);
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ setRange(dart.core::int start, dart.core::int end, generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable, [dart.core::int skipCount = #C7]) → void {
-      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length}{dart.core::int});
-      dart.core::int length = end.{dart.core::num::-}(start){(dart.core::num) → dart.core::int};
-      if(length =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0)
+      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
+      dart.core::int length = end.{dart.core::num::-}(start);
+      if(length.{dart.core::num::==}(0))
         return;
       dart.core::RangeError::checkNotNegative(skipCount, "skipCount");
       dart.core::List<dart.core::int*> otherList;
@@ -344,158 +344,158 @@
         otherStart = skipCount;
       }
       else {
-        otherList = iterable.{dart.core::Iterable::skip}(skipCount){(dart.core::int) → dart.core::Iterable<dart.core::int*>}.{dart.core::Iterable::toList}(growable: false){({growable: dart.core::bool}) → dart.core::List<dart.core::int*>};
+        otherList = iterable.{dart.core::Iterable::skip}(skipCount).{dart.core::Iterable::toList}(growable: false);
         otherStart = 0;
       }
-      if(otherStart.{dart.core::num::+}(length){(dart.core::num) → dart.core::int}.{dart.core::num::>}(otherList.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}) {
+      if(otherStart.{dart.core::num::+}(length).{dart.core::num::>}(otherList.{dart.core::List::length})) {
         throw dart._internal::IterableElementError::tooFew();
       }
-      if(otherStart.{dart.core::num::<}(start){(dart.core::num) → dart.core::bool}) {
-        for (dart.core::int i = length.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}; i.{dart.core::num::>=}(0){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}) {
-          this.{dart.core::List::[]=}(start.{dart.core::num::+}(i){(dart.core::num) → dart.core::int}, otherList.{dart.core::List::[]}(otherStart.{dart.core::num::+}(i){(dart.core::num) → dart.core::int}){(dart.core::int) → dart.core::int*}){(dart.core::int, dart.core::int*) → void};
+      if(otherStart.{dart.core::num::<}(start)) {
+        for (dart.core::int i = length.{dart.core::num::-}(1); i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+          this.{dart.core::List::[]=}(start.{dart.core::num::+}(i), otherList.{dart.core::List::[]}(otherStart.{dart.core::num::+}(i)));
         }
       }
       else {
-        for (dart.core::int i = 0; i.{dart.core::num::<}(length){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-          this.{dart.core::List::[]=}(start.{dart.core::num::+}(i){(dart.core::num) → dart.core::int}, otherList.{dart.core::List::[]}(otherStart.{dart.core::num::+}(i){(dart.core::num) → dart.core::int}){(dart.core::int) → dart.core::int*}){(dart.core::int, dart.core::int*) → void};
+        for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+          this.{dart.core::List::[]=}(start.{dart.core::num::+}(i), otherList.{dart.core::List::[]}(otherStart.{dart.core::num::+}(i)));
         }
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ replaceRange(dart.core::int start, dart.core::int end, generic-covariant-impl dart.core::Iterable<dart.core::int*> newContents) → void {
-      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length}{dart.core::int});
-      if(start =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int}) {
-        this.{dart.collection::ListMixin::addAll}(newContents){(dart.core::Iterable<dart.core::int*>) → void};
+      dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
+      if(start.{dart.core::num::==}(this.{dart.core::List::length})) {
+        this.{dart.collection::ListMixin::addAll}(newContents);
         return;
       }
       if(!(newContents is{ForNonNullableByDefault} dart._internal::EfficientLengthIterable<dynamic>)) {
-        newContents = newContents.{dart.core::Iterable::toList}(){({growable: dart.core::bool}) → dart.core::List<dart.core::int*>};
+        newContents = newContents.{dart.core::Iterable::toList}();
       }
-      dart.core::int removeLength = end.{dart.core::num::-}(start){(dart.core::num) → dart.core::int};
-      dart.core::int insertLength = newContents.{dart.core::Iterable::length}{dart.core::int};
-      if(removeLength.{dart.core::num::>=}(insertLength){(dart.core::num) → dart.core::bool}) {
-        dart.core::int insertEnd = start.{dart.core::num::+}(insertLength){(dart.core::num) → dart.core::int};
-        this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
-        if(removeLength.{dart.core::num::>}(insertLength){(dart.core::num) → dart.core::bool}) {
-          this.{dart.collection::ListMixin::_closeGap}(insertEnd, end){(dart.core::int, dart.core::int) → void};
+      dart.core::int removeLength = end.{dart.core::num::-}(start);
+      dart.core::int insertLength = newContents.{dart.core::Iterable::length};
+      if(removeLength.{dart.core::num::>=}(insertLength)) {
+        dart.core::int insertEnd = start.{dart.core::num::+}(insertLength);
+        this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents);
+        if(removeLength.{dart.core::num::>}(insertLength)) {
+          this.{dart.collection::ListMixin::_closeGap}(insertEnd, end);
         }
       }
       else
-        if(end =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int}) {
+        if(end.{dart.core::num::==}(this.{dart.core::List::length})) {
           dart.core::int i = start;
           {
             dart.core::Iterator<dart.core::int*> :sync-for-iterator = newContents.{dart.core::Iterable::iterator};
             for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
               dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
               {
-                if(i.{dart.core::num::<}(end){(dart.core::num) → dart.core::bool}) {
-                  this.{dart.core::List::[]=}(i, element){(dart.core::int, dart.core::int*) → void};
+                if(i.{dart.core::num::<}(end)) {
+                  this.{dart.core::List::[]=}(i, element);
                 }
                 else {
-                  this.{dart.collection::ListMixin::add}(element){(dart.core::int*) → void};
+                  this.{dart.collection::ListMixin::add}(element);
                 }
-                i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int};
+                i = i.{dart.core::num::+}(1);
               }
             }
           }
         }
         else {
-          dart.core::int delta = insertLength.{dart.core::num::-}(removeLength){(dart.core::num) → dart.core::int};
-          dart.core::int oldLength = this.{dart.core::List::length}{dart.core::int};
-          dart.core::int insertEnd = start.{dart.core::num::+}(insertLength){(dart.core::num) → dart.core::int};
-          for (dart.core::int i = oldLength.{dart.core::num::-}(delta){(dart.core::num) → dart.core::int}; i.{dart.core::num::<}(oldLength){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-            this.{dart.collection::ListMixin::add}(this.{dart.core::List::[]}(i.{dart.core::num::>}(0){(dart.core::num) → dart.core::bool} ?{dart.core::int} i : 0){(dart.core::int) → dart.core::int*}){(dart.core::int*) → void};
+          dart.core::int delta = insertLength.{dart.core::num::-}(removeLength);
+          dart.core::int oldLength = this.{dart.core::List::length};
+          dart.core::int insertEnd = start.{dart.core::num::+}(insertLength);
+          for (dart.core::int i = oldLength.{dart.core::num::-}(delta); i.{dart.core::num::<}(oldLength); i = i.{dart.core::num::+}(1)) {
+            this.{dart.collection::ListMixin::add}(this.{dart.core::List::[]}(i.{dart.core::num::>}(0) ?{dart.core::int} i : 0));
           }
-          if(insertEnd.{dart.core::num::<}(oldLength){(dart.core::num) → dart.core::bool}) {
-            this.{dart.collection::ListMixin::setRange}(insertEnd, oldLength, this, end){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
+          if(insertEnd.{dart.core::num::<}(oldLength)) {
+            this.{dart.collection::ListMixin::setRange}(insertEnd, oldLength, this, end);
           }
-          this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
+          this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents);
         }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ indexOf(generic-covariant-impl dart.core::Object? element, [dart.core::int start = #C7]) → dart.core::int {
-      if(start.{dart.core::num::<}(0){(dart.core::num) → dart.core::bool})
+      if(start.{dart.core::num::<}(0))
         start = 0;
-      for (dart.core::int i = start; i.{dart.core::num::<}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        if(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*} =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} element)
+      for (dart.core::int i = start; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+        if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element))
           return i;
       }
-      return 1.{dart.core::int::unary-}(){() → dart.core::int};
+      return 1.{dart.core::int::unary-}();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ indexWhere((dart.core::int*) → dart.core::bool test, [dart.core::int start = #C7]) → dart.core::int {
-      if(start.{dart.core::num::<}(0){(dart.core::num) → dart.core::bool})
+      if(start.{dart.core::num::<}(0))
         start = 0;
-      for (dart.core::int i = start; i.{dart.core::num::<}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        if(test(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*) → dart.core::bool})
+      for (dart.core::int i = start; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+        if(test.call(this.{dart.core::List::[]}(i)))
           return i;
       }
-      return 1.{dart.core::int::unary-}(){() → dart.core::int};
+      return 1.{dart.core::int::unary-}();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ lastIndexOf(generic-covariant-impl dart.core::Object? element, [dart.core::int? start = #C2]) → dart.core::int {
-      if(start == null || start{dart.core::int}.{dart.core::num::>=}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool})
-        start = this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(1){(dart.core::num) → dart.core::int};
-      if(start{dart.core::int} == null)
+      if(start.{dart.core::num::==}(null) || start{dart.core::int}.{dart.core::num::>=}(this.{dart.core::List::length}))
+        start = this.{dart.core::List::length}.{dart.core::num::-}(1);
+      if(start{dart.core::int}.{dart.core::num::==}(null))
         throw "!";
-      for (dart.core::int i = start{dart.core::int}; i.{dart.core::num::>=}(0){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}) {
-        if(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*} =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} element)
+      for (dart.core::int i = start{dart.core::int}; i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+        if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element))
           return i;
       }
-      return 1.{dart.core::int::unary-}(){() → dart.core::int};
+      return 1.{dart.core::int::unary-}();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ lastIndexWhere((dart.core::int*) → dart.core::bool test, [dart.core::int? start = #C2]) → dart.core::int {
-      if(start == null || start{dart.core::int}.{dart.core::num::>=}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool})
-        start = this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(1){(dart.core::num) → dart.core::int};
-      if(start{dart.core::int} == null)
+      if(start.{dart.core::num::==}(null) || start{dart.core::int}.{dart.core::num::>=}(this.{dart.core::List::length}))
+        start = this.{dart.core::List::length}.{dart.core::num::-}(1);
+      if(start{dart.core::int}.{dart.core::num::==}(null))
         throw "!";
-      for (dart.core::int i = start{dart.core::int}; i.{dart.core::num::>=}(0){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::-}(1){(dart.core::num) → dart.core::int}) {
-        if(test(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int*}){(dart.core::int*) → dart.core::bool})
+      for (dart.core::int i = start{dart.core::int}; i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+        if(test.call(this.{dart.core::List::[]}(i)))
           return i;
       }
-      return 1.{dart.core::int::unary-}(){() → dart.core::int};
+      return 1.{dart.core::int::unary-}();
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ insert(dart.core::int index, generic-covariant-impl dart.core::int* element) → void {
       dart._internal::checkNotNullable<dart.core::int>(index, "index");
-      dart.core::int length = this.{dart.core::List::length}{dart.core::int};
+      dart.core::int length = this.{dart.core::List::length};
       dart.core::RangeError::checkValueInInterval(index, 0, length, "index");
-      this.{dart.collection::ListMixin::add}(element){(dart.core::int*) → void};
-      if(!(index =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} length)) {
-        this.{dart.collection::ListMixin::setRange}(index.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}, length.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}, this, index){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
-        this.{dart.core::List::[]=}(index, element){(dart.core::int, dart.core::int*) → void};
+      this.{dart.collection::ListMixin::add}(element);
+      if(!index.{dart.core::num::==}(length)) {
+        this.{dart.collection::ListMixin::setRange}(index.{dart.core::num::+}(1), length.{dart.core::num::+}(1), this, index);
+        this.{dart.core::List::[]=}(index, element);
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeAt(dart.core::int index) → dart.core::int* {
-      dart.core::int* result = this.{dart.core::List::[]}(index){(dart.core::int) → dart.core::int*};
-      this.{dart.collection::ListMixin::_closeGap}(index, index.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}){(dart.core::int, dart.core::int) → void};
+      dart.core::int* result = this.{dart.core::List::[]}(index);
+      this.{dart.collection::ListMixin::_closeGap}(index, index.{dart.core::num::+}(1));
       return result;
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ insertAll(dart.core::int index, generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
-      dart.core::RangeError::checkValueInInterval(index, 0, this.{dart.core::List::length}{dart.core::int}, "index");
-      if(index =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int}) {
-        this.{dart.collection::ListMixin::addAll}(iterable){(dart.core::Iterable<dart.core::int*>) → void};
+      dart.core::RangeError::checkValueInInterval(index, 0, this.{dart.core::List::length}, "index");
+      if(index.{dart.core::num::==}(this.{dart.core::List::length})) {
+        this.{dart.collection::ListMixin::addAll}(iterable);
         return;
       }
       if(!(iterable is{ForNonNullableByDefault} dart._internal::EfficientLengthIterable<dynamic>) || dart.core::identical(iterable, this)) {
-        iterable = iterable.{dart.core::Iterable::toList}(){({growable: dart.core::bool}) → dart.core::List<dart.core::int*>};
+        iterable = iterable.{dart.core::Iterable::toList}();
       }
-      dart.core::int insertionLength = iterable.{dart.core::Iterable::length}{dart.core::int};
-      if(insertionLength =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} 0) {
+      dart.core::int insertionLength = iterable.{dart.core::Iterable::length};
+      if(insertionLength.{dart.core::num::==}(0)) {
         return;
       }
-      dart.core::int oldLength = this.{dart.core::List::length}{dart.core::int};
-      for (dart.core::int i = oldLength.{dart.core::num::-}(insertionLength){(dart.core::num) → dart.core::int}; i.{dart.core::num::<}(oldLength){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
-        this.{dart.collection::ListMixin::add}(this.{dart.core::List::[]}(i.{dart.core::num::>}(0){(dart.core::num) → dart.core::bool} ?{dart.core::int} i : 0){(dart.core::int) → dart.core::int*}){(dart.core::int*) → void};
+      dart.core::int oldLength = this.{dart.core::List::length};
+      for (dart.core::int i = oldLength.{dart.core::num::-}(insertionLength); i.{dart.core::num::<}(oldLength); i = i.{dart.core::num::+}(1)) {
+        this.{dart.collection::ListMixin::add}(this.{dart.core::List::[]}(i.{dart.core::num::>}(0) ?{dart.core::int} i : 0));
       }
-      if(!(iterable.{dart.core::Iterable::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} insertionLength)) {
-        this.{dart.core::List::length} = this.{dart.core::List::length}{dart.core::int}.{dart.core::num::-}(insertionLength){(dart.core::num) → dart.core::int};
+      if(!iterable.{dart.core::Iterable::length}.{dart.core::num::==}(insertionLength)) {
+        this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(insertionLength);
         throw new dart.core::ConcurrentModificationError::•(iterable);
       }
-      dart.core::int oldCopyStart = index.{dart.core::num::+}(insertionLength){(dart.core::num) → dart.core::int};
-      if(oldCopyStart.{dart.core::num::<}(oldLength){(dart.core::num) → dart.core::bool}) {
-        this.{dart.collection::ListMixin::setRange}(oldCopyStart, oldLength, this, index){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
+      dart.core::int oldCopyStart = index.{dart.core::num::+}(insertionLength);
+      if(oldCopyStart.{dart.core::num::<}(oldLength)) {
+        this.{dart.collection::ListMixin::setRange}(oldCopyStart, oldLength, this, index);
       }
-      this.{dart.collection::ListMixin::setAll}(index, iterable){(dart.core::int, dart.core::Iterable<dart.core::int*>) → void};
+      this.{dart.collection::ListMixin::setAll}(index, iterable);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ setAll(dart.core::int index, generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
       if(iterable is{ForNonNullableByDefault} dart.core::List<dynamic>) {
-        this.{dart.collection::ListMixin::setRange}(index, index.{dart.core::num::+}(iterable.{dart.core::Iterable::length}{dart.core::int}){(dart.core::num) → dart.core::int}, iterable){(dart.core::int, dart.core::int, dart.core::Iterable<dart.core::int*>, [dart.core::int]) → void};
+        this.{dart.collection::ListMixin::setRange}(index, index.{dart.core::num::+}(iterable.{dart.core::Iterable::length}), iterable);
       }
       else {
         {
@@ -503,7 +503,7 @@
           for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
             dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
             {
-              this.{dart.core::List::[]=}(let final dart.core::int #t7 = index in let final dart.core::int #t8 = index = #t7.{dart.core::num::+}(1){(dart.core::num) → dart.core::int} in #t7, element){(dart.core::int, dart.core::int*) → void};
+              this.{dart.core::List::[]=}(let final dart.core::int #t7 = index in let final dart.core::int #t8 = index = #t7.{dart.core::num::+}(1) in #t7, element);
             }
           }
         }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.1.expect
index 7e300e4..1a9acd5 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.1.expect
@@ -23,7 +23,7 @@
       dart.core::print("bar 1");
     }
     method callBar() → void {
-      invalid-expression "org-dartlang-test:///main.dart:9:5: Error: Can't use 'bar' because it is declared more than once.\n    bar();\n    ^"{dynamic}.call();
+      invalid-expression "org-dartlang-test:///main.dart:9:5: Error: Can't use 'bar' because it is declared more than once.\n    bar();\n    ^".call();
     }
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.2.expect
index 7e300e4..1a9acd5 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.2.expect
@@ -23,7 +23,7 @@
       dart.core::print("bar 1");
     }
     method callBar() → void {
-      invalid-expression "org-dartlang-test:///main.dart:9:5: Error: Can't use 'bar' because it is declared more than once.\n    bar();\n    ^"{dynamic}.call();
+      invalid-expression "org-dartlang-test:///main.dart:9:5: Error: Can't use 'bar' because it is declared more than once.\n    bar();\n    ^".call();
     }
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.1.expect
index ab4cf52..481fe3f 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.1.expect
@@ -45,9 +45,9 @@
 
   static method main() → dynamic {
     lib::Coordinate* coordinate = lib::Coordinate::allocate(42.0, 42.0, null);
-    dart.core::print(coordinate.{lib::Coordinate::x}{dart.core::double*});
-    dart.core::print(coordinate.{lib::Coordinate::y}{dart.core::double*});
-    dart.core::print(coordinate.{lib::Coordinate::next}{dart.ffi::Pointer<lib::Coordinate*>*});
+    dart.core::print(coordinate.{lib::Coordinate::x});
+    dart.core::print(coordinate.{lib::Coordinate::y});
+    dart.core::print(coordinate.{lib::Coordinate::next});
   }
 }
 constants  {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.2.expect
index ddd4897..aeab1b0 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.2.expect
@@ -45,9 +45,9 @@
 
   static method main() → dynamic {
     lib::Coordinate* coordinate = lib::Coordinate::allocate(42.0, 42.0, null);
-    dart.core::print(coordinate.{lib::Coordinate::x}{dart.core::double*});
-    dart.core::print(coordinate.{lib::Coordinate::y}{dart.core::double*});
-    dart.core::print(coordinate.{lib::Coordinate::next}{dart.ffi::Pointer<lib::Coordinate*>*});
+    dart.core::print(coordinate.{lib::Coordinate::x});
+    dart.core::print(coordinate.{lib::Coordinate::y});
+    dart.core::print(coordinate.{lib::Coordinate::next});
     dart.core::print("Done!");
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.3.expect b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.3.expect
index 4e662d6..1c8bfde 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.3.expect
@@ -46,9 +46,9 @@
 
   static method main() → dynamic {
     lib::Coordinate* coordinate = lib::Coordinate::allocate(42.0, 42.0, null);
-    dart.core::print(coordinate.{lib::Coordinate::x}{dart.core::double*});
-    dart.core::print(coordinate.{lib::Coordinate::y}{dart.core::double*});
-    dart.core::print(coordinate.{lib::Coordinate::next}{dart.ffi::Pointer<lib::Coordinate*>*});
+    dart.core::print(coordinate.{lib::Coordinate::x});
+    dart.core::print(coordinate.{lib::Coordinate::y});
+    dart.core::print(coordinate.{lib::Coordinate::next});
     dart.core::print("Done!");
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_38.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_38.yaml.world.1.expect
index f8fa7652b..beeaf14 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_38.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_38.yaml.world.1.expect
@@ -41,6 +41,6 @@
     abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
   }
   static method foo(main::X* x) → dart.core::int* {
-    return x is lib::Y* ?{dart.core::int*} x{lib::Y*}.{lib::Y::foo}{dart.core::int*} : null;
+    return x is lib::Y* ?{dart.core::int*} x{lib::Y*}.{lib::Y::foo} : null;
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_38.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_38.yaml.world.2.expect
index f8fa7652b..beeaf14 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_38.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_38.yaml.world.2.expect
@@ -41,6 +41,6 @@
     abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
   }
   static method foo(main::X* x) → dart.core::int* {
-    return x is lib::Y* ?{dart.core::int*} x{lib::Y*}.{lib::Y::foo}{dart.core::int*} : null;
+    return x is lib::Y* ?{dart.core::int*} x{lib::Y*}.{lib::Y::foo} : null;
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_38.yaml.world.3.expect b/pkg/front_end/testcases/incremental/no_outline_change_38.yaml.world.3.expect
index f8fa7652b..beeaf14 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_38.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_38.yaml.world.3.expect
@@ -41,6 +41,6 @@
     abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
   }
   static method foo(main::X* x) → dart.core::int* {
-    return x is lib::Y* ?{dart.core::int*} x{lib::Y*}.{lib::Y::foo}{dart.core::int*} : null;
+    return x is lib::Y* ?{dart.core::int*} x{lib::Y*}.{lib::Y::foo} : null;
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_4.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_4.yaml.world.1.expect
index a91314f..1bcab1b 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_4.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_4.yaml.world.1.expect
@@ -26,7 +26,7 @@
       : super libA::_Bar&Object&Foo::•()
       ;
     method method2() → dynamic {
-      this.{libA::_Bar&Object&Foo::method}(){() →* dynamic};
+      this.{libA::_Bar&Object&Foo::method}();
     }
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_4.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_4.yaml.world.2.expect
index 82880e2..eb76ec5 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_4.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_4.yaml.world.2.expect
@@ -26,7 +26,7 @@
       : super libA::_Bar&Object&Foo::•()
       ;
     method method2() → dynamic {
-      this.{libA::_Bar&Object&Foo::method}(){() →* dynamic};
+      this.{libA::_Bar&Object&Foo::method}();
     }
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.1.expect
index 3fa4b88..83a60c98 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.1.expect
@@ -23,6 +23,6 @@
 
   static method foo() → void {
     dart.core::int* value = lib::libField;
-    lib::libField = value.{dart.core::num::+}(1){(dart.core::num*) →* dart.core::int*};
+    lib::libField = value.{dart.core::num::+}(1);
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.2.expect
index 3fa4b88..83a60c98 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.2.expect
@@ -23,6 +23,6 @@
 
   static method foo() → void {
     dart.core::int* value = lib::libField;
-    lib::libField = value.{dart.core::num::+}(1){(dart.core::num*) →* dart.core::int*};
+    lib::libField = value.{dart.core::num::+}(1);
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.3.expect b/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.3.expect
index 3fa4b88..83a60c98 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.3.expect
@@ -23,6 +23,6 @@
 
   static method foo() → void {
     dart.core::int* value = lib::libField;
-    lib::libField = value.{dart.core::num::+}(1){(dart.core::num*) →* dart.core::int*};
+    lib::libField = value.{dart.core::num::+}(1);
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.4.expect b/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.4.expect
index 3fa4b88..83a60c98 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_43.yaml.world.4.expect
@@ -23,6 +23,6 @@
 
   static method foo() → void {
     dart.core::int* value = lib::libField;
-    lib::libField = value.{dart.core::num::+}(1){(dart.core::num*) →* dart.core::int*};
+    lib::libField = value.{dart.core::num::+}(1);
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect
index 8b39b29..9091dbc 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect
@@ -25,7 +25,7 @@
       ;
     @#C1
     method toString() → dart.core::String* {
-      return "${this.{main::Foo::message}{dynamic}}";
+      return "${this.{main::Foo::message}}";
     }
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect
index e9d1e54..f6720c8 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect
@@ -25,7 +25,7 @@
       ;
     @#C1
     method toString() → dart.core::String* {
-      return "${this.{main::Foo::message}{dynamic}}!!!";
+      return "${this.{main::Foo::message}}!!!";
     }
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.3.expect b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.3.expect
index fa30162..f8e3bb3 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.3.expect
@@ -18,7 +18,7 @@
       ;
     @#C1
     method toString() → dart.core::String* {
-      return "${this.{main::Foo::message}{dynamic}}?!?";
+      return "${this.{main::Foo::message}}?!?";
     }
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.1.expect
index 9cb129d..9514f9c 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.1.expect
@@ -38,7 +38,7 @@
       ;
     @#C2
     method toString() → dart.core::String* {
-      return "${this.{main::Foo::message}{dynamic}}";
+      return "${this.{main::Foo::message}}";
     }
   }
   @#C1
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.2.expect
index 9cb129d..9514f9c 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.2.expect
@@ -38,7 +38,7 @@
       ;
     @#C2
     method toString() → dart.core::String* {
-      return "${this.{main::Foo::message}{dynamic}}";
+      return "${this.{main::Foo::message}}";
     }
   }
   @#C1
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_8.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_8.yaml.world.1.expect
index e12f28a..4871eff 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_8.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_8.yaml.world.1.expect
@@ -22,7 +22,7 @@
   }
   static method main() → dynamic {
     main::Foo* foo = new main::Foo::•();
-    dart.core::print(foo.{main::Foo::x}{dart.core::String*});
+    dart.core::print(foo.{main::Foo::x});
     foo.{main::Foo::x} = "hello";
   }
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_8.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_8.yaml.world.2.expect
index bc1e6cb..6de6baf 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_8.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_8.yaml.world.2.expect
@@ -22,7 +22,7 @@
   }
   static method main() → dynamic {
     main::Foo* foo = new main::Foo::•();
-    dart.core::print(foo.{main::Foo::x}{dart.core::String*});
+    dart.core::print(foo.{main::Foo::x});
     foo.{main::Foo::x} = "hello";
   }
 }
diff --git a/pkg/front_end/testcases/incremental/omit_platform_works_3.yaml.world.3.expect b/pkg/front_end/testcases/incremental/omit_platform_works_3.yaml.world.3.expect
index 6769929..eb9a3f3 100644
--- a/pkg/front_end/testcases/incremental/omit_platform_works_3.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/omit_platform_works_3.yaml.world.3.expect
@@ -4,6 +4,6 @@
   import "org-dartlang-test:///lib.dart";
 
   static method main() → dynamic {
-    dart.core::print(#lib1::lib(){dynamic}.+("!"));
+    dart.core::print(#lib1::lib().+("!"));
   }
 }
diff --git a/pkg/front_end/testcases/incremental/omit_platform_works_3.yaml.world.5.expect b/pkg/front_end/testcases/incremental/omit_platform_works_3.yaml.world.5.expect
index c3d91f8..a4d9f55 100644
--- a/pkg/front_end/testcases/incremental/omit_platform_works_3.yaml.world.5.expect
+++ b/pkg/front_end/testcases/incremental/omit_platform_works_3.yaml.world.5.expect
@@ -10,7 +10,7 @@
   import "org-dartlang-test:///lib.dart";
 
   static method main() → dynamic {
-    dart.core::print(lib::lib(){dynamic}.+("!!"));
+    dart.core::print(lib::lib().+("!!"));
   }
 }
 
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.1.expect b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.1.expect
index a45e928..72e701a 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.1.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.2.expect
index b7a31e0..678510c 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.2.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.3.expect
index 63b9159..1f5c8b7 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.3.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.4.expect b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.4.expect
index a127102..989f313 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.4.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.5.expect b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.5.expect
index 2d91ec1..28f7969 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.5.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.5.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.1.expect b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.1.expect
index a45e928..72e701a 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.1.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.2.expect
index e13f758..14ebe65 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.2.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.3.expect
index ae3bfe7..27a3ce0 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.3.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.1.expect b/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.1.expect
index a45e928..72e701a 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.1.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.2.expect
index 72d51f4..b0e7394 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.2.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.3.expect
index a45e928..72e701a 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.3.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.1.expect b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.1.expect
index a45e928..72e701a 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.1.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.2.expect
index 0fd2abb..d892035 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.2.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.3.expect
index dc713d3..51df21a 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.3.expect
@@ -3,7 +3,7 @@
 
   class Foo extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •(dart.core::int* i) → lib::Foo*
-      : assert(i.{dart.core::num::>}(0){(dart.core::num*) →* dart.core::bool*}), super dart.core::Object::•()
+      : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml.world.1.expect b/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml.world.1.expect
index 71ed943..6c62e4d 100644
--- a/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml.world.1.expect
@@ -4,6 +4,6 @@
   import "dart:typed_data";
 
   static method setUint8List(dart.typed_data::Uint8List* list, dart.core::int* index, dart.core::int* value) → void {
-    list.{dart.core::List::[]=}(index, value){(dart.core::int*, dart.core::int*) →* void};
+    list.{dart.core::List::[]=}(index, value);
   }
 }
diff --git a/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml.world.2.expect b/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml.world.2.expect
index 5cb6157..543a390 100644
--- a/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml.world.2.expect
@@ -4,6 +4,6 @@
   import "dart:typed_data";
 
   static method setInt8List(dart.typed_data::Int8List* list, dart.core::int* index, dart.core::int* value) → void {
-    list.{dart.core::List::[]=}(index, value){(dart.core::int*, dart.core::int*) →* void};
+    list.{dart.core::List::[]=}(index, value);
   }
 }
diff --git a/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml.world.3.expect b/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml.world.3.expect
index 71ed943..6c62e4d 100644
--- a/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml.world.3.expect
@@ -4,6 +4,6 @@
   import "dart:typed_data";
 
   static method setUint8List(dart.typed_data::Uint8List* list, dart.core::int* index, dart.core::int* value) → void {
-    list.{dart.core::List::[]=}(index, value){(dart.core::int*, dart.core::int*) →* void};
+    list.{dart.core::List::[]=}(index, value);
   }
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.expect
index f19d465..4637a4f 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.expect
@@ -9,14 +9,14 @@
 
 static method test() → dynamic {
   () →* asy::Future<core::num*>* f = () → asy::Future<core::num*>* async {
-    if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
+    if(math::Random::•().{math::Random::nextBool}()) {
       return asy::Future::value<core::int*>(1);
     }
     else {
       return asy::Future::value<core::double*>(2.0);
     }
   };
-  asy::Future<core::num*>* g = f(){() →* asy::Future<core::num*>*};
-  asy::Future<core::int*>* h = f(){() →* asy::Future<core::num*>*} as{TypeError} asy::Future<core::int*>*;
+  asy::Future<core::num*>* g = f.call();
+  asy::Future<core::int*>* h = f.call() as{TypeError} asy::Future<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect
index 1f47c71..5bac272 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
       try {
         #L1:
         {
-          if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
+          if(math::Random::•().{math::Random::nextBool}()) {
             :return_value = asy::Future::value<core::int*>(1);
             break #L1;
           }
@@ -41,7 +41,7 @@
     :is_sync = true;
     return :async_future;
   };
-  asy::Future<core::num*>* g = f(){() →* asy::Future<core::num*>*};
-  asy::Future<core::int*>* h = f(){() →* asy::Future<core::num*>*} as{TypeError} asy::Future<core::int*>*;
+  asy::Future<core::num*>* g = f.call();
+  asy::Future<core::int*>* h = f.call() as{TypeError} asy::Future<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.expect
index 419ef81..99817a4 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.expect
@@ -9,14 +9,14 @@
 
 static method test() → dynamic {
   () →* asy::Future<core::num*>* f = () → asy::Future<core::num*>* async {
-    if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
+    if(math::Random::•().{math::Random::nextBool}()) {
       return 1;
     }
     else {
       return 2.0;
     }
   };
-  asy::Future<core::num*>* g = f(){() →* asy::Future<core::num*>*};
-  asy::Future<core::int*>* h = f(){() →* asy::Future<core::num*>*} as{TypeError} asy::Future<core::int*>*;
+  asy::Future<core::num*>* g = f.call();
+  asy::Future<core::int*>* h = f.call() as{TypeError} asy::Future<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect
index 95a5eab..6d91810 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
       try {
         #L1:
         {
-          if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
+          if(math::Random::•().{math::Random::nextBool}()) {
             :return_value = 1;
             break #L1;
           }
@@ -41,7 +41,7 @@
     :is_sync = true;
     return :async_future;
   };
-  asy::Future<core::num*>* g = f(){() →* asy::Future<core::num*>*};
-  asy::Future<core::int*>* h = f(){() →* asy::Future<core::num*>*} as{TypeError} asy::Future<core::int*>*;
+  asy::Future<core::num*>* g = f.call();
+  asy::Future<core::int*>* h = f.call() as{TypeError} asy::Future<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.expect
index 3af04ad..8bc9037 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.expect
@@ -9,14 +9,14 @@
 
 static method test() → dynamic {
   () →* asy::Future<core::num*>* f = () → asy::Future<core::num*>* async {
-    if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
+    if(math::Random::•().{math::Random::nextBool}()) {
       return asy::Future::value<core::int*>(1);
     }
     else {
       return 2.0;
     }
   };
-  asy::Future<core::num*>* g = f(){() →* asy::Future<core::num*>*};
-  asy::Future<core::int*>* h = f(){() →* asy::Future<core::num*>*} as{TypeError} asy::Future<core::int*>*;
+  asy::Future<core::num*>* g = f.call();
+  asy::Future<core::int*>* h = f.call() as{TypeError} asy::Future<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect
index 1ce4583..5cd44bc 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
       try {
         #L1:
         {
-          if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
+          if(math::Random::•().{math::Random::nextBool}()) {
             :return_value = asy::Future::value<core::int*>(1);
             break #L1;
           }
@@ -41,7 +41,7 @@
     :is_sync = true;
     return :async_future;
   };
-  asy::Future<core::num*>* g = f(){() →* asy::Future<core::num*>*};
-  asy::Future<core::int*>* h = f(){() →* asy::Future<core::num*>*} as{TypeError} asy::Future<core::int*>*;
+  asy::Future<core::num*>* g = f.call();
+  asy::Future<core::int*>* h = f.call() as{TypeError} asy::Future<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.expect
index f68b064..056a025 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.expect
@@ -11,7 +11,7 @@
     asy::Stream<core::double*>* s;
     yield* s;
   };
-  asy::Stream<core::num*>* g = f(){() →* asy::Stream<core::num*>*};
-  asy::Stream<core::int*>* h = f(){() →* asy::Stream<core::num*>*} as{TypeError} asy::Stream<core::int*>*;
+  asy::Stream<core::num*>* g = f.call();
+  asy::Stream<core::int*>* h = f.call() as{TypeError} asy::Stream<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.transformed.expect
index 097e9a3..adbe951 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.transformed.expect
@@ -44,7 +44,7 @@
     :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
     return :controller_stream;
   };
-  asy::Stream<core::num*>* g = f(){() →* asy::Stream<core::num*>*};
-  asy::Stream<core::int*>* h = f(){() →* asy::Stream<core::num*>*} as{TypeError} asy::Stream<core::int*>*;
+  asy::Stream<core::num*>* g = f.call();
+  asy::Stream<core::int*>* h = f.call() as{TypeError} asy::Stream<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_basic.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_basic.dart.weak.expect
index add23e8..1d59222 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_basic.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_basic.dart.weak.expect
@@ -5,8 +5,8 @@
 static method test1() → dynamic {
   core::List<core::int*>* o;
   core::Iterable<core::int*>* y = o.{core::Iterable::map}<core::int*>((core::int* x) → core::int* {
-    return x.{core::num::+}(1){(core::num*) →* core::int*};
-  }){((core::int*) →* core::int*) →* core::Iterable<core::int*>*};
+    return x.{core::num::+}(1);
+  });
   core::Iterable<core::int*>* z = y;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_basic.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_basic.dart.weak.transformed.expect
index add23e8..1d59222 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_basic.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_basic.dart.weak.transformed.expect
@@ -5,8 +5,8 @@
 static method test1() → dynamic {
   core::List<core::int*>* o;
   core::Iterable<core::int*>* y = o.{core::Iterable::map}<core::int*>((core::int* x) → core::int* {
-    return x.{core::num::+}(1){(core::num*) →* core::int*};
-  }){((core::int*) →* core::int*) →* core::Iterable<core::int*>*};
+    return x.{core::num::+}(1);
+  });
   core::Iterable<core::int*>* z = y;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_basic_void.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_basic_void.dart.weak.expect
index 446c911..77b16ea 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_basic_void.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_basic_void.dart.weak.expect
@@ -5,7 +5,7 @@
 static method f() → dynamic {
   core::List<core::int*>* o;
   o.{core::Iterable::where}((core::int* i) → core::bool* {
-    return i =={core::num::==}{(core::Object*) →* core::bool*} 0;
-  }){((core::int*) →* core::bool*) →* core::Iterable<core::int*>*};
+    return i.{core::num::==}(0);
+  });
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_basic_void.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_basic_void.dart.weak.transformed.expect
index 446c911..77b16ea 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_basic_void.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_basic_void.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
 static method f() → dynamic {
   core::List<core::int*>* o;
   o.{core::Iterable::where}((core::int* i) → core::bool* {
-    return i =={core::num::==}{(core::Object*) →* core::bool*} 0;
-  }){((core::int*) →* core::bool*) →* core::Iterable<core::int*>*};
+    return i.{core::num::==}(0);
+  });
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.expect
index 729dbe7..1b41da7 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.expect
@@ -9,7 +9,7 @@
   () →* asy::Future<Null>* f = () → asy::Future<Null>* async {
     return null;
   };
-  asy::Future<dynamic>* y = f(){() →* asy::Future<Null>*};
-  asy::Future<core::String*>* z = f(){() →* asy::Future<Null>*};
-  core::String* s = await f(){() →* asy::Future<Null>*};
+  asy::Future<dynamic>* y = f.call();
+  asy::Future<core::String*>* z = f.call();
+  core::String* s = await f.call();
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect
index 1c8b19c..bd417fc 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect
@@ -46,9 +46,9 @@
           :is_sync = true;
           return :async_future;
         };
-        asy::Future<dynamic>* y = f(){() →* asy::Future<Null>*};
-        asy::Future<core::String*>* z = f(){() →* asy::Future<Null>*};
-        [yield] let dynamic #t1 = asy::_awaitHelper(f(){() →* asy::Future<Null>*}, :async_op_then, :async_op_error, :async_op) in null;
+        asy::Future<dynamic>* y = f.call();
+        asy::Future<core::String*>* z = f.call();
+        [yield] let dynamic #t1 = asy::_awaitHelper(f.call(), :async_op_then, :async_op_error, :async_op) in null;
         core::String* s = _in::unsafeCast<Null>(:result);
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.expect
index a85a79c..4f2a9bc 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.expect
@@ -9,7 +9,7 @@
   () →* asy::Stream<Null>* f = () → asy::Stream<Null>* async* {
     yield null;
   };
-  asy::Stream<dynamic>* y = f(){() →* asy::Stream<Null>*};
-  asy::Stream<core::String*>* z = f(){() →* asy::Stream<Null>*};
-  core::String* s = await f(){() →* asy::Stream<Null>*}.{asy::Stream::first}{asy::Future<Null>*};
+  asy::Stream<dynamic>* y = f.call();
+  asy::Stream<core::String*>* z = f.call();
+  core::String* s = await f.call().{asy::Stream::first};
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect
index 236bc34..fa13ae6 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect
@@ -52,9 +52,9 @@
           :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
           return :controller_stream;
         };
-        asy::Stream<dynamic>* y = f(){() →* asy::Stream<Null>*};
-        asy::Stream<core::String*>* z = f(){() →* asy::Stream<Null>*};
-        [yield] let dynamic #t1 = asy::_awaitHelper(f(){() →* asy::Stream<Null>*}.{asy::Stream::first}{asy::Future<Null>*}, :async_op_then, :async_op_error, :async_op) in null;
+        asy::Stream<dynamic>* y = f.call();
+        asy::Stream<core::String*>* z = f.call();
+        [yield] let dynamic #t1 = asy::_awaitHelper(f.call().{asy::Stream::first}, :async_op_then, :async_op_error, :async_op) in null;
         core::String* s = _in::unsafeCast<Null>(:result);
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync.dart.weak.expect
index 4f32533..cdf3f6a 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync.dart.weak.expect
@@ -8,7 +8,7 @@
   (core::Object*) →* Null f = (core::Object* x) → Null {
     return null;
   };
-  core::String* y = f(42){(core::Object*) →* Null};
+  core::String* y = f.call(42);
   f = (core::Object* x) → Null => "hello" as{TypeError} Null;
   self::foo((core::Object* x) → Null {
     return null;
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync.dart.weak.transformed.expect
index 4f32533..cdf3f6a 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
   (core::Object*) →* Null f = (core::Object* x) → Null {
     return null;
   };
-  core::String* y = f(42){(core::Object*) →* Null};
+  core::String* y = f.call(42);
   f = (core::Object* x) → Null => "hello" as{TypeError} Null;
   self::foo((core::Object* x) → Null {
     return null;
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.weak.expect
index 579df9a..58702d6 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.weak.expect
@@ -6,7 +6,7 @@
   () →* core::Iterable<Null>* f = () → core::Iterable<Null>* sync* {
     yield null;
   };
-  core::Iterable<dynamic>* y = f(){() →* core::Iterable<Null>*};
-  core::Iterable<core::String*>* z = f(){() →* core::Iterable<Null>*};
-  core::String* s = f(){() →* core::Iterable<Null>*}.{core::Iterable::first}{Null};
+  core::Iterable<dynamic>* y = f.call();
+  core::Iterable<core::String*>* z = f.call();
+  core::String* s = f.call().{core::Iterable::first};
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.weak.transformed.expect
index 90ecc1f..a73b655 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
     }
     return new core::_SyncIterable::•<Null>(:sync_op_gen);
   };
-  core::Iterable<dynamic>* y = f(){() →* core::Iterable<Null>*};
-  core::Iterable<core::String*>* z = f(){() →* core::Iterable<Null>*};
-  core::String* s = f(){() →* core::Iterable<Null>*}.{core::Iterable::first}{Null};
+  core::Iterable<dynamic>* y = f.call();
+  core::Iterable<core::String*>* z = f.call();
+  core::String* s = f.call().{core::Iterable::first};
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_lub.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_lub.dart.weak.expect
index 314b863..3f5499c 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_lub.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_lub.dart.weak.expect
@@ -8,13 +8,13 @@
 static method test2() → dynamic {
   core::List<core::num*>* o;
   core::Iterable<core::num*>* y = o.{core::Iterable::map}<core::num*>((core::num* x) → core::num* {
-    if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
-      return x.{core::num::toInt}(){() →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
+    if(math::Random::•().{math::Random::nextBool}()) {
+      return x.{core::num::toInt}().{core::num::+}(1);
     }
     else {
-      return x.{core::num::toDouble}(){() →* core::double*};
+      return x.{core::num::toDouble}();
     }
-  }){((core::num*) →* core::num*) →* core::Iterable<core::num*>*};
+  });
   core::Iterable<core::num*>* w = y;
   core::Iterable<core::int*>* z = y as{TypeError} core::Iterable<core::int*>*;
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_lub.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_lub.dart.weak.transformed.expect
index 314b863..3f5499c 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_lub.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_lub.dart.weak.transformed.expect
@@ -8,13 +8,13 @@
 static method test2() → dynamic {
   core::List<core::num*>* o;
   core::Iterable<core::num*>* y = o.{core::Iterable::map}<core::num*>((core::num* x) → core::num* {
-    if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
-      return x.{core::num::toInt}(){() →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
+    if(math::Random::•().{math::Random::nextBool}()) {
+      return x.{core::num::toInt}().{core::num::+}(1);
     }
     else {
-      return x.{core::num::toDouble}(){() →* core::double*};
+      return x.{core::num::toDouble}();
     }
-  }){((core::num*) →* core::num*) →* core::Iterable<core::num*>*};
+  });
   core::Iterable<core::num*>* w = y;
   core::Iterable<core::int*>* z = y as{TypeError} core::Iterable<core::int*>*;
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_nested_lambdas.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_nested_lambdas.dart.weak.expect
index e9db0d8..51f25d2 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_nested_lambdas.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_nested_lambdas.dart.weak.expect
@@ -5,7 +5,7 @@
 static method main() → dynamic {
   () →* (core::int*) →* core::double* f = () → (core::int*) →* core::double* {
     return (core::int* x) → core::double* {
-      return 2.0.{core::double::*}(x){(core::num*) →* core::double*};
+      return 2.0.{core::double::*}(x);
     };
   };
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_nested_lambdas.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_nested_lambdas.dart.weak.transformed.expect
index e9db0d8..51f25d2 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_nested_lambdas.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_nested_lambdas.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
 static method main() → dynamic {
   () →* (core::int*) →* core::double* f = () → (core::int*) →* core::double* {
     return (core::int* x) → core::double* {
-      return 2.0.{core::double::*}(x){(core::num*) →* core::double*};
+      return 2.0.{core::double::*}(x);
     };
   };
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_no_return.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_no_return.dart.weak.expect
index f309388..6a55e9b 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_no_return.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_no_return.dart.weak.expect
@@ -4,7 +4,7 @@
 
 static method test1() → dynamic {
   core::List<core::int*>* o;
-  core::Iterable<Null>* y = o.{core::Iterable::map}<Null>((core::int* x) → Null {}){((core::int*) →* Null) →* core::Iterable<Null>*};
+  core::Iterable<Null>* y = o.{core::Iterable::map}<Null>((core::int* x) → Null {});
   core::Iterable<core::int*>* z = y;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_no_return.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_no_return.dart.weak.transformed.expect
index f309388..6a55e9b 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_no_return.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_no_return.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 
 static method test1() → dynamic {
   core::List<core::int*>* o;
-  core::Iterable<Null>* y = o.{core::Iterable::map}<Null>((core::int* x) → Null {}){((core::int*) →* Null) →* core::Iterable<Null>*};
+  core::Iterable<Null>* y = o.{core::Iterable::map}<Null>((core::int* x) → Null {});
   core::Iterable<core::int*>* z = y;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.weak.expect
index 09f2baf..58f8c43 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.weak.expect
@@ -7,7 +7,7 @@
     yield 1;
     yield*<core::num*>[3, 4.0];
   };
-  core::Iterable<core::num*>* g = f(){() →* core::Iterable<core::num*>*};
-  core::Iterable<core::int*>* h = f(){() →* core::Iterable<core::num*>*} as{TypeError} core::Iterable<core::int*>*;
+  core::Iterable<core::num*>* g = f.call();
+  core::Iterable<core::int*>* h = f.call() as{TypeError} core::Iterable<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.weak.transformed.expect
index 7bdb16ae..f79049f 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
     }
     return new core::_SyncIterable::•<core::num*>(:sync_op_gen);
   };
-  core::Iterable<core::num*>* g = f(){() →* core::Iterable<core::num*>*};
-  core::Iterable<core::int*>* h = f(){() →* core::Iterable<core::num*>*} as{TypeError} core::Iterable<core::int*>*;
+  core::Iterable<core::num*>* g = f.call();
+  core::Iterable<core::int*>* h = f.call() as{TypeError} core::Iterable<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.weak.expect
index 246d431..632c733 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.weak.expect
@@ -5,7 +5,7 @@
 static method f() → dynamic {
   core::List<core::int*>* o;
   o.{core::Iterable::forEach}((core::int* i) → core::int* {
-    return i.{core::num::+}(1){(core::num*) →* core::int*};
-  }){((core::int*) →* void) →* void};
+    return i.{core::num::+}(1);
+  });
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.weak.transformed.expect
index 246d431..632c733 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
 static method f() → dynamic {
   core::List<core::int*>* o;
   o.{core::Iterable::forEach}((core::int* i) → core::int* {
-    return i.{core::num::+}(1){(core::num*) →* core::int*};
-  }){((core::int*) →* void) →* void};
+    return i.{core::num::+}(1);
+  });
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/bug30251.dart.weak.expect b/pkg/front_end/testcases/inference/bug30251.dart.weak.expect
index 0622d1c..8785f07 100644
--- a/pkg/front_end/testcases/inference/bug30251.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/bug30251.dart.weak.expect
@@ -5,7 +5,7 @@
 class C extends core::Object {
   final field dynamic x;
   constructor •(core::int* p) → self::C*
-    : self::C::x = self::f<core::int*>(1.{core::num::+}(p){(core::num*) →* core::int*}), super core::Object::•()
+    : self::C::x = self::f<core::int*>(1.{core::num::+}(p)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/bug30251.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/bug30251.dart.weak.transformed.expect
index 0622d1c..8785f07 100644
--- a/pkg/front_end/testcases/inference/bug30251.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30251.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
 class C extends core::Object {
   final field dynamic x;
   constructor •(core::int* p) → self::C*
-    : self::C::x = self::f<core::int*>(1.{core::num::+}(p){(core::num*) →* core::int*}), super core::Object::•()
+    : self::C::x = self::f<core::int*>(1.{core::num::+}(p)), super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/bug30620.dart.weak.expect b/pkg/front_end/testcases/inference/bug30620.dart.weak.expect
index e2320e0..18f6328 100644
--- a/pkg/front_end/testcases/inference/bug30620.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/bug30620.dart.weak.expect
@@ -8,7 +8,7 @@
     : self::A::foo = foo, super core::Object::•()
     ;
   operator ==(core::Object* other) → core::bool*
-    return other is self::A* && other{self::A*}.{self::A::foo}{core::String*} =={core::String::==}{(core::Object*) →* core::bool*} this.{self::A::foo}{core::String*};
+    return other is self::A* && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo});
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -20,5 +20,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::A::•("hello") =={self::A::==}{(core::Object*) →* core::bool*} new self::A::•("hello"));
+  core::print(new self::A::•("hello").{self::A::==}(new self::A::•("hello")));
 }
diff --git a/pkg/front_end/testcases/inference/bug30620.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/bug30620.dart.weak.transformed.expect
index e2320e0..18f6328 100644
--- a/pkg/front_end/testcases/inference/bug30620.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30620.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
     : self::A::foo = foo, super core::Object::•()
     ;
   operator ==(core::Object* other) → core::bool*
-    return other is self::A* && other{self::A*}.{self::A::foo}{core::String*} =={core::String::==}{(core::Object*) →* core::bool*} this.{self::A::foo}{core::String*};
+    return other is self::A* && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo});
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -20,5 +20,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::A::•("hello") =={self::A::==}{(core::Object*) →* core::bool*} new self::A::•("hello"));
+  core::print(new self::A::•("hello").{self::A::==}(new self::A::•("hello")));
 }
diff --git a/pkg/front_end/testcases/inference/bug30620_b.dart.weak.expect b/pkg/front_end/testcases/inference/bug30620_b.dart.weak.expect
index bc320a3..498d4b8 100644
--- a/pkg/front_end/testcases/inference/bug30620_b.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/bug30620_b.dart.weak.expect
@@ -8,7 +8,7 @@
     : self::A::foo = foo, super core::Object::•()
     ;
   operator ==(core::Object* other) → core::bool*
-    return other is self::A* && other{self::A*}.{self::A::foo}{core::String*} =={core::String::==}{(core::Object*) →* core::bool*} this.{self::A::foo}{core::String*} && other{self::A*}.{self::A::foo}{core::String*} =={core::String::==}{(core::Object*) →* core::bool*} this.{self::A::foo}{core::String*};
+    return other is self::A* && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo}) && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo});
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -20,5 +20,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::A::•("hello") =={self::A::==}{(core::Object*) →* core::bool*} new self::A::•("hello"));
+  core::print(new self::A::•("hello").{self::A::==}(new self::A::•("hello")));
 }
diff --git a/pkg/front_end/testcases/inference/bug30620_b.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/bug30620_b.dart.weak.transformed.expect
index bc320a3..498d4b8 100644
--- a/pkg/front_end/testcases/inference/bug30620_b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30620_b.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
     : self::A::foo = foo, super core::Object::•()
     ;
   operator ==(core::Object* other) → core::bool*
-    return other is self::A* && other{self::A*}.{self::A::foo}{core::String*} =={core::String::==}{(core::Object*) →* core::bool*} this.{self::A::foo}{core::String*} && other{self::A*}.{self::A::foo}{core::String*} =={core::String::==}{(core::Object*) →* core::bool*} this.{self::A::foo}{core::String*};
+    return other is self::A* && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo}) && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo});
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -20,5 +20,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::A::•("hello") =={self::A::==}{(core::Object*) →* core::bool*} new self::A::•("hello"));
+  core::print(new self::A::•("hello").{self::A::==}(new self::A::•("hello")));
 }
diff --git a/pkg/front_end/testcases/inference/bug30620_c.dart.weak.expect b/pkg/front_end/testcases/inference/bug30620_c.dart.weak.expect
index 5a1ff19..1046cf2 100644
--- a/pkg/front_end/testcases/inference/bug30620_c.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/bug30620_c.dart.weak.expect
@@ -8,8 +8,8 @@
     : self::A::foo = foo, super core::Object::•()
     ;
   operator ==(core::Object* other) → core::bool* {
-    if(other is self::A* && other{self::A*}.{self::A::foo}{core::String*} =={core::String::==}{(core::Object*) →* core::bool*} this.{self::A::foo}{core::String*}) {
-      if(other{self::A*}.{self::A::foo}{core::String*} =={core::String::==}{(core::Object*) →* core::bool*} this.{self::A::foo}{core::String*}) {
+    if(other is self::A* && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo})) {
+      if(other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo})) {
       }
     }
     return true;
@@ -25,5 +25,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::A::•("hello") =={self::A::==}{(core::Object*) →* core::bool*} new self::A::•("hello"));
+  core::print(new self::A::•("hello").{self::A::==}(new self::A::•("hello")));
 }
diff --git a/pkg/front_end/testcases/inference/bug30620_c.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/bug30620_c.dart.weak.transformed.expect
index 5a1ff19..1046cf2 100644
--- a/pkg/front_end/testcases/inference/bug30620_c.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30620_c.dart.weak.transformed.expect
@@ -8,8 +8,8 @@
     : self::A::foo = foo, super core::Object::•()
     ;
   operator ==(core::Object* other) → core::bool* {
-    if(other is self::A* && other{self::A*}.{self::A::foo}{core::String*} =={core::String::==}{(core::Object*) →* core::bool*} this.{self::A::foo}{core::String*}) {
-      if(other{self::A*}.{self::A::foo}{core::String*} =={core::String::==}{(core::Object*) →* core::bool*} this.{self::A::foo}{core::String*}) {
+    if(other is self::A* && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo})) {
+      if(other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo})) {
       }
     }
     return true;
@@ -25,5 +25,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::A::•("hello") =={self::A::==}{(core::Object*) →* core::bool*} new self::A::•("hello"));
+  core::print(new self::A::•("hello").{self::A::==}(new self::A::•("hello")));
 }
diff --git a/pkg/front_end/testcases/inference/bug30620_d.dart.weak.expect b/pkg/front_end/testcases/inference/bug30620_d.dart.weak.expect
index bfc06da..f8023a0 100644
--- a/pkg/front_end/testcases/inference/bug30620_d.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/bug30620_d.dart.weak.expect
@@ -3,5 +3,5 @@
 import "dart:core" as core;
 
 static method foo(dynamic obj) → core::String*
-  return obj is core::String* ?{core::String*} obj{core::String*}.{core::String::toUpperCase}(){() →* core::String*} : null;
+  return obj is core::String* ?{core::String*} obj{core::String*}.{core::String::toUpperCase}() : null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/bug30620_d.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/bug30620_d.dart.weak.transformed.expect
index bfc06da..f8023a0 100644
--- a/pkg/front_end/testcases/inference/bug30620_d.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30620_d.dart.weak.transformed.expect
@@ -3,5 +3,5 @@
 import "dart:core" as core;
 
 static method foo(dynamic obj) → core::String*
-  return obj is core::String* ?{core::String*} obj{core::String*}.{core::String::toUpperCase}(){() →* core::String*} : null;
+  return obj is core::String* ?{core::String*} obj{core::String*}.{core::String::toUpperCase}() : null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/bug30624.dart b/pkg/front_end/testcases/inference/bug30624.dart
index c074277..123da0a 100644
--- a/pkg/front_end/testcases/inference/bug30624.dart
+++ b/pkg/front_end/testcases/inference/bug30624.dart
@@ -28,12 +28,12 @@
 
   void barE([int cmp(E a, E b)]) {
     /*@ typeArgs=C::E* */ foo(
-        this, cmp  == null ? _default : cmp);
+        this, cmp /*@target=Object.==*/ == null ? _default : cmp);
   }
 
   void barF([int cmp(E a, E b)]) {
     /*@ typeArgs=C::E* */ foo(
-        this, cmp  != null ? cmp : _default);
+        this, cmp /*@target=Object.==*/ != null ? cmp : _default);
   }
 
   static int _default(a, b) {
diff --git a/pkg/front_end/testcases/inference/bug30624.dart.weak.expect b/pkg/front_end/testcases/inference/bug30624.dart.weak.expect
index 679fdf5..11fea03 100644
--- a/pkg/front_end/testcases/inference/bug30624.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/bug30624.dart.weak.expect
@@ -7,26 +7,26 @@
     : 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);
+    self::foo<self::C::E*>(this, let final (self::C::E*, self::C::E*) →* core::int* #t1 = cmp in #t1.{core::Object::==}(null) ?{(self::C::E*, self::C::E*) →* core::int*} #C2 : #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);
+    self::foo<self::C::E*>(this, let final (self::C::E*, self::C::E*) →* core::int* #t2 = cmp in #t2.{core::Object::==}(null) ?{(self::C::E*, self::C::E*) →* core::int*} (#C2) 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;
-    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);
+    self::foo<self::C::E*>(this, let final (self::C::E*, self::C::E*) →* core::int* #t3 = cmp in #t3.{core::Object::==}(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);
+    self::foo<self::C::E*>(this, let final (self::C::E*, self::C::E*) →* core::int* #t4 = cmp in #t4.{core::Object::==}(null) ?{(self::C::E*, self::C::E*) →* core::int*} #C2 : #t4);
   }
   method barE([(self::C::E*, self::C::E*) →* core::int* cmp = #C1]) → void {
-    self::foo<self::C::E*>(this, cmp == null ?{(self::C::E*, self::C::E*) →* core::int*} #C2 : cmp);
+    self::foo<self::C::E*>(this, cmp.{core::Object::==}(null) ?{(self::C::E*, self::C::E*) →* core::int*} #C2 : cmp);
   }
   method barF([(self::C::E*, self::C::E*) →* core::int* cmp = #C1]) → void {
-    self::foo<self::C::E*>(this, !(cmp == null) ?{(self::C::E*, self::C::E*) →* core::int*} cmp : #C2);
+    self::foo<self::C::E*>(this, !cmp.{core::Object::==}(null) ?{(self::C::E*, self::C::E*) →* core::int*} cmp : #C2);
   }
   static method _default(dynamic a, dynamic b) → core::int* {
-    return 1.{core::int::unary-}(){() →* core::int*};
+    return 1.{core::int::unary-}();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/bug30624.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/bug30624.dart.weak.transformed.expect
index 9449aa55..e985e99 100644
--- a/pkg/front_end/testcases/inference/bug30624.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30624.dart.weak.transformed.expect
@@ -7,26 +7,26 @@
     : 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);
+    self::foo<self::C::E*>(this, let final (self::C::E*, self::C::E*) →* core::int* #t1 = cmp in #t1.{core::Object::==}(null) ?{(self::C::E*, self::C::E*) →* core::int*} #C2 : #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 : #t2);
+    self::foo<self::C::E*>(this, let final (self::C::E*, self::C::E*) →* core::int* #t2 = cmp in #t2.{core::Object::==}(null) ?{(self::C::E*, self::C::E*) →* core::int*} #C2 : #t2);
   }
   method barC([(self::C::E*, self::C::E*) →* core::int* cmp = #C1]) → void {
     (self::C::E*, self::C::E*) →* core::int* v = #C2;
-    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);
+    self::foo<self::C::E*>(this, let final (self::C::E*, self::C::E*) →* core::int* #t3 = cmp in #t3.{core::Object::==}(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);
+    self::foo<self::C::E*>(this, let final (self::C::E*, self::C::E*) →* core::int* #t4 = cmp in #t4.{core::Object::==}(null) ?{(self::C::E*, self::C::E*) →* core::int*} #C2 : #t4);
   }
   method barE([(self::C::E*, self::C::E*) →* core::int* cmp = #C1]) → void {
-    self::foo<self::C::E*>(this, cmp == null ?{(self::C::E*, self::C::E*) →* core::int*} #C2 : cmp);
+    self::foo<self::C::E*>(this, cmp.{core::Object::==}(null) ?{(self::C::E*, self::C::E*) →* core::int*} #C2 : cmp);
   }
   method barF([(self::C::E*, self::C::E*) →* core::int* cmp = #C1]) → void {
-    self::foo<self::C::E*>(this, !(cmp == null) ?{(self::C::E*, self::C::E*) →* core::int*} cmp : #C2);
+    self::foo<self::C::E*>(this, !cmp.{core::Object::==}(null) ?{(self::C::E*, self::C::E*) →* core::int*} cmp : #C2);
   }
   static method _default(dynamic a, dynamic b) → core::int* {
-    return 1.{core::int::unary-}(){() →* core::int*};
+    return 1.{core::int::unary-}();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -48,5 +48,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///bug30624.dart:40:35 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///bug30624.dart:40:35 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 47, effectively constant: 1
diff --git a/pkg/front_end/testcases/inference/bug31132.dart.weak.expect b/pkg/front_end/testcases/inference/bug31132.dart.weak.expect
index 135614f..2aa019a 100644
--- a/pkg/front_end/testcases/inference/bug31132.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/bug31132.dart.weak.expect
@@ -25,6 +25,6 @@
 }
 static method test(self::B* x) → void {
   self::C* y = x is self::C* ?{self::C*} x{self::C*} : new self::C::•();
-  core::print(y.{self::C::z}{dynamic});
+  core::print(y.{self::C::z});
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/bug31132.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/bug31132.dart.weak.transformed.expect
index 135614f..2aa019a 100644
--- a/pkg/front_end/testcases/inference/bug31132.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug31132.dart.weak.transformed.expect
@@ -25,6 +25,6 @@
 }
 static method test(self::B* x) → void {
   self::C* y = x is self::C* ?{self::C*} x{self::C*} : new self::C::•();
-  core::print(y.{self::C::z}{dynamic});
+  core::print(y.{self::C::z});
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/bug31133.dart.weak.expect b/pkg/front_end/testcases/inference/bug31133.dart.weak.expect
index 46ea8a2..006ace8 100644
--- a/pkg/front_end/testcases/inference/bug31133.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/bug31133.dart.weak.expect
@@ -4,13 +4,13 @@
 
 static method test() → void {
   core::int* i = 0;
-  for (final core::int* #t1 = i = i.{core::num::+}(1){(core::num*) →* core::int*}; i.{core::num::<}(10){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (final core::int* #t1 = i = i.{core::num::+}(1); i.{core::num::<}(10); i = i.{core::num::+}(1)) {
   }
-  for (final core::int* #t2 = i = i.{core::num::+}(1){(core::num*) →* core::int*}; i.{core::num::<}(10){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (final core::int* #t2 = i = i.{core::num::+}(1); i.{core::num::<}(10); i = i.{core::num::+}(1)) {
   }
-  for (final core::int* #t3 = i = i.{core::num::-}(1){(core::num*) →* core::int*}; i.{core::num::>=}(0){(core::num*) →* core::bool*}; i = i.{core::num::-}(1){(core::num*) →* core::int*}) {
+  for (final core::int* #t3 = i = i.{core::num::-}(1); i.{core::num::>=}(0); i = i.{core::num::-}(1)) {
   }
-  for (final core::int* #t4 = i = i.{core::num::-}(1){(core::num*) →* core::int*}; i.{core::num::>=}(0){(core::num*) →* core::bool*}; i = i.{core::num::-}(1){(core::num*) →* core::int*}) {
+  for (final core::int* #t4 = i = i.{core::num::-}(1); i.{core::num::>=}(0); i = i.{core::num::-}(1)) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/bug31133.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/bug31133.dart.weak.transformed.expect
index 46ea8a2..006ace8 100644
--- a/pkg/front_end/testcases/inference/bug31133.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug31133.dart.weak.transformed.expect
@@ -4,13 +4,13 @@
 
 static method test() → void {
   core::int* i = 0;
-  for (final core::int* #t1 = i = i.{core::num::+}(1){(core::num*) →* core::int*}; i.{core::num::<}(10){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (final core::int* #t1 = i = i.{core::num::+}(1); i.{core::num::<}(10); i = i.{core::num::+}(1)) {
   }
-  for (final core::int* #t2 = i = i.{core::num::+}(1){(core::num*) →* core::int*}; i.{core::num::<}(10){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (final core::int* #t2 = i = i.{core::num::+}(1); i.{core::num::<}(10); i = i.{core::num::+}(1)) {
   }
-  for (final core::int* #t3 = i = i.{core::num::-}(1){(core::num*) →* core::int*}; i.{core::num::>=}(0){(core::num*) →* core::bool*}; i = i.{core::num::-}(1){(core::num*) →* core::int*}) {
+  for (final core::int* #t3 = i = i.{core::num::-}(1); i.{core::num::>=}(0); i = i.{core::num::-}(1)) {
   }
-  for (final core::int* #t4 = i = i.{core::num::-}(1){(core::num*) →* core::int*}; i.{core::num::>=}(0){(core::num*) →* core::bool*}; i = i.{core::num::-}(1){(core::num*) →* core::int*}) {
+  for (final core::int* #t4 = i = i.{core::num::-}(1); i.{core::num::>=}(0); i = i.{core::num::-}(1)) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/bug31436.dart.weak.expect b/pkg/front_end/testcases/inference/bug31436.dart.weak.expect
index adc6d4a..e1194d4 100644
--- a/pkg/front_end/testcases/inference/bug31436.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/bug31436.dart.weak.expect
@@ -9,7 +9,7 @@
   };
   assert(g is () →* core::List<core::Object*>*);
   assert(!(g is () →* core::List<core::int*>*));
-  g(){() →* core::List<core::Object*>*}.{core::List::add}("hello"){(core::Object*) →* void};
+  g.call().{core::List::add}("hello");
   core::List<core::int*>* l = <core::int*>[3];
   g = () → core::List<core::int*>* {
     return l;
@@ -17,7 +17,7 @@
   assert(g is () →* core::List<core::Object*>*);
   assert(g is () →* core::List<core::int*>*);
   try {
-    g(){() →* core::List<core::Object*>*}.{core::List::add}("hello"){(core::Object*) →* void};
+    g.call().{core::List::add}("hello");
     throw "expected a runtime error";
   }
   on core::TypeError* catch(no-exception-var) {
@@ -29,10 +29,10 @@
   assert(g is () →* core::List<core::Object*>*);
   assert(!(g is () →* core::List<core::int*>*));
   assert(!(g is () →* core::Object*));
-  g(){() →* core::List<core::Object*>*};
+  g.call();
   o = 3;
   try {
-    g(){() →* core::List<core::Object*>*};
+    g.call();
     throw "expected a runtime error";
   }
   on core::TypeError* catch(no-exception-var) {
@@ -43,13 +43,13 @@
   g = () → core::List<core::Object*>* => <core::Object*>[3];
   assert(g is () →* core::List<core::Object*>*);
   assert(!(g is () →* core::List<core::int*>*));
-  g(){() →* core::List<core::Object*>*}.{core::List::add}("hello"){(core::Object*) →* void};
+  g.call().{core::List::add}("hello");
   core::List<core::int*>* l = <core::int*>[3];
   g = () → core::List<core::int*>* => l;
   assert(g is () →* core::List<core::Object*>*);
   assert(g is () →* core::List<core::int*>*);
   try {
-    g(){() →* core::List<core::Object*>*}.{core::List::add}("hello"){(core::Object*) →* void};
+    g.call().{core::List::add}("hello");
     throw "expected a runtime error";
   }
   on core::TypeError* catch(no-exception-var) {
@@ -59,10 +59,10 @@
   assert(g is () →* core::List<core::Object*>*);
   assert(!(g is () →* core::List<core::int*>*));
   assert(!(g is () →* core::Object*));
-  g(){() →* core::List<core::Object*>*};
+  g.call();
   o = 3;
   try {
-    g(){() →* core::List<core::Object*>*};
+    g.call();
     throw "expected a runtime error";
   }
   on core::TypeError* catch(no-exception-var) {
diff --git a/pkg/front_end/testcases/inference/bug31436.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/bug31436.dart.weak.transformed.expect
index 1fb28d3..055a113 100644
--- a/pkg/front_end/testcases/inference/bug31436.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug31436.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
   };
   assert(g is () →* core::List<core::Object*>*);
   assert(!(g is () →* core::List<core::int*>*));
-  g(){() →* core::List<core::Object*>*}.{core::List::add}("hello"){(core::Object*) →* void};
+  g.call().{core::List::add}("hello");
   core::List<core::int*>* l = core::_GrowableList::_literal1<core::int*>(3);
   g = () → core::List<core::int*>* {
     return l;
@@ -17,7 +17,7 @@
   assert(g is () →* core::List<core::Object*>*);
   assert(g is () →* core::List<core::int*>*);
   try {
-    g(){() →* core::List<core::Object*>*}.{core::List::add}("hello"){(core::Object*) →* void};
+    g.call().{core::List::add}("hello");
     throw "expected a runtime error";
   }
   on core::TypeError* catch(no-exception-var) {
@@ -29,10 +29,10 @@
   assert(g is () →* core::List<core::Object*>*);
   assert(!(g is () →* core::List<core::int*>*));
   assert(!(g is () →* core::Object*));
-  g(){() →* core::List<core::Object*>*};
+  g.call();
   o = 3;
   try {
-    g(){() →* core::List<core::Object*>*};
+    g.call();
     throw "expected a runtime error";
   }
   on core::TypeError* catch(no-exception-var) {
@@ -43,13 +43,13 @@
   g = () → core::List<core::Object*>* => core::_GrowableList::_literal1<core::Object*>(3);
   assert(g is () →* core::List<core::Object*>*);
   assert(!(g is () →* core::List<core::int*>*));
-  g(){() →* core::List<core::Object*>*}.{core::List::add}("hello"){(core::Object*) →* void};
+  g.call().{core::List::add}("hello");
   core::List<core::int*>* l = core::_GrowableList::_literal1<core::int*>(3);
   g = () → core::List<core::int*>* => l;
   assert(g is () →* core::List<core::Object*>*);
   assert(g is () →* core::List<core::int*>*);
   try {
-    g(){() →* core::List<core::Object*>*}.{core::List::add}("hello"){(core::Object*) →* void};
+    g.call().{core::List::add}("hello");
     throw "expected a runtime error";
   }
   on core::TypeError* catch(no-exception-var) {
@@ -59,10 +59,10 @@
   assert(g is () →* core::List<core::Object*>*);
   assert(!(g is () →* core::List<core::int*>*));
   assert(!(g is () →* core::Object*));
-  g(){() →* core::List<core::Object*>*};
+  g.call();
   o = 3;
   try {
-    g(){() →* core::List<core::Object*>*};
+    g.call();
     throw "expected a runtime error";
   }
   on core::TypeError* catch(no-exception-var) {
diff --git a/pkg/front_end/testcases/inference/bug32291.dart.weak.expect b/pkg/front_end/testcases/inference/bug32291.dart.weak.expect
index b473c4f..b8775a7 100644
--- a/pkg/front_end/testcases/inference/bug32291.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/bug32291.dart.weak.expect
@@ -4,7 +4,7 @@
 
 static method main() → void {
   core::List<core::List<core::String*>*>* l = <core::List<core::String*>*>[<core::String*>["hi", "world"]];
-  core::Iterable<core::List<core::String*>*>* i1 = l.{core::Iterable::map}<core::List<core::String*>*>((core::List<core::String*>* ll) → core::List<core::String*>* => let final core::List<core::String*>* #t1 = ll in #t1 == null ?{core::List<core::String*>*} <core::String*>[] : #t1){((core::List<core::String*>*) →* core::List<core::String*>*) →* core::Iterable<core::List<core::String*>*>*};
-  core::Iterable<core::int*>* i2 = i1.{core::Iterable::map}<core::int*>((core::List<core::String*>* l) → core::int* => l.{core::List::length}{core::int*}){((core::List<core::String*>*) →* core::int*) →* core::Iterable<core::int*>*};
+  core::Iterable<core::List<core::String*>*>* i1 = l.{core::Iterable::map}<core::List<core::String*>*>((core::List<core::String*>* ll) → core::List<core::String*>* => let final core::List<core::String*>* #t1 = ll in #t1.{core::List::==}(null) ?{core::List<core::String*>*} <core::String*>[] : #t1);
+  core::Iterable<core::int*>* i2 = i1.{core::Iterable::map}<core::int*>((core::List<core::String*>* l) → core::int* => l.{core::List::length});
   core::print(i2);
 }
diff --git a/pkg/front_end/testcases/inference/bug32291.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/bug32291.dart.weak.transformed.expect
index 6d8c4fe..1af625e 100644
--- a/pkg/front_end/testcases/inference/bug32291.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug32291.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 
 static method main() → void {
   core::List<core::List<core::String*>*>* l = core::_GrowableList::_literal1<core::List<core::String*>*>(core::_GrowableList::_literal2<core::String*>("hi", "world"));
-  core::Iterable<core::List<core::String*>*>* i1 = l.{core::Iterable::map}<core::List<core::String*>*>((core::List<core::String*>* ll) → core::List<core::String*>* => let final core::List<core::String*>* #t1 = ll in #t1 == null ?{core::List<core::String*>*} core::_GrowableList::•<core::String*>(0) : #t1){((core::List<core::String*>*) →* core::List<core::String*>*) →* core::Iterable<core::List<core::String*>*>*};
-  core::Iterable<core::int*>* i2 = i1.{core::Iterable::map}<core::int*>((core::List<core::String*>* l) → core::int* => l.{core::List::length}{core::int*}){((core::List<core::String*>*) →* core::int*) →* core::Iterable<core::int*>*};
+  core::Iterable<core::List<core::String*>*>* i1 = l.{core::Iterable::map}<core::List<core::String*>*>((core::List<core::String*>* ll) → core::List<core::String*>* => let final core::List<core::String*>* #t1 = ll in #t1.{core::List::==}(null) ?{core::List<core::String*>*} core::_GrowableList::•<core::String*>(0) : #t1);
+  core::Iterable<core::int*>* i2 = i1.{core::Iterable::map}<core::int*>((core::List<core::String*>* l) → core::int* => l.{core::List::length});
   core::print(i2);
 }
diff --git a/pkg/front_end/testcases/inference/bug33324.dart.weak.expect b/pkg/front_end/testcases/inference/bug33324.dart.weak.expect
index 318df8a..74b0bb6 100644
--- a/pkg/front_end/testcases/inference/bug33324.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/bug33324.dart.weak.expect
@@ -4,8 +4,8 @@
 
 static method foo() → core::int* {
   core::Function* f = (dynamic x) → dynamic => x;
-  core::List<dynamic>* l = <core::String*>["bar"].{core::Iterable::map}<dynamic>(f as{TypeError} (core::String*) →* dynamic){((core::String*) →* dynamic) →* core::Iterable<dynamic>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<dynamic>*};
-  l.{core::List::add}(42){(dynamic) →* void};
-  return l.{core::Iterable::first}{dynamic}{dynamic}.length as{TypeError,ForDynamic} core::int*;
+  core::List<dynamic>* l = <core::String*>["bar"].{core::Iterable::map}<dynamic>(f as{TypeError} (core::String*) →* dynamic).{core::Iterable::toList}();
+  l.{core::List::add}(42);
+  return l.{core::Iterable::first}.length as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/bug33324.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/bug33324.dart.weak.transformed.expect
index 7e3530b..f5164b7 100644
--- a/pkg/front_end/testcases/inference/bug33324.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug33324.dart.weak.transformed.expect
@@ -4,8 +4,8 @@
 
 static method foo() → core::int* {
   core::Function* f = (dynamic x) → dynamic => x;
-  core::List<dynamic>* l = core::_GrowableList::_literal1<core::String*>("bar").{core::Iterable::map}<dynamic>(f as{TypeError} (core::String*) →* dynamic){((core::String*) →* dynamic) →* core::Iterable<dynamic>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<dynamic>*};
-  l.{core::List::add}(42){(dynamic) →* void};
-  return l.{core::Iterable::first}{dynamic}{dynamic}.length as{TypeError,ForDynamic} core::int*;
+  core::List<dynamic>* l = core::_GrowableList::_literal1<core::String*>("bar").{core::Iterable::map}<dynamic>(f as{TypeError} (core::String*) →* dynamic).{core::Iterable::toList}();
+  l.{core::List::add}(42);
+  return l.{core::Iterable::first}.length as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/call_corner_cases.dart.weak.expect b/pkg/front_end/testcases/inference/call_corner_cases.dart.weak.expect
index bc9a2a22..c9fa5d1 100644
--- a/pkg/front_end/testcases/inference/call_corner_cases.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/call_corner_cases.dart.weak.expect
@@ -58,10 +58,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test() → dynamic {
-  core::int* callA = new self::A::•().{self::A::call}(){() →* core::int*};
-  core::int* callFieldA = new self::D::•().{self::D::fieldA}{self::A*}.{self::A::call}(){() →* core::int*};
-  core::int* callGetA = new self::D::•().{self::D::getA}{self::A*}.{self::A::call}(){() →* core::int*};
-  core::int* callFieldB = new self::D::•().{self::D::fieldB}{self::B*}.{self::B::call}{self::A*}.{self::A::call}(){() →* core::int*};
-  core::int* callGetB = new self::D::•().{self::D::getB}{self::B*}.{self::B::call}{self::A*}.{self::A::call}(){() →* core::int*};
+  core::int* callA = new self::A::•().{self::A::call}();
+  core::int* callFieldA = new self::D::•().{self::D::fieldA}.{self::A::call}();
+  core::int* callGetA = new self::D::•().{self::D::getA}.{self::A::call}();
+  core::int* callFieldB = new self::D::•().{self::D::fieldB}.{self::B::call}.{self::A::call}();
+  core::int* callGetB = new self::D::•().{self::D::getB}.{self::B::call}.{self::A::call}();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/call_corner_cases.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/call_corner_cases.dart.weak.transformed.expect
index bc9a2a22..c9fa5d1 100644
--- a/pkg/front_end/testcases/inference/call_corner_cases.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/call_corner_cases.dart.weak.transformed.expect
@@ -58,10 +58,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test() → dynamic {
-  core::int* callA = new self::A::•().{self::A::call}(){() →* core::int*};
-  core::int* callFieldA = new self::D::•().{self::D::fieldA}{self::A*}.{self::A::call}(){() →* core::int*};
-  core::int* callGetA = new self::D::•().{self::D::getA}{self::A*}.{self::A::call}(){() →* core::int*};
-  core::int* callFieldB = new self::D::•().{self::D::fieldB}{self::B*}.{self::B::call}{self::A*}.{self::A::call}(){() →* core::int*};
-  core::int* callGetB = new self::D::•().{self::D::getB}{self::B*}.{self::B::call}{self::A*}.{self::A::call}(){() →* core::int*};
+  core::int* callA = new self::A::•().{self::A::call}();
+  core::int* callFieldA = new self::D::•().{self::D::fieldA}.{self::A::call}();
+  core::int* callGetA = new self::D::•().{self::D::getA}.{self::A::call}();
+  core::int* callFieldB = new self::D::•().{self::D::fieldB}.{self::B::call}.{self::A::call}();
+  core::int* callGetB = new self::D::•().{self::D::getB}.{self::B::call}.{self::A::call}();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/callable_generic_class.dart.weak.expect b/pkg/front_end/testcases/inference/callable_generic_class.dart.weak.expect
index 4b28fa6..e8c4310 100644
--- a/pkg/front_end/testcases/inference/callable_generic_class.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/callable_generic_class.dart.weak.expect
@@ -51,9 +51,9 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void {
-  let final self::FooActions* #t1 = new self::FooActions::•() in let final self::Bar* #t2 = new self::Bar::•() in #t1.{self::FooActions::foo}{self::ActionDispatcher<self::Bar*>*}.{self::ActionDispatcher::call}(#t2){([self::Bar*]) →* void};
-  new self::FooActions::•().{self::FooActions::foo}{self::ActionDispatcher<self::Bar*>*}.{self::ActionDispatcher::call}(new self::Bar::•()){([self::Bar*]) →* void};
-  new self::FooActions::•().{self::FooActions::foo}{self::ActionDispatcher<self::Bar*>*}.{self::ActionDispatcher::call}(new self::Bar::•()){([self::Bar*]) →* void};
+  let final self::FooActions* #t1 = new self::FooActions::•() in let final self::Bar* #t2 = new self::Bar::•() in #t1.{self::FooActions::foo}.{self::ActionDispatcher::call}(#t2);
+  new self::FooActions::•().{self::FooActions::foo}.{self::ActionDispatcher::call}(new self::Bar::•());
+  new self::FooActions::•().{self::FooActions::foo}.{self::ActionDispatcher::call}(new self::Bar::•());
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/callable_generic_class.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/callable_generic_class.dart.weak.transformed.expect
index 4b28fa6..e8c4310 100644
--- a/pkg/front_end/testcases/inference/callable_generic_class.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/callable_generic_class.dart.weak.transformed.expect
@@ -51,9 +51,9 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void {
-  let final self::FooActions* #t1 = new self::FooActions::•() in let final self::Bar* #t2 = new self::Bar::•() in #t1.{self::FooActions::foo}{self::ActionDispatcher<self::Bar*>*}.{self::ActionDispatcher::call}(#t2){([self::Bar*]) →* void};
-  new self::FooActions::•().{self::FooActions::foo}{self::ActionDispatcher<self::Bar*>*}.{self::ActionDispatcher::call}(new self::Bar::•()){([self::Bar*]) →* void};
-  new self::FooActions::•().{self::FooActions::foo}{self::ActionDispatcher<self::Bar*>*}.{self::ActionDispatcher::call}(new self::Bar::•()){([self::Bar*]) →* void};
+  let final self::FooActions* #t1 = new self::FooActions::•() in let final self::Bar* #t2 = new self::Bar::•() in #t1.{self::FooActions::foo}.{self::ActionDispatcher::call}(#t2);
+  new self::FooActions::•().{self::FooActions::foo}.{self::ActionDispatcher::call}(new self::Bar::•());
+  new self::FooActions::•().{self::FooActions::foo}.{self::ActionDispatcher::call}(new self::Bar::•());
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/complex_predecrement.dart.weak.expect b/pkg/front_end/testcases/inference/complex_predecrement.dart.weak.expect
index a27510a..7008291 100644
--- a/pkg/front_end/testcases/inference/complex_predecrement.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/complex_predecrement.dart.weak.expect
@@ -4,5 +4,5 @@
 
 static method main() → dynamic {
   core::List<core::int*>* foo = <core::int*>[1, 2, 3];
-  core::print(let final core::List<core::int*>* #t1 = foo in let final core::int* #t2 = 0 in let final core::int* #t3 = #t1.{core::List::[]}(#t2){(core::int*) →* core::int*}.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int*, core::int*) →* void} in #t3);
+  core::print(let final core::List<core::int*>* #t1 = foo in let final core::int* #t2 = 0 in let final core::int* #t3 = #t1.{core::List::[]}(#t2).{core::num::-}(1) in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3) in #t3);
 }
diff --git a/pkg/front_end/testcases/inference/complex_predecrement.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/complex_predecrement.dart.weak.transformed.expect
index a3e1f12..58d23b5 100644
--- a/pkg/front_end/testcases/inference/complex_predecrement.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/complex_predecrement.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 
 static method main() → dynamic {
   core::List<core::int*>* foo = core::_GrowableList::_literal3<core::int*>(1, 2, 3);
-  core::print(let final core::List<core::int*>* #t1 = foo in let final core::int* #t2 = 0 in let final core::int* #t3 = #t1.{core::List::[]}(#t2){(core::int*) →* core::int*}.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int*, core::int*) →* void} in #t3);
+  core::print(let final core::List<core::int*>* #t1 = foo in let final core::int* #t2 = 0 in let final core::int* #t3 = #t1.{core::List::[]}(#t2).{core::num::-}(1) in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3) in #t3);
 }
 
 
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.weak.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.weak.expect
index 048cb94..1a362f1 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.weak.expect
@@ -8,7 +8,7 @@
     : self::C::t = t, super core::Object::•()
     ;
   constructor named(core::List<self::C::T*>* t) → self::C<self::C::T*>*
-    : this self::C::•(t.{core::List::[]}(0){(core::int*) →* self::C::T*})
+    : this self::C::•(t.{core::List::[]}(0))
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.weak.transformed.expect
index 832cd3f..fa86723 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
     : self::C::t = t, super core::Object::•()
     ;
   constructor named(core::List<self::C::T*>* t) → self::C<self::C::T*>*
-    : this self::C::•(t.{core::List::[]}(0){(core::int*) →* self::C::T*})
+    : this self::C::•(t.{core::List::[]}(0))
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.weak.expect b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.weak.expect
index 4793404..556e0d0 100644
--- a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.weak.expect
@@ -48,7 +48,7 @@
     : self::Pair::u = null, self::Pair::t = null, super core::Object::•()
     ;
   get reversed() → self::Pair<self::Pair::U*, self::Pair::T*>*
-    return new self::Pair::•<self::Pair::U*, self::Pair::T*>(this.{self::Pair::u}{self::Pair::U*}, this.{self::Pair::t}{self::Pair::T*});
+    return new self::Pair::•<self::Pair::U*, self::Pair::T*>(this.{self::Pair::u}, this.{self::Pair::t});
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.weak.transformed.expect
index 4793404..556e0d0 100644
--- a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.weak.transformed.expect
@@ -48,7 +48,7 @@
     : self::Pair::u = null, self::Pair::t = null, super core::Object::•()
     ;
   get reversed() → self::Pair<self::Pair::U*, self::Pair::T*>*
-    return new self::Pair::•<self::Pair::U*, self::Pair::T*>(this.{self::Pair::u}{self::Pair::U*}, this.{self::Pair::t}{self::Pair::T*});
+    return new self::Pair::•<self::Pair::U*, self::Pair::T*>(this.{self::Pair::u}, this.{self::Pair::t});
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.weak.expect b/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.weak.expect
index 2fddef8..e71956d 100644
--- a/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.weak.expect
@@ -9,7 +9,7 @@
     : self::Pair::t = t, self::Pair::u = u, super core::Object::•()
     ;
   get reversed() → self::Pair<self::Pair::U*, self::Pair::T*>*
-    return new self::Pair::•<self::Pair::U*, self::Pair::T*>(this.{self::Pair::u}{self::Pair::U*}, this.{self::Pair::t}{self::Pair::T*});
+    return new self::Pair::•<self::Pair::U*, self::Pair::T*>(this.{self::Pair::u}, this.{self::Pair::t});
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.weak.transformed.expect
index 2fddef8..e71956d 100644
--- a/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     : self::Pair::t = t, self::Pair::u = u, super core::Object::•()
     ;
   get reversed() → self::Pair<self::Pair::U*, self::Pair::T*>*
-    return new self::Pair::•<self::Pair::U*, self::Pair::T*>(this.{self::Pair::u}{self::Pair::U*}, this.{self::Pair::t}{self::Pair::T*});
+    return new self::Pair::•<self::Pair::U*, self::Pair::T*>(this.{self::Pair::u}, this.{self::Pair::t});
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart.weak.expect b/pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart.weak.expect
index 51015b3..76c7bbb 100644
--- a/pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart.weak.expect
@@ -47,8 +47,8 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method foo() → dynamic {
-  core::String* y = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::String*;
-  core::int* z = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::int*;
+  core::String* y = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
+  core::int* z = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {
   self::foo();
diff --git a/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.weak.expect b/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.weak.expect
index 012a172..41089c5 100644
--- a/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.weak.expect
@@ -25,7 +25,7 @@
     core::int* y = 3;
     function f(core::List<core::Map<core::int*, core::String*>*>* l) → void {}
     ;
-    f(<core::Map<core::int*, core::String*>*>[<core::int*, core::String*>{y: x}]){(core::List<core::Map<core::int*, core::String*>*>*) →* void};
+    f.call(<core::Map<core::int*, core::String*>*>[<core::int*, core::String*>{y: x}]);
   }
   {
     function f(core::int* x) → core::int*
diff --git a/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.weak.transformed.expect
index 541ab60..9a82bf3 100644
--- a/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.weak.transformed.expect
@@ -25,7 +25,7 @@
     core::int* y = 3;
     function f(core::List<core::Map<core::int*, core::String*>*>* l) → void {}
     ;
-    f(core::_GrowableList::_literal1<core::Map<core::int*, core::String*>*>(<core::int*, core::String*>{y: x})){(core::List<core::Map<core::int*, core::String*>*>*) →* void};
+    f.call(core::_GrowableList::_literal1<core::Map<core::int*, core::String*>*>(<core::int*, core::String*>{y: x}));
   }
   {
     function f(core::int* x) → core::int*
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.weak.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.weak.expect
index c56e8ad..21d93c9 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.weak.expect
@@ -18,7 +18,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test() → void {
-  for (@#C1 core::int* i = 0; i.{core::num::<}(1){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (@#C1 core::int* i = 0; i.{core::num::<}(1); i = i.{core::num::+}(1)) {
   }
   for (@#C1 core::int* i in <core::int*>[0]) {
   }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.weak.transformed.expect
index 3ae57113..c63b4f8 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test() → void {
-  for (@#C1 core::int* i = 0; i.{core::num::<}(1){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (@#C1 core::int* i = 0; i.{core::num::<}(1); i = i.{core::num::+}(1)) {
   }
   {
     core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(0).{core::Iterable::iterator};
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.weak.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.weak.expect
index 750de9c..27841f3 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.weak.expect
@@ -103,7 +103,7 @@
   }
   {
     (core::int*) →* core::int* l0 = (core::int* x) → core::int* => x;
-    (core::int*) →* core::int* l1 = (core::int* x) → core::int* => x.{core::num::+}(1){(core::num*) →* core::int*};
+    (core::int*) →* core::int* l1 = (core::int* x) → core::int* => x.{core::num::+}(1);
     (core::int*) →* core::String* l2 = (core::int* x) → core::String* => let final Never* #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:60:13: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
             x;
             ^" in x as{TypeError} core::String*;
@@ -111,7 +111,7 @@
 Try correcting the name to the name of an existing method, or defining a method named 'substring'.
             .substring(3);
              ^^^^^^^^^" as{TypeError,ForDynamic} core::String*;
-    (core::String*) →* core::String* l4 = (core::String* x) → core::String* => x.{core::String::substring}(3){(core::int*, [core::int*]) →* core::String*};
+    (core::String*) →* core::String* l4 = (core::String* x) → core::String* => x.{core::String::substring}(3);
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.weak.transformed.expect
index 6529a86..b615c04 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.weak.transformed.expect
@@ -103,7 +103,7 @@
   }
   {
     (core::int*) →* core::int* l0 = (core::int* x) → core::int* => x;
-    (core::int*) →* core::int* l1 = (core::int* x) → core::int* => x.{core::num::+}(1){(core::num*) →* core::int*};
+    (core::int*) →* core::int* l1 = (core::int* x) → core::int* => x.{core::num::+}(1);
     (core::int*) →* core::String* l2 = (core::int* x) → core::String* => let final Never* #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:60:13: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
             x;
             ^" in x as{TypeError} core::String*;
@@ -111,7 +111,7 @@
 Try correcting the name to the name of an existing method, or defining a method named 'substring'.
             .substring(3);
              ^^^^^^^^^";
-    (core::String*) →* core::String* l4 = (core::String* x) → core::String* => x.{core::String::substring}(3){(core::int*, [core::int*]) →* core::String*};
+    (core::String*) →* core::String* l4 = (core::String* x) → core::String* => x.{core::String::substring}(3);
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_of_t_using_the_t.dart.weak.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_of_t_using_the_t.dart.weak.expect
index a686107..3231434 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_of_t_using_the_t.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_of_t_using_the_t.dart.weak.expect
@@ -14,10 +14,10 @@
       return null;
     <T extends core::Object* = dynamic>(T*) →* core::List<T*>* v2 = f;
     v2 = <S extends core::Object* = dynamic>(S* x) → core::List<S*>* => <S*>[x];
-    core::Iterable<core::int*>* r = v2<core::int*>(42){(core::int*) →* core::List<core::int*>*};
-    core::Iterable<core::String*>* s = v2<core::String*>("hello"){(core::String*) →* core::List<core::String*>*};
-    core::Iterable<core::List<core::int*>*>* t = v2<core::List<core::int*>*>(<core::int*>[]){(core::List<core::int*>*) →* core::List<core::List<core::int*>*>*};
-    core::Iterable<core::num*>* u = v2<core::num*>(42){(core::num*) →* core::List<core::num*>*};
-    core::Iterable<core::num*>* v = v2<core::num*>(42){(core::num*) →* core::List<core::num*>*};
+    core::Iterable<core::int*>* r = v2.call<core::int*>(42);
+    core::Iterable<core::String*>* s = v2.call<core::String*>("hello");
+    core::Iterable<core::List<core::int*>*>* t = v2.call<core::List<core::int*>*>(<core::int*>[]);
+    core::Iterable<core::num*>* u = v2.call<core::num*>(42);
+    core::Iterable<core::num*>* v = v2.call<core::num*>(42);
   }
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_of_t_using_the_t.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_of_t_using_the_t.dart.weak.transformed.expect
index 6660189..b50f945 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_of_t_using_the_t.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_of_t_using_the_t.dart.weak.transformed.expect
@@ -14,10 +14,10 @@
       return null;
     <T extends core::Object* = dynamic>(T*) →* core::List<T*>* v2 = f;
     v2 = <S extends core::Object* = dynamic>(S* x) → core::List<S*>* => core::_GrowableList::_literal1<S*>(x);
-    core::Iterable<core::int*>* r = v2<core::int*>(42){(core::int*) →* core::List<core::int*>*};
-    core::Iterable<core::String*>* s = v2<core::String*>("hello"){(core::String*) →* core::List<core::String*>*};
-    core::Iterable<core::List<core::int*>*>* t = v2<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) →* core::List<core::List<core::int*>*>*};
-    core::Iterable<core::num*>* u = v2<core::num*>(42){(core::num*) →* core::List<core::num*>*};
-    core::Iterable<core::num*>* v = v2<core::num*>(42){(core::num*) →* core::List<core::num*>*};
+    core::Iterable<core::int*>* r = v2.call<core::int*>(42);
+    core::Iterable<core::String*>* s = v2.call<core::String*>("hello");
+    core::Iterable<core::List<core::int*>*>* t = v2.call<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0));
+    core::Iterable<core::num*>* u = v2.call<core::num*>(42);
+    core::Iterable<core::num*>* v = v2.call<core::num*>(42);
   }
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.weak.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.weak.expect
index efa8da0..a2629f9 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.weak.expect
@@ -118,7 +118,7 @@
       return null;
     <S extends core::Object* = dynamic>(core::int*) →* core::int* x = int2int;
     x = <T extends core::Object* = dynamic>(core::int* x) → core::int* => x;
-    x = <T extends core::Object* = dynamic>(core::int* x) → core::int* => x.{core::num::+}(1){(core::num*) →* core::int*};
+    x = <T extends core::Object* = dynamic>(core::int* x) → core::int* => x.{core::num::+}(1);
     <T extends core::Object* = dynamic>(core::int*) →* core::String* y = int2String;
     y = <T extends core::Object* = dynamic>(core::int* x) → core::String* => let final Never* #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:64:9: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
         x;
@@ -128,7 +128,7 @@
         .substring(3);
          ^^^^^^^^^" as{TypeError,ForDynamic} core::String*;
     <T extends core::Object* = dynamic>(core::String*) →* core::String* z = string2String;
-    z = <T extends core::Object* = dynamic>(core::String* x) → core::String* => x.{core::String::substring}(3){(core::int*, [core::int*]) →* core::String*};
+    z = <T extends core::Object* = dynamic>(core::String* x) → core::String* => x.{core::String::substring}(3);
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.weak.transformed.expect
index a4b85cb..f068ae5 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.weak.transformed.expect
@@ -118,7 +118,7 @@
       return null;
     <S extends core::Object* = dynamic>(core::int*) →* core::int* x = int2int;
     x = <T extends core::Object* = dynamic>(core::int* x) → core::int* => x;
-    x = <T extends core::Object* = dynamic>(core::int* x) → core::int* => x.{core::num::+}(1){(core::num*) →* core::int*};
+    x = <T extends core::Object* = dynamic>(core::int* x) → core::int* => x.{core::num::+}(1);
     <T extends core::Object* = dynamic>(core::int*) →* core::String* y = int2String;
     y = <T extends core::Object* = dynamic>(core::int* x) → core::String* => let final Never* #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:64:9: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
         x;
@@ -128,7 +128,7 @@
         .substring(3);
          ^^^^^^^^^";
     <T extends core::Object* = dynamic>(core::String*) →* core::String* z = string2String;
-    z = <T extends core::Object* = dynamic>(core::String* x) → core::String* => x.{core::String::substring}(3){(core::int*, [core::int*]) →* core::String*};
+    z = <T extends core::Object* = dynamic>(core::String* x) → core::String* => x.{core::String::substring}(3);
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.weak.expect b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.weak.expect
index c0dae24..e16a1a8 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.weak.expect
@@ -29,11 +29,11 @@
     return null;
   abstract get assertDOf() → (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void;
   method method((core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertEOf) → dynamic {
-    let final core::List<(self::DartType*) →* void>* #t1 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::C::assertAOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t1){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    self::C::assertBOf(<(self::DartType*) →* void>[self::_isInt, self::_isString]){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    self::C::assertCOf(<(self::DartType*) →* void>[self::_isInt, self::_isString]){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    let final core::List<(self::DartType*) →* void>* #t2 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::C::assertDOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t2){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    assertEOf(<(self::DartType*) →* void>[self::_isInt, self::_isString]){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
+    let final core::List<(self::DartType*) →* void>* #t1 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::C::assertAOf}.call(#t1);
+    self::C::assertBOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
+    self::C::assertCOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
+    let final core::List<(self::DartType*) →* void>* #t2 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::C::assertDOf}.call(#t2);
+    assertEOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -53,10 +53,10 @@
     ;
   abstract get assertDOf() → (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void;
   method method((core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertEOf) → dynamic {
-    let final core::List<(self::DartType*) →* void>* #t3 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::G::assertAOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t3){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    let final core::List<(self::DartType*) →* void>* #t4 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::G::assertAOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t4){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    let final core::List<(self::DartType*) →* void>* #t5 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::G::assertDOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t5){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    assertEOf(<(self::DartType*) →* void>[self::_isInt, self::_isString]){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
+    let final core::List<(self::DartType*) →* void>* #t3 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::G::assertAOf}.call(#t3);
+    let final core::List<(self::DartType*) →* void>* #t4 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::G::assertAOf}.call(#t4);
+    let final core::List<(self::DartType*) →* void>* #t5 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::G::assertDOf}.call(#t5);
+    assertEOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -76,16 +76,16 @@
   return null;
 static method test() → dynamic {
   (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertAOf;
-  assertAOf(<(self::DartType*) →* void>[self::_isInt, self::_isString]){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-  self::assertBOf(<(self::DartType*) →* void>[self::_isInt, self::_isString]){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-  self::assertCOf(<(self::DartType*) →* void>[self::_isInt, self::_isString]){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-  self::C::assertBOf(<(self::DartType*) →* void>[self::_isInt, self::_isString]){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-  self::C::assertCOf(<(self::DartType*) →* void>[self::_isInt, self::_isString]){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
+  assertAOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
+  self::assertBOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
+  self::assertCOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
+  self::C::assertBOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
+  self::C::assertCOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
   self::C* c;
-  let final self::C* #t6 = c in let final core::List<(self::DartType*) →* void>* #t7 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in #t6.{self::C::assertAOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t7){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-  let final self::C* #t8 = c in let final core::List<(self::DartType*) →* void>* #t9 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in #t8.{self::C::assertDOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t9){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
+  let final self::C* #t6 = c in let final core::List<(self::DartType*) →* void>* #t7 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in #t6.{self::C::assertAOf}.call(#t7);
+  let final self::C* #t8 = c in let final core::List<(self::DartType*) →* void>* #t9 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in #t8.{self::C::assertDOf}.call(#t9);
   self::G<core::int*>* g;
-  let final self::G<core::int*>* #t10 = g in let final core::List<(self::DartType*) →* void>* #t11 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in #t10.{self::G::assertAOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t11){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-  let final self::G<core::int*>* #t12 = g in let final core::List<(self::DartType*) →* void>* #t13 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in #t12.{self::G::assertDOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t13){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
+  let final self::G<core::int*>* #t10 = g in let final core::List<(self::DartType*) →* void>* #t11 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in #t10.{self::G::assertAOf}.call(#t11);
+  let final self::G<core::int*>* #t12 = g in let final core::List<(self::DartType*) →* void>* #t13 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in #t12.{self::G::assertDOf}.call(#t13);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.weak.transformed.expect
index 26ec6f6..660139a 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.weak.transformed.expect
@@ -29,11 +29,11 @@
     return null;
   abstract get assertDOf() → (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void;
   method method((core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertEOf) → dynamic {
-    let final core::List<(self::DartType*) →* void>* #t1 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in this.{self::C::assertAOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t1){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    self::C::assertBOf(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString)){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    self::C::assertCOf(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString)){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    let final core::List<(self::DartType*) →* void>* #t2 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in this.{self::C::assertDOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t2){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    assertEOf(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString)){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
+    let final core::List<(self::DartType*) →* void>* #t1 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in this.{self::C::assertAOf}.call(#t1);
+    self::C::assertBOf.call(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString));
+    self::C::assertCOf.call(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString));
+    let final core::List<(self::DartType*) →* void>* #t2 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in this.{self::C::assertDOf}.call(#t2);
+    assertEOf.call(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString));
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -53,10 +53,10 @@
     ;
   abstract get assertDOf() → (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void;
   method method((core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertEOf) → dynamic {
-    let final core::List<(self::DartType*) →* void>* #t3 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in this.{self::G::assertAOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t3){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    let final core::List<(self::DartType*) →* void>* #t4 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in this.{self::G::assertAOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t4){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    let final core::List<(self::DartType*) →* void>* #t5 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in this.{self::G::assertDOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t5){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-    assertEOf(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString)){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
+    let final core::List<(self::DartType*) →* void>* #t3 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in this.{self::G::assertAOf}.call(#t3);
+    let final core::List<(self::DartType*) →* void>* #t4 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in this.{self::G::assertAOf}.call(#t4);
+    let final core::List<(self::DartType*) →* void>* #t5 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in this.{self::G::assertDOf}.call(#t5);
+    assertEOf.call(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString));
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -76,16 +76,16 @@
   return null;
 static method test() → dynamic {
   (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertAOf;
-  assertAOf(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString)){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-  self::assertBOf(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString)){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-  self::assertCOf(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString)){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-  self::C::assertBOf(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString)){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-  self::C::assertCOf(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString)){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
+  assertAOf.call(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString));
+  self::assertBOf.call(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString));
+  self::assertCOf.call(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString));
+  self::C::assertBOf.call(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString));
+  self::C::assertCOf.call(core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString));
   self::C* c;
-  let final self::C* #t6 = c in let final core::List<(self::DartType*) →* void>* #t7 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in #t6.{self::C::assertAOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t7){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-  let final self::C* #t8 = c in let final core::List<(self::DartType*) →* void>* #t9 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in #t8.{self::C::assertDOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t9){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
+  let final self::C* #t6 = c in let final core::List<(self::DartType*) →* void>* #t7 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in #t6.{self::C::assertAOf}.call(#t7);
+  let final self::C* #t8 = c in let final core::List<(self::DartType*) →* void>* #t9 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in #t8.{self::C::assertDOf}.call(#t9);
   self::G<core::int*>* g;
-  let final self::G<core::int*>* #t10 = g in let final core::List<(self::DartType*) →* void>* #t11 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in #t10.{self::G::assertAOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t11){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
-  let final self::G<core::int*>* #t12 = g in let final core::List<(self::DartType*) →* void>* #t13 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in #t12.{self::G::assertDOf}{(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void}(#t13){(core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void};
+  let final self::G<core::int*>* #t10 = g in let final core::List<(self::DartType*) →* void>* #t11 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in #t10.{self::G::assertAOf}.call(#t11);
+  let final self::G<core::int*>* #t12 = g in let final core::List<(self::DartType*) →* void>* #t13 = core::_GrowableList::_literal2<(self::DartType*) →* void>(self::_isInt, self::_isString) in #t12.{self::G::assertDOf}.call(#t13);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/dynamic_methods.dart b/pkg/front_end/testcases/inference/dynamic_methods.dart
index a381658..f7b1e2b 100644
--- a/pkg/front_end/testcases/inference/dynamic_methods.dart
+++ b/pkg/front_end/testcases/inference/dynamic_methods.dart
@@ -25,11 +25,11 @@
       d. /*@target=Object.noSuchMethod*/ noSuchMethod(null);
   var /*@ type=dynamic */ call_nsm2 = d.noSuchMethod(null, null);
   var /*@ type=bool* */ equals_self = d /*@target=Object.==*/ == d;
-  var /*@ type=bool* */ equals_null = d  == null;
-  var /*@ type=bool* */ null_equals = null  == d;
+  var /*@ type=bool* */ equals_null = d /*@target=Object.==*/ == null;
+  var /*@ type=bool* */ null_equals = null /*@target=Object.==*/ == d;
   var /*@ type=bool* */ not_equals_self = d /*@target=Object.==*/ != d;
-  var /*@ type=bool* */ not_equals_null = d  != null;
-  var /*@ type=bool* */ null_not_equals = null  != d;
+  var /*@ type=bool* */ not_equals_null = d /*@target=Object.==*/ != null;
+  var /*@ type=bool* */ null_not_equals = null /*@target=Object.==*/ != d;
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/inference/dynamic_methods.dart.weak.expect b/pkg/front_end/testcases/inference/dynamic_methods.dart.weak.expect
index d86a1ff..af56742 100644
--- a/pkg/front_end/testcases/inference/dynamic_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/dynamic_methods.dart.weak.expect
@@ -28,23 +28,23 @@
 }
 static method test() → dynamic {
   dynamic d = new self::Foo::•();
-  core::int* get_hashCode = d.{core::Object::hashCode}{core::int*};
+  core::int* get_hashCode = d.{core::Object::hashCode};
   dynamic call_hashCode = invalid-expression "pkg/front_end/testcases/inference/dynamic_methods.dart:16:46: Error: 'hashCode' isn't a function or method and can't be invoked.
       d. /*@target=Object.hashCode*/ hashCode();
                                              ^^^^...";
-  core::String* call_toString = d.{core::Object::toString}(){() →* core::String*};
-  dynamic call_toStringArg = d{dynamic}.toString(color: "pink");
-  dynamic call_foo0 = d{dynamic}.foo();
-  dynamic call_foo1 = d{dynamic}.foo(1);
-  dynamic call_foo2 = d{dynamic}.foo(1, 2);
-  dynamic call_nsm0 = d{dynamic}.noSuchMethod();
-  dynamic call_nsm1 = d.{core::Object::noSuchMethod}(null){(core::Invocation*) →* dynamic};
-  dynamic call_nsm2 = d{dynamic}.noSuchMethod(null, null);
-  core::bool* equals_self = d =={core::Object::==}{(core::Object*) →* core::bool*} d;
-  core::bool* equals_null = d == null;
-  core::bool* null_equals = d == null;
-  core::bool* not_equals_self = !(d =={core::Object::==}{(core::Object*) →* core::bool*} d);
-  core::bool* not_equals_null = !(d == null);
-  core::bool* null_not_equals = !(d == null);
+  core::String* call_toString = d.{core::Object::toString}();
+  dynamic call_toStringArg = d.toString(color: "pink");
+  dynamic call_foo0 = d.foo();
+  dynamic call_foo1 = d.foo(1);
+  dynamic call_foo2 = d.foo(1, 2);
+  dynamic call_nsm0 = d.noSuchMethod();
+  dynamic call_nsm1 = d.{core::Object::noSuchMethod}(null);
+  dynamic call_nsm2 = d.noSuchMethod(null, null);
+  core::bool* equals_self = d.{core::Object::==}(d);
+  core::bool* equals_null = d.{core::Object::==}(null);
+  core::bool* null_equals = null.{core::Object::==}(d);
+  core::bool* not_equals_self = !d.{core::Object::==}(d);
+  core::bool* not_equals_null = !d.{core::Object::==}(null);
+  core::bool* null_not_equals = !null.{core::Object::==}(d);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/dynamic_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/dynamic_methods.dart.weak.transformed.expect
index d86a1ff..af56742 100644
--- a/pkg/front_end/testcases/inference/dynamic_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/dynamic_methods.dart.weak.transformed.expect
@@ -28,23 +28,23 @@
 }
 static method test() → dynamic {
   dynamic d = new self::Foo::•();
-  core::int* get_hashCode = d.{core::Object::hashCode}{core::int*};
+  core::int* get_hashCode = d.{core::Object::hashCode};
   dynamic call_hashCode = invalid-expression "pkg/front_end/testcases/inference/dynamic_methods.dart:16:46: Error: 'hashCode' isn't a function or method and can't be invoked.
       d. /*@target=Object.hashCode*/ hashCode();
                                              ^^^^...";
-  core::String* call_toString = d.{core::Object::toString}(){() →* core::String*};
-  dynamic call_toStringArg = d{dynamic}.toString(color: "pink");
-  dynamic call_foo0 = d{dynamic}.foo();
-  dynamic call_foo1 = d{dynamic}.foo(1);
-  dynamic call_foo2 = d{dynamic}.foo(1, 2);
-  dynamic call_nsm0 = d{dynamic}.noSuchMethod();
-  dynamic call_nsm1 = d.{core::Object::noSuchMethod}(null){(core::Invocation*) →* dynamic};
-  dynamic call_nsm2 = d{dynamic}.noSuchMethod(null, null);
-  core::bool* equals_self = d =={core::Object::==}{(core::Object*) →* core::bool*} d;
-  core::bool* equals_null = d == null;
-  core::bool* null_equals = d == null;
-  core::bool* not_equals_self = !(d =={core::Object::==}{(core::Object*) →* core::bool*} d);
-  core::bool* not_equals_null = !(d == null);
-  core::bool* null_not_equals = !(d == null);
+  core::String* call_toString = d.{core::Object::toString}();
+  dynamic call_toStringArg = d.toString(color: "pink");
+  dynamic call_foo0 = d.foo();
+  dynamic call_foo1 = d.foo(1);
+  dynamic call_foo2 = d.foo(1, 2);
+  dynamic call_nsm0 = d.noSuchMethod();
+  dynamic call_nsm1 = d.{core::Object::noSuchMethod}(null);
+  dynamic call_nsm2 = d.noSuchMethod(null, null);
+  core::bool* equals_self = d.{core::Object::==}(d);
+  core::bool* equals_null = d.{core::Object::==}(null);
+  core::bool* null_equals = null.{core::Object::==}(d);
+  core::bool* not_equals_self = !d.{core::Object::==}(d);
+  core::bool* not_equals_null = !d.{core::Object::==}(null);
+  core::bool* null_not_equals = !null.{core::Object::==}(d);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/for_loop_empty_condition.dart.weak.expect b/pkg/front_end/testcases/inference/for_loop_empty_condition.dart.weak.expect
index f17816f..be5533f 100644
--- a/pkg/front_end/testcases/inference/for_loop_empty_condition.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/for_loop_empty_condition.dart.weak.expect
@@ -4,8 +4,8 @@
 
 static method test() → void {
   #L1:
-  for (core::num* x = 0; ; x = x.{core::num::+}(1){(core::num*) →* core::num*}) {
-    if(x.{core::num::>=}(10){(core::num*) →* core::bool*})
+  for (core::num* x = 0; ; x = x.{core::num::+}(1)) {
+    if(x.{core::num::>=}(10))
       break #L1;
     if(x is core::int*) {
       core::int* y = x{core::int*};
diff --git a/pkg/front_end/testcases/inference/for_loop_empty_condition.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/for_loop_empty_condition.dart.weak.transformed.expect
index f17816f..be5533f 100644
--- a/pkg/front_end/testcases/inference/for_loop_empty_condition.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/for_loop_empty_condition.dart.weak.transformed.expect
@@ -4,8 +4,8 @@
 
 static method test() → void {
   #L1:
-  for (core::num* x = 0; ; x = x.{core::num::+}(1){(core::num*) →* core::num*}) {
-    if(x.{core::num::>=}(10){(core::num*) →* core::bool*})
+  for (core::num* x = 0; ; x = x.{core::num::+}(1)) {
+    if(x.{core::num::>=}(10))
       break #L1;
     if(x is core::int*) {
       core::int* y = x{core::int*};
diff --git a/pkg/front_end/testcases/inference/for_loop_initializer_expression.dart.weak.expect b/pkg/front_end/testcases/inference/for_loop_initializer_expression.dart.weak.expect
index 8f36a9c..e03cca6 100644
--- a/pkg/front_end/testcases/inference/for_loop_initializer_expression.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/for_loop_initializer_expression.dart.weak.expect
@@ -4,7 +4,7 @@
 
 static method test() → void {
   core::num* x;
-  for (final core::int* #t1 = x = 0; x.{core::num::<}(10){(core::num*) →* core::bool*}; x = x.{core::num::+}(1){(core::num*) →* core::num*}) {
+  for (final core::int* #t1 = x = 0; x.{core::num::<}(10); x = x.{core::num::+}(1)) {
     if(x is core::int*) {
       core::int* y = x{core::int*};
     }
diff --git a/pkg/front_end/testcases/inference/for_loop_initializer_expression.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/for_loop_initializer_expression.dart.weak.transformed.expect
index 8f36a9c..e03cca6 100644
--- a/pkg/front_end/testcases/inference/for_loop_initializer_expression.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/for_loop_initializer_expression.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 
 static method test() → void {
   core::num* x;
-  for (final core::int* #t1 = x = 0; x.{core::num::<}(10){(core::num*) →* core::bool*}; x = x.{core::num::+}(1){(core::num*) →* core::num*}) {
+  for (final core::int* #t1 = x = 0; x.{core::num::<}(10); x = x.{core::num::+}(1)) {
     if(x is core::int*) {
       core::int* y = x{core::int*};
     }
diff --git a/pkg/front_end/testcases/inference/for_loop_promotion.dart.weak.expect b/pkg/front_end/testcases/inference/for_loop_promotion.dart.weak.expect
index 6cecf17..de8249b 100644
--- a/pkg/front_end/testcases/inference/for_loop_promotion.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/for_loop_promotion.dart.weak.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method test() → void {
-  for (core::num* x = 0; x.{core::num::<}(10){(core::num*) →* core::bool*}; x = x.{core::num::+}(1){(core::num*) →* core::num*}) {
+  for (core::num* x = 0; x.{core::num::<}(10); x = x.{core::num::+}(1)) {
     if(x is core::int*) {
       core::int* y = x{core::int*};
     }
diff --git a/pkg/front_end/testcases/inference/for_loop_promotion.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/for_loop_promotion.dart.weak.transformed.expect
index 6cecf17..de8249b 100644
--- a/pkg/front_end/testcases/inference/for_loop_promotion.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/for_loop_promotion.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method test() → void {
-  for (core::num* x = 0; x.{core::num::<}(10){(core::num*) →* core::bool*}; x = x.{core::num::+}(1){(core::num*) →* core::num*}) {
+  for (core::num* x = 0; x.{core::num::<}(10); x = x.{core::num::+}(1)) {
     if(x is core::int*) {
       core::int* y = x{core::int*};
     }
diff --git a/pkg/front_end/testcases/inference/future_or_subtyping.dart.weak.expect b/pkg/front_end/testcases/inference/future_or_subtyping.dart.weak.expect
index 656a85c..17f4b19 100644
--- a/pkg/front_end/testcases/inference/future_or_subtyping.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_or_subtyping.dart.weak.expect
@@ -9,8 +9,8 @@
 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){((core::int*) →* FutureOr<void>*, {onError: core::Function*}) →* asy::Future<void>*};
-  asy::Future<dynamic>* b = f.{asy::Future::then}<dynamic>(#C2){((core::int*) →* FutureOr<dynamic>*, {onError: core::Function*}) →* asy::Future<dynamic>*};
+  asy::Future<void>* a = f.{asy::Future::then}<void>(#C1);
+  asy::Future<dynamic>* b = f.{asy::Future::then}<dynamic>(#C2);
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_or_subtyping.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_or_subtyping.dart.weak.transformed.expect
index 656a85c..17f4b19 100644
--- a/pkg/front_end/testcases/inference/future_or_subtyping.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_or_subtyping.dart.weak.transformed.expect
@@ -9,8 +9,8 @@
 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){((core::int*) →* FutureOr<void>*, {onError: core::Function*}) →* asy::Future<void>*};
-  asy::Future<dynamic>* b = f.{asy::Future::then}<dynamic>(#C2){((core::int*) →* FutureOr<dynamic>*, {onError: core::Function*}) →* asy::Future<dynamic>*};
+  asy::Future<void>* a = f.{asy::Future::then}<void>(#C1);
+  asy::Future<dynamic>* b = f.{asy::Future::then}<dynamic>(#C2);
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.expect
index 43b73f6..2d476b4 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.weak.expect
@@ -24,32 +24,32 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
-  asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => await asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => await asy::Future::value<core::int*>(3));
   asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return await asy::Future::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => 3){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => 3);
   asy::Future<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return 3;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3));
   asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* {
     return asy::Future::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => asy::Future::value<core::int*>(3));
   asy::Future<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return asy::Future::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.outline.expect
index 29a6f55..903b67e 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect
index 6f7152b..31f36c1 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
@@ -63,7 +63,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -92,7 +92,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -119,7 +119,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -146,11 +146,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3));
   asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* {
     return asy::Future::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -177,7 +177,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -204,7 +204,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.expect
index 251ec40..9755c88 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.weak.expect
@@ -24,32 +24,32 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
-  asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => await new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => await new self::MyFuture::value<core::int*>(3));
   asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return await new self::MyFuture::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => 3){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => 3);
   asy::Future<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return 3;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3));
   asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* {
     return new self::MyFuture::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => new self::MyFuture::value<core::int*>(3));
   asy::Future<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return new self::MyFuture::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.outline.expect
index 36ab6a8..590e815 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect
index fe6cbd2..5e4f03c 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
@@ -63,7 +63,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -92,7 +92,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -119,7 +119,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -146,11 +146,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3));
   asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* {
     return new self::MyFuture::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -177,7 +177,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -204,7 +204,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.expect
index 7eca3d0..79fbdd6 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.weak.expect
@@ -24,32 +24,32 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
-  self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => await asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => await asy::Future::value<core::int*>(3));
   self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return await asy::Future::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  self::MyFuture<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => 3){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  self::MyFuture<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => 3);
   self::MyFuture<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return 3;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3));
   self::MyFuture<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* {
     return asy::Future::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  self::MyFuture<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  self::MyFuture<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => asy::Future::value<core::int*>(3));
   self::MyFuture<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return asy::Future::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.outline.expect
index e35da6b..127f049 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect
index 2cce0d4..b811bc8 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
@@ -63,7 +63,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -92,7 +92,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   self::MyFuture<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -119,7 +119,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   self::MyFuture<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -146,11 +146,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3));
   self::MyFuture<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* {
     return asy::Future::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   self::MyFuture<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -177,7 +177,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   self::MyFuture<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -204,7 +204,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.expect
index 37e0e62..090effe 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.weak.expect
@@ -24,32 +24,32 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
-  self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => await new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => await new self::MyFuture::value<core::int*>(3));
   self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return await new self::MyFuture::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  self::MyFuture<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => 3){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  self::MyFuture<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => 3);
   self::MyFuture<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return 3;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3));
   self::MyFuture<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* {
     return new self::MyFuture::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  self::MyFuture<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  self::MyFuture<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => new self::MyFuture::value<core::int*>(3));
   self::MyFuture<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return new self::MyFuture::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.outline.expect
index 5908716..c3a7845 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect
index d90c9e6..dfb8161 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
@@ -63,7 +63,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -92,7 +92,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   self::MyFuture<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -119,7 +119,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   self::MyFuture<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -146,11 +146,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3));
   self::MyFuture<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* {
     return new self::MyFuture::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   self::MyFuture<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -177,7 +177,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   self::MyFuture<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -204,7 +204,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.expect
index 1917e07..9988e76 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.weak.expect
@@ -24,32 +24,32 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<dynamic>* f;
-  asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => await new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => await new self::MyFuture::value<core::int*>(3));
   asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return await new self::MyFuture::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-  asy::Future<core::int*>* t3 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => 3){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
+  asy::Future<core::int*>* t3 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => 3);
   asy::Future<core::int*>* t4 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return 3;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3));
   asy::Future<core::int*>* t6 = f.{asy::Future::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* {
     return new self::MyFuture::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-  asy::Future<core::int*>* t7 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
+  asy::Future<core::int*>* t7 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => new self::MyFuture::value<core::int*>(3));
   asy::Future<core::int*>* t8 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return new self::MyFuture::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.outline.expect
index b699b6c..9bddbcd 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect
index 79e4838..2e741e8 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<dynamic>* f;
@@ -63,7 +63,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
   asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -92,7 +92,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
   asy::Future<core::int*>* t3 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -119,7 +119,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
   asy::Future<core::int*>* t4 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -146,11 +146,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3));
   asy::Future<core::int*>* t6 = f.{asy::Future::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* {
     return new self::MyFuture::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
   asy::Future<core::int*>* t7 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -177,7 +177,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
   asy::Future<core::int*>* t8 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -204,7 +204,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.expect
index fa683c126..7df4804 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.weak.expect
@@ -24,32 +24,32 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<dynamic>* f;
-  asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => await asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => await asy::Future::value<core::int*>(3));
   asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return await asy::Future::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-  asy::Future<core::int*>* t3 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => 3){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
+  asy::Future<core::int*>* t3 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => 3);
   asy::Future<core::int*>* t4 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return 3;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3));
   asy::Future<core::int*>* t6 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* {
     return asy::Future::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-  asy::Future<core::int*>* t7 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
+  asy::Future<core::int*>* t7 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async => asy::Future::value<core::int*>(3));
   asy::Future<core::int*>* t8 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async {
     return asy::Future::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.outline.expect
index d9c4871..908df9c 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect
index e796209..b0315bb 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<dynamic>* f;
@@ -63,7 +63,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
   asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -92,7 +92,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
   asy::Future<core::int*>* t3 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -119,7 +119,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
   asy::Future<core::int*>* t4 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -146,11 +146,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3));
   asy::Future<core::int*>* t6 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* {
     return asy::Future::value<core::int*>(3);
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
   asy::Future<core::int*>* t7 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -177,7 +177,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
   asy::Future<core::int*>* t8 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -204,7 +204,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.expect
index 484270e..7bbdb21 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.expect
@@ -24,24 +24,24 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
-  asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async => x ?{core::int*} 2 : await asy::Future::value<core::int*>(3)){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async => x ?{core::int*} 2 : await asy::Future::value<core::int*>(3));
   asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* async {
     return (await x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*);
   asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
     return (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.outline.expect
index cfacce7..f0c10fb 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect
index e243878..d191f4c 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -70,7 +70,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -99,11 +99,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*);
   asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
     return (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.expect
index 5052927..ac6c2b0 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.expect
@@ -24,24 +24,24 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
-  asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async => x ?{core::int*} 2 : await new self::MyFuture::value<core::int*>(3)){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async => x ?{core::int*} 2 : await new self::MyFuture::value<core::int*>(3));
   asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* async {
     return (await x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*);
   asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
     return (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect
index 7eb99be..6d7ac2e 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect
index 57a5fe1..43a3960 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -70,7 +70,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -99,11 +99,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*);
   asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
     return (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.expect
index 01ac303..cf29dae 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.expect
@@ -24,24 +24,24 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
-  self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async => x ?{core::int*} 2 : await asy::Future::value<core::int*>(3)){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async => x ?{core::int*} 2 : await asy::Future::value<core::int*>(3));
   self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* async {
     return (await x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*);
   self::MyFuture<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
     return (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect
index 3b812af..5942aa9 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect
index dd49882..5f3d17d 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -70,7 +70,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -99,11 +99,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*);
   self::MyFuture<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
     return (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.expect
index 9f0633d..a3755b3 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.expect
@@ -24,24 +24,24 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
-  self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async => x ?{core::int*} 2 : await new self::MyFuture::value<core::int*>(3)){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async => x ?{core::int*} 2 : await new self::MyFuture::value<core::int*>(3));
   self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* async {
     return (await x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*);
   self::MyFuture<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
     return (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect
index 2d775ff..e3979f7 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect
index 0dc6739..91d19c76 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -70,7 +70,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -99,11 +99,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*);
   self::MyFuture<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
     return (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.expect
index 41958f4..52b58db 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.expect
@@ -24,24 +24,24 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
-  asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async => x ?{core::int*} 2 : await new self::MyFuture::value<core::int*>(3)){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async => x ?{core::int*} 2 : await new self::MyFuture::value<core::int*>(3));
   asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* async {
     return (await x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*);
   asy::Future<core::int*>* t6 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
     return (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect
index 3026114..a52e25c 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect
index 528b319..09ebce0 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
@@ -70,7 +70,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
   asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -99,11 +99,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*);
   asy::Future<core::int*>* t6 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
     return (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.expect
index 8446ce804..3603d46 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.expect
@@ -24,24 +24,24 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
-  asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async => x ?{core::int*} 2 : await asy::Future::value<core::int*>(3)){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async => x ?{core::int*} 2 : await asy::Future::value<core::int*>(3));
   asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* async {
     return (await x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*);
   asy::Future<core::int*>* t6 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
     return (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect
index cd341f3..7b0d48e 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect
index d783f2d..de83970 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
@@ -70,7 +70,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
   asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -99,11 +99,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*);
   asy::Future<core::int*>* t6 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
     return (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
-  }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_downwards_method_target.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_downwards_method_target.dart.weak.expect
index 7024c62..fb4af0a 100644
--- a/pkg/front_end/testcases/inference/future_then_downwards_method_target.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_downwards_method_target.dart.weak.expect
@@ -7,7 +7,7 @@
 
 static method test() → dynamic {
   asy::Future<core::int*>* f;
-  asy::Future<core::List<core::int*>*>* b = f.{asy::Future::then}<core::List<dynamic>*>((core::int* x) → core::List<dynamic>* => <dynamic>[]){((core::int*) →* FutureOr<core::List<dynamic>*>*, {onError: core::Function*}) →* asy::Future<core::List<dynamic>*>*}.{asy::Future::whenComplete}(() → Null {}){(() →* FutureOr<void>*) →* asy::Future<core::List<dynamic>*>*} as{TypeError} asy::Future<core::List<core::int*>*>*;
-  b = f.{asy::Future::then}<core::List<core::int*>*>((core::int* x) → core::List<core::int*>* => <core::int*>[]){((core::int*) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* asy::Future<core::List<core::int*>*>*};
+  asy::Future<core::List<core::int*>*>* b = f.{asy::Future::then}<core::List<dynamic>*>((core::int* x) → core::List<dynamic>* => <dynamic>[]).{asy::Future::whenComplete}(() → Null {}) as{TypeError} asy::Future<core::List<core::int*>*>*;
+  b = f.{asy::Future::then}<core::List<core::int*>*>((core::int* x) → core::List<core::int*>* => <core::int*>[]);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_then_downwards_method_target.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_downwards_method_target.dart.weak.transformed.expect
index 947395c..53eb93c 100644
--- a/pkg/front_end/testcases/inference/future_then_downwards_method_target.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_downwards_method_target.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
 
 static method test() → dynamic {
   asy::Future<core::int*>* f;
-  asy::Future<core::List<core::int*>*>* b = f.{asy::Future::then}<core::List<dynamic>*>((core::int* x) → core::List<dynamic>* => core::_GrowableList::•<dynamic>(0)){((core::int*) →* FutureOr<core::List<dynamic>*>*, {onError: core::Function*}) →* asy::Future<core::List<dynamic>*>*}.{asy::Future::whenComplete}(() → Null {}){(() →* FutureOr<void>*) →* asy::Future<core::List<dynamic>*>*} as{TypeError} asy::Future<core::List<core::int*>*>*;
-  b = f.{asy::Future::then}<core::List<core::int*>*>((core::int* x) → core::List<core::int*>* => core::_GrowableList::•<core::int*>(0)){((core::int*) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* asy::Future<core::List<core::int*>*>*};
+  asy::Future<core::List<core::int*>*>* b = f.{asy::Future::then}<core::List<dynamic>*>((core::int* x) → core::List<dynamic>* => core::_GrowableList::•<dynamic>(0)).{asy::Future::whenComplete}(() → Null {}) as{TypeError} asy::Future<core::List<core::int*>*>*;
+  b = f.{asy::Future::then}<core::List<core::int*>*>((core::int* x) → core::List<core::int*>* => core::_GrowableList::•<core::int*>(0));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_then_explicit_future.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_explicit_future.dart.weak.expect
index 354eb47..7876e51 100644
--- a/pkg/front_end/testcases/inference/future_then_explicit_future.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_explicit_future.dart.weak.expect
@@ -26,7 +26,7 @@
  - 'List' is from 'dart:core'.
  - 'Future' is from 'dart:async'.
       /*@returnType=FutureOr<Future<List<int*>*>*>**/ (/*@type=int**/ x) => /*@typeArgs=dynamic*/ []);
-                                                                                                  ^" in <dynamic>[] as{TypeError} FutureOr<asy::Future<core::List<core::int*>*>*>*){((core::int*) →* FutureOr<asy::Future<core::List<core::int*>*>*>*, {onError: core::Function*}) →* asy::Future<asy::Future<core::List<core::int*>*>*>*};
+                                                                                                  ^" in <dynamic>[] as{TypeError} FutureOr<asy::Future<core::List<core::int*>*>*>*);
   asy::Future<core::List<core::int*>*>* y = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/future_then_explicit_future.dart:16:25: Error: A value of type 'Future<Future<List<int>>>' can't be assigned to a variable of type 'Future<List<int>>'.
  - 'Future' is from 'dart:async'.
  - 'List' is from 'dart:core'.
@@ -35,7 +35,7 @@
 }
 static method m2() → dynamic {
   asy::Future<core::int*>* f;
-  asy::Future<core::List<core::int*>*>* x = f.{asy::Future::then}<core::List<core::int*>*>((core::int* x) → core::List<core::int*>* => <core::int*>[]){((core::int*) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* asy::Future<core::List<core::int*>*>*};
+  asy::Future<core::List<core::int*>*>* x = f.{asy::Future::then}<core::List<core::int*>*>((core::int* x) → core::List<core::int*>* => <core::int*>[]);
   asy::Future<core::List<core::int*>*>* y = x;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_then_explicit_future.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_explicit_future.dart.weak.transformed.expect
index 008d899..980a154 100644
--- a/pkg/front_end/testcases/inference/future_then_explicit_future.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_explicit_future.dart.weak.transformed.expect
@@ -26,7 +26,7 @@
  - 'List' is from 'dart:core'.
  - 'Future' is from 'dart:async'.
       /*@returnType=FutureOr<Future<List<int*>*>*>**/ (/*@type=int**/ x) => /*@typeArgs=dynamic*/ []);
-                                                                                                  ^" in core::_GrowableList::•<dynamic>(0) as{TypeError} FutureOr<asy::Future<core::List<core::int*>*>*>*){((core::int*) →* FutureOr<asy::Future<core::List<core::int*>*>*>*, {onError: core::Function*}) →* asy::Future<asy::Future<core::List<core::int*>*>*>*};
+                                                                                                  ^" in core::_GrowableList::•<dynamic>(0) as{TypeError} FutureOr<asy::Future<core::List<core::int*>*>*>*);
   asy::Future<core::List<core::int*>*>* y = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/future_then_explicit_future.dart:16:25: Error: A value of type 'Future<Future<List<int>>>' can't be assigned to a variable of type 'Future<List<int>>'.
  - 'Future' is from 'dart:async'.
  - 'List' is from 'dart:core'.
@@ -35,7 +35,7 @@
 }
 static method m2() → dynamic {
   asy::Future<core::int*>* f;
-  asy::Future<core::List<core::int*>*>* x = f.{asy::Future::then}<core::List<core::int*>*>((core::int* x) → core::List<core::int*>* => core::_GrowableList::•<core::int*>(0)){((core::int*) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* asy::Future<core::List<core::int*>*>*};
+  asy::Future<core::List<core::int*>*>* x = f.{asy::Future::then}<core::List<core::int*>*>((core::int* x) → core::List<core::int*>* => core::_GrowableList::•<core::int*>(0));
   asy::Future<core::List<core::int*>*>* y = x;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.expect
index da7400e..4771d6d 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.expect
@@ -24,24 +24,24 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::int*>* f;
-  asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::int* x) → asy::Future<core::int*>* async => let final core::int* #t1 = x in #t1 == null ?{core::int*} await asy::Future::value<core::int*>(3) : #t1){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::int* x) → asy::Future<core::int*>* async => let final core::int* #t1 = x in #t1.{core::num::==}(null) ?{core::int*} await asy::Future::value<core::int*>(3) : #t1);
   asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* async {
-    return (let final core::int* #t2 = await x in #t2 == null ?{core::Object*} asy::Future::value<core::int*>(3) : #t2) as{TypeError} FutureOr<core::int*>*;
-  }){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* => (let final core::int* #t3 = x in #t3 == null ?{core::Object*} asy::Future::value<core::int*>(3) : #t3) as{TypeError} FutureOr<core::int*>*){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+    return (let final core::int* #t2 = await x in #t2.{core::num::==}(null) ?{core::Object*} asy::Future::value<core::int*>(3) : #t2) as{TypeError} FutureOr<core::int*>*;
+  });
+  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* => (let final core::int* #t3 = x in #t3.{core::num::==}(null) ?{core::Object*} asy::Future::value<core::int*>(3) : #t3) as{TypeError} FutureOr<core::int*>*);
   asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* {
-    return (let final core::int* #t4 = x in #t4 == null ?{core::Object*} asy::Future::value<core::int*>(3) : #t4) as{TypeError} FutureOr<core::int*>*;
-  }){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+    return (let final core::int* #t4 = x in #t4.{core::num::==}(null) ?{core::Object*} asy::Future::value<core::int*>(3) : #t4) as{TypeError} FutureOr<core::int*>*;
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.outline.expect
index ffd3fdd..e4600c3 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect
index 061b526..ecd8f2b 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect
@@ -25,13 +25,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::int*>* f;
@@ -50,7 +50,7 @@
         #L1:
         {
           final core::int* #t1 = x;
-          if(#t1 == null) {
+          if(#t1.{core::num::==}(null)) {
             [yield] let dynamic #t2 = asy::_awaitHelper(asy::Future::value<core::int*>(3), :async_op_then, :async_op_error, :async_op) in null;
             :async_temporary_0 = _in::unsafeCast<core::int*>(:result);
           }
@@ -71,7 +71,7 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
   asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* /* originally async */ {
     final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
     core::bool* :is_sync = false;
@@ -86,7 +86,7 @@
         #L2:
         {
           [yield] let dynamic #t3 = asy::_awaitHelper(x, :async_op_then, :async_op_error, :async_op) in null;
-          :return_value = (let final core::int* #t4 = _in::unsafeCast<core::int*>(:result) in #t4 == null ?{core::Object*} asy::Future::value<core::int*>(3) : #t4) as{TypeError} FutureOr<core::int*>*;
+          :return_value = (let final core::int* #t4 = _in::unsafeCast<core::int*>(:result) in #t4.{core::num::==}(null) ?{core::Object*} asy::Future::value<core::int*>(3) : #t4) as{TypeError} FutureOr<core::int*>*;
           break #L2;
         }
         asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
@@ -100,11 +100,11 @@
     :async_op.call();
     :is_sync = true;
     return :async_future;
-  }){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* => (let final core::int* #t5 = x in #t5 == null ?{core::Object*} asy::Future::value<core::int*>(3) : #t5) as{TypeError} FutureOr<core::int*>*){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+  });
+  asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* => (let final core::int* #t5 = x in #t5.{core::num::==}(null) ?{core::Object*} asy::Future::value<core::int*>(3) : #t5) as{TypeError} FutureOr<core::int*>*);
   asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* {
-    return (let final core::int* #t6 = x in #t6 == null ?{core::Object*} asy::Future::value<core::int*>(3) : #t6) as{TypeError} FutureOr<core::int*>*;
-  }){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+    return (let final core::int* #t6 = x in #t6.{core::num::==}(null) ?{core::Object*} asy::Future::value<core::int*>(3) : #t6) as{TypeError} FutureOr<core::int*>*;
+  });
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.expect
index 9d407d0..704d5e9 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.expect
@@ -33,22 +33,22 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method main() → void {
-  self::MyFuture<core::double*>* f = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3){((dynamic) →* FutureOr<core::double*>*, {onError: core::Function*}) →* self::MyFuture<core::double*>*};
+  self::MyFuture<core::double*>* f = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3);
   asy::Future<core::int*>* f2 = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_upwards.dart:21:49: Error: A value of type 'MyFuture<double>' can't be assigned to a variable of type 'Future<int>'.
  - 'MyFuture' is from 'pkg/front_end/testcases/inference/future_then_upwards.dart'.
  - 'Future' is from 'dart:async'.
   Future<int> f2 = /*error:INVALID_ASSIGNMENT*/ f;
                                                 ^" in f as{TypeError} asy::Future<core::int*>*;
-  asy::Future<core::num*>* f3 = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3){((dynamic) →* FutureOr<core::double*>*, {onError: core::Function*}) →* self::MyFuture<core::double*>*} as asy::Future<core::double*>*;
+  asy::Future<core::num*>* f3 = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3) as asy::Future<core::double*>*;
 }
 static method foo() → self::MyFuture<dynamic>*
   return new self::MyFuture::value<core::int*>(1);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.outline.expect
index 64672a6..5309f49 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.transformed.expect
index 9e8fc77..10805f0 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.transformed.expect
@@ -33,22 +33,22 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method main() → void {
-  self::MyFuture<core::double*>* f = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3){((dynamic) →* FutureOr<core::double*>*, {onError: core::Function*}) →* self::MyFuture<core::double*>*};
+  self::MyFuture<core::double*>* f = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3);
   asy::Future<core::int*>* f2 = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_upwards.dart:21:49: Error: A value of type 'MyFuture<double>' can't be assigned to a variable of type 'Future<int>'.
  - 'MyFuture' is from 'pkg/front_end/testcases/inference/future_then_upwards.dart'.
  - 'Future' is from 'dart:async'.
   Future<int> f2 = /*error:INVALID_ASSIGNMENT*/ f;
                                                 ^" in f as{TypeError} asy::Future<core::int*>*;
-  asy::Future<core::num*>* f3 = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3){((dynamic) →* FutureOr<core::double*>*, {onError: core::Function*}) →* self::MyFuture<core::double*>*};
+  asy::Future<core::num*>* f3 = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3);
 }
 static method foo() → self::MyFuture<dynamic>*
   return new self::MyFuture::value<core::int*>(1);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.expect
index b6b8c88..8a122aa 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.expect
@@ -32,21 +32,21 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method main() → void {
-  self::MyFuture<core::double*>* f = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3){((dynamic) →* FutureOr<core::double*>*, {onError: core::Function*}) →* self::MyFuture<core::double*>*};
+  self::MyFuture<core::double*>* f = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3);
   self::MyFuture<core::int*>* f2 = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_upwards_2.dart:21:51: Error: A value of type 'MyFuture<double>' can't be assigned to a variable of type 'MyFuture<int>'.
  - 'MyFuture' is from 'pkg/front_end/testcases/inference/future_then_upwards_2.dart'.
   MyFuture<int> f2 = /*error:INVALID_ASSIGNMENT*/ f;
                                                   ^" in f as{TypeError} self::MyFuture<core::int*>*;
-  self::MyFuture<core::num*>* f3 = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3){((dynamic) →* FutureOr<core::double*>*, {onError: core::Function*}) →* self::MyFuture<core::double*>*} as self::MyFuture<core::double*>*;
+  self::MyFuture<core::num*>* f3 = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3) as self::MyFuture<core::double*>*;
 }
 static method foo() → self::MyFuture<dynamic>*
   return new self::MyFuture::value<core::int*>(1);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.outline.expect
index cc0154e..6b301eb 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.transformed.expect
index 2811c31..754b3a9 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.transformed.expect
@@ -32,21 +32,21 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method main() → void {
-  self::MyFuture<core::double*>* f = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3){((dynamic) →* FutureOr<core::double*>*, {onError: core::Function*}) →* self::MyFuture<core::double*>*};
+  self::MyFuture<core::double*>* f = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3);
   self::MyFuture<core::int*>* f2 = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_upwards_2.dart:21:51: Error: A value of type 'MyFuture<double>' can't be assigned to a variable of type 'MyFuture<int>'.
  - 'MyFuture' is from 'pkg/front_end/testcases/inference/future_then_upwards_2.dart'.
   MyFuture<int> f2 = /*error:INVALID_ASSIGNMENT*/ f;
                                                   ^" in f as{TypeError} self::MyFuture<core::int*>*;
-  self::MyFuture<core::num*>* f3 = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3){((dynamic) →* FutureOr<core::double*>*, {onError: core::Function*}) →* self::MyFuture<core::double*>*};
+  self::MyFuture<core::num*>* f3 = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3);
 }
 static method foo() → self::MyFuture<dynamic>*
   return new self::MyFuture::value<core::int*>(1);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.expect
index ca5d863..db196c2 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.expect
@@ -32,21 +32,21 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
-  asy::Future<core::double*>* f = self::foo().{asy::Future::then}<core::double*>((dynamic _) → core::double* => 2.3){((dynamic) →* FutureOr<core::double*>*, {onError: core::Function*}) →* asy::Future<core::double*>*};
+  asy::Future<core::double*>* f = self::foo().{asy::Future::then}<core::double*>((dynamic _) → core::double* => 2.3);
   asy::Future<core::int*>* f2 = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_upwards_3.dart:21:49: Error: A value of type 'Future<double>' can't be assigned to a variable of type 'Future<int>'.
  - 'Future' is from 'dart:async'.
   Future<int> f2 = /*error:INVALID_ASSIGNMENT*/ f;
                                                 ^" in f as{TypeError} asy::Future<core::int*>*;
-  asy::Future<core::num*>* f3 = self::foo().{asy::Future::then}<core::double*>((dynamic _) → core::double* => 2.3){((dynamic) →* FutureOr<core::double*>*, {onError: core::Function*}) →* asy::Future<core::double*>*} as asy::Future<core::double*>*;
+  asy::Future<core::num*>* f3 = self::foo().{asy::Future::then}<core::double*>((dynamic _) → core::double* => 2.3) as asy::Future<core::double*>*;
 }
 static method foo() → asy::Future<dynamic>*
   return asy::Future::value<core::int*>(1);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.outline.expect
index 0108d81..0085139 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.transformed.expect
index 5cff642..e3d9eb4 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.transformed.expect
@@ -32,21 +32,21 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
-  asy::Future<core::double*>* f = self::foo().{asy::Future::then}<core::double*>((dynamic _) → core::double* => 2.3){((dynamic) →* FutureOr<core::double*>*, {onError: core::Function*}) →* asy::Future<core::double*>*};
+  asy::Future<core::double*>* f = self::foo().{asy::Future::then}<core::double*>((dynamic _) → core::double* => 2.3);
   asy::Future<core::int*>* f2 = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_upwards_3.dart:21:49: Error: A value of type 'Future<double>' can't be assigned to a variable of type 'Future<int>'.
  - 'Future' is from 'dart:async'.
   Future<int> f2 = /*error:INVALID_ASSIGNMENT*/ f;
                                                 ^" in f as{TypeError} asy::Future<core::int*>*;
-  asy::Future<core::num*>* f3 = self::foo().{asy::Future::then}<core::double*>((dynamic _) → core::double* => 2.3){((dynamic) →* FutureOr<core::double*>*, {onError: core::Function*}) →* asy::Future<core::double*>*};
+  asy::Future<core::num*>* f3 = self::foo().{asy::Future::then}<core::double*>((dynamic _) → core::double* => 2.3);
 }
 static method foo() → asy::Future<dynamic>*
   return asy::Future::value<core::int*>(1);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_from_block.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_upwards_from_block.dart.weak.expect
index 3acce35..a8c0b46 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_from_block.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_from_block.dart.weak.expect
@@ -8,9 +8,9 @@
 static method test() → dynamic {
   asy::Future<core::int*>* base;
   asy::Future<core::bool*>* f = base.{asy::Future::then}<core::bool*>((core::int* x) → core::bool* {
-    return x =={core::num::==}{(core::Object*) →* core::bool*} 0;
-  }){((core::int*) →* FutureOr<core::bool*>*, {onError: core::Function*}) →* asy::Future<core::bool*>*};
-  asy::Future<core::bool*>* g = base.{asy::Future::then}<core::bool*>((core::int* x) → core::bool* => x =={core::num::==}{(core::Object*) →* core::bool*} 0){((core::int*) →* FutureOr<core::bool*>*, {onError: core::Function*}) →* asy::Future<core::bool*>*};
+    return x.{core::num::==}(0);
+  });
+  asy::Future<core::bool*>* g = base.{asy::Future::then}<core::bool*>((core::int* x) → core::bool* => x.{core::num::==}(0));
   asy::Future<core::bool*>* b = f;
   b = g;
 }
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_from_block.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_from_block.dart.weak.transformed.expect
index 3acce35..a8c0b46 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_from_block.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_from_block.dart.weak.transformed.expect
@@ -8,9 +8,9 @@
 static method test() → dynamic {
   asy::Future<core::int*>* base;
   asy::Future<core::bool*>* f = base.{asy::Future::then}<core::bool*>((core::int* x) → core::bool* {
-    return x =={core::num::==}{(core::Object*) →* core::bool*} 0;
-  }){((core::int*) →* FutureOr<core::bool*>*, {onError: core::Function*}) →* asy::Future<core::bool*>*};
-  asy::Future<core::bool*>* g = base.{asy::Future::then}<core::bool*>((core::int* x) → core::bool* => x =={core::num::==}{(core::Object*) →* core::bool*} 0){((core::int*) →* FutureOr<core::bool*>*, {onError: core::Function*}) →* asy::Future<core::bool*>*};
+    return x.{core::num::==}(0);
+  });
+  asy::Future<core::bool*>* g = base.{asy::Future::then}<core::bool*>((core::int* x) → core::bool* => x.{core::num::==}(0));
   asy::Future<core::bool*>* b = f;
   b = g;
 }
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.expect
index aacd7bb..ea9473b 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<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} FutureOr<core::int*>*;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.outline.expect
index 2a73d70..739558d 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async 
   ;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect
index 8f744f7..5fc430a 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* /* originally async */ {
   final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.expect
index dbfb2e6..6ee66d9 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<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} FutureOr<core::int*>*;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.outline.expect
index 547c415..04c973a 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async 
   ;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect
index 81ffcf6..2ba5916 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* /* originally async */ {
   final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.expect
index 2ac9820..5746283 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.expect
@@ -31,19 +31,19 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<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 Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:47: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>'.
         new /*@ typeArgs=int* */ Future.value('hi'));
-                                              ^" in "hi" as{TypeError} FutureOr<core::int*>?)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-static field asy::Future<core::List<core::int*>*>* t2 = self::f.{self::MyFuture::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => <core::int*>[3]){((dynamic) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* self::MyFuture<core::List<core::int*>*>*};
+                                              ^" in "hi" as{TypeError} FutureOr<core::int*>?));
+static field asy::Future<core::List<core::int*>*>* t2 = self::f.{self::MyFuture::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => <core::int*>[3]);
 static method g2() → asy::Future<core::List<core::int*>*>* async {
   return <core::int*>[3];
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect
index 2a918af..ef0889f 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field self::MyFuture<dynamic>* f;
 static field asy::Future<core::int*>* t1;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect
index bbe0213..f91a82c 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect
@@ -31,19 +31,19 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<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 Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:47: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>'.
         new /*@ typeArgs=int* */ Future.value('hi'));
-                                              ^" in "hi" as{TypeError} FutureOr<core::int*>?)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-static field asy::Future<core::List<core::int*>*>* t2 = self::f.{self::MyFuture::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => core::_GrowableList::_literal1<core::int*>(3)){((dynamic) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* self::MyFuture<core::List<core::int*>*>*};
+                                              ^" in "hi" as{TypeError} FutureOr<core::int*>?));
+static field asy::Future<core::List<core::int*>*>* t2 = self::f.{self::MyFuture::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => core::_GrowableList::_literal1<core::int*>(3));
 static method g2() → asy::Future<core::List<core::int*>*>* /* originally async */ {
   final asy::_Future<core::List<core::int*>*>* :async_future = new asy::_Future::•<core::List<core::int*>*>();
   core::bool* :is_sync = false;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.expect
index 10efb8a..bf4fd10 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.expect
@@ -24,17 +24,17 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<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")){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-static field asy::Future<core::List<core::int*>*>* t2 = self::f.{self::MyFuture::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => <core::int*>[3]){((dynamic) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* self::MyFuture<core::List<core::int*>*>*};
+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"));
+static field asy::Future<core::List<core::int*>*>* t2 = self::f.{self::MyFuture::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => <core::int*>[3]);
 static method g2() → asy::Future<core::List<core::int*>*>* async {
   return <core::int*>[3];
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.outline.expect
index cf32cfb..8471c54 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field self::MyFuture<dynamic>* f;
 static field asy::Future<core::int*>* t1;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect
index 191e1c8..3e5228e 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect
@@ -24,17 +24,17 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<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")){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
-static field asy::Future<core::List<core::int*>*>* t2 = self::f.{self::MyFuture::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => core::_GrowableList::_literal1<core::int*>(3)){((dynamic) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* self::MyFuture<core::List<core::int*>*>*};
+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"));
+static field asy::Future<core::List<core::int*>*>* t2 = self::f.{self::MyFuture::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => core::_GrowableList::_literal1<core::int*>(3));
 static method g2() → asy::Future<core::List<core::int*>*>* /* originally async */ {
   final asy::_Future<core::List<core::int*>*>* :async_future = new asy::_Future::•<core::List<core::int*>*>();
   core::bool* :is_sync = false;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.expect
index ec1e7dc..5811c28 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.expect
@@ -31,19 +31,19 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<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 Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:47: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>'.
         new /*@ typeArgs=int* */ Future.value('hi'));
-                                              ^" in "hi" as{TypeError} FutureOr<core::int*>?)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-static field asy::Future<core::List<core::int*>*>* t2 = self::f.{asy::Future::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => <core::int*>[3]){((dynamic) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* asy::Future<core::List<core::int*>*>*};
+                                              ^" in "hi" as{TypeError} FutureOr<core::int*>?));
+static field asy::Future<core::List<core::int*>*>* t2 = self::f.{asy::Future::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => <core::int*>[3]);
 static method g2() → asy::Future<core::List<core::int*>*>* async {
   return <core::int*>[3];
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect
index e4e19d0..d14c4a7 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field asy::Future<dynamic>* f;
 static field asy::Future<core::int*>* t1;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect
index 536aaad..c3a836e 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect
@@ -31,19 +31,19 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<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 Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:47: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>'.
         new /*@ typeArgs=int* */ Future.value('hi'));
-                                              ^" in "hi" as{TypeError} FutureOr<core::int*>?)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-static field asy::Future<core::List<core::int*>*>* t2 = self::f.{asy::Future::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => core::_GrowableList::_literal1<core::int*>(3)){((dynamic) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* asy::Future<core::List<core::int*>*>*};
+                                              ^" in "hi" as{TypeError} FutureOr<core::int*>?));
+static field asy::Future<core::List<core::int*>*>* t2 = self::f.{asy::Future::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => core::_GrowableList::_literal1<core::int*>(3));
 static method g2() → asy::Future<core::List<core::int*>*>* /* originally async */ {
   final asy::_Future<core::List<core::int*>*>* :async_future = new asy::_Future::•<core::List<core::int*>*>();
   core::bool* :is_sync = false;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.expect
index 4ab8890..8ce0d07 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.expect
@@ -24,17 +24,17 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<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")){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-static field asy::Future<core::List<core::int*>*>* t2 = self::f.{asy::Future::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => <core::int*>[3]){((dynamic) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* asy::Future<core::List<core::int*>*>*};
+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"));
+static field asy::Future<core::List<core::int*>*>* t2 = self::f.{asy::Future::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => <core::int*>[3]);
 static method g2() → asy::Future<core::List<core::int*>*>* async {
   return <core::int*>[3];
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.outline.expect
index 7a5d3d7..3853e42 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.outline.expect
@@ -24,13 +24,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field asy::Future<dynamic>* f;
 static field asy::Future<core::int*>* t1;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect
index 55d6d31..82d9f9b 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect
@@ -24,17 +24,17 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method 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>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
   no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<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")){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
-static field asy::Future<core::List<core::int*>*>* t2 = self::f.{asy::Future::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => core::_GrowableList::_literal1<core::int*>(3)){((dynamic) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* asy::Future<core::List<core::int*>*>*};
+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"));
+static field asy::Future<core::List<core::int*>*>* t2 = self::f.{asy::Future::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => core::_GrowableList::_literal1<core::int*>(3));
 static method g2() → asy::Future<core::List<core::int*>*>* /* originally async */ {
   final asy::_Future<core::List<core::int*>*>* :async_future = new asy::_Future::•<core::List<core::int*>*>();
   core::bool* :is_sync = false;
diff --git a/pkg/front_end/testcases/inference/generic_functions_return_typedef.dart.weak.expect b/pkg/front_end/testcases/inference/generic_functions_return_typedef.dart.weak.expect
index b6875d1..1f60cfe 100644
--- a/pkg/front_end/testcases/inference/generic_functions_return_typedef.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_functions_return_typedef.dart.weak.expect
@@ -6,8 +6,8 @@
 static method main() → dynamic {
   function f<T extends core::Object* = dynamic>(T* x) → (T*) →* void
     return null;
-  (core::int*) →* void x = f<core::int*>(42){(core::int*) →* (core::int*) →* void};
-  (core::int*) →* void y = f<core::int*>(42){(core::int*) →* (core::int*) →* void};
+  (core::int*) →* void x = f.call<core::int*>(42);
+  (core::int*) →* void y = f.call<core::int*>(42);
   (core::int*) →* void takesInt = x;
   takesInt = y;
 }
diff --git a/pkg/front_end/testcases/inference/generic_functions_return_typedef.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/generic_functions_return_typedef.dart.weak.transformed.expect
index b6875d1..1f60cfe 100644
--- a/pkg/front_end/testcases/inference/generic_functions_return_typedef.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_functions_return_typedef.dart.weak.transformed.expect
@@ -6,8 +6,8 @@
 static method main() → dynamic {
   function f<T extends core::Object* = dynamic>(T* x) → (T*) →* void
     return null;
-  (core::int*) →* void x = f<core::int*>(42){(core::int*) →* (core::int*) →* void};
-  (core::int*) →* void y = f<core::int*>(42){(core::int*) →* (core::int*) →* void};
+  (core::int*) →* void x = f.call<core::int*>(42);
+  (core::int*) →* void y = f.call<core::int*>(42);
   (core::int*) →* void takesInt = x;
   takesInt = y;
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.weak.expect b/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.weak.expect
index 19380c0..3d831a4 100644
--- a/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.weak.expect
@@ -6,7 +6,7 @@
   return null;
 static method main() → dynamic {
   core::String* x = self::f<core::int*, core::String*>(42);
-  core::String* y = (#C1)<core::int*, core::String*>(42){(core::int*) →* core::String*};
+  core::String* y = (#C1).call<core::int*, core::String*>(42);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.weak.transformed.expect
index 19380c0..3d831a4 100644
--- a/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
   return null;
 static method main() → dynamic {
   core::String* x = self::f<core::int*, core::String*>(42);
-  core::String* y = (#C1)<core::int*, core::String*>(42){(core::int*) →* core::String*};
+  core::String* y = (#C1).call<core::int*, core::String*>(42);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.weak.expect b/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.weak.expect
index fc573b1..3569bc6 100644
--- a/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.weak.expect
@@ -29,5 +29,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  new self::Foo::•<core::String*>().{self::Foo::method}<core::int*>(42){(core::int*) →* core::int*};
+  new self::Foo::•<core::String*>().{self::Foo::method}<core::int*>(42);
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.weak.expect b/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.weak.expect
index c42f670..233b1cc 100644
--- a/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.weak.expect
@@ -51,6 +51,6 @@
 static method main() → dynamic {
   core::int* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart:18:73: Error: Expected 0 type arguments.
       . /*error:WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD*/ /*@target=D.m*/ m<int>(
-                                                                        ^" in new self::D::•().{self::D::m}{<inapplicable>}.<core::int*>(42){(invalid-type) →* invalid-type};
+                                                                        ^" in new self::D::•().{self::D::m}<core::int*>(42);
   core::print(y);
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_downwards_inference_fold.dart.weak.expect b/pkg/front_end/testcases/inference/generic_methods_downwards_inference_fold.dart.weak.expect
index b0966cb..dcb7d1d 100644
--- a/pkg/front_end/testcases/inference/generic_methods_downwards_inference_fold.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_downwards_inference_fold.dart.weak.expect
@@ -4,14 +4,14 @@
 
 static method test() → void {
   core::List<core::int*>* o;
-  core::int* y = o.{core::Iterable::fold}<core::int*>(0, (core::int* x, core::int* y) → core::int* => x.{core::num::+}(y){(core::num*) →* core::int*}){(core::int*, (core::int*, core::int*) →* core::int*) →* core::int*};
-  dynamic z = o.{core::Iterable::fold}<dynamic>(0, (dynamic x, core::int* y) → dynamic => x{dynamic}.+(y)){(dynamic, (dynamic, core::int*) →* dynamic) →* dynamic};
+  core::int* y = o.{core::Iterable::fold}<core::int*>(0, (core::int* x, core::int* y) → core::int* => x.{core::num::+}(y));
+  dynamic z = o.{core::Iterable::fold}<dynamic>(0, (dynamic x, core::int* y) → dynamic => x.+(y));
   y = z as{TypeError,ForDynamic} core::int*;
 }
 static method functionExpressionInvocation() → void {
   core::List<core::int*>* o;
-  core::int* y = o.{core::Iterable::fold}{<T extends core::Object* = dynamic>(T*, (T*, core::int*) →* T*) →* T*}<core::int*>(0, (core::int* x, core::int* y) → core::int* => x.{core::num::+}(y){(core::num*) →* core::int*}){(core::int*, (core::int*, core::int*) →* core::int*) →* core::int*};
-  dynamic z = o.{core::Iterable::fold}{<T extends core::Object* = dynamic>(T*, (T*, core::int*) →* T*) →* T*}<dynamic>(0, (dynamic x, core::int* y) → dynamic => x{dynamic}.+(y)){(dynamic, (dynamic, core::int*) →* dynamic) →* dynamic};
+  core::int* y = o.{core::Iterable::fold}.call<core::int*>(0, (core::int* x, core::int* y) → core::int* => x.{core::num::+}(y));
+  dynamic z = o.{core::Iterable::fold}.call<dynamic>(0, (dynamic x, core::int* y) → dynamic => x.+(y));
   y = z as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_downwards_inference_fold.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_downwards_inference_fold.dart.weak.transformed.expect
index b0966cb..dcb7d1d 100644
--- a/pkg/front_end/testcases/inference/generic_methods_downwards_inference_fold.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_downwards_inference_fold.dart.weak.transformed.expect
@@ -4,14 +4,14 @@
 
 static method test() → void {
   core::List<core::int*>* o;
-  core::int* y = o.{core::Iterable::fold}<core::int*>(0, (core::int* x, core::int* y) → core::int* => x.{core::num::+}(y){(core::num*) →* core::int*}){(core::int*, (core::int*, core::int*) →* core::int*) →* core::int*};
-  dynamic z = o.{core::Iterable::fold}<dynamic>(0, (dynamic x, core::int* y) → dynamic => x{dynamic}.+(y)){(dynamic, (dynamic, core::int*) →* dynamic) →* dynamic};
+  core::int* y = o.{core::Iterable::fold}<core::int*>(0, (core::int* x, core::int* y) → core::int* => x.{core::num::+}(y));
+  dynamic z = o.{core::Iterable::fold}<dynamic>(0, (dynamic x, core::int* y) → dynamic => x.+(y));
   y = z as{TypeError,ForDynamic} core::int*;
 }
 static method functionExpressionInvocation() → void {
   core::List<core::int*>* o;
-  core::int* y = o.{core::Iterable::fold}{<T extends core::Object* = dynamic>(T*, (T*, core::int*) →* T*) →* T*}<core::int*>(0, (core::int* x, core::int* y) → core::int* => x.{core::num::+}(y){(core::num*) →* core::int*}){(core::int*, (core::int*, core::int*) →* core::int*) →* core::int*};
-  dynamic z = o.{core::Iterable::fold}{<T extends core::Object* = dynamic>(T*, (T*, core::int*) →* T*) →* T*}<dynamic>(0, (dynamic x, core::int* y) → dynamic => x{dynamic}.+(y)){(dynamic, (dynamic, core::int*) →* dynamic) →* dynamic};
+  core::int* y = o.{core::Iterable::fold}.call<core::int*>(0, (core::int* x, core::int* y) → core::int* => x.{core::num::+}(y));
+  dynamic z = o.{core::Iterable::fold}.call<dynamic>(0, (dynamic x, core::int* y) → dynamic => x.+(y));
   y = z as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_handle_override_of_non_generic_with_generic.dart.weak.expect b/pkg/front_end/testcases/inference/generic_methods_handle_override_of_non_generic_with_generic.dart.weak.expect
index 7241ba2..454ab90 100644
--- a/pkg/front_end/testcases/inference/generic_methods_handle_override_of_non_generic_with_generic.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_handle_override_of_non_generic_with_generic.dart.weak.expect
@@ -64,6 +64,6 @@
     return x;
 }
 static method main() → dynamic {
-  core::int* y = (new self::D::•() as self::C*).{self::C::m}(42){(dynamic) →* dynamic} as{TypeError,ForDynamic} core::int*;
+  core::int* y = (new self::D::•() as self::C*).{self::C::m}(42) as{TypeError,ForDynamic} core::int*;
   core::print(y);
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.expect
index 22921fb..527c4b0 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.expect
@@ -86,24 +86,24 @@
                                                                        ^" 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*);
-  self::takeIII(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::int*>);
-  self::takeDDD(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::double*>);
-  self::takeNNN(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::num*>);
-  self::takeIDN(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::num*>);
-  self::takeDIN(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::num*>);
-  self::takeIIN(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::int*>);
-  self::takeDDN(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::double*>);
-  self::takeIIO(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::int*>);
-  self::takeDDO(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::double*>);
-  self::takeOON((new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::Object*>) as{TypeError} (core::Object*, core::Object*) →* core::num*);
-  self::takeOOO((new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::Object*>) as{TypeError} (core::Object*, core::Object*) →* core::num*);
-  self::takeOOI((new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::Object*>) as{TypeError} (core::Object*, core::Object*) →* core::int*);
+  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*>);
+  self::takeIDN(new self::C::•().{self::C::m}<core::num*>);
+  self::takeDIN(new self::C::•().{self::C::m}<core::num*>);
+  self::takeIIN(new self::C::•().{self::C::m}<core::int*>);
+  self::takeDDN(new self::C::•().{self::C::m}<core::double*>);
+  self::takeIIO(new self::C::•().{self::C::m}<core::int*>);
+  self::takeDDO(new self::C::•().{self::C::m}<core::double*>);
+  self::takeOON((new self::C::•().{self::C::m}<core::Object*>) as{TypeError} (core::Object*, core::Object*) →* core::num*);
+  self::takeOOO((new self::C::•().{self::C::m}<core::Object*>) as{TypeError} (core::Object*, core::Object*) →* core::num*);
+  self::takeOOI((new self::C::•().{self::C::m}<core::Object*>) as{TypeError} (core::Object*, core::Object*) →* core::int*);
   self::takeIDI(let final Never* #t5 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:86:29: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'int Function(double, int)'.
           . /*@target=C.m*/ m);
-                            ^" in (new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::num*>) as{TypeError} (core::double*, core::int*) →* core::int*);
+                            ^" in (new self::C::•().{self::C::m}<core::num*>) as{TypeError} (core::double*, core::int*) →* core::int*);
   self::takeDID(let final Never* #t6 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:89:29: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'double Function(int, double)'.
           . /*@target=C.m*/ m);
-                            ^" in (new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::num*>) as{TypeError} (core::int*, core::double*) →* core::double*);
+                            ^" in (new self::C::•().{self::C::m}<core::num*>) as{TypeError} (core::int*, core::double*) →* core::double*);
 }
 static method takeIII((core::int*, core::int*) →* core::int* fn) → void {}
 static method takeDDD((core::double*, core::double*) →* core::double* fn) → void {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.transformed.expect
index 5857dad..3783f0e 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.transformed.expect
@@ -86,24 +86,24 @@
                                                                        ^" 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*);
-  self::takeIII(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::int*>);
-  self::takeDDD(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::double*>);
-  self::takeNNN(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::num*>);
-  self::takeIDN(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::num*>);
-  self::takeDIN(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::num*>);
-  self::takeIIN(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::int*>);
-  self::takeDDN(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::double*>);
-  self::takeIIO(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::int*>);
-  self::takeDDO(new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::double*>);
-  self::takeOON((new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::Object*>) as{TypeError} (core::Object*, core::Object*) →* core::num*);
-  self::takeOOO((new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::Object*>) as{TypeError} (core::Object*, core::Object*) →* core::num*);
-  self::takeOOI((new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::Object*>) as{TypeError} (core::Object*, core::Object*) →* core::int*);
+  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*>);
+  self::takeIDN(new self::C::•().{self::C::m}<core::num*>);
+  self::takeDIN(new self::C::•().{self::C::m}<core::num*>);
+  self::takeIIN(new self::C::•().{self::C::m}<core::int*>);
+  self::takeDDN(new self::C::•().{self::C::m}<core::double*>);
+  self::takeIIO(new self::C::•().{self::C::m}<core::int*>);
+  self::takeDDO(new self::C::•().{self::C::m}<core::double*>);
+  self::takeOON((new self::C::•().{self::C::m}<core::Object*>) as{TypeError} (core::Object*, core::Object*) →* core::num*);
+  self::takeOOO((new self::C::•().{self::C::m}<core::Object*>) as{TypeError} (core::Object*, core::Object*) →* core::num*);
+  self::takeOOI((new self::C::•().{self::C::m}<core::Object*>) as{TypeError} (core::Object*, core::Object*) →* core::int*);
   self::takeIDI(let final Never* #t5 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:86:29: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'int Function(double, int)'.
           . /*@target=C.m*/ m);
-                            ^" in (new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::num*>) as{TypeError} (core::double*, core::int*) →* core::int*);
+                            ^" in (new self::C::•().{self::C::m}<core::num*>) as{TypeError} (core::double*, core::int*) →* core::int*);
   self::takeDID(let final Never* #t6 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:89:29: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'double Function(int, double)'.
           . /*@target=C.m*/ m);
-                            ^" in (new self::C::•().{self::C::m}{<T extends core::num*>(T*, T*) →* T*}<core::num*>) as{TypeError} (core::int*, core::double*) →* core::double*);
+                            ^" in (new self::C::•().{self::C::m}<core::num*>) as{TypeError} (core::int*, core::double*) →* core::double*);
 }
 static method takeIII((core::int*, core::int*) →* core::int* fn) → void {}
 static method takeDDD((core::double*, core::double*) →* core::double* fn) → void {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.weak.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.weak.expect
index 530ec6a..3d4db6d 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.weak.expect
@@ -27,6 +27,6 @@
     return x;
 }
 static method main() → dynamic {
-  core::int* y = new self::D::•().{self::D::m}<core::int*>(42){(core::int*) →* core::int*};
+  core::int* y = new self::D::•().{self::D::m}<core::int*>(42);
   core::print(y);
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.weak.transformed.expect
index 530ec6a..3d4db6d 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.weak.transformed.expect
@@ -27,6 +27,6 @@
     return x;
 }
 static method main() → dynamic {
-  core::int* y = new self::D::•().{self::D::m}<core::int*>(42){(core::int*) →* core::int*};
+  core::int* y = new self::D::•().{self::D::m}<core::int*>(42);
   core::print(y);
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.weak.expect b/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.weak.expect
index fedd32d..7ee3084 100644
--- a/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.weak.expect
@@ -13,6 +13,6 @@
   core::List<core::String*>* y;
   core::Iterable<core::String*>* x = y.{core::Iterable::map}<core::String*>((core::String* z) → core::String* => let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_inference_error.dart:13:11: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
           1.0);
-          ^" in 1.0 as{TypeError} core::String*){((core::String*) →* core::String*) →* core::Iterable<core::String*>*};
+          ^" in 1.0 as{TypeError} core::String*);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.weak.transformed.expect
index fedd32d..7ee3084 100644
--- a/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.weak.transformed.expect
@@ -13,6 +13,6 @@
   core::List<core::String*>* y;
   core::Iterable<core::String*>* x = y.{core::Iterable::map}<core::String*>((core::String* z) → core::String* => let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_inference_error.dart:13:11: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
           1.0);
-          ^" in 1.0 as{TypeError} core::String*){((core::String*) →* core::String*) →* core::Iterable<core::String*>*};
+          ^" in 1.0 as{TypeError} core::String*);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.weak.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.weak.expect
index 860faf4..6523782 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.weak.expect
@@ -20,16 +20,16 @@
 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::int*) →* asy::Future<core::int*>*) →* core::Iterable<asy::Future<core::int*>*>*};
+  core::Iterable<asy::Future<core::int*>*>* list = <core::int*>[1, 2, 3].{core::Iterable::map}<asy::Future<core::int*>*>(#C1);
   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) → FutureOr<core::String*>* => list.{core::Iterable::fold}<FutureOr<core::String*>*>("", (FutureOr<core::String*>* x, core::int* y) → FutureOr<core::String*>* => invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:123: Error: The operator '+' isn't defined for the class 'FutureOr<String>'.
 Try correcting the operator to an existing operator, or defining a '+' operator.
                           /*@ type=int* */ y) => /*info:DYNAMIC_CAST,info:DYNAMIC_INVOKE*/ x /*error:UNDEFINED_OPERATOR*/ +
-                                                                                                                          ^" as{TypeError,ForDynamic} FutureOr<core::String*>*){(FutureOr<core::String*>*, (FutureOr<core::String*>*, core::int*) →* FutureOr<core::String*>*) →* FutureOr<core::String*>*}){((core::List<core::int*>*) →* FutureOr<core::String*>*, {onError: core::Function*}) →* asy::Future<core::String*>*};
+                                                                                                                          ^" as{TypeError,ForDynamic} FutureOr<core::String*>*));
   asy::Future<core::String*>* results3 = results.{asy::Future::then}<core::String*>((core::List<core::int*>* list) → FutureOr<core::String*>* => list.{core::Iterable::fold}<FutureOr<core::String*>*>("", let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:111: Error: The argument type 'String Function(String, int)' can't be assigned to the parameter type 'FutureOr<String> Function(FutureOr<String>, int)'.
                   /*info:INFERRED_TYPE_CLOSURE,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ /*@ returnType=String* */ (String
-                                                                                                              ^" in ((core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}(){() →* core::String*}){(core::String*) →* core::String*}) as{TypeError} (FutureOr<core::String*>*, core::int*) →* FutureOr<core::String*>*){(FutureOr<core::String*>*, (FutureOr<core::String*>*, core::int*) →* FutureOr<core::String*>*) →* FutureOr<core::String*>*}){((core::List<core::int*>*) →* FutureOr<core::String*>*, {onError: core::Function*}) →* asy::Future<core::String*>*};
-  asy::Future<core::String*>* results4 = results.{asy::Future::then}<core::String*>((core::List<core::int*>* list) → core::String* => list.{core::Iterable::fold}<core::String*>("", (core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}(){() →* core::String*}){(core::String*) →* core::String*}){(core::String*, (core::String*, core::int*) →* core::String*) →* core::String*}){((core::List<core::int*>*) →* FutureOr<core::String*>*, {onError: core::Function*}) →* asy::Future<core::String*>*};
+                                                                                                              ^" in ((core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}())) as{TypeError} (FutureOr<core::String*>*, core::int*) →* FutureOr<core::String*>*));
+  asy::Future<core::String*>* results4 = results.{asy::Future::then}<core::String*>((core::List<core::int*>* list) → core::String* => list.{core::Iterable::fold}<core::String*>("", (core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}())));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.weak.transformed.expect
index 99dc822..c25406f 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.weak.transformed.expect
@@ -20,16 +20,16 @@
 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::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::map}<asy::Future<core::int*>*>(#C1){((core::int*) →* asy::Future<core::int*>*) →* core::Iterable<asy::Future<core::int*>*>*};
+  core::Iterable<asy::Future<core::int*>*>* list = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::map}<asy::Future<core::int*>*>(#C1);
   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) → FutureOr<core::String*>* => list.{core::Iterable::fold}<FutureOr<core::String*>*>("", (FutureOr<core::String*>* x, core::int* y) → FutureOr<core::String*>* => invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:123: Error: The operator '+' isn't defined for the class 'FutureOr<String>'.
 Try correcting the operator to an existing operator, or defining a '+' operator.
                           /*@ type=int* */ y) => /*info:DYNAMIC_CAST,info:DYNAMIC_INVOKE*/ x /*error:UNDEFINED_OPERATOR*/ +
-                                                                                                                          ^"){(FutureOr<core::String*>*, (FutureOr<core::String*>*, core::int*) →* FutureOr<core::String*>*) →* FutureOr<core::String*>*}){((core::List<core::int*>*) →* FutureOr<core::String*>*, {onError: core::Function*}) →* asy::Future<core::String*>*};
+                                                                                                                          ^"));
   asy::Future<core::String*>* results3 = results.{asy::Future::then}<core::String*>((core::List<core::int*>* list) → FutureOr<core::String*>* => list.{core::Iterable::fold}<FutureOr<core::String*>*>("", let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:111: Error: The argument type 'String Function(String, int)' can't be assigned to the parameter type 'FutureOr<String> Function(FutureOr<String>, int)'.
                   /*info:INFERRED_TYPE_CLOSURE,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ /*@ returnType=String* */ (String
-                                                                                                              ^" in ((core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}(){() →* core::String*}){(core::String*) →* core::String*}) as{TypeError} (FutureOr<core::String*>*, core::int*) →* FutureOr<core::String*>*){(FutureOr<core::String*>*, (FutureOr<core::String*>*, core::int*) →* FutureOr<core::String*>*) →* FutureOr<core::String*>*}){((core::List<core::int*>*) →* FutureOr<core::String*>*, {onError: core::Function*}) →* asy::Future<core::String*>*};
-  asy::Future<core::String*>* results4 = results.{asy::Future::then}<core::String*>((core::List<core::int*>* list) → core::String* => list.{core::Iterable::fold}<core::String*>("", (core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}(){() →* core::String*}){(core::String*) →* core::String*}){(core::String*, (core::String*, core::int*) →* core::String*) →* core::String*}){((core::List<core::int*>*) →* FutureOr<core::String*>*, {onError: core::Function*}) →* asy::Future<core::String*>*};
+                                                                                                              ^" in ((core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}())) as{TypeError} (FutureOr<core::String*>*, core::int*) →* FutureOr<core::String*>*));
+  asy::Future<core::String*>* results4 = results.{asy::Future::then}<core::String*>((core::List<core::int*>* list) → core::String* => list.{core::Iterable::fold}<core::String*>("", (core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}())));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.expect b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.expect
index 34108a8..76dfdff 100644
--- a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.expect
@@ -39,8 +39,8 @@
 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::List<self::Frame*>*}.{core::Iterable::map}<core::int*>((self::Frame* frame) → core::int* => frame.{self::Frame::location}{core::String*}.{core::String::length}{core::int*}){((self::Frame*) →* core::int*) →* core::Iterable<core::int*>*}.{core::Iterable::fold}<core::int*>(0, #C1<core::int*>){(core::int*, (core::int*, core::int*) →* core::int*) →* core::int*};
-  }){((self::Trace*) →* core::int*) →* core::Iterable<core::int*>*}.{core::Iterable::fold}<core::int*>(0, #C1<core::int*>){(core::int*, (core::int*, core::int*) →* core::int*) →* 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*>);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.transformed.expect
index 947bd81..944df3a 100644
--- a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.transformed.expect
@@ -39,8 +39,8 @@
 static method main() → dynamic {
   core::List<self::Trace*>* traces = core::_GrowableList::•<self::Trace*>(0);
   core::int* longest = traces.{core::Iterable::map}<core::int*>((self::Trace* trace) → core::int* {
-    return trace.{self::Trace::frames}{core::List<self::Frame*>*}.{core::Iterable::map}<core::int*>((self::Frame* frame) → core::int* => frame.{self::Frame::location}{core::String*}.{core::String::length}{core::int*}){((self::Frame*) →* core::int*) →* core::Iterable<core::int*>*}.{core::Iterable::fold}<core::int*>(0, #C1<core::int*>){(core::int*, (core::int*, core::int*) →* core::int*) →* core::int*};
-  }){((self::Trace*) →* core::int*) →* core::Iterable<core::int*>*}.{core::Iterable::fold}<core::int*>(0, #C1<core::int*>){(core::int*, (core::int*, core::int*) →* core::int*) →* 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*>);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.weak.expect b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.weak.expect
index 5f6e2e6..f3664a9 100644
--- a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.weak.expect
@@ -7,7 +7,7 @@
     : 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);
+    self::C::sort2<self::C::E*>(this, let final (self::C::E*, self::C::E*) →* core::int* #t1 = compare in #t1.{core::Object::==}(null) ?{(self::C::E*, self::C::E*) →* core::int*} #C2 : #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.weak.transformed.expect b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.weak.transformed.expect
index 5f6e2e6..f3664a9 100644
--- a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
     : 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);
+    self::C::sort2<self::C::E*>(this, let final (self::C::E*, self::C::E*) →* core::int* #t1 = compare in #t1.{core::Object::==}(null) ?{(self::C::E*, self::C::E*) →* core::int*} #C2 : #t1);
   }
   static method _compareAny(dynamic a, dynamic b) → core::int* {
     throw "unimplemented";
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.weak.expect
index 43a39ef..a36e492 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.weak.expect
@@ -42,19 +42,19 @@
     ;
   method test() → void {
     this.{self::Test::member} = self::f<self::B*>();
-    this.{self::Test::member}{self::B*} == null ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
+    this.{self::Test::member}.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = this.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = this.{self::Test::member}{self::B*} in #t1 == null ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
-    self::A* v3 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    self::B* v4 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    self::C* v5 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    self::B* v6 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v7 = let final self::B* #t2 = this.{self::Test::member}{self::B*} in let final self::B* #t3 = this.{self::Test::member} = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+    self::B* v2 = let final self::B* #t1 = this.{self::Test::member} in #t1.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
+    self::A* v3 = this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    self::B* v4 = this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    self::C* v5 = this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    self::B* v6 = this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
+    self::B* v7 = let final self::B* #t2 = this.{self::Test::member} in let final self::B* #t3 = this.{self::Test::member} = #t2.{self::B::-}(1) in #t2;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.weak.transformed.expect
index 43a39ef..a36e492 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.weak.transformed.expect
@@ -42,19 +42,19 @@
     ;
   method test() → void {
     this.{self::Test::member} = self::f<self::B*>();
-    this.{self::Test::member}{self::B*} == null ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
+    this.{self::Test::member}.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = this.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = this.{self::Test::member}{self::B*} in #t1 == null ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
-    self::A* v3 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    self::B* v4 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    self::C* v5 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    self::B* v6 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v7 = let final self::B* #t2 = this.{self::Test::member}{self::B*} in let final self::B* #t3 = this.{self::Test::member} = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+    self::B* v2 = let final self::B* #t1 = this.{self::Test::member} in #t1.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
+    self::A* v3 = this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    self::B* v4 = this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    self::C* v5 = this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    self::B* v6 = this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
+    self::B* v7 = let final self::B* #t2 = this.{self::Test::member} in let final self::B* #t3 = this.{self::Test::member} = #t2.{self::B::-}(1) in #t2;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.weak.expect
index af067f3..0ae22f6 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.weak.expect
@@ -9,10 +9,10 @@
     ;
   method test() → void {
     core::int* v1 = this.{self::Test1::t} = self::getInt();
-    core::int* v4 = let final core::int* #t1 = this.{self::Test1::t}{core::int*} in #t1 == null ?{core::int*} this.{self::Test1::t} = self::getInt() : #t1;
-    core::int* v7 = this.{self::Test1::t} = this.{self::Test1::t}{core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-    core::int* v10 = this.{self::Test1::t} = this.{self::Test1::t}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-    core::int* v11 = let final core::int* #t2 = this.{self::Test1::t}{core::int*} in let final core::int* #t3 = this.{self::Test1::t} = #t2.{core::num::+}(1){(core::num*) →* core::int*} in #t2;
+    core::int* v4 = let final core::int* #t1 = this.{self::Test1::t} in #t1.{core::num::==}(null) ?{core::int*} this.{self::Test1::t} = self::getInt() : #t1;
+    core::int* v7 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(self::getInt());
+    core::int* v10 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(1);
+    core::int* v11 = let final core::int* #t2 = this.{self::Test1::t} in let final core::int* #t3 = this.{self::Test1::t} = #t2.{core::num::+}(1) in #t2;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -34,14 +34,14 @@
     core::int* v1 = this.{self::Test2::t} = self::getInt();
     core::num* v2 = this.{self::Test2::t} = self::getNum();
     core::double* v3 = this.{self::Test2::t} = self::getDouble();
-    core::num* v4 = let final core::num* #t4 = this.{self::Test2::t}{core::num*} in #t4 == null ?{core::num*} this.{self::Test2::t} = self::getInt() : #t4;
-    core::num* v5 = let final core::num* #t5 = this.{self::Test2::t}{core::num*} in #t5 == null ?{core::num*} this.{self::Test2::t} = self::getNum() : #t5;
-    core::num* v6 = let final core::num* #t6 = this.{self::Test2::t}{core::num*} in #t6 == null ?{core::num*} this.{self::Test2::t} = self::getDouble() : #t6;
-    core::num* v7 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-    core::num* v8 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-    core::num* v9 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-    core::num* v10 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(1){(core::num*) →* core::num*};
-    core::num* v11 = let final core::num* #t7 = this.{self::Test2::t}{core::num*} in let final core::num* #t8 = this.{self::Test2::t} = #t7.{core::num::+}(1){(core::num*) →* core::num*} in #t7;
+    core::num* v4 = let final core::num* #t4 = this.{self::Test2::t} in #t4.{core::num::==}(null) ?{core::num*} this.{self::Test2::t} = self::getInt() : #t4;
+    core::num* v5 = let final core::num* #t5 = this.{self::Test2::t} in #t5.{core::num::==}(null) ?{core::num*} this.{self::Test2::t} = self::getNum() : #t5;
+    core::num* v6 = let final core::num* #t6 = this.{self::Test2::t} in #t6.{core::num::==}(null) ?{core::num*} this.{self::Test2::t} = self::getDouble() : #t6;
+    core::num* v7 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(self::getInt());
+    core::num* v8 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(self::getNum());
+    core::num* v9 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(self::getDouble());
+    core::num* v10 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(1);
+    core::num* v11 = let final core::num* #t7 = this.{self::Test2::t} in let final core::num* #t8 = this.{self::Test2::t} = #t7.{core::num::+}(1) in #t7;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -61,12 +61,12 @@
     ;
   method test3() → void {
     core::double* v3 = this.{self::Test3::t} = self::getDouble();
-    core::double* v6 = let final core::double* #t9 = this.{self::Test3::t}{core::double*} in #t9 == null ?{core::double*} this.{self::Test3::t} = self::getDouble() : #t9;
-    core::double* v7 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-    core::double* v8 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-    core::double* v9 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-    core::double* v10 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(1){(core::num*) →* core::double*};
-    core::double* v11 = let final core::double* #t10 = this.{self::Test3::t}{core::double*} in let final core::double* #t11 = this.{self::Test3::t} = #t10.{core::double::+}(1){(core::num*) →* core::double*} in #t10;
+    core::double* v6 = let final core::double* #t9 = this.{self::Test3::t} in #t9.{core::num::==}(null) ?{core::double*} this.{self::Test3::t} = self::getDouble() : #t9;
+    core::double* v7 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(self::getInt());
+    core::double* v8 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(self::getNum());
+    core::double* v9 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(self::getDouble());
+    core::double* v10 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(1);
+    core::double* v11 = let final core::double* #t10 = this.{self::Test3::t} in let final core::double* #t11 = this.{self::Test3::t} = #t10.{core::double::+}(1) in #t10;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.weak.transformed.expect
index af067f3..0ae22f6 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.weak.transformed.expect
@@ -9,10 +9,10 @@
     ;
   method test() → void {
     core::int* v1 = this.{self::Test1::t} = self::getInt();
-    core::int* v4 = let final core::int* #t1 = this.{self::Test1::t}{core::int*} in #t1 == null ?{core::int*} this.{self::Test1::t} = self::getInt() : #t1;
-    core::int* v7 = this.{self::Test1::t} = this.{self::Test1::t}{core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-    core::int* v10 = this.{self::Test1::t} = this.{self::Test1::t}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-    core::int* v11 = let final core::int* #t2 = this.{self::Test1::t}{core::int*} in let final core::int* #t3 = this.{self::Test1::t} = #t2.{core::num::+}(1){(core::num*) →* core::int*} in #t2;
+    core::int* v4 = let final core::int* #t1 = this.{self::Test1::t} in #t1.{core::num::==}(null) ?{core::int*} this.{self::Test1::t} = self::getInt() : #t1;
+    core::int* v7 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(self::getInt());
+    core::int* v10 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(1);
+    core::int* v11 = let final core::int* #t2 = this.{self::Test1::t} in let final core::int* #t3 = this.{self::Test1::t} = #t2.{core::num::+}(1) in #t2;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -34,14 +34,14 @@
     core::int* v1 = this.{self::Test2::t} = self::getInt();
     core::num* v2 = this.{self::Test2::t} = self::getNum();
     core::double* v3 = this.{self::Test2::t} = self::getDouble();
-    core::num* v4 = let final core::num* #t4 = this.{self::Test2::t}{core::num*} in #t4 == null ?{core::num*} this.{self::Test2::t} = self::getInt() : #t4;
-    core::num* v5 = let final core::num* #t5 = this.{self::Test2::t}{core::num*} in #t5 == null ?{core::num*} this.{self::Test2::t} = self::getNum() : #t5;
-    core::num* v6 = let final core::num* #t6 = this.{self::Test2::t}{core::num*} in #t6 == null ?{core::num*} this.{self::Test2::t} = self::getDouble() : #t6;
-    core::num* v7 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-    core::num* v8 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-    core::num* v9 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-    core::num* v10 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(1){(core::num*) →* core::num*};
-    core::num* v11 = let final core::num* #t7 = this.{self::Test2::t}{core::num*} in let final core::num* #t8 = this.{self::Test2::t} = #t7.{core::num::+}(1){(core::num*) →* core::num*} in #t7;
+    core::num* v4 = let final core::num* #t4 = this.{self::Test2::t} in #t4.{core::num::==}(null) ?{core::num*} this.{self::Test2::t} = self::getInt() : #t4;
+    core::num* v5 = let final core::num* #t5 = this.{self::Test2::t} in #t5.{core::num::==}(null) ?{core::num*} this.{self::Test2::t} = self::getNum() : #t5;
+    core::num* v6 = let final core::num* #t6 = this.{self::Test2::t} in #t6.{core::num::==}(null) ?{core::num*} this.{self::Test2::t} = self::getDouble() : #t6;
+    core::num* v7 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(self::getInt());
+    core::num* v8 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(self::getNum());
+    core::num* v9 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(self::getDouble());
+    core::num* v10 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(1);
+    core::num* v11 = let final core::num* #t7 = this.{self::Test2::t} in let final core::num* #t8 = this.{self::Test2::t} = #t7.{core::num::+}(1) in #t7;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -61,12 +61,12 @@
     ;
   method test3() → void {
     core::double* v3 = this.{self::Test3::t} = self::getDouble();
-    core::double* v6 = let final core::double* #t9 = this.{self::Test3::t}{core::double*} in #t9 == null ?{core::double*} this.{self::Test3::t} = self::getDouble() : #t9;
-    core::double* v7 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-    core::double* v8 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-    core::double* v9 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-    core::double* v10 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(1){(core::num*) →* core::double*};
-    core::double* v11 = let final core::double* #t10 = this.{self::Test3::t}{core::double*} in let final core::double* #t11 = this.{self::Test3::t} = #t10.{core::double::+}(1){(core::num*) →* core::double*} in #t10;
+    core::double* v6 = let final core::double* #t9 = this.{self::Test3::t} in #t9.{core::num::==}(null) ?{core::double*} this.{self::Test3::t} = self::getDouble() : #t9;
+    core::double* v7 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(self::getInt());
+    core::double* v8 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(self::getNum());
+    core::double* v9 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(self::getDouble());
+    core::double* v10 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(1);
+    core::double* v11 = let final core::double* #t10 = this.{self::Test3::t} in let final core::double* #t11 = this.{self::Test3::t} = #t10.{core::double::+}(1) in #t10;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.weak.expect
index 446a6ee..b9de2fb 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.weak.expect
@@ -59,21 +59,21 @@
   operator []=(self::Index* i, self::B* v) → void {}
   method test() → void {
     self::Test* t = self::f<self::Test*>();
-    t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>()){(self::Index*, self::B*) →* void};
-    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2){(self::Index*) →* self::B*} == null ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()){(self::Index*, self::B*) →* void} : null;
-    let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*){(self::Index*, self::B*) →* void};
-    let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in #t5.{self::Test::[]=}(#t6, #t5.{self::Test::[]}(#t6){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*}){(self::Index*, self::B*) →* void};
-    let final self::Test* #t7 = t in let final self::Index* #t8 = self::f<self::Index*>() in #t7.{self::Test::[]=}(#t8, #t7.{self::Test::[]}(#t8){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*}){(self::Index*, self::B*) →* void};
-    t.{self::Test::[]}(self::f<self::Index*>()){(self::Index*) →* self::B*};
-    let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in let final self::B* #t11 = #t9.{self::Test::[]}(#t10){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t12 = #t9.{self::Test::[]=}(#t10, #t11){(self::Index*, self::B*) →* void} in #t11;
-    let final self::Test* #t13 = t in let final self::Index* #t14 = self::f<self::Index*>() in #t13.{self::Test::[]=}(#t14, #t13.{self::Test::[]}(#t14){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void};
-    self::B* v1 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = self::f<self::B*>() in let final void #t18 = #t15.{self::Test::[]=}(#t16, #t17){(self::Index*, self::B*) →* void} in #t17;
-    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20){(self::Index*) →* self::B*} in #t21 == null ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22){(self::Index*, self::B*) →* void} in #t22 : #t21;
-    self::B* v4 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = #t24.{self::Test::[]}(#t25){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26){(self::Index*, self::B*) →* void} in #t26;
-    self::C* v5 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::C* #t30 = #t28.{self::Test::[]}(#t29){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30){(self::Index*, self::B*) →* void} in #t30;
-    self::B* v6 = t.{self::Test::[]}(self::f<self::Index*>()){(self::Index*) →* self::B*};
-    self::B* v7 = let final self::Test* #t32 = t in let final self::Index* #t33 = self::f<self::Index*>() in let final self::B* #t34 = #t32.{self::Test::[]}(#t33){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t35 = #t32.{self::Test::[]=}(#t33, #t34){(self::Index*, self::B*) →* void} in #t34;
-    self::B* v8 = let final self::Test* #t36 = t in let final self::Index* #t37 = self::f<self::Index*>() in let final self::B* #t38 = #t36.{self::Test::[]}(#t37){(self::Index*) →* self::B*} in let final void #t39 = #t36.{self::Test::[]=}(#t37, #t38.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void} in #t38;
+    t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
+    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{self::A::==}(null) ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()) : null;
+    let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
+    let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in #t5.{self::Test::[]=}(#t6, #t5.{self::Test::[]}(#t6).{self::B::*}(self::f<self::B*>()));
+    let final self::Test* #t7 = t in let final self::Index* #t8 = self::f<self::Index*>() in #t7.{self::Test::[]=}(#t8, #t7.{self::Test::[]}(#t8).{self::B::&}(self::f<self::A*>()));
+    t.{self::Test::[]}(self::f<self::Index*>());
+    let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in let final self::B* #t11 = #t9.{self::Test::[]}(#t10).{self::B::-}(1) in let final void #t12 = #t9.{self::Test::[]=}(#t10, #t11) in #t11;
+    let final self::Test* #t13 = t in let final self::Index* #t14 = self::f<self::Index*>() in #t13.{self::Test::[]=}(#t14, #t13.{self::Test::[]}(#t14).{self::B::-}(1));
+    self::B* v1 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = self::f<self::B*>() in let final void #t18 = #t15.{self::Test::[]=}(#t16, #t17) in #t17;
+    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20) in #t21.{self::A::==}(null) ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22) in #t22 : #t21;
+    self::B* v4 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = #t24.{self::Test::[]}(#t25).{self::B::*}(self::f<self::B*>()) in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26) in #t26;
+    self::C* v5 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::C* #t30 = #t28.{self::Test::[]}(#t29).{self::B::&}(self::f<self::A*>()) in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30) in #t30;
+    self::B* v6 = t.{self::Test::[]}(self::f<self::Index*>());
+    self::B* v7 = let final self::Test* #t32 = t in let final self::Index* #t33 = self::f<self::Index*>() in let final self::B* #t34 = #t32.{self::Test::[]}(#t33).{self::B::-}(1) in let final void #t35 = #t32.{self::Test::[]=}(#t33, #t34) in #t34;
+    self::B* v8 = let final self::Test* #t36 = t in let final self::Index* #t37 = self::f<self::Index*>() in let final self::B* #t38 = #t36.{self::Test::[]}(#t37) in let final void #t39 = #t36.{self::Test::[]=}(#t37, #t38.{self::B::-}(1)) in #t38;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.weak.transformed.expect
index 446a6ee..b9de2fb 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.weak.transformed.expect
@@ -59,21 +59,21 @@
   operator []=(self::Index* i, self::B* v) → void {}
   method test() → void {
     self::Test* t = self::f<self::Test*>();
-    t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>()){(self::Index*, self::B*) →* void};
-    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2){(self::Index*) →* self::B*} == null ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()){(self::Index*, self::B*) →* void} : null;
-    let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*){(self::Index*, self::B*) →* void};
-    let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in #t5.{self::Test::[]=}(#t6, #t5.{self::Test::[]}(#t6){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*}){(self::Index*, self::B*) →* void};
-    let final self::Test* #t7 = t in let final self::Index* #t8 = self::f<self::Index*>() in #t7.{self::Test::[]=}(#t8, #t7.{self::Test::[]}(#t8){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*}){(self::Index*, self::B*) →* void};
-    t.{self::Test::[]}(self::f<self::Index*>()){(self::Index*) →* self::B*};
-    let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in let final self::B* #t11 = #t9.{self::Test::[]}(#t10){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t12 = #t9.{self::Test::[]=}(#t10, #t11){(self::Index*, self::B*) →* void} in #t11;
-    let final self::Test* #t13 = t in let final self::Index* #t14 = self::f<self::Index*>() in #t13.{self::Test::[]=}(#t14, #t13.{self::Test::[]}(#t14){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void};
-    self::B* v1 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = self::f<self::B*>() in let final void #t18 = #t15.{self::Test::[]=}(#t16, #t17){(self::Index*, self::B*) →* void} in #t17;
-    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20){(self::Index*) →* self::B*} in #t21 == null ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22){(self::Index*, self::B*) →* void} in #t22 : #t21;
-    self::B* v4 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = #t24.{self::Test::[]}(#t25){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26){(self::Index*, self::B*) →* void} in #t26;
-    self::C* v5 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::C* #t30 = #t28.{self::Test::[]}(#t29){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30){(self::Index*, self::B*) →* void} in #t30;
-    self::B* v6 = t.{self::Test::[]}(self::f<self::Index*>()){(self::Index*) →* self::B*};
-    self::B* v7 = let final self::Test* #t32 = t in let final self::Index* #t33 = self::f<self::Index*>() in let final self::B* #t34 = #t32.{self::Test::[]}(#t33){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t35 = #t32.{self::Test::[]=}(#t33, #t34){(self::Index*, self::B*) →* void} in #t34;
-    self::B* v8 = let final self::Test* #t36 = t in let final self::Index* #t37 = self::f<self::Index*>() in let final self::B* #t38 = #t36.{self::Test::[]}(#t37){(self::Index*) →* self::B*} in let final void #t39 = #t36.{self::Test::[]=}(#t37, #t38.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void} in #t38;
+    t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
+    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{self::A::==}(null) ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()) : null;
+    let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
+    let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in #t5.{self::Test::[]=}(#t6, #t5.{self::Test::[]}(#t6).{self::B::*}(self::f<self::B*>()));
+    let final self::Test* #t7 = t in let final self::Index* #t8 = self::f<self::Index*>() in #t7.{self::Test::[]=}(#t8, #t7.{self::Test::[]}(#t8).{self::B::&}(self::f<self::A*>()));
+    t.{self::Test::[]}(self::f<self::Index*>());
+    let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in let final self::B* #t11 = #t9.{self::Test::[]}(#t10).{self::B::-}(1) in let final void #t12 = #t9.{self::Test::[]=}(#t10, #t11) in #t11;
+    let final self::Test* #t13 = t in let final self::Index* #t14 = self::f<self::Index*>() in #t13.{self::Test::[]=}(#t14, #t13.{self::Test::[]}(#t14).{self::B::-}(1));
+    self::B* v1 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = self::f<self::B*>() in let final void #t18 = #t15.{self::Test::[]=}(#t16, #t17) in #t17;
+    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20) in #t21.{self::A::==}(null) ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22) in #t22 : #t21;
+    self::B* v4 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = #t24.{self::Test::[]}(#t25).{self::B::*}(self::f<self::B*>()) in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26) in #t26;
+    self::C* v5 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::C* #t30 = #t28.{self::Test::[]}(#t29).{self::B::&}(self::f<self::A*>()) in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30) in #t30;
+    self::B* v6 = t.{self::Test::[]}(self::f<self::Index*>());
+    self::B* v7 = let final self::Test* #t32 = t in let final self::Index* #t33 = self::f<self::Index*>() in let final self::B* #t34 = #t32.{self::Test::[]}(#t33).{self::B::-}(1) in let final void #t35 = #t32.{self::Test::[]=}(#t33, #t34) in #t34;
+    self::B* v8 = let final self::Test* #t36 = t in let final self::Index* #t37 = self::f<self::Index*>() in let final self::B* #t38 = #t36.{self::Test::[]}(#t37) in let final void #t39 = #t36.{self::Test::[]=}(#t37, #t38.{self::B::-}(1)) in #t38;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.weak.expect
index 3a7a814..96b0328 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.weak.expect
@@ -74,19 +74,19 @@
     ;
   method test() → void {
     super.{self::Base::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1) == null ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
-    let final self::Index* #t2 = self::f<self::Index*>() in super.{self::Base::[]=}(#t2, super.{self::Base::[]}(#t2).{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*);
-    let final self::Index* #t3 = self::f<self::Index*>() in super.{self::Base::[]=}(#t3, super.{self::Base::[]}(#t3).{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*});
-    let final self::Index* #t4 = self::f<self::Index*>() in super.{self::Base::[]=}(#t4, super.{self::Base::[]}(#t4).{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*});
-    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = super.{self::Base::[]}(#t5).{self::B::-}(1){(core::int*) →* self::B*} in let final void #t7 = super.{self::Base::[]=}(#t5, #t6) in #t6;
-    let final self::Index* #t8 = self::f<self::Index*>() in super.{self::Base::[]=}(#t8, super.{self::Base::[]}(#t8).{self::B::-}(1){(core::int*) →* self::B*});
+    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1).{self::A::==}(null) ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t2 = self::f<self::Index*>() in super.{self::Base::[]=}(#t2, super.{self::Base::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
+    let final self::Index* #t3 = self::f<self::Index*>() in super.{self::Base::[]=}(#t3, super.{self::Base::[]}(#t3).{self::B::*}(self::f<self::B*>()));
+    let final self::Index* #t4 = self::f<self::Index*>() in super.{self::Base::[]=}(#t4, super.{self::Base::[]}(#t4).{self::B::&}(self::f<self::A*>()));
+    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = super.{self::Base::[]}(#t5).{self::B::-}(1) in let final void #t7 = super.{self::Base::[]=}(#t5, #t6) in #t6;
+    let final self::Index* #t8 = self::f<self::Index*>() in super.{self::Base::[]=}(#t8, super.{self::Base::[]}(#t8).{self::B::-}(1));
     self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = super.{self::Base::[]=}(#t9, #t10) in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13 == null ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
-    self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = super.{self::Base::[]}(#t16).{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t18 = super.{self::Base::[]=}(#t16, #t17) in #t17;
-    self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = super.{self::Base::[]}(#t19).{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t21 = super.{self::Base::[]=}(#t19, #t20) in #t20;
-    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = super.{self::Base::[]}(#t22).{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t24 = super.{self::Base::[]=}(#t22, #t23) in #t23;
-    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = super.{self::Base::[]}(#t25).{self::B::-}(1){(core::int*) →* self::B*} in let final void #t27 = super.{self::Base::[]=}(#t25, #t26) in #t26;
-    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = super.{self::Base::[]}(#t28) in let final void #t30 = super.{self::Base::[]=}(#t28, #t29.{self::B::-}(1){(core::int*) →* self::B*}) in #t29;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
+    self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = super.{self::Base::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = super.{self::Base::[]=}(#t16, #t17) in #t17;
+    self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = super.{self::Base::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = super.{self::Base::[]=}(#t19, #t20) in #t20;
+    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = super.{self::Base::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = super.{self::Base::[]=}(#t22, #t23) in #t23;
+    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = super.{self::Base::[]}(#t25).{self::B::-}(1) in let final void #t27 = super.{self::Base::[]=}(#t25, #t26) in #t26;
+    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = super.{self::Base::[]}(#t28) in let final void #t30 = super.{self::Base::[]=}(#t28, #t29.{self::B::-}(1)) in #t29;
   }
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.weak.transformed.expect
index 3a7a814..96b0328 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.weak.transformed.expect
@@ -74,19 +74,19 @@
     ;
   method test() → void {
     super.{self::Base::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1) == null ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
-    let final self::Index* #t2 = self::f<self::Index*>() in super.{self::Base::[]=}(#t2, super.{self::Base::[]}(#t2).{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*);
-    let final self::Index* #t3 = self::f<self::Index*>() in super.{self::Base::[]=}(#t3, super.{self::Base::[]}(#t3).{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*});
-    let final self::Index* #t4 = self::f<self::Index*>() in super.{self::Base::[]=}(#t4, super.{self::Base::[]}(#t4).{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*});
-    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = super.{self::Base::[]}(#t5).{self::B::-}(1){(core::int*) →* self::B*} in let final void #t7 = super.{self::Base::[]=}(#t5, #t6) in #t6;
-    let final self::Index* #t8 = self::f<self::Index*>() in super.{self::Base::[]=}(#t8, super.{self::Base::[]}(#t8).{self::B::-}(1){(core::int*) →* self::B*});
+    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1).{self::A::==}(null) ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t2 = self::f<self::Index*>() in super.{self::Base::[]=}(#t2, super.{self::Base::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
+    let final self::Index* #t3 = self::f<self::Index*>() in super.{self::Base::[]=}(#t3, super.{self::Base::[]}(#t3).{self::B::*}(self::f<self::B*>()));
+    let final self::Index* #t4 = self::f<self::Index*>() in super.{self::Base::[]=}(#t4, super.{self::Base::[]}(#t4).{self::B::&}(self::f<self::A*>()));
+    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = super.{self::Base::[]}(#t5).{self::B::-}(1) in let final void #t7 = super.{self::Base::[]=}(#t5, #t6) in #t6;
+    let final self::Index* #t8 = self::f<self::Index*>() in super.{self::Base::[]=}(#t8, super.{self::Base::[]}(#t8).{self::B::-}(1));
     self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = super.{self::Base::[]=}(#t9, #t10) in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13 == null ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
-    self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = super.{self::Base::[]}(#t16).{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t18 = super.{self::Base::[]=}(#t16, #t17) in #t17;
-    self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = super.{self::Base::[]}(#t19).{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t21 = super.{self::Base::[]=}(#t19, #t20) in #t20;
-    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = super.{self::Base::[]}(#t22).{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t24 = super.{self::Base::[]=}(#t22, #t23) in #t23;
-    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = super.{self::Base::[]}(#t25).{self::B::-}(1){(core::int*) →* self::B*} in let final void #t27 = super.{self::Base::[]=}(#t25, #t26) in #t26;
-    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = super.{self::Base::[]}(#t28) in let final void #t30 = super.{self::Base::[]=}(#t28, #t29.{self::B::-}(1){(core::int*) →* self::B*}) in #t29;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
+    self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = super.{self::Base::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = super.{self::Base::[]=}(#t16, #t17) in #t17;
+    self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = super.{self::Base::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = super.{self::Base::[]=}(#t19, #t20) in #t20;
+    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = super.{self::Base::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = super.{self::Base::[]=}(#t22, #t23) in #t23;
+    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = super.{self::Base::[]}(#t25).{self::B::-}(1) in let final void #t27 = super.{self::Base::[]=}(#t25, #t26) in #t26;
+    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = super.{self::Base::[]}(#t28) in let final void #t30 = super.{self::Base::[]=}(#t28, #t29.{self::B::-}(1)) in #t29;
   }
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.weak.expect
index d61e224..15bd0f2 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.weak.expect
@@ -58,20 +58,20 @@
     return null;
   operator []=(self::Index* i, self::B* v) → void {}
   method test() → void {
-    this.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>()){(self::Index*, self::B*) →* void};
-    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1){(self::Index*) →* self::B*} == null ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()){(self::Index*, self::B*) →* void} : null;
-    let final self::Index* #t2 = self::f<self::Index*>() in this.{self::Test::[]=}(#t2, this.{self::Test::[]}(#t2){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*){(self::Index*, self::B*) →* void};
-    let final self::Index* #t3 = self::f<self::Index*>() in this.{self::Test::[]=}(#t3, this.{self::Test::[]}(#t3){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*}){(self::Index*, self::B*) →* void};
-    let final self::Index* #t4 = self::f<self::Index*>() in this.{self::Test::[]=}(#t4, this.{self::Test::[]}(#t4){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*}){(self::Index*, self::B*) →* void};
-    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = this.{self::Test::[]}(#t5){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t7 = this.{self::Test::[]=}(#t5, #t6){(self::Index*, self::B*) →* void} in #t6;
-    let final self::Index* #t8 = self::f<self::Index*>() in this.{self::Test::[]=}(#t8, this.{self::Test::[]}(#t8){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void};
-    self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = this.{self::Test::[]=}(#t9, #t10){(self::Index*, self::B*) →* void} in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12){(self::Index*) →* self::B*} in #t13 == null ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14){(self::Index*, self::B*) →* void} in #t14 : #t13;
-    self::A* v4 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = this.{self::Test::[]}(#t16){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t18 = this.{self::Test::[]=}(#t16, #t17){(self::Index*, self::B*) →* void} in #t17;
-    self::B* v3 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = this.{self::Test::[]}(#t19){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t21 = this.{self::Test::[]=}(#t19, #t20){(self::Index*, self::B*) →* void} in #t20;
-    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = this.{self::Test::[]}(#t22){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t24 = this.{self::Test::[]=}(#t22, #t23){(self::Index*, self::B*) →* void} in #t23;
-    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = this.{self::Test::[]}(#t25){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t27 = this.{self::Test::[]=}(#t25, #t26){(self::Index*, self::B*) →* void} in #t26;
-    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = this.{self::Test::[]}(#t28){(self::Index*) →* self::B*} in let final void #t30 = this.{self::Test::[]=}(#t28, #t29.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void} in #t29;
+    this.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
+    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1).{self::A::==}(null) ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t2 = self::f<self::Index*>() in this.{self::Test::[]=}(#t2, this.{self::Test::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
+    let final self::Index* #t3 = self::f<self::Index*>() in this.{self::Test::[]=}(#t3, this.{self::Test::[]}(#t3).{self::B::*}(self::f<self::B*>()));
+    let final self::Index* #t4 = self::f<self::Index*>() in this.{self::Test::[]=}(#t4, this.{self::Test::[]}(#t4).{self::B::&}(self::f<self::A*>()));
+    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = this.{self::Test::[]}(#t5).{self::B::-}(1) in let final void #t7 = this.{self::Test::[]=}(#t5, #t6) in #t6;
+    let final self::Index* #t8 = self::f<self::Index*>() in this.{self::Test::[]=}(#t8, this.{self::Test::[]}(#t8).{self::B::-}(1));
+    self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = this.{self::Test::[]=}(#t9, #t10) in #t10;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14) in #t14 : #t13;
+    self::A* v4 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = this.{self::Test::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = this.{self::Test::[]=}(#t16, #t17) in #t17;
+    self::B* v3 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = this.{self::Test::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = this.{self::Test::[]=}(#t19, #t20) in #t20;
+    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = this.{self::Test::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = this.{self::Test::[]=}(#t22, #t23) in #t23;
+    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = this.{self::Test::[]}(#t25).{self::B::-}(1) in let final void #t27 = this.{self::Test::[]=}(#t25, #t26) in #t26;
+    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = this.{self::Test::[]}(#t28) in let final void #t30 = this.{self::Test::[]=}(#t28, #t29.{self::B::-}(1)) in #t29;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.weak.transformed.expect
index d61e224..15bd0f2 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.weak.transformed.expect
@@ -58,20 +58,20 @@
     return null;
   operator []=(self::Index* i, self::B* v) → void {}
   method test() → void {
-    this.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>()){(self::Index*, self::B*) →* void};
-    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1){(self::Index*) →* self::B*} == null ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()){(self::Index*, self::B*) →* void} : null;
-    let final self::Index* #t2 = self::f<self::Index*>() in this.{self::Test::[]=}(#t2, this.{self::Test::[]}(#t2){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*){(self::Index*, self::B*) →* void};
-    let final self::Index* #t3 = self::f<self::Index*>() in this.{self::Test::[]=}(#t3, this.{self::Test::[]}(#t3){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*}){(self::Index*, self::B*) →* void};
-    let final self::Index* #t4 = self::f<self::Index*>() in this.{self::Test::[]=}(#t4, this.{self::Test::[]}(#t4){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*}){(self::Index*, self::B*) →* void};
-    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = this.{self::Test::[]}(#t5){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t7 = this.{self::Test::[]=}(#t5, #t6){(self::Index*, self::B*) →* void} in #t6;
-    let final self::Index* #t8 = self::f<self::Index*>() in this.{self::Test::[]=}(#t8, this.{self::Test::[]}(#t8){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void};
-    self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = this.{self::Test::[]=}(#t9, #t10){(self::Index*, self::B*) →* void} in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12){(self::Index*) →* self::B*} in #t13 == null ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14){(self::Index*, self::B*) →* void} in #t14 : #t13;
-    self::A* v4 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = this.{self::Test::[]}(#t16){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t18 = this.{self::Test::[]=}(#t16, #t17){(self::Index*, self::B*) →* void} in #t17;
-    self::B* v3 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = this.{self::Test::[]}(#t19){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t21 = this.{self::Test::[]=}(#t19, #t20){(self::Index*, self::B*) →* void} in #t20;
-    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = this.{self::Test::[]}(#t22){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t24 = this.{self::Test::[]=}(#t22, #t23){(self::Index*, self::B*) →* void} in #t23;
-    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = this.{self::Test::[]}(#t25){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t27 = this.{self::Test::[]=}(#t25, #t26){(self::Index*, self::B*) →* void} in #t26;
-    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = this.{self::Test::[]}(#t28){(self::Index*) →* self::B*} in let final void #t30 = this.{self::Test::[]=}(#t28, #t29.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void} in #t29;
+    this.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
+    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1).{self::A::==}(null) ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t2 = self::f<self::Index*>() in this.{self::Test::[]=}(#t2, this.{self::Test::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
+    let final self::Index* #t3 = self::f<self::Index*>() in this.{self::Test::[]=}(#t3, this.{self::Test::[]}(#t3).{self::B::*}(self::f<self::B*>()));
+    let final self::Index* #t4 = self::f<self::Index*>() in this.{self::Test::[]=}(#t4, this.{self::Test::[]}(#t4).{self::B::&}(self::f<self::A*>()));
+    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = this.{self::Test::[]}(#t5).{self::B::-}(1) in let final void #t7 = this.{self::Test::[]=}(#t5, #t6) in #t6;
+    let final self::Index* #t8 = self::f<self::Index*>() in this.{self::Test::[]=}(#t8, this.{self::Test::[]}(#t8).{self::B::-}(1));
+    self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = this.{self::Test::[]=}(#t9, #t10) in #t10;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14) in #t14 : #t13;
+    self::A* v4 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = this.{self::Test::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = this.{self::Test::[]=}(#t16, #t17) in #t17;
+    self::B* v3 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = this.{self::Test::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = this.{self::Test::[]=}(#t19, #t20) in #t20;
+    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = this.{self::Test::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = this.{self::Test::[]=}(#t22, #t23) in #t23;
+    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = this.{self::Test::[]}(#t25).{self::B::-}(1) in let final void #t27 = this.{self::Test::[]=}(#t25, #t26) in #t26;
+    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = this.{self::Test::[]}(#t28) in let final void #t30 = this.{self::Test::[]=}(#t28, #t29.{self::B::-}(1)) in #t29;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_local.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_local.dart.weak.expect
index 5bdc052..cacec2e 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_local.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_local.dart.weak.expect
@@ -40,18 +40,18 @@
 static method test() → void {
   self::B* local;
   local = self::f<self::B*>();
-  local == null ?{self::B*} local = self::f<self::B*>() : null;
-  local = local.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  local = local.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  local = local.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  local = local.{self::B::-}(1){(core::int*) →* self::B*};
-  local = local.{self::B::-}(1){(core::int*) →* self::B*};
+  local.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : null;
+  local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  local = local.{self::B::*}(self::f<self::B*>());
+  local = local.{self::B::&}(self::f<self::A*>());
+  local = local.{self::B::-}(1);
+  local = local.{self::B::-}(1);
   self::B* v1 = local = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = local in #t1 == null ?{self::B*} local = self::f<self::B*>() : #t1;
-  self::A* v3 = local = local.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B* v4 = local = local.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::C* v5 = local = local.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B* v6 = local = local.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B* v7 = let final self::B* #t2 = local in let final self::B* #t3 = local = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+  self::B* v2 = let final self::B* #t1 = local in #t1.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : #t1;
+  self::A* v3 = local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B* v4 = local = local.{self::B::*}(self::f<self::B*>());
+  self::C* v5 = local = local.{self::B::&}(self::f<self::A*>());
+  self::B* v6 = local = local.{self::B::-}(1);
+  self::B* v7 = let final self::B* #t2 = local in let final self::B* #t3 = local = #t2.{self::B::-}(1) in #t2;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_local.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_local.dart.weak.transformed.expect
index 5bdc052..cacec2e 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_local.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_local.dart.weak.transformed.expect
@@ -40,18 +40,18 @@
 static method test() → void {
   self::B* local;
   local = self::f<self::B*>();
-  local == null ?{self::B*} local = self::f<self::B*>() : null;
-  local = local.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  local = local.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  local = local.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  local = local.{self::B::-}(1){(core::int*) →* self::B*};
-  local = local.{self::B::-}(1){(core::int*) →* self::B*};
+  local.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : null;
+  local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  local = local.{self::B::*}(self::f<self::B*>());
+  local = local.{self::B::&}(self::f<self::A*>());
+  local = local.{self::B::-}(1);
+  local = local.{self::B::-}(1);
   self::B* v1 = local = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = local in #t1 == null ?{self::B*} local = self::f<self::B*>() : #t1;
-  self::A* v3 = local = local.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B* v4 = local = local.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::C* v5 = local = local.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B* v6 = local = local.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B* v7 = let final self::B* #t2 = local in let final self::B* #t3 = local = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+  self::B* v2 = let final self::B* #t1 = local in #t1.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : #t1;
+  self::A* v3 = local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B* v4 = local = local.{self::B::*}(self::f<self::B*>());
+  self::C* v5 = local = local.{self::B::&}(self::f<self::A*>());
+  self::B* v6 = local = local.{self::B::-}(1);
+  self::B* v7 = let final self::B* #t2 = local in let final self::B* #t3 = local = #t2.{self::B::-}(1) in #t2;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_local_upwards.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_local_upwards.dart.weak.expect
index eda9415..2f274dc 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_local_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_local_upwards.dart.weak.expect
@@ -10,31 +10,31 @@
   return 0.0;
 static method test1(core::int* t) → void {
   core::int* v1 = t = self::getInt();
-  core::int* v4 = let final core::int* #t1 = t in #t1 == null ?{core::int*} t = self::getInt() : #t1;
-  core::int* v7 = t = t.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-  core::int* v10 = t = t.{core::num::+}(1){(core::num*) →* core::int*};
-  core::int* v11 = let final core::int* #t2 = t in let final core::int* #t3 = t = #t2.{core::num::+}(1){(core::num*) →* core::int*} in #t2;
+  core::int* v4 = let final core::int* #t1 = t in #t1.{core::num::==}(null) ?{core::int*} t = self::getInt() : #t1;
+  core::int* v7 = t = t.{core::num::+}(self::getInt());
+  core::int* v10 = t = t.{core::num::+}(1);
+  core::int* v11 = let final core::int* #t2 = t in let final core::int* #t3 = t = #t2.{core::num::+}(1) in #t2;
 }
 static method test2(core::num* t) → void {
   core::int* v1 = t = self::getInt();
   core::num* v2 = t = self::getNum();
   core::double* v3 = t = self::getDouble();
-  core::num* v4 = let final core::num* #t4 = t in #t4 == null ?{core::num*} t = self::getInt() : #t4;
-  core::num* v5 = let final core::num* #t5 = t in #t5 == null ?{core::num*} t = self::getNum() : #t5;
-  core::num* v6 = let final core::num* #t6 = t in #t6 == null ?{core::num*} t = self::getDouble() : #t6;
-  core::num* v7 = t = t.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-  core::num* v8 = t = t.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-  core::num* v9 = t = t.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-  core::num* v10 = t = t.{core::num::+}(1){(core::num*) →* core::num*};
-  core::num* v11 = let final core::num* #t7 = t in let final core::num* #t8 = t = #t7.{core::num::+}(1){(core::num*) →* core::num*} in #t7;
+  core::num* v4 = let final core::num* #t4 = t in #t4.{core::num::==}(null) ?{core::num*} t = self::getInt() : #t4;
+  core::num* v5 = let final core::num* #t5 = t in #t5.{core::num::==}(null) ?{core::num*} t = self::getNum() : #t5;
+  core::num* v6 = let final core::num* #t6 = t in #t6.{core::num::==}(null) ?{core::num*} t = self::getDouble() : #t6;
+  core::num* v7 = t = t.{core::num::+}(self::getInt());
+  core::num* v8 = t = t.{core::num::+}(self::getNum());
+  core::num* v9 = t = t.{core::num::+}(self::getDouble());
+  core::num* v10 = t = t.{core::num::+}(1);
+  core::num* v11 = let final core::num* #t7 = t in let final core::num* #t8 = t = #t7.{core::num::+}(1) in #t7;
 }
 static method test3(core::double* t) → void {
   core::double* v3 = t = self::getDouble();
-  core::double* v6 = let final core::double* #t9 = t in #t9 == null ?{core::double*} t = self::getDouble() : #t9;
-  core::double* v7 = t = t.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-  core::double* v8 = t = t.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-  core::double* v9 = t = t.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-  core::double* v10 = t = t.{core::double::+}(1){(core::num*) →* core::double*};
-  core::double* v11 = let final core::double* #t10 = t in let final core::double* #t11 = t = #t10.{core::double::+}(1){(core::num*) →* core::double*} in #t10;
+  core::double* v6 = let final core::double* #t9 = t in #t9.{core::num::==}(null) ?{core::double*} t = self::getDouble() : #t9;
+  core::double* v7 = t = t.{core::double::+}(self::getInt());
+  core::double* v8 = t = t.{core::double::+}(self::getNum());
+  core::double* v9 = t = t.{core::double::+}(self::getDouble());
+  core::double* v10 = t = t.{core::double::+}(1);
+  core::double* v11 = let final core::double* #t10 = t in let final core::double* #t11 = t = #t10.{core::double::+}(1) in #t10;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_local_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_local_upwards.dart.weak.transformed.expect
index eda9415..2f274dc 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_local_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_local_upwards.dart.weak.transformed.expect
@@ -10,31 +10,31 @@
   return 0.0;
 static method test1(core::int* t) → void {
   core::int* v1 = t = self::getInt();
-  core::int* v4 = let final core::int* #t1 = t in #t1 == null ?{core::int*} t = self::getInt() : #t1;
-  core::int* v7 = t = t.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-  core::int* v10 = t = t.{core::num::+}(1){(core::num*) →* core::int*};
-  core::int* v11 = let final core::int* #t2 = t in let final core::int* #t3 = t = #t2.{core::num::+}(1){(core::num*) →* core::int*} in #t2;
+  core::int* v4 = let final core::int* #t1 = t in #t1.{core::num::==}(null) ?{core::int*} t = self::getInt() : #t1;
+  core::int* v7 = t = t.{core::num::+}(self::getInt());
+  core::int* v10 = t = t.{core::num::+}(1);
+  core::int* v11 = let final core::int* #t2 = t in let final core::int* #t3 = t = #t2.{core::num::+}(1) in #t2;
 }
 static method test2(core::num* t) → void {
   core::int* v1 = t = self::getInt();
   core::num* v2 = t = self::getNum();
   core::double* v3 = t = self::getDouble();
-  core::num* v4 = let final core::num* #t4 = t in #t4 == null ?{core::num*} t = self::getInt() : #t4;
-  core::num* v5 = let final core::num* #t5 = t in #t5 == null ?{core::num*} t = self::getNum() : #t5;
-  core::num* v6 = let final core::num* #t6 = t in #t6 == null ?{core::num*} t = self::getDouble() : #t6;
-  core::num* v7 = t = t.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-  core::num* v8 = t = t.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-  core::num* v9 = t = t.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-  core::num* v10 = t = t.{core::num::+}(1){(core::num*) →* core::num*};
-  core::num* v11 = let final core::num* #t7 = t in let final core::num* #t8 = t = #t7.{core::num::+}(1){(core::num*) →* core::num*} in #t7;
+  core::num* v4 = let final core::num* #t4 = t in #t4.{core::num::==}(null) ?{core::num*} t = self::getInt() : #t4;
+  core::num* v5 = let final core::num* #t5 = t in #t5.{core::num::==}(null) ?{core::num*} t = self::getNum() : #t5;
+  core::num* v6 = let final core::num* #t6 = t in #t6.{core::num::==}(null) ?{core::num*} t = self::getDouble() : #t6;
+  core::num* v7 = t = t.{core::num::+}(self::getInt());
+  core::num* v8 = t = t.{core::num::+}(self::getNum());
+  core::num* v9 = t = t.{core::num::+}(self::getDouble());
+  core::num* v10 = t = t.{core::num::+}(1);
+  core::num* v11 = let final core::num* #t7 = t in let final core::num* #t8 = t = #t7.{core::num::+}(1) in #t7;
 }
 static method test3(core::double* t) → void {
   core::double* v3 = t = self::getDouble();
-  core::double* v6 = let final core::double* #t9 = t in #t9 == null ?{core::double*} t = self::getDouble() : #t9;
-  core::double* v7 = t = t.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-  core::double* v8 = t = t.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-  core::double* v9 = t = t.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-  core::double* v10 = t = t.{core::double::+}(1){(core::num*) →* core::double*};
-  core::double* v11 = let final core::double* #t10 = t in let final core::double* #t11 = t = #t10.{core::double::+}(1){(core::num*) →* core::double*} in #t10;
+  core::double* v6 = let final core::double* #t9 = t in #t9.{core::num::==}(null) ?{core::double*} t = self::getDouble() : #t9;
+  core::double* v7 = t = t.{core::double::+}(self::getInt());
+  core::double* v8 = t = t.{core::double::+}(self::getNum());
+  core::double* v9 = t = t.{core::double::+}(self::getDouble());
+  core::double* v10 = t = t.{core::double::+}(1);
+  core::double* v11 = let final core::double* #t10 = t in let final core::double* #t11 = t = #t10.{core::double::+}(1) in #t10;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.weak.expect
index 2e41284..63ae5bb 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.weak.expect
@@ -42,19 +42,19 @@
     ;
   static method test(self::Test* t) → void {
     t.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t1 = t in #t1.{self::Test::member}{self::B*} == null ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
-    let final self::Test* #t2 = t in #t2.{self::Test::member} = #t2.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    let final self::Test* #t3 = t in #t3.{self::Test::member} = #t3.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    let final self::Test* #t4 = t in #t4.{self::Test::member} = #t4.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    let final self::Test* #t5 = t in #t5.{self::Test::member} = #t5.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    let final self::Test* #t6 = t in #t6.{self::Test::member} = #t6.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
+    let final self::Test* #t1 = t in #t1.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t2 = t in #t2.{self::Test::member} = #t2.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    let final self::Test* #t3 = t in #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    let final self::Test* #t4 = t in #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    let final self::Test* #t5 = t in #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::-}(1);
+    let final self::Test* #t6 = t in #t6.{self::Test::member} = #t6.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = t.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member}{self::B*} in #t8 == null ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
-    self::A* v3 = let final self::Test* #t9 = t in #t9.{self::Test::member} = #t9.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    self::B* v4 = let final self::Test* #t10 = t in #t10.{self::Test::member} = #t10.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    self::C* v5 = let final self::Test* #t11 = t in #t11.{self::Test::member} = #t11.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    self::B* v6 = let final self::Test* #t12 = t in #t12.{self::Test::member} = #t12.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v7 = let final self::Test* #t13 = t in let final self::B* #t14 = #t13.{self::Test::member}{self::B*} in let final self::B* #t15 = #t13.{self::Test::member} = #t14.{self::B::-}(1){(core::int*) →* self::B*} in #t14;
+    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member} in #t8.{self::A::==}(null) ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
+    self::A* v3 = let final self::Test* #t9 = t in #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    self::B* v4 = let final self::Test* #t10 = t in #t10.{self::Test::member} = #t10.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    self::C* v5 = let final self::Test* #t11 = t in #t11.{self::Test::member} = #t11.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    self::B* v6 = let final self::Test* #t12 = t in #t12.{self::Test::member} = #t12.{self::Test::member}.{self::B::-}(1);
+    self::B* v7 = let final self::Test* #t13 = t in let final self::B* #t14 = #t13.{self::Test::member} in let final self::B* #t15 = #t13.{self::Test::member} = #t14.{self::B::-}(1) in #t14;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.weak.transformed.expect
index 2e41284..63ae5bb 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.weak.transformed.expect
@@ -42,19 +42,19 @@
     ;
   static method test(self::Test* t) → void {
     t.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t1 = t in #t1.{self::Test::member}{self::B*} == null ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
-    let final self::Test* #t2 = t in #t2.{self::Test::member} = #t2.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    let final self::Test* #t3 = t in #t3.{self::Test::member} = #t3.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    let final self::Test* #t4 = t in #t4.{self::Test::member} = #t4.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    let final self::Test* #t5 = t in #t5.{self::Test::member} = #t5.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    let final self::Test* #t6 = t in #t6.{self::Test::member} = #t6.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
+    let final self::Test* #t1 = t in #t1.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t2 = t in #t2.{self::Test::member} = #t2.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    let final self::Test* #t3 = t in #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    let final self::Test* #t4 = t in #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    let final self::Test* #t5 = t in #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::-}(1);
+    let final self::Test* #t6 = t in #t6.{self::Test::member} = #t6.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = t.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member}{self::B*} in #t8 == null ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
-    self::A* v3 = let final self::Test* #t9 = t in #t9.{self::Test::member} = #t9.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    self::B* v4 = let final self::Test* #t10 = t in #t10.{self::Test::member} = #t10.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    self::C* v5 = let final self::Test* #t11 = t in #t11.{self::Test::member} = #t11.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    self::B* v6 = let final self::Test* #t12 = t in #t12.{self::Test::member} = #t12.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v7 = let final self::Test* #t13 = t in let final self::B* #t14 = #t13.{self::Test::member}{self::B*} in let final self::B* #t15 = #t13.{self::Test::member} = #t14.{self::B::-}(1){(core::int*) →* self::B*} in #t14;
+    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member} in #t8.{self::A::==}(null) ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
+    self::A* v3 = let final self::Test* #t9 = t in #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    self::B* v4 = let final self::Test* #t10 = t in #t10.{self::Test::member} = #t10.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    self::C* v5 = let final self::Test* #t11 = t in #t11.{self::Test::member} = #t11.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    self::B* v6 = let final self::Test* #t12 = t in #t12.{self::Test::member} = #t12.{self::Test::member}.{self::B::-}(1);
+    self::B* v7 = let final self::Test* #t13 = t in let final self::B* #t14 = #t13.{self::Test::member} in let final self::B* #t15 = #t13.{self::Test::member} = #t14.{self::B::-}(1) in #t14;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.weak.expect
index 681f9aa..189fd9a 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.weak.expect
@@ -41,20 +41,20 @@
     : super core::Object::•()
     ;
   static method test(self::Test* t) → void {
-    let final self::Test* #t1 = t in #t1 == null ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t2 = t in #t2 == null ?{self::B*} null : #t2.{self::Test::member}{self::B*} == null ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
-    let final self::Test* #t3 = t in #t3 == null ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    let final self::Test* #t4 = t in #t4 == null ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    let final self::Test* #t5 = t in #t5 == null ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    let final self::Test* #t6 = t in #t6 == null ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
-    let final self::Test* #t9 = t in #t9 == null ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v1 = let final self::Test* #t10 = t in #t10 == null ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t11 = t in #t11 == null ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member}{self::B*} in #t12 == null ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
-    self::A* v3 = let final self::Test* #t13 = t in #t13 == null ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
-    self::B* v4 = let final self::Test* #t16 = t in #t16 == null ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
-    self::C* v5 = let final self::Test* #t19 = t in #t19 == null ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
-    self::B* v6 = let final self::Test* #t22 = t in #t22 == null ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
-    self::B* v7 = let final self::Test* #t25 = t in #t25 == null ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member}{self::B*} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1){(core::int*) →* self::B*} in #t26;
+    let final self::Test* #t1 = t in #t1.{self::Test::==}(null) ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
+    let final self::Test* #t2 = t in #t2.{self::Test::==}(null) ?{self::B*} null : #t2.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t3 = t in #t3.{self::Test::==}(null) ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    let final self::Test* #t4 = t in #t4.{self::Test::==}(null) ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    let final self::Test* #t5 = t in #t5.{self::Test::==}(null) ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    let final self::Test* #t6 = t in #t6.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}.{self::B::-}(1) in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
+    let final self::Test* #t9 = t in #t9.{self::Test::==}(null) ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::-}(1);
+    self::B* v1 = let final self::Test* #t10 = t in #t10.{self::Test::==}(null) ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
+    self::B* v2 = let final self::Test* #t11 = t in #t11.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member} in #t12.{self::A::==}(null) ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
+    self::A* v3 = let final self::Test* #t13 = t in #t13.{self::Test::==}(null) ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
+    self::B* v4 = let final self::Test* #t16 = t in #t16.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}.{self::B::*}(self::f<self::B*>()) in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
+    self::C* v5 = let final self::Test* #t19 = t in #t19.{self::Test::==}(null) ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}.{self::B::&}(self::f<self::A*>()) in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
+    self::B* v6 = let final self::Test* #t22 = t in #t22.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}.{self::B::-}(1) in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
+    self::B* v7 = let final self::Test* #t25 = t in #t25.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1) in #t26;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.weak.transformed.expect
index 681f9aa..189fd9a 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.weak.transformed.expect
@@ -41,20 +41,20 @@
     : super core::Object::•()
     ;
   static method test(self::Test* t) → void {
-    let final self::Test* #t1 = t in #t1 == null ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t2 = t in #t2 == null ?{self::B*} null : #t2.{self::Test::member}{self::B*} == null ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
-    let final self::Test* #t3 = t in #t3 == null ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    let final self::Test* #t4 = t in #t4 == null ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    let final self::Test* #t5 = t in #t5 == null ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    let final self::Test* #t6 = t in #t6 == null ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
-    let final self::Test* #t9 = t in #t9 == null ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v1 = let final self::Test* #t10 = t in #t10 == null ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t11 = t in #t11 == null ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member}{self::B*} in #t12 == null ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
-    self::A* v3 = let final self::Test* #t13 = t in #t13 == null ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
-    self::B* v4 = let final self::Test* #t16 = t in #t16 == null ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
-    self::C* v5 = let final self::Test* #t19 = t in #t19 == null ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
-    self::B* v6 = let final self::Test* #t22 = t in #t22 == null ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
-    self::B* v7 = let final self::Test* #t25 = t in #t25 == null ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member}{self::B*} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1){(core::int*) →* self::B*} in #t26;
+    let final self::Test* #t1 = t in #t1.{self::Test::==}(null) ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
+    let final self::Test* #t2 = t in #t2.{self::Test::==}(null) ?{self::B*} null : #t2.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t3 = t in #t3.{self::Test::==}(null) ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    let final self::Test* #t4 = t in #t4.{self::Test::==}(null) ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    let final self::Test* #t5 = t in #t5.{self::Test::==}(null) ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    let final self::Test* #t6 = t in #t6.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}.{self::B::-}(1) in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
+    let final self::Test* #t9 = t in #t9.{self::Test::==}(null) ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::-}(1);
+    self::B* v1 = let final self::Test* #t10 = t in #t10.{self::Test::==}(null) ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
+    self::B* v2 = let final self::Test* #t11 = t in #t11.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member} in #t12.{self::A::==}(null) ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
+    self::A* v3 = let final self::Test* #t13 = t in #t13.{self::Test::==}(null) ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
+    self::B* v4 = let final self::Test* #t16 = t in #t16.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}.{self::B::*}(self::f<self::B*>()) in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
+    self::C* v5 = let final self::Test* #t19 = t in #t19.{self::Test::==}(null) ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}.{self::B::&}(self::f<self::A*>()) in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
+    self::B* v6 = let final self::Test* #t22 = t in #t22.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}.{self::B::-}(1) in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
+    self::B* v7 = let final self::Test* #t25 = t in #t25.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1) in #t26;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.weak.expect
index defcb5a..b435efb 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.weak.expect
@@ -8,11 +8,11 @@
     : super core::Object::•()
     ;
   static method test(self::Test1* t) → void {
-    core::int* v1 = let final self::Test1* #t1 = t in #t1 == null ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
-    core::int* v4 = let final self::Test1* #t2 = t in #t2 == null ?{core::int*} null : let final core::int* #t3 = #t2.{self::Test1::prop}{core::int*} in #t3 == null ?{core::int*} #t2.{self::Test1::prop} = self::getInt() : #t3;
-    core::int* v7 = let final self::Test1* #t4 = t in #t4 == null ?{core::int*} null : let final core::int* #t5 = #t4.{self::Test1::prop}{core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} in let final void #t6 = #t4.{self::Test1::prop} = #t5 in #t5;
-    core::int* v10 = let final self::Test1* #t7 = t in #t7 == null ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
-    core::int* v11 = let final self::Test1* #t10 = t in #t10 == null ?{core::int*} null : let final core::int* #t11 = #t10.{self::Test1::prop}{core::int*} in let final void #t12 = #t10.{self::Test1::prop} = #t11.{core::num::+}(1){(core::num*) →* core::int*} in #t11;
+    core::int* v1 = let final self::Test1* #t1 = t in #t1.{self::Test1::==}(null) ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
+    core::int* v4 = let final self::Test1* #t2 = t in #t2.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t3 = #t2.{self::Test1::prop} in #t3.{core::num::==}(null) ?{core::int*} #t2.{self::Test1::prop} = self::getInt() : #t3;
+    core::int* v7 = let final self::Test1* #t4 = t in #t4.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t5 = #t4.{self::Test1::prop}.{core::num::+}(self::getInt()) in let final void #t6 = #t4.{self::Test1::prop} = #t5 in #t5;
+    core::int* v10 = let final self::Test1* #t7 = t in #t7.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}.{core::num::+}(1) in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
+    core::int* v11 = let final self::Test1* #t10 = t in #t10.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t11 = #t10.{self::Test1::prop} in let final void #t12 = #t10.{self::Test1::prop} = #t11.{core::num::+}(1) in #t11;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -31,17 +31,17 @@
     : super core::Object::•()
     ;
   static method test(self::Test2* t) → void {
-    core::int* v1 = let final self::Test2* #t13 = t in #t13 == null ?{core::int*} null : #t13.{self::Test2::prop} = self::getInt();
-    core::num* v2 = let final self::Test2* #t14 = t in #t14 == null ?{core::num*} null : #t14.{self::Test2::prop} = self::getNum();
-    core::double* v3 = let final self::Test2* #t15 = t in #t15 == null ?{core::double*} null : #t15.{self::Test2::prop} = self::getDouble();
-    core::num* v4 = let final self::Test2* #t16 = t in #t16 == null ?{core::num*} null : let final core::num* #t17 = #t16.{self::Test2::prop}{core::num*} in #t17 == null ?{core::num*} #t16.{self::Test2::prop} = self::getInt() : #t17;
-    core::num* v5 = let final self::Test2* #t18 = t in #t18 == null ?{core::num*} null : let final core::num* #t19 = #t18.{self::Test2::prop}{core::num*} in #t19 == null ?{core::num*} #t18.{self::Test2::prop} = self::getNum() : #t19;
-    core::num* v6 = let final self::Test2* #t20 = t in #t20 == null ?{core::num*} null : let final core::num* #t21 = #t20.{self::Test2::prop}{core::num*} in #t21 == null ?{core::num*} #t20.{self::Test2::prop} = self::getDouble() : #t21;
-    core::num* v7 = let final self::Test2* #t22 = t in #t22 == null ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop}{core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} in let final void #t24 = #t22.{self::Test2::prop} = #t23 in #t23;
-    core::num* v8 = let final self::Test2* #t25 = t in #t25 == null ?{core::num*} null : let final core::num* #t26 = #t25.{self::Test2::prop}{core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} in let final void #t27 = #t25.{self::Test2::prop} = #t26 in #t26;
-    core::num* v9 = let final self::Test2* #t28 = t in #t28 == null ?{core::num*} null : let final core::num* #t29 = #t28.{self::Test2::prop}{core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*} in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
-    core::num* v10 = let final self::Test2* #t31 = t in #t31 == null ?{core::num*} null : let final core::num* #t32 = #t31.{self::Test2::prop}{core::num*}.{core::num::+}(1){(core::num*) →* core::num*} in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
-    core::num* v11 = let final self::Test2* #t34 = t in #t34 == null ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop}{core::num*} in let final void #t36 = #t34.{self::Test2::prop} = #t35.{core::num::+}(1){(core::num*) →* core::num*} in #t35;
+    core::int* v1 = let final self::Test2* #t13 = t in #t13.{self::Test2::==}(null) ?{core::int*} null : #t13.{self::Test2::prop} = self::getInt();
+    core::num* v2 = let final self::Test2* #t14 = t in #t14.{self::Test2::==}(null) ?{core::num*} null : #t14.{self::Test2::prop} = self::getNum();
+    core::double* v3 = let final self::Test2* #t15 = t in #t15.{self::Test2::==}(null) ?{core::double*} null : #t15.{self::Test2::prop} = self::getDouble();
+    core::num* v4 = let final self::Test2* #t16 = t in #t16.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t17 = #t16.{self::Test2::prop} in #t17.{core::num::==}(null) ?{core::num*} #t16.{self::Test2::prop} = self::getInt() : #t17;
+    core::num* v5 = let final self::Test2* #t18 = t in #t18.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t19 = #t18.{self::Test2::prop} in #t19.{core::num::==}(null) ?{core::num*} #t18.{self::Test2::prop} = self::getNum() : #t19;
+    core::num* v6 = let final self::Test2* #t20 = t in #t20.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t21 = #t20.{self::Test2::prop} in #t21.{core::num::==}(null) ?{core::num*} #t20.{self::Test2::prop} = self::getDouble() : #t21;
+    core::num* v7 = let final self::Test2* #t22 = t in #t22.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop}.{core::num::+}(self::getInt()) in let final void #t24 = #t22.{self::Test2::prop} = #t23 in #t23;
+    core::num* v8 = let final self::Test2* #t25 = t in #t25.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t26 = #t25.{self::Test2::prop}.{core::num::+}(self::getNum()) in let final void #t27 = #t25.{self::Test2::prop} = #t26 in #t26;
+    core::num* v9 = let final self::Test2* #t28 = t in #t28.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t29 = #t28.{self::Test2::prop}.{core::num::+}(self::getDouble()) in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
+    core::num* v10 = let final self::Test2* #t31 = t in #t31.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t32 = #t31.{self::Test2::prop}.{core::num::+}(1) in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
+    core::num* v11 = let final self::Test2* #t34 = t in #t34.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop} in let final void #t36 = #t34.{self::Test2::prop} = #t35.{core::num::+}(1) in #t35;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -60,13 +60,13 @@
     : super core::Object::•()
     ;
   static method test3(self::Test3* t) → void {
-    core::double* v3 = let final self::Test3* #t37 = t in #t37 == null ?{core::double*} null : #t37.{self::Test3::prop} = self::getDouble();
-    core::double* v6 = let final self::Test3* #t38 = t in #t38 == null ?{core::double*} null : let final core::double* #t39 = #t38.{self::Test3::prop}{core::double*} in #t39 == null ?{core::double*} #t38.{self::Test3::prop} = self::getDouble() : #t39;
-    core::double* v7 = let final self::Test3* #t40 = t in #t40 == null ?{core::double*} null : let final core::double* #t41 = #t40.{self::Test3::prop}{core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} in let final void #t42 = #t40.{self::Test3::prop} = #t41 in #t41;
-    core::double* v8 = let final self::Test3* #t43 = t in #t43 == null ?{core::double*} null : let final core::double* #t44 = #t43.{self::Test3::prop}{core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} in let final void #t45 = #t43.{self::Test3::prop} = #t44 in #t44;
-    core::double* v9 = let final self::Test3* #t46 = t in #t46 == null ?{core::double*} null : let final core::double* #t47 = #t46.{self::Test3::prop}{core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t48 = #t46.{self::Test3::prop} = #t47 in #t47;
-    core::double* v10 = let final self::Test3* #t49 = t in #t49 == null ?{core::double*} null : let final core::double* #t50 = #t49.{self::Test3::prop}{core::double*}.{core::double::+}(1){(core::num*) →* core::double*} in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
-    core::double* v11 = let final self::Test3* #t52 = t in #t52 == null ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop}{core::double*} in let final void #t54 = #t52.{self::Test3::prop} = #t53.{core::double::+}(1){(core::num*) →* core::double*} in #t53;
+    core::double* v3 = let final self::Test3* #t37 = t in #t37.{self::Test3::==}(null) ?{core::double*} null : #t37.{self::Test3::prop} = self::getDouble();
+    core::double* v6 = let final self::Test3* #t38 = t in #t38.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t39 = #t38.{self::Test3::prop} in #t39.{core::num::==}(null) ?{core::double*} #t38.{self::Test3::prop} = self::getDouble() : #t39;
+    core::double* v7 = let final self::Test3* #t40 = t in #t40.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t41 = #t40.{self::Test3::prop}.{core::double::+}(self::getInt()) in let final void #t42 = #t40.{self::Test3::prop} = #t41 in #t41;
+    core::double* v8 = let final self::Test3* #t43 = t in #t43.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t44 = #t43.{self::Test3::prop}.{core::double::+}(self::getNum()) in let final void #t45 = #t43.{self::Test3::prop} = #t44 in #t44;
+    core::double* v9 = let final self::Test3* #t46 = t in #t46.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t47 = #t46.{self::Test3::prop}.{core::double::+}(self::getDouble()) in let final void #t48 = #t46.{self::Test3::prop} = #t47 in #t47;
+    core::double* v10 = let final self::Test3* #t49 = t in #t49.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t50 = #t49.{self::Test3::prop}.{core::double::+}(1) in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
+    core::double* v11 = let final self::Test3* #t52 = t in #t52.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop} in let final void #t54 = #t52.{self::Test3::prop} = #t53.{core::double::+}(1) in #t53;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.weak.transformed.expect
index defcb5a..b435efb 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.weak.transformed.expect
@@ -8,11 +8,11 @@
     : super core::Object::•()
     ;
   static method test(self::Test1* t) → void {
-    core::int* v1 = let final self::Test1* #t1 = t in #t1 == null ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
-    core::int* v4 = let final self::Test1* #t2 = t in #t2 == null ?{core::int*} null : let final core::int* #t3 = #t2.{self::Test1::prop}{core::int*} in #t3 == null ?{core::int*} #t2.{self::Test1::prop} = self::getInt() : #t3;
-    core::int* v7 = let final self::Test1* #t4 = t in #t4 == null ?{core::int*} null : let final core::int* #t5 = #t4.{self::Test1::prop}{core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} in let final void #t6 = #t4.{self::Test1::prop} = #t5 in #t5;
-    core::int* v10 = let final self::Test1* #t7 = t in #t7 == null ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
-    core::int* v11 = let final self::Test1* #t10 = t in #t10 == null ?{core::int*} null : let final core::int* #t11 = #t10.{self::Test1::prop}{core::int*} in let final void #t12 = #t10.{self::Test1::prop} = #t11.{core::num::+}(1){(core::num*) →* core::int*} in #t11;
+    core::int* v1 = let final self::Test1* #t1 = t in #t1.{self::Test1::==}(null) ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
+    core::int* v4 = let final self::Test1* #t2 = t in #t2.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t3 = #t2.{self::Test1::prop} in #t3.{core::num::==}(null) ?{core::int*} #t2.{self::Test1::prop} = self::getInt() : #t3;
+    core::int* v7 = let final self::Test1* #t4 = t in #t4.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t5 = #t4.{self::Test1::prop}.{core::num::+}(self::getInt()) in let final void #t6 = #t4.{self::Test1::prop} = #t5 in #t5;
+    core::int* v10 = let final self::Test1* #t7 = t in #t7.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}.{core::num::+}(1) in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
+    core::int* v11 = let final self::Test1* #t10 = t in #t10.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t11 = #t10.{self::Test1::prop} in let final void #t12 = #t10.{self::Test1::prop} = #t11.{core::num::+}(1) in #t11;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -31,17 +31,17 @@
     : super core::Object::•()
     ;
   static method test(self::Test2* t) → void {
-    core::int* v1 = let final self::Test2* #t13 = t in #t13 == null ?{core::int*} null : #t13.{self::Test2::prop} = self::getInt();
-    core::num* v2 = let final self::Test2* #t14 = t in #t14 == null ?{core::num*} null : #t14.{self::Test2::prop} = self::getNum();
-    core::double* v3 = let final self::Test2* #t15 = t in #t15 == null ?{core::double*} null : #t15.{self::Test2::prop} = self::getDouble();
-    core::num* v4 = let final self::Test2* #t16 = t in #t16 == null ?{core::num*} null : let final core::num* #t17 = #t16.{self::Test2::prop}{core::num*} in #t17 == null ?{core::num*} #t16.{self::Test2::prop} = self::getInt() : #t17;
-    core::num* v5 = let final self::Test2* #t18 = t in #t18 == null ?{core::num*} null : let final core::num* #t19 = #t18.{self::Test2::prop}{core::num*} in #t19 == null ?{core::num*} #t18.{self::Test2::prop} = self::getNum() : #t19;
-    core::num* v6 = let final self::Test2* #t20 = t in #t20 == null ?{core::num*} null : let final core::num* #t21 = #t20.{self::Test2::prop}{core::num*} in #t21 == null ?{core::num*} #t20.{self::Test2::prop} = self::getDouble() : #t21;
-    core::num* v7 = let final self::Test2* #t22 = t in #t22 == null ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop}{core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} in let final void #t24 = #t22.{self::Test2::prop} = #t23 in #t23;
-    core::num* v8 = let final self::Test2* #t25 = t in #t25 == null ?{core::num*} null : let final core::num* #t26 = #t25.{self::Test2::prop}{core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} in let final void #t27 = #t25.{self::Test2::prop} = #t26 in #t26;
-    core::num* v9 = let final self::Test2* #t28 = t in #t28 == null ?{core::num*} null : let final core::num* #t29 = #t28.{self::Test2::prop}{core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*} in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
-    core::num* v10 = let final self::Test2* #t31 = t in #t31 == null ?{core::num*} null : let final core::num* #t32 = #t31.{self::Test2::prop}{core::num*}.{core::num::+}(1){(core::num*) →* core::num*} in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
-    core::num* v11 = let final self::Test2* #t34 = t in #t34 == null ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop}{core::num*} in let final void #t36 = #t34.{self::Test2::prop} = #t35.{core::num::+}(1){(core::num*) →* core::num*} in #t35;
+    core::int* v1 = let final self::Test2* #t13 = t in #t13.{self::Test2::==}(null) ?{core::int*} null : #t13.{self::Test2::prop} = self::getInt();
+    core::num* v2 = let final self::Test2* #t14 = t in #t14.{self::Test2::==}(null) ?{core::num*} null : #t14.{self::Test2::prop} = self::getNum();
+    core::double* v3 = let final self::Test2* #t15 = t in #t15.{self::Test2::==}(null) ?{core::double*} null : #t15.{self::Test2::prop} = self::getDouble();
+    core::num* v4 = let final self::Test2* #t16 = t in #t16.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t17 = #t16.{self::Test2::prop} in #t17.{core::num::==}(null) ?{core::num*} #t16.{self::Test2::prop} = self::getInt() : #t17;
+    core::num* v5 = let final self::Test2* #t18 = t in #t18.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t19 = #t18.{self::Test2::prop} in #t19.{core::num::==}(null) ?{core::num*} #t18.{self::Test2::prop} = self::getNum() : #t19;
+    core::num* v6 = let final self::Test2* #t20 = t in #t20.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t21 = #t20.{self::Test2::prop} in #t21.{core::num::==}(null) ?{core::num*} #t20.{self::Test2::prop} = self::getDouble() : #t21;
+    core::num* v7 = let final self::Test2* #t22 = t in #t22.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop}.{core::num::+}(self::getInt()) in let final void #t24 = #t22.{self::Test2::prop} = #t23 in #t23;
+    core::num* v8 = let final self::Test2* #t25 = t in #t25.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t26 = #t25.{self::Test2::prop}.{core::num::+}(self::getNum()) in let final void #t27 = #t25.{self::Test2::prop} = #t26 in #t26;
+    core::num* v9 = let final self::Test2* #t28 = t in #t28.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t29 = #t28.{self::Test2::prop}.{core::num::+}(self::getDouble()) in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
+    core::num* v10 = let final self::Test2* #t31 = t in #t31.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t32 = #t31.{self::Test2::prop}.{core::num::+}(1) in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
+    core::num* v11 = let final self::Test2* #t34 = t in #t34.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop} in let final void #t36 = #t34.{self::Test2::prop} = #t35.{core::num::+}(1) in #t35;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -60,13 +60,13 @@
     : super core::Object::•()
     ;
   static method test3(self::Test3* t) → void {
-    core::double* v3 = let final self::Test3* #t37 = t in #t37 == null ?{core::double*} null : #t37.{self::Test3::prop} = self::getDouble();
-    core::double* v6 = let final self::Test3* #t38 = t in #t38 == null ?{core::double*} null : let final core::double* #t39 = #t38.{self::Test3::prop}{core::double*} in #t39 == null ?{core::double*} #t38.{self::Test3::prop} = self::getDouble() : #t39;
-    core::double* v7 = let final self::Test3* #t40 = t in #t40 == null ?{core::double*} null : let final core::double* #t41 = #t40.{self::Test3::prop}{core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} in let final void #t42 = #t40.{self::Test3::prop} = #t41 in #t41;
-    core::double* v8 = let final self::Test3* #t43 = t in #t43 == null ?{core::double*} null : let final core::double* #t44 = #t43.{self::Test3::prop}{core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} in let final void #t45 = #t43.{self::Test3::prop} = #t44 in #t44;
-    core::double* v9 = let final self::Test3* #t46 = t in #t46 == null ?{core::double*} null : let final core::double* #t47 = #t46.{self::Test3::prop}{core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t48 = #t46.{self::Test3::prop} = #t47 in #t47;
-    core::double* v10 = let final self::Test3* #t49 = t in #t49 == null ?{core::double*} null : let final core::double* #t50 = #t49.{self::Test3::prop}{core::double*}.{core::double::+}(1){(core::num*) →* core::double*} in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
-    core::double* v11 = let final self::Test3* #t52 = t in #t52 == null ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop}{core::double*} in let final void #t54 = #t52.{self::Test3::prop} = #t53.{core::double::+}(1){(core::num*) →* core::double*} in #t53;
+    core::double* v3 = let final self::Test3* #t37 = t in #t37.{self::Test3::==}(null) ?{core::double*} null : #t37.{self::Test3::prop} = self::getDouble();
+    core::double* v6 = let final self::Test3* #t38 = t in #t38.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t39 = #t38.{self::Test3::prop} in #t39.{core::num::==}(null) ?{core::double*} #t38.{self::Test3::prop} = self::getDouble() : #t39;
+    core::double* v7 = let final self::Test3* #t40 = t in #t40.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t41 = #t40.{self::Test3::prop}.{core::double::+}(self::getInt()) in let final void #t42 = #t40.{self::Test3::prop} = #t41 in #t41;
+    core::double* v8 = let final self::Test3* #t43 = t in #t43.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t44 = #t43.{self::Test3::prop}.{core::double::+}(self::getNum()) in let final void #t45 = #t43.{self::Test3::prop} = #t44 in #t44;
+    core::double* v9 = let final self::Test3* #t46 = t in #t46.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t47 = #t46.{self::Test3::prop}.{core::double::+}(self::getDouble()) in let final void #t48 = #t46.{self::Test3::prop} = #t47 in #t47;
+    core::double* v10 = let final self::Test3* #t49 = t in #t49.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t50 = #t49.{self::Test3::prop}.{core::double::+}(1) in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
+    core::double* v11 = let final self::Test3* #t52 = t in #t52.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop} in let final void #t54 = #t52.{self::Test3::prop} = #t53.{core::double::+}(1) in #t53;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.weak.expect
index 28b3433..fe71ec5 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.weak.expect
@@ -57,19 +57,19 @@
     ;
   method test() → void {
     super.{self::Base::member} = self::f<self::B*>();
-    super.{self::Base::member} == null ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1){(core::int*) →* self::B*};
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1){(core::int*) →* self::B*};
+    super.{self::Base::member}.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
     self::B* v1 = super.{self::Base::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1 == null ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
-    self::A* v3 = super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    self::B* v4 = super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    self::C* v5 = super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    self::B* v6 = super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v7 = let final self::B* #t2 = super.{self::Base::member} in let final self::B* #t3 = super.{self::Base::member} = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
+    self::A* v3 = super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    self::B* v4 = super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
+    self::C* v5 = super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
+    self::B* v6 = super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
+    self::B* v7 = let final self::B* #t2 = super.{self::Base::member} in let final self::B* #t3 = super.{self::Base::member} = #t2.{self::B::-}(1) in #t2;
   }
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.weak.transformed.expect
index 28b3433..fe71ec5 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.weak.transformed.expect
@@ -57,19 +57,19 @@
     ;
   method test() → void {
     super.{self::Base::member} = self::f<self::B*>();
-    super.{self::Base::member} == null ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1){(core::int*) →* self::B*};
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1){(core::int*) →* self::B*};
+    super.{self::Base::member}.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
     self::B* v1 = super.{self::Base::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1 == null ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
-    self::A* v3 = super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    self::B* v4 = super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    self::C* v5 = super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    self::B* v6 = super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v7 = let final self::B* #t2 = super.{self::Base::member} in let final self::B* #t3 = super.{self::Base::member} = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
+    self::A* v3 = super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    self::B* v4 = super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
+    self::C* v5 = super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
+    self::B* v6 = super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
+    self::B* v7 = let final self::B* #t2 = super.{self::Base::member} in let final self::B* #t3 = super.{self::Base::member} = #t2.{self::B::-}(1) in #t2;
   }
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.weak.expect
index 15883a8..70a957e 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.weak.expect
@@ -26,10 +26,10 @@
     ;
   method test() → void {
     core::int* v1 = super.{self::Base::intProp} = self::getInt();
-    core::int* v4 = let final core::int* #t1 = super.{self::Base::intProp} in #t1 == null ?{core::int*} super.{self::Base::intProp} = self::getInt() : #t1;
-    core::int* v7 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-    core::int* v10 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(1){(core::num*) →* core::int*};
-    core::int* v11 = let final core::int* #t2 = super.{self::Base::intProp} in let final core::int* #t3 = super.{self::Base::intProp} = #t2.{core::num::+}(1){(core::num*) →* core::int*} in #t2;
+    core::int* v4 = let final core::int* #t1 = super.{self::Base::intProp} in #t1.{core::num::==}(null) ?{core::int*} super.{self::Base::intProp} = self::getInt() : #t1;
+    core::int* v7 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(self::getInt());
+    core::int* v10 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(1);
+    core::int* v11 = let final core::int* #t2 = super.{self::Base::intProp} in let final core::int* #t3 = super.{self::Base::intProp} = #t2.{core::num::+}(1) in #t2;
   }
 }
 class Test2 extends self::Base {
@@ -40,14 +40,14 @@
     core::int* v1 = super.{self::Base::numProp} = self::getInt();
     core::num* v2 = super.{self::Base::numProp} = self::getNum();
     core::double* v3 = super.{self::Base::numProp} = self::getDouble();
-    core::num* v4 = let final core::num* #t4 = super.{self::Base::numProp} in #t4 == null ?{core::num*} super.{self::Base::numProp} = self::getInt() : #t4;
-    core::num* v5 = let final core::num* #t5 = super.{self::Base::numProp} in #t5 == null ?{core::num*} super.{self::Base::numProp} = self::getNum() : #t5;
-    core::num* v6 = let final core::num* #t6 = super.{self::Base::numProp} in #t6 == null ?{core::num*} super.{self::Base::numProp} = self::getDouble() : #t6;
-    core::num* v7 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-    core::num* v8 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-    core::num* v9 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-    core::num* v10 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(1){(core::num*) →* core::num*};
-    core::num* v11 = let final core::num* #t7 = super.{self::Base::numProp} in let final core::num* #t8 = super.{self::Base::numProp} = #t7.{core::num::+}(1){(core::num*) →* core::num*} in #t7;
+    core::num* v4 = let final core::num* #t4 = super.{self::Base::numProp} in #t4.{core::num::==}(null) ?{core::num*} super.{self::Base::numProp} = self::getInt() : #t4;
+    core::num* v5 = let final core::num* #t5 = super.{self::Base::numProp} in #t5.{core::num::==}(null) ?{core::num*} super.{self::Base::numProp} = self::getNum() : #t5;
+    core::num* v6 = let final core::num* #t6 = super.{self::Base::numProp} in #t6.{core::num::==}(null) ?{core::num*} super.{self::Base::numProp} = self::getDouble() : #t6;
+    core::num* v7 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getInt());
+    core::num* v8 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getNum());
+    core::num* v9 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getDouble());
+    core::num* v10 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(1);
+    core::num* v11 = let final core::num* #t7 = super.{self::Base::numProp} in let final core::num* #t8 = super.{self::Base::numProp} = #t7.{core::num::+}(1) in #t7;
   }
 }
 class Test3 extends self::Base {
@@ -56,12 +56,12 @@
     ;
   method test3() → void {
     core::double* v3 = super.{self::Base::doubleProp} = self::getDouble();
-    core::double* v6 = let final core::double* #t9 = super.{self::Base::doubleProp} in #t9 == null ?{core::double*} super.{self::Base::doubleProp} = self::getDouble() : #t9;
-    core::double* v7 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-    core::double* v8 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-    core::double* v9 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-    core::double* v10 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(1){(core::num*) →* core::double*};
-    core::double* v11 = let final core::double* #t10 = super.{self::Base::doubleProp} in let final core::double* #t11 = super.{self::Base::doubleProp} = #t10.{core::double::+}(1){(core::num*) →* core::double*} in #t10;
+    core::double* v6 = let final core::double* #t9 = super.{self::Base::doubleProp} in #t9.{core::num::==}(null) ?{core::double*} super.{self::Base::doubleProp} = self::getDouble() : #t9;
+    core::double* v7 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getInt());
+    core::double* v8 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getNum());
+    core::double* v9 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getDouble());
+    core::double* v10 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(1);
+    core::double* v11 = let final core::double* #t10 = super.{self::Base::doubleProp} in let final core::double* #t11 = super.{self::Base::doubleProp} = #t10.{core::double::+}(1) in #t10;
   }
 }
 static method getInt() → core::int*
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.weak.transformed.expect
index 15883a8..70a957e 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.weak.transformed.expect
@@ -26,10 +26,10 @@
     ;
   method test() → void {
     core::int* v1 = super.{self::Base::intProp} = self::getInt();
-    core::int* v4 = let final core::int* #t1 = super.{self::Base::intProp} in #t1 == null ?{core::int*} super.{self::Base::intProp} = self::getInt() : #t1;
-    core::int* v7 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-    core::int* v10 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(1){(core::num*) →* core::int*};
-    core::int* v11 = let final core::int* #t2 = super.{self::Base::intProp} in let final core::int* #t3 = super.{self::Base::intProp} = #t2.{core::num::+}(1){(core::num*) →* core::int*} in #t2;
+    core::int* v4 = let final core::int* #t1 = super.{self::Base::intProp} in #t1.{core::num::==}(null) ?{core::int*} super.{self::Base::intProp} = self::getInt() : #t1;
+    core::int* v7 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(self::getInt());
+    core::int* v10 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(1);
+    core::int* v11 = let final core::int* #t2 = super.{self::Base::intProp} in let final core::int* #t3 = super.{self::Base::intProp} = #t2.{core::num::+}(1) in #t2;
   }
 }
 class Test2 extends self::Base {
@@ -40,14 +40,14 @@
     core::int* v1 = super.{self::Base::numProp} = self::getInt();
     core::num* v2 = super.{self::Base::numProp} = self::getNum();
     core::double* v3 = super.{self::Base::numProp} = self::getDouble();
-    core::num* v4 = let final core::num* #t4 = super.{self::Base::numProp} in #t4 == null ?{core::num*} super.{self::Base::numProp} = self::getInt() : #t4;
-    core::num* v5 = let final core::num* #t5 = super.{self::Base::numProp} in #t5 == null ?{core::num*} super.{self::Base::numProp} = self::getNum() : #t5;
-    core::num* v6 = let final core::num* #t6 = super.{self::Base::numProp} in #t6 == null ?{core::num*} super.{self::Base::numProp} = self::getDouble() : #t6;
-    core::num* v7 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-    core::num* v8 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-    core::num* v9 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-    core::num* v10 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(1){(core::num*) →* core::num*};
-    core::num* v11 = let final core::num* #t7 = super.{self::Base::numProp} in let final core::num* #t8 = super.{self::Base::numProp} = #t7.{core::num::+}(1){(core::num*) →* core::num*} in #t7;
+    core::num* v4 = let final core::num* #t4 = super.{self::Base::numProp} in #t4.{core::num::==}(null) ?{core::num*} super.{self::Base::numProp} = self::getInt() : #t4;
+    core::num* v5 = let final core::num* #t5 = super.{self::Base::numProp} in #t5.{core::num::==}(null) ?{core::num*} super.{self::Base::numProp} = self::getNum() : #t5;
+    core::num* v6 = let final core::num* #t6 = super.{self::Base::numProp} in #t6.{core::num::==}(null) ?{core::num*} super.{self::Base::numProp} = self::getDouble() : #t6;
+    core::num* v7 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getInt());
+    core::num* v8 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getNum());
+    core::num* v9 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getDouble());
+    core::num* v10 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(1);
+    core::num* v11 = let final core::num* #t7 = super.{self::Base::numProp} in let final core::num* #t8 = super.{self::Base::numProp} = #t7.{core::num::+}(1) in #t7;
   }
 }
 class Test3 extends self::Base {
@@ -56,12 +56,12 @@
     ;
   method test3() → void {
     core::double* v3 = super.{self::Base::doubleProp} = self::getDouble();
-    core::double* v6 = let final core::double* #t9 = super.{self::Base::doubleProp} in #t9 == null ?{core::double*} super.{self::Base::doubleProp} = self::getDouble() : #t9;
-    core::double* v7 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-    core::double* v8 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-    core::double* v9 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-    core::double* v10 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(1){(core::num*) →* core::double*};
-    core::double* v11 = let final core::double* #t10 = super.{self::Base::doubleProp} in let final core::double* #t11 = super.{self::Base::doubleProp} = #t10.{core::double::+}(1){(core::num*) →* core::double*} in #t10;
+    core::double* v6 = let final core::double* #t9 = super.{self::Base::doubleProp} in #t9.{core::num::==}(null) ?{core::double*} super.{self::Base::doubleProp} = self::getDouble() : #t9;
+    core::double* v7 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getInt());
+    core::double* v8 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getNum());
+    core::double* v9 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getDouble());
+    core::double* v10 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(1);
+    core::double* v11 = let final core::double* #t10 = super.{self::Base::doubleProp} in let final core::double* #t11 = super.{self::Base::doubleProp} = #t10.{core::double::+}(1) in #t10;
   }
 }
 static method getInt() → core::int*
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.weak.expect
index 1e03234..00c3f25 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.weak.expect
@@ -9,10 +9,10 @@
     ;
   static method test(self::Test1* t) → void {
     core::int* v1 = t.{self::Test1::prop} = self::getInt();
-    core::int* v4 = let final self::Test1* #t1 = t in let final core::int* #t2 = #t1.{self::Test1::prop}{core::int*} in #t2 == null ?{core::int*} #t1.{self::Test1::prop} = self::getInt() : #t2;
-    core::int* v7 = let final self::Test1* #t3 = t in #t3.{self::Test1::prop} = #t3.{self::Test1::prop}{core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-    core::int* v10 = let final self::Test1* #t4 = t in #t4.{self::Test1::prop} = #t4.{self::Test1::prop}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-    core::int* v11 = let final self::Test1* #t5 = t in let final core::int* #t6 = #t5.{self::Test1::prop}{core::int*} in let final core::int* #t7 = #t5.{self::Test1::prop} = #t6.{core::num::+}(1){(core::num*) →* core::int*} in #t6;
+    core::int* v4 = let final self::Test1* #t1 = t in let final core::int* #t2 = #t1.{self::Test1::prop} in #t2.{core::num::==}(null) ?{core::int*} #t1.{self::Test1::prop} = self::getInt() : #t2;
+    core::int* v7 = let final self::Test1* #t3 = t in #t3.{self::Test1::prop} = #t3.{self::Test1::prop}.{core::num::+}(self::getInt());
+    core::int* v10 = let final self::Test1* #t4 = t in #t4.{self::Test1::prop} = #t4.{self::Test1::prop}.{core::num::+}(1);
+    core::int* v11 = let final self::Test1* #t5 = t in let final core::int* #t6 = #t5.{self::Test1::prop} in let final core::int* #t7 = #t5.{self::Test1::prop} = #t6.{core::num::+}(1) in #t6;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -34,14 +34,14 @@
     core::int* v1 = t.{self::Test2::prop} = self::getInt();
     core::num* v2 = t.{self::Test2::prop} = self::getNum();
     core::double* v3 = t.{self::Test2::prop} = self::getDouble();
-    core::num* v4 = let final self::Test2* #t8 = t in let final core::num* #t9 = #t8.{self::Test2::prop}{core::num*} in #t9 == null ?{core::num*} #t8.{self::Test2::prop} = self::getInt() : #t9;
-    core::num* v5 = let final self::Test2* #t10 = t in let final core::num* #t11 = #t10.{self::Test2::prop}{core::num*} in #t11 == null ?{core::num*} #t10.{self::Test2::prop} = self::getNum() : #t11;
-    core::num* v6 = let final self::Test2* #t12 = t in let final core::num* #t13 = #t12.{self::Test2::prop}{core::num*} in #t13 == null ?{core::num*} #t12.{self::Test2::prop} = self::getDouble() : #t13;
-    core::num* v7 = let final self::Test2* #t14 = t in #t14.{self::Test2::prop} = #t14.{self::Test2::prop}{core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-    core::num* v8 = let final self::Test2* #t15 = t in #t15.{self::Test2::prop} = #t15.{self::Test2::prop}{core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-    core::num* v9 = let final self::Test2* #t16 = t in #t16.{self::Test2::prop} = #t16.{self::Test2::prop}{core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-    core::num* v10 = let final self::Test2* #t17 = t in #t17.{self::Test2::prop} = #t17.{self::Test2::prop}{core::num*}.{core::num::+}(1){(core::num*) →* core::num*};
-    core::num* v11 = let final self::Test2* #t18 = t in let final core::num* #t19 = #t18.{self::Test2::prop}{core::num*} in let final core::num* #t20 = #t18.{self::Test2::prop} = #t19.{core::num::+}(1){(core::num*) →* core::num*} in #t19;
+    core::num* v4 = let final self::Test2* #t8 = t in let final core::num* #t9 = #t8.{self::Test2::prop} in #t9.{core::num::==}(null) ?{core::num*} #t8.{self::Test2::prop} = self::getInt() : #t9;
+    core::num* v5 = let final self::Test2* #t10 = t in let final core::num* #t11 = #t10.{self::Test2::prop} in #t11.{core::num::==}(null) ?{core::num*} #t10.{self::Test2::prop} = self::getNum() : #t11;
+    core::num* v6 = let final self::Test2* #t12 = t in let final core::num* #t13 = #t12.{self::Test2::prop} in #t13.{core::num::==}(null) ?{core::num*} #t12.{self::Test2::prop} = self::getDouble() : #t13;
+    core::num* v7 = let final self::Test2* #t14 = t in #t14.{self::Test2::prop} = #t14.{self::Test2::prop}.{core::num::+}(self::getInt());
+    core::num* v8 = let final self::Test2* #t15 = t in #t15.{self::Test2::prop} = #t15.{self::Test2::prop}.{core::num::+}(self::getNum());
+    core::num* v9 = let final self::Test2* #t16 = t in #t16.{self::Test2::prop} = #t16.{self::Test2::prop}.{core::num::+}(self::getDouble());
+    core::num* v10 = let final self::Test2* #t17 = t in #t17.{self::Test2::prop} = #t17.{self::Test2::prop}.{core::num::+}(1);
+    core::num* v11 = let final self::Test2* #t18 = t in let final core::num* #t19 = #t18.{self::Test2::prop} in let final core::num* #t20 = #t18.{self::Test2::prop} = #t19.{core::num::+}(1) in #t19;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -61,12 +61,12 @@
     ;
   static method test3(self::Test3* t) → void {
     core::double* v3 = t.{self::Test3::prop} = self::getDouble();
-    core::double* v6 = let final self::Test3* #t21 = t in let final core::double* #t22 = #t21.{self::Test3::prop}{core::double*} in #t22 == null ?{core::double*} #t21.{self::Test3::prop} = self::getDouble() : #t22;
-    core::double* v7 = let final self::Test3* #t23 = t in #t23.{self::Test3::prop} = #t23.{self::Test3::prop}{core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-    core::double* v8 = let final self::Test3* #t24 = t in #t24.{self::Test3::prop} = #t24.{self::Test3::prop}{core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-    core::double* v9 = let final self::Test3* #t25 = t in #t25.{self::Test3::prop} = #t25.{self::Test3::prop}{core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-    core::double* v10 = let final self::Test3* #t26 = t in #t26.{self::Test3::prop} = #t26.{self::Test3::prop}{core::double*}.{core::double::+}(1){(core::num*) →* core::double*};
-    core::double* v11 = let final self::Test3* #t27 = t in let final core::double* #t28 = #t27.{self::Test3::prop}{core::double*} in let final core::double* #t29 = #t27.{self::Test3::prop} = #t28.{core::double::+}(1){(core::num*) →* core::double*} in #t28;
+    core::double* v6 = let final self::Test3* #t21 = t in let final core::double* #t22 = #t21.{self::Test3::prop} in #t22.{core::num::==}(null) ?{core::double*} #t21.{self::Test3::prop} = self::getDouble() : #t22;
+    core::double* v7 = let final self::Test3* #t23 = t in #t23.{self::Test3::prop} = #t23.{self::Test3::prop}.{core::double::+}(self::getInt());
+    core::double* v8 = let final self::Test3* #t24 = t in #t24.{self::Test3::prop} = #t24.{self::Test3::prop}.{core::double::+}(self::getNum());
+    core::double* v9 = let final self::Test3* #t25 = t in #t25.{self::Test3::prop} = #t25.{self::Test3::prop}.{core::double::+}(self::getDouble());
+    core::double* v10 = let final self::Test3* #t26 = t in #t26.{self::Test3::prop} = #t26.{self::Test3::prop}.{core::double::+}(1);
+    core::double* v11 = let final self::Test3* #t27 = t in let final core::double* #t28 = #t27.{self::Test3::prop} in let final core::double* #t29 = #t27.{self::Test3::prop} = #t28.{core::double::+}(1) in #t28;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.weak.transformed.expect
index 1e03234..00c3f25 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.weak.transformed.expect
@@ -9,10 +9,10 @@
     ;
   static method test(self::Test1* t) → void {
     core::int* v1 = t.{self::Test1::prop} = self::getInt();
-    core::int* v4 = let final self::Test1* #t1 = t in let final core::int* #t2 = #t1.{self::Test1::prop}{core::int*} in #t2 == null ?{core::int*} #t1.{self::Test1::prop} = self::getInt() : #t2;
-    core::int* v7 = let final self::Test1* #t3 = t in #t3.{self::Test1::prop} = #t3.{self::Test1::prop}{core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-    core::int* v10 = let final self::Test1* #t4 = t in #t4.{self::Test1::prop} = #t4.{self::Test1::prop}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-    core::int* v11 = let final self::Test1* #t5 = t in let final core::int* #t6 = #t5.{self::Test1::prop}{core::int*} in let final core::int* #t7 = #t5.{self::Test1::prop} = #t6.{core::num::+}(1){(core::num*) →* core::int*} in #t6;
+    core::int* v4 = let final self::Test1* #t1 = t in let final core::int* #t2 = #t1.{self::Test1::prop} in #t2.{core::num::==}(null) ?{core::int*} #t1.{self::Test1::prop} = self::getInt() : #t2;
+    core::int* v7 = let final self::Test1* #t3 = t in #t3.{self::Test1::prop} = #t3.{self::Test1::prop}.{core::num::+}(self::getInt());
+    core::int* v10 = let final self::Test1* #t4 = t in #t4.{self::Test1::prop} = #t4.{self::Test1::prop}.{core::num::+}(1);
+    core::int* v11 = let final self::Test1* #t5 = t in let final core::int* #t6 = #t5.{self::Test1::prop} in let final core::int* #t7 = #t5.{self::Test1::prop} = #t6.{core::num::+}(1) in #t6;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -34,14 +34,14 @@
     core::int* v1 = t.{self::Test2::prop} = self::getInt();
     core::num* v2 = t.{self::Test2::prop} = self::getNum();
     core::double* v3 = t.{self::Test2::prop} = self::getDouble();
-    core::num* v4 = let final self::Test2* #t8 = t in let final core::num* #t9 = #t8.{self::Test2::prop}{core::num*} in #t9 == null ?{core::num*} #t8.{self::Test2::prop} = self::getInt() : #t9;
-    core::num* v5 = let final self::Test2* #t10 = t in let final core::num* #t11 = #t10.{self::Test2::prop}{core::num*} in #t11 == null ?{core::num*} #t10.{self::Test2::prop} = self::getNum() : #t11;
-    core::num* v6 = let final self::Test2* #t12 = t in let final core::num* #t13 = #t12.{self::Test2::prop}{core::num*} in #t13 == null ?{core::num*} #t12.{self::Test2::prop} = self::getDouble() : #t13;
-    core::num* v7 = let final self::Test2* #t14 = t in #t14.{self::Test2::prop} = #t14.{self::Test2::prop}{core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-    core::num* v8 = let final self::Test2* #t15 = t in #t15.{self::Test2::prop} = #t15.{self::Test2::prop}{core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-    core::num* v9 = let final self::Test2* #t16 = t in #t16.{self::Test2::prop} = #t16.{self::Test2::prop}{core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-    core::num* v10 = let final self::Test2* #t17 = t in #t17.{self::Test2::prop} = #t17.{self::Test2::prop}{core::num*}.{core::num::+}(1){(core::num*) →* core::num*};
-    core::num* v11 = let final self::Test2* #t18 = t in let final core::num* #t19 = #t18.{self::Test2::prop}{core::num*} in let final core::num* #t20 = #t18.{self::Test2::prop} = #t19.{core::num::+}(1){(core::num*) →* core::num*} in #t19;
+    core::num* v4 = let final self::Test2* #t8 = t in let final core::num* #t9 = #t8.{self::Test2::prop} in #t9.{core::num::==}(null) ?{core::num*} #t8.{self::Test2::prop} = self::getInt() : #t9;
+    core::num* v5 = let final self::Test2* #t10 = t in let final core::num* #t11 = #t10.{self::Test2::prop} in #t11.{core::num::==}(null) ?{core::num*} #t10.{self::Test2::prop} = self::getNum() : #t11;
+    core::num* v6 = let final self::Test2* #t12 = t in let final core::num* #t13 = #t12.{self::Test2::prop} in #t13.{core::num::==}(null) ?{core::num*} #t12.{self::Test2::prop} = self::getDouble() : #t13;
+    core::num* v7 = let final self::Test2* #t14 = t in #t14.{self::Test2::prop} = #t14.{self::Test2::prop}.{core::num::+}(self::getInt());
+    core::num* v8 = let final self::Test2* #t15 = t in #t15.{self::Test2::prop} = #t15.{self::Test2::prop}.{core::num::+}(self::getNum());
+    core::num* v9 = let final self::Test2* #t16 = t in #t16.{self::Test2::prop} = #t16.{self::Test2::prop}.{core::num::+}(self::getDouble());
+    core::num* v10 = let final self::Test2* #t17 = t in #t17.{self::Test2::prop} = #t17.{self::Test2::prop}.{core::num::+}(1);
+    core::num* v11 = let final self::Test2* #t18 = t in let final core::num* #t19 = #t18.{self::Test2::prop} in let final core::num* #t20 = #t18.{self::Test2::prop} = #t19.{core::num::+}(1) in #t19;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -61,12 +61,12 @@
     ;
   static method test3(self::Test3* t) → void {
     core::double* v3 = t.{self::Test3::prop} = self::getDouble();
-    core::double* v6 = let final self::Test3* #t21 = t in let final core::double* #t22 = #t21.{self::Test3::prop}{core::double*} in #t22 == null ?{core::double*} #t21.{self::Test3::prop} = self::getDouble() : #t22;
-    core::double* v7 = let final self::Test3* #t23 = t in #t23.{self::Test3::prop} = #t23.{self::Test3::prop}{core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-    core::double* v8 = let final self::Test3* #t24 = t in #t24.{self::Test3::prop} = #t24.{self::Test3::prop}{core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-    core::double* v9 = let final self::Test3* #t25 = t in #t25.{self::Test3::prop} = #t25.{self::Test3::prop}{core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-    core::double* v10 = let final self::Test3* #t26 = t in #t26.{self::Test3::prop} = #t26.{self::Test3::prop}{core::double*}.{core::double::+}(1){(core::num*) →* core::double*};
-    core::double* v11 = let final self::Test3* #t27 = t in let final core::double* #t28 = #t27.{self::Test3::prop}{core::double*} in let final core::double* #t29 = #t27.{self::Test3::prop} = #t28.{core::double::+}(1){(core::num*) →* core::double*} in #t28;
+    core::double* v6 = let final self::Test3* #t21 = t in let final core::double* #t22 = #t21.{self::Test3::prop} in #t22.{core::num::==}(null) ?{core::double*} #t21.{self::Test3::prop} = self::getDouble() : #t22;
+    core::double* v7 = let final self::Test3* #t23 = t in #t23.{self::Test3::prop} = #t23.{self::Test3::prop}.{core::double::+}(self::getInt());
+    core::double* v8 = let final self::Test3* #t24 = t in #t24.{self::Test3::prop} = #t24.{self::Test3::prop}.{core::double::+}(self::getNum());
+    core::double* v9 = let final self::Test3* #t25 = t in #t25.{self::Test3::prop} = #t25.{self::Test3::prop}.{core::double::+}(self::getDouble());
+    core::double* v10 = let final self::Test3* #t26 = t in #t26.{self::Test3::prop} = #t26.{self::Test3::prop}.{core::double::+}(1);
+    core::double* v11 = let final self::Test3* #t27 = t in let final core::double* #t28 = #t27.{self::Test3::prop} in let final core::double* #t29 = #t27.{self::Test3::prop} = #t28.{core::double::+}(1) in #t28;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_static.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_static.dart.weak.expect
index 090413f..cd7e710 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_static.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_static.dart.weak.expect
@@ -41,34 +41,34 @@
   return null;
 static method test_topLevelVariable() → void {
   self::topLevelVariable = self::f<self::B*>();
-  self::topLevelVariable == null ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
-  self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1){(core::int*) →* self::B*};
+  self::topLevelVariable.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
+  self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
+  self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
+  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
+  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
   self::B* v1 = self::topLevelVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1 == null ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
-  self::A* v3 = self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B* v4 = self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::C* v5 = self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B* v6 = self::topLevelVariable = self::topLevelVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B* v7 = let final self::B* #t2 = self::topLevelVariable in let final self::B* #t3 = self::topLevelVariable = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
+  self::A* v3 = self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B* v4 = self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
+  self::C* v5 = self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
+  self::B* v6 = self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
+  self::B* v7 = let final self::B* #t2 = self::topLevelVariable in let final self::B* #t3 = self::topLevelVariable = #t2.{self::B::-}(1) in #t2;
 }
 static method test_staticVariable() → void {
   self::B::staticVariable = self::f<self::B*>();
-  self::B::staticVariable == null ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
-  self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1){(core::int*) →* self::B*};
+  self::B::staticVariable.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
+  self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
+  self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
+  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
+  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
   self::B* v1 = self::B::staticVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4 == null ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
-  self::A* v3 = self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B* v4 = self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::C* v5 = self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B* v6 = self::B::staticVariable = self::B::staticVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B* v7 = let final self::B* #t5 = self::B::staticVariable in let final self::B* #t6 = self::B::staticVariable = #t5.{self::B::-}(1){(core::int*) →* self::B*} in #t5;
+  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
+  self::A* v3 = self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B* v4 = self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
+  self::C* v5 = self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
+  self::B* v6 = self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
+  self::B* v7 = let final self::B* #t5 = self::B::staticVariable in let final self::B* #t6 = self::B::staticVariable = #t5.{self::B::-}(1) in #t5;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_static.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_static.dart.weak.transformed.expect
index 090413f..cd7e710 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_static.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_static.dart.weak.transformed.expect
@@ -41,34 +41,34 @@
   return null;
 static method test_topLevelVariable() → void {
   self::topLevelVariable = self::f<self::B*>();
-  self::topLevelVariable == null ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
-  self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1){(core::int*) →* self::B*};
+  self::topLevelVariable.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
+  self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
+  self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
+  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
+  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
   self::B* v1 = self::topLevelVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1 == null ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
-  self::A* v3 = self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B* v4 = self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::C* v5 = self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B* v6 = self::topLevelVariable = self::topLevelVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B* v7 = let final self::B* #t2 = self::topLevelVariable in let final self::B* #t3 = self::topLevelVariable = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
+  self::A* v3 = self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B* v4 = self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
+  self::C* v5 = self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
+  self::B* v6 = self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
+  self::B* v7 = let final self::B* #t2 = self::topLevelVariable in let final self::B* #t3 = self::topLevelVariable = #t2.{self::B::-}(1) in #t2;
 }
 static method test_staticVariable() → void {
   self::B::staticVariable = self::f<self::B*>();
-  self::B::staticVariable == null ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
-  self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1){(core::int*) →* self::B*};
+  self::B::staticVariable.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
+  self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
+  self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
+  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
+  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
   self::B* v1 = self::B::staticVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4 == null ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
-  self::A* v3 = self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B* v4 = self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::C* v5 = self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B* v6 = self::B::staticVariable = self::B::staticVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B* v7 = let final self::B* #t5 = self::B::staticVariable in let final self::B* #t6 = self::B::staticVariable = #t5.{self::B::-}(1){(core::int*) →* self::B*} in #t5;
+  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
+  self::A* v3 = self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B* v4 = self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
+  self::C* v5 = self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
+  self::B* v6 = self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
+  self::B* v7 = let final self::B* #t5 = self::B::staticVariable in let final self::B* #t6 = self::B::staticVariable = #t5.{self::B::-}(1) in #t5;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_static_upwards.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_static_upwards.dart.weak.expect
index 4130e63..109c102 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_static_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_static_upwards.dart.weak.expect
@@ -13,31 +13,31 @@
   return 0.0;
 static method test1() → void {
   core::int* v1 = self::topLevelInt = self::getInt();
-  core::int* v4 = let final core::int* #t1 = self::topLevelInt in #t1 == null ?{core::int*} self::topLevelInt = self::getInt() : #t1;
-  core::int* v7 = self::topLevelInt = self::topLevelInt.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-  core::int* v10 = self::topLevelInt = self::topLevelInt.{core::num::+}(1){(core::num*) →* core::int*};
-  core::int* v11 = let final core::int* #t2 = self::topLevelInt in let final core::int* #t3 = self::topLevelInt = #t2.{core::num::+}(1){(core::num*) →* core::int*} in #t2;
+  core::int* v4 = let final core::int* #t1 = self::topLevelInt in #t1.{core::num::==}(null) ?{core::int*} self::topLevelInt = self::getInt() : #t1;
+  core::int* v7 = self::topLevelInt = self::topLevelInt.{core::num::+}(self::getInt());
+  core::int* v10 = self::topLevelInt = self::topLevelInt.{core::num::+}(1);
+  core::int* v11 = let final core::int* #t2 = self::topLevelInt in let final core::int* #t3 = self::topLevelInt = #t2.{core::num::+}(1) in #t2;
 }
 static method test2() → void {
   core::int* v1 = self::topLevelNum = self::getInt();
   core::num* v2 = self::topLevelNum = self::getNum();
   core::double* v3 = self::topLevelNum = self::getDouble();
-  core::num* v4 = let final core::num* #t4 = self::topLevelNum in #t4 == null ?{core::num*} self::topLevelNum = self::getInt() : #t4;
-  core::num* v5 = let final core::num* #t5 = self::topLevelNum in #t5 == null ?{core::num*} self::topLevelNum = self::getNum() : #t5;
-  core::num* v6 = let final core::num* #t6 = self::topLevelNum in #t6 == null ?{core::num*} self::topLevelNum = self::getDouble() : #t6;
-  core::num* v7 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-  core::num* v8 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-  core::num* v9 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-  core::num* v10 = self::topLevelNum = self::topLevelNum.{core::num::+}(1){(core::num*) →* core::num*};
-  core::num* v11 = let final core::num* #t7 = self::topLevelNum in let final core::num* #t8 = self::topLevelNum = #t7.{core::num::+}(1){(core::num*) →* core::num*} in #t7;
+  core::num* v4 = let final core::num* #t4 = self::topLevelNum in #t4.{core::num::==}(null) ?{core::num*} self::topLevelNum = self::getInt() : #t4;
+  core::num* v5 = let final core::num* #t5 = self::topLevelNum in #t5.{core::num::==}(null) ?{core::num*} self::topLevelNum = self::getNum() : #t5;
+  core::num* v6 = let final core::num* #t6 = self::topLevelNum in #t6.{core::num::==}(null) ?{core::num*} self::topLevelNum = self::getDouble() : #t6;
+  core::num* v7 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getInt());
+  core::num* v8 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getNum());
+  core::num* v9 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getDouble());
+  core::num* v10 = self::topLevelNum = self::topLevelNum.{core::num::+}(1);
+  core::num* v11 = let final core::num* #t7 = self::topLevelNum in let final core::num* #t8 = self::topLevelNum = #t7.{core::num::+}(1) in #t7;
 }
 static method test3() → void {
   core::double* v3 = self::topLevelDouble = self::getDouble();
-  core::double* v6 = let final core::double* #t9 = self::topLevelDouble in #t9 == null ?{core::double*} self::topLevelDouble = self::getDouble() : #t9;
-  core::double* v7 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-  core::double* v8 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-  core::double* v9 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-  core::double* v10 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(1){(core::num*) →* core::double*};
-  core::double* v11 = let final core::double* #t10 = self::topLevelDouble in let final core::double* #t11 = self::topLevelDouble = #t10.{core::double::+}(1){(core::num*) →* core::double*} in #t10;
+  core::double* v6 = let final core::double* #t9 = self::topLevelDouble in #t9.{core::num::==}(null) ?{core::double*} self::topLevelDouble = self::getDouble() : #t9;
+  core::double* v7 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getInt());
+  core::double* v8 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getNum());
+  core::double* v9 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getDouble());
+  core::double* v10 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(1);
+  core::double* v11 = let final core::double* #t10 = self::topLevelDouble in let final core::double* #t11 = self::topLevelDouble = #t10.{core::double::+}(1) in #t10;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_static_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_static_upwards.dart.weak.transformed.expect
index 4130e63..109c102 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_static_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_static_upwards.dart.weak.transformed.expect
@@ -13,31 +13,31 @@
   return 0.0;
 static method test1() → void {
   core::int* v1 = self::topLevelInt = self::getInt();
-  core::int* v4 = let final core::int* #t1 = self::topLevelInt in #t1 == null ?{core::int*} self::topLevelInt = self::getInt() : #t1;
-  core::int* v7 = self::topLevelInt = self::topLevelInt.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-  core::int* v10 = self::topLevelInt = self::topLevelInt.{core::num::+}(1){(core::num*) →* core::int*};
-  core::int* v11 = let final core::int* #t2 = self::topLevelInt in let final core::int* #t3 = self::topLevelInt = #t2.{core::num::+}(1){(core::num*) →* core::int*} in #t2;
+  core::int* v4 = let final core::int* #t1 = self::topLevelInt in #t1.{core::num::==}(null) ?{core::int*} self::topLevelInt = self::getInt() : #t1;
+  core::int* v7 = self::topLevelInt = self::topLevelInt.{core::num::+}(self::getInt());
+  core::int* v10 = self::topLevelInt = self::topLevelInt.{core::num::+}(1);
+  core::int* v11 = let final core::int* #t2 = self::topLevelInt in let final core::int* #t3 = self::topLevelInt = #t2.{core::num::+}(1) in #t2;
 }
 static method test2() → void {
   core::int* v1 = self::topLevelNum = self::getInt();
   core::num* v2 = self::topLevelNum = self::getNum();
   core::double* v3 = self::topLevelNum = self::getDouble();
-  core::num* v4 = let final core::num* #t4 = self::topLevelNum in #t4 == null ?{core::num*} self::topLevelNum = self::getInt() : #t4;
-  core::num* v5 = let final core::num* #t5 = self::topLevelNum in #t5 == null ?{core::num*} self::topLevelNum = self::getNum() : #t5;
-  core::num* v6 = let final core::num* #t6 = self::topLevelNum in #t6 == null ?{core::num*} self::topLevelNum = self::getDouble() : #t6;
-  core::num* v7 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-  core::num* v8 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-  core::num* v9 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-  core::num* v10 = self::topLevelNum = self::topLevelNum.{core::num::+}(1){(core::num*) →* core::num*};
-  core::num* v11 = let final core::num* #t7 = self::topLevelNum in let final core::num* #t8 = self::topLevelNum = #t7.{core::num::+}(1){(core::num*) →* core::num*} in #t7;
+  core::num* v4 = let final core::num* #t4 = self::topLevelNum in #t4.{core::num::==}(null) ?{core::num*} self::topLevelNum = self::getInt() : #t4;
+  core::num* v5 = let final core::num* #t5 = self::topLevelNum in #t5.{core::num::==}(null) ?{core::num*} self::topLevelNum = self::getNum() : #t5;
+  core::num* v6 = let final core::num* #t6 = self::topLevelNum in #t6.{core::num::==}(null) ?{core::num*} self::topLevelNum = self::getDouble() : #t6;
+  core::num* v7 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getInt());
+  core::num* v8 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getNum());
+  core::num* v9 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getDouble());
+  core::num* v10 = self::topLevelNum = self::topLevelNum.{core::num::+}(1);
+  core::num* v11 = let final core::num* #t7 = self::topLevelNum in let final core::num* #t8 = self::topLevelNum = #t7.{core::num::+}(1) in #t7;
 }
 static method test3() → void {
   core::double* v3 = self::topLevelDouble = self::getDouble();
-  core::double* v6 = let final core::double* #t9 = self::topLevelDouble in #t9 == null ?{core::double*} self::topLevelDouble = self::getDouble() : #t9;
-  core::double* v7 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-  core::double* v8 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-  core::double* v9 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-  core::double* v10 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(1){(core::num*) →* core::double*};
-  core::double* v11 = let final core::double* #t10 = self::topLevelDouble in let final core::double* #t11 = self::topLevelDouble = #t10.{core::double::+}(1){(core::num*) →* core::double*} in #t10;
+  core::double* v6 = let final core::double* #t9 = self::topLevelDouble in #t9.{core::num::==}(null) ?{core::double*} self::topLevelDouble = self::getDouble() : #t9;
+  core::double* v7 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getInt());
+  core::double* v8 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getNum());
+  core::double* v9 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getDouble());
+  core::double* v10 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(1);
+  core::double* v11 = let final core::double* #t10 = self::topLevelDouble in let final core::double* #t11 = self::topLevelDouble = #t10.{core::double::+}(1) in #t10;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_binary_custom.dart.weak.expect b/pkg/front_end/testcases/inference/infer_binary_custom.dart.weak.expect
index 2fd7b9e..3797db6 100644
--- a/pkg/front_end/testcases/inference/infer_binary_custom.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_custom.dart.weak.expect
@@ -21,8 +21,8 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field core::int* v_add = new self::A::•().{self::A::+}("foo"){(dynamic) →* core::int*};
-static field core::double* v_minus = new self::A::•().{self::A::-}("bar"){(dynamic) →* core::double*};
+static field core::int* v_add = new self::A::•().{self::A::+}("foo");
+static field core::double* v_minus = new self::A::•().{self::A::-}("bar");
 static method main() → dynamic {
   self::v_add;
   self::v_minus;
diff --git a/pkg/front_end/testcases/inference/infer_binary_custom.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_binary_custom.dart.weak.transformed.expect
index 2fd7b9e..3797db6 100644
--- a/pkg/front_end/testcases/inference/infer_binary_custom.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_custom.dart.weak.transformed.expect
@@ -21,8 +21,8 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field core::int* v_add = new self::A::•().{self::A::+}("foo"){(dynamic) →* core::int*};
-static field core::double* v_minus = new self::A::•().{self::A::-}("bar"){(dynamic) →* core::double*};
+static field core::int* v_add = new self::A::•().{self::A::+}("foo");
+static field core::double* v_minus = new self::A::•().{self::A::-}("bar");
 static method main() → dynamic {
   self::v_add;
   self::v_minus;
diff --git a/pkg/front_end/testcases/inference/infer_binary_double_double.dart.weak.expect b/pkg/front_end/testcases/inference/infer_binary_double_double.dart.weak.expect
index 38be484..ce38bb7 100644
--- a/pkg/front_end/testcases/inference/infer_binary_double_double.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_double_double.dart.weak.expect
@@ -2,18 +2,18 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::bool* a_equal = 1.0 =={core::num::==}{(core::Object*) →* core::bool*} 2.0;
-static field core::bool* a_notEqual = !(1.0 =={core::num::==}{(core::Object*) →* core::bool*} 2.0);
-static field core::double* a_add = 1.0.{core::double::+}(2.0){(core::num*) →* core::double*};
-static field core::double* a_subtract = 1.0.{core::double::-}(2.0){(core::num*) →* core::double*};
-static field core::double* a_multiply = 1.0.{core::double::*}(2.0){(core::num*) →* core::double*};
-static field core::double* a_divide = 1.0.{core::double::/}(2.0){(core::num*) →* core::double*};
-static field core::int* a_floorDivide = 1.0.{core::double::~/}(2.0){(core::num*) →* core::int*};
-static field core::bool* a_greater = 1.0.{core::num::>}(2.0){(core::num*) →* core::bool*};
-static field core::bool* a_less = 1.0.{core::num::<}(2.0){(core::num*) →* core::bool*};
-static field core::bool* a_greaterEqual = 1.0.{core::num::>=}(2.0){(core::num*) →* core::bool*};
-static field core::bool* a_lessEqual = 1.0.{core::num::<=}(2.0){(core::num*) →* core::bool*};
-static field core::double* a_modulo = 1.0.{core::double::%}(2.0){(core::num*) →* core::double*};
+static field core::bool* a_equal = 1.0.{core::num::==}(2.0);
+static field core::bool* a_notEqual = !1.0.{core::num::==}(2.0);
+static field core::double* a_add = 1.0.{core::double::+}(2.0);
+static field core::double* a_subtract = 1.0.{core::double::-}(2.0);
+static field core::double* a_multiply = 1.0.{core::double::*}(2.0);
+static field core::double* a_divide = 1.0.{core::double::/}(2.0);
+static field core::int* a_floorDivide = 1.0.{core::double::~/}(2.0);
+static field core::bool* a_greater = 1.0.{core::num::>}(2.0);
+static field core::bool* a_less = 1.0.{core::num::<}(2.0);
+static field core::bool* a_greaterEqual = 1.0.{core::num::>=}(2.0);
+static field core::bool* a_lessEqual = 1.0.{core::num::<=}(2.0);
+static field core::double* a_modulo = 1.0.{core::double::%}(2.0);
 static method main() → dynamic {
   self::a_equal;
   self::a_notEqual;
diff --git a/pkg/front_end/testcases/inference/infer_binary_double_double.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_binary_double_double.dart.weak.transformed.expect
index b96f167..944c9ba 100644
--- a/pkg/front_end/testcases/inference/infer_binary_double_double.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_double_double.dart.weak.transformed.expect
@@ -2,18 +2,18 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::bool* a_equal = 1.0 =={core::num::==}{(core::Object*) →* core::bool*} 2.0;
-static field core::bool* a_notEqual = !(1.0 =={core::num::==}{(core::Object*) →* core::bool*} 2.0);
-static field core::double* a_add = 1.0.{core::double::+}(2.0){(core::num*) →* core::double*};
-static field core::double* a_subtract = 1.0.{core::double::-}(2.0){(core::num*) →* core::double*};
-static field core::double* a_multiply = 1.0.{core::double::*}(2.0){(core::num*) →* core::double*};
-static field core::double* a_divide = 1.0.{core::double::/}(2.0){(core::num*) →* core::double*};
-static field core::int* a_floorDivide = 1.0.{core::double::~/}(2.0){(core::num*) →* core::int*};
-static field core::bool* a_greater = 1.0.{core::num::>}(2.0){(core::num*) →* core::bool*};
-static field core::bool* a_less = 1.0.{core::num::<}(2.0){(core::num*) →* core::bool*};
-static field core::bool* a_greaterEqual = 1.0.{core::num::>=}(2.0){(core::num*) →* core::bool*};
-static field core::bool* a_lessEqual = 1.0.{core::num::<=}(2.0){(core::num*) →* core::bool*};
-static field core::double* a_modulo = 1.0.{core::double::%}(2.0){(core::num*) →* core::double*};
+static field core::bool* a_equal = 1.0.{core::num::==}(2.0);
+static field core::bool* a_notEqual = !1.0.{core::num::==}(2.0);
+static field core::double* a_add = 1.0.{core::double::+}(2.0);
+static field core::double* a_subtract = 1.0.{core::double::-}(2.0);
+static field core::double* a_multiply = 1.0.{core::double::*}(2.0);
+static field core::double* a_divide = 1.0.{core::double::/}(2.0);
+static field core::int* a_floorDivide = 1.0.{core::double::~/}(2.0);
+static field core::bool* a_greater = 1.0.{core::num::>}(2.0);
+static field core::bool* a_less = 1.0.{core::num::<}(2.0);
+static field core::bool* a_greaterEqual = 1.0.{core::num::>=}(2.0);
+static field core::bool* a_lessEqual = 1.0.{core::num::<=}(2.0);
+static field core::double* a_modulo = 1.0.{core::double::%}(2.0);
 static method main() → dynamic {
   self::a_equal;
   self::a_notEqual;
@@ -31,16 +31,16 @@
 
 
 Extra constant evaluation status:
-Evaluated: EqualsCall @ org-dartlang-testcase:///infer_binary_double_double.dart:8:38 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:8:38 -> BoolConstant(false)
 Evaluated: Not @ org-dartlang-testcase:///infer_binary_double_double.dart:9:41 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:10:38 -> DoubleConstant(3.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:11:43 -> DoubleConstant(-1.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:12:43 -> DoubleConstant(2.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:13:42 -> DoubleConstant(0.5)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:14:48 -> IntConstant(0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:15:39 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:16:36 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:17:45 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:18:42 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:19:41 -> DoubleConstant(1.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:10:38 -> DoubleConstant(3.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:11:43 -> DoubleConstant(-1.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:12:43 -> DoubleConstant(2.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:13:42 -> DoubleConstant(0.5)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:14:48 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:15:39 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:16:36 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:17:45 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:18:42 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_double.dart:19:41 -> DoubleConstant(1.0)
 Extra constant evaluation: evaluated: 24, effectively constant: 12
diff --git a/pkg/front_end/testcases/inference/infer_binary_double_int.dart.weak.expect b/pkg/front_end/testcases/inference/infer_binary_double_int.dart.weak.expect
index 1f62c1e..4fb5e69 100644
--- a/pkg/front_end/testcases/inference/infer_binary_double_int.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_double_int.dart.weak.expect
@@ -2,18 +2,18 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::bool* a_equal = 1.0 =={core::num::==}{(core::Object*) →* core::bool*} 2;
-static field core::bool* a_notEqual = !(1.0 =={core::num::==}{(core::Object*) →* core::bool*} 2);
-static field core::double* a_add = 1.0.{core::double::+}(2){(core::num*) →* core::double*};
-static field core::double* a_subtract = 1.0.{core::double::-}(2){(core::num*) →* core::double*};
-static field core::double* a_multiply = 1.0.{core::double::*}(2){(core::num*) →* core::double*};
-static field core::double* a_divide = 1.0.{core::double::/}(2){(core::num*) →* core::double*};
-static field core::int* a_floorDivide = 1.0.{core::double::~/}(2){(core::num*) →* core::int*};
-static field core::bool* a_greater = 1.0.{core::num::>}(2){(core::num*) →* core::bool*};
-static field core::bool* a_less = 1.0.{core::num::<}(2){(core::num*) →* core::bool*};
-static field core::bool* a_greaterEqual = 1.0.{core::num::>=}(2){(core::num*) →* core::bool*};
-static field core::bool* a_lessEqual = 1.0.{core::num::<=}(2){(core::num*) →* core::bool*};
-static field core::double* a_modulo = 1.0.{core::double::%}(2){(core::num*) →* core::double*};
+static field core::bool* a_equal = 1.0.{core::num::==}(2);
+static field core::bool* a_notEqual = !1.0.{core::num::==}(2);
+static field core::double* a_add = 1.0.{core::double::+}(2);
+static field core::double* a_subtract = 1.0.{core::double::-}(2);
+static field core::double* a_multiply = 1.0.{core::double::*}(2);
+static field core::double* a_divide = 1.0.{core::double::/}(2);
+static field core::int* a_floorDivide = 1.0.{core::double::~/}(2);
+static field core::bool* a_greater = 1.0.{core::num::>}(2);
+static field core::bool* a_less = 1.0.{core::num::<}(2);
+static field core::bool* a_greaterEqual = 1.0.{core::num::>=}(2);
+static field core::bool* a_lessEqual = 1.0.{core::num::<=}(2);
+static field core::double* a_modulo = 1.0.{core::double::%}(2);
 static method main() → dynamic {
   self::a_equal;
   self::a_notEqual;
diff --git a/pkg/front_end/testcases/inference/infer_binary_double_int.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_binary_double_int.dart.weak.transformed.expect
index 046802e..c3d3a34 100644
--- a/pkg/front_end/testcases/inference/infer_binary_double_int.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_double_int.dart.weak.transformed.expect
@@ -2,18 +2,18 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::bool* a_equal = 1.0 =={core::num::==}{(core::Object*) →* core::bool*} 2;
-static field core::bool* a_notEqual = !(1.0 =={core::num::==}{(core::Object*) →* core::bool*} 2);
-static field core::double* a_add = 1.0.{core::double::+}(2){(core::num*) →* core::double*};
-static field core::double* a_subtract = 1.0.{core::double::-}(2){(core::num*) →* core::double*};
-static field core::double* a_multiply = 1.0.{core::double::*}(2){(core::num*) →* core::double*};
-static field core::double* a_divide = 1.0.{core::double::/}(2){(core::num*) →* core::double*};
-static field core::int* a_floorDivide = 1.0.{core::double::~/}(2){(core::num*) →* core::int*};
-static field core::bool* a_greater = 1.0.{core::num::>}(2){(core::num*) →* core::bool*};
-static field core::bool* a_less = 1.0.{core::num::<}(2){(core::num*) →* core::bool*};
-static field core::bool* a_greaterEqual = 1.0.{core::num::>=}(2){(core::num*) →* core::bool*};
-static field core::bool* a_lessEqual = 1.0.{core::num::<=}(2){(core::num*) →* core::bool*};
-static field core::double* a_modulo = 1.0.{core::double::%}(2){(core::num*) →* core::double*};
+static field core::bool* a_equal = 1.0.{core::num::==}(2);
+static field core::bool* a_notEqual = !1.0.{core::num::==}(2);
+static field core::double* a_add = 1.0.{core::double::+}(2);
+static field core::double* a_subtract = 1.0.{core::double::-}(2);
+static field core::double* a_multiply = 1.0.{core::double::*}(2);
+static field core::double* a_divide = 1.0.{core::double::/}(2);
+static field core::int* a_floorDivide = 1.0.{core::double::~/}(2);
+static field core::bool* a_greater = 1.0.{core::num::>}(2);
+static field core::bool* a_less = 1.0.{core::num::<}(2);
+static field core::bool* a_greaterEqual = 1.0.{core::num::>=}(2);
+static field core::bool* a_lessEqual = 1.0.{core::num::<=}(2);
+static field core::double* a_modulo = 1.0.{core::double::%}(2);
 static method main() → dynamic {
   self::a_equal;
   self::a_notEqual;
@@ -31,16 +31,16 @@
 
 
 Extra constant evaluation status:
-Evaluated: EqualsCall @ org-dartlang-testcase:///infer_binary_double_int.dart:8:38 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:8:38 -> BoolConstant(false)
 Evaluated: Not @ org-dartlang-testcase:///infer_binary_double_int.dart:9:41 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:10:38 -> DoubleConstant(3.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:11:43 -> DoubleConstant(-1.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:12:43 -> DoubleConstant(2.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:13:42 -> DoubleConstant(0.5)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:14:48 -> IntConstant(0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:15:39 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:16:36 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:17:45 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:18:42 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:19:41 -> DoubleConstant(1.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:10:38 -> DoubleConstant(3.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:11:43 -> DoubleConstant(-1.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:12:43 -> DoubleConstant(2.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:13:42 -> DoubleConstant(0.5)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:14:48 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:15:39 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:16:36 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:17:45 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:18:42 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_double_int.dart:19:41 -> DoubleConstant(1.0)
 Extra constant evaluation: evaluated: 24, effectively constant: 12
diff --git a/pkg/front_end/testcases/inference/infer_binary_int_double.dart.weak.expect b/pkg/front_end/testcases/inference/infer_binary_int_double.dart.weak.expect
index 1e26a3e..29ba83c 100644
--- a/pkg/front_end/testcases/inference/infer_binary_int_double.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_int_double.dart.weak.expect
@@ -2,18 +2,18 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::bool* a_equal = 1 =={core::num::==}{(core::Object*) →* core::bool*} 2.0;
-static field core::bool* a_notEqual = !(1 =={core::num::==}{(core::Object*) →* core::bool*} 2.0);
-static field core::double* a_add = 1.{core::num::+}(2.0){(core::num*) →* core::double*};
-static field core::double* a_subtract = 1.{core::num::-}(2.0){(core::num*) →* core::double*};
-static field core::double* a_multiply = 1.{core::num::*}(2.0){(core::num*) →* core::double*};
-static field core::double* a_divide = 1.{core::num::/}(2.0){(core::num*) →* core::double*};
-static field core::int* a_floorDivide = 1.{core::num::~/}(2.0){(core::num*) →* core::int*};
-static field core::bool* a_greater = 1.{core::num::>}(2.0){(core::num*) →* core::bool*};
-static field core::bool* a_less = 1.{core::num::<}(2.0){(core::num*) →* core::bool*};
-static field core::bool* a_greaterEqual = 1.{core::num::>=}(2.0){(core::num*) →* core::bool*};
-static field core::bool* a_lessEqual = 1.{core::num::<=}(2.0){(core::num*) →* core::bool*};
-static field core::double* a_modulo = 1.{core::num::%}(2.0){(core::num*) →* core::double*};
+static field core::bool* a_equal = 1.{core::num::==}(2.0);
+static field core::bool* a_notEqual = !1.{core::num::==}(2.0);
+static field core::double* a_add = 1.{core::num::+}(2.0);
+static field core::double* a_subtract = 1.{core::num::-}(2.0);
+static field core::double* a_multiply = 1.{core::num::*}(2.0);
+static field core::double* a_divide = 1.{core::num::/}(2.0);
+static field core::int* a_floorDivide = 1.{core::num::~/}(2.0);
+static field core::bool* a_greater = 1.{core::num::>}(2.0);
+static field core::bool* a_less = 1.{core::num::<}(2.0);
+static field core::bool* a_greaterEqual = 1.{core::num::>=}(2.0);
+static field core::bool* a_lessEqual = 1.{core::num::<=}(2.0);
+static field core::double* a_modulo = 1.{core::num::%}(2.0);
 static method main() → dynamic {
   self::a_equal;
   self::a_notEqual;
diff --git a/pkg/front_end/testcases/inference/infer_binary_int_double.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_binary_int_double.dart.weak.transformed.expect
index 85e2e66..c9a0c95 100644
--- a/pkg/front_end/testcases/inference/infer_binary_int_double.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_int_double.dart.weak.transformed.expect
@@ -2,18 +2,18 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::bool* a_equal = 1 =={core::num::==}{(core::Object*) →* core::bool*} 2.0;
-static field core::bool* a_notEqual = !(1 =={core::num::==}{(core::Object*) →* core::bool*} 2.0);
-static field core::double* a_add = 1.{core::num::+}(2.0){(core::num*) →* core::double*};
-static field core::double* a_subtract = 1.{core::num::-}(2.0){(core::num*) →* core::double*};
-static field core::double* a_multiply = 1.{core::num::*}(2.0){(core::num*) →* core::double*};
-static field core::double* a_divide = 1.{core::num::/}(2.0){(core::num*) →* core::double*};
-static field core::int* a_floorDivide = 1.{core::num::~/}(2.0){(core::num*) →* core::int*};
-static field core::bool* a_greater = 1.{core::num::>}(2.0){(core::num*) →* core::bool*};
-static field core::bool* a_less = 1.{core::num::<}(2.0){(core::num*) →* core::bool*};
-static field core::bool* a_greaterEqual = 1.{core::num::>=}(2.0){(core::num*) →* core::bool*};
-static field core::bool* a_lessEqual = 1.{core::num::<=}(2.0){(core::num*) →* core::bool*};
-static field core::double* a_modulo = 1.{core::num::%}(2.0){(core::num*) →* core::double*};
+static field core::bool* a_equal = 1.{core::num::==}(2.0);
+static field core::bool* a_notEqual = !1.{core::num::==}(2.0);
+static field core::double* a_add = 1.{core::num::+}(2.0);
+static field core::double* a_subtract = 1.{core::num::-}(2.0);
+static field core::double* a_multiply = 1.{core::num::*}(2.0);
+static field core::double* a_divide = 1.{core::num::/}(2.0);
+static field core::int* a_floorDivide = 1.{core::num::~/}(2.0);
+static field core::bool* a_greater = 1.{core::num::>}(2.0);
+static field core::bool* a_less = 1.{core::num::<}(2.0);
+static field core::bool* a_greaterEqual = 1.{core::num::>=}(2.0);
+static field core::bool* a_lessEqual = 1.{core::num::<=}(2.0);
+static field core::double* a_modulo = 1.{core::num::%}(2.0);
 static method main() → dynamic {
   self::a_equal;
   self::a_notEqual;
@@ -31,16 +31,16 @@
 
 
 Extra constant evaluation status:
-Evaluated: EqualsCall @ org-dartlang-testcase:///infer_binary_int_double.dart:8:36 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:8:36 -> BoolConstant(false)
 Evaluated: Not @ org-dartlang-testcase:///infer_binary_int_double.dart:9:39 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:10:33 -> DoubleConstant(3.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:11:38 -> DoubleConstant(-1.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:12:38 -> DoubleConstant(2.0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:13:37 -> DoubleConstant(0.5)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:14:43 -> IntConstant(0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:15:37 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:16:34 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:17:43 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:18:40 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:19:36 -> DoubleConstant(1.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:10:33 -> DoubleConstant(3.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:11:38 -> DoubleConstant(-1.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:12:38 -> DoubleConstant(2.0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:13:37 -> DoubleConstant(0.5)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:14:43 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:15:37 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:16:34 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:17:43 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:18:40 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_double.dart:19:36 -> DoubleConstant(1.0)
 Extra constant evaluation: evaluated: 24, effectively constant: 12
diff --git a/pkg/front_end/testcases/inference/infer_binary_int_int.dart.weak.expect b/pkg/front_end/testcases/inference/infer_binary_int_int.dart.weak.expect
index 883662f..bee4a3d 100644
--- a/pkg/front_end/testcases/inference/infer_binary_int_int.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_int_int.dart.weak.expect
@@ -2,23 +2,23 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::bool* a_equal = 1 =={core::num::==}{(core::Object*) →* core::bool*} 2;
-static field core::bool* a_notEqual = !(1 =={core::num::==}{(core::Object*) →* core::bool*} 2);
-static field core::int* a_bitXor = 1.{core::int::^}(2){(core::int*) →* core::int*};
-static field core::int* a_bitAnd = 1.{core::int::&}(2){(core::int*) →* core::int*};
-static field core::int* a_bitOr = 1.{core::int::|}(2){(core::int*) →* core::int*};
-static field core::int* a_bitShiftRight = 1.{core::int::>>}(2){(core::int*) →* core::int*};
-static field core::int* a_bitShiftLeft = 1.{core::int::<<}(2){(core::int*) →* core::int*};
-static field core::int* a_add = 1.{core::num::+}(2){(core::num*) →* core::int*};
-static field core::int* a_subtract = 1.{core::num::-}(2){(core::num*) →* core::int*};
-static field core::int* a_multiply = 1.{core::num::*}(2){(core::num*) →* core::int*};
-static field core::double* a_divide = 1.{core::num::/}(2){(core::num*) →* core::double*};
-static field core::int* a_floorDivide = 1.{core::num::~/}(2){(core::num*) →* core::int*};
-static field core::bool* a_greater = 1.{core::num::>}(2){(core::num*) →* core::bool*};
-static field core::bool* a_less = 1.{core::num::<}(2){(core::num*) →* core::bool*};
-static field core::bool* a_greaterEqual = 1.{core::num::>=}(2){(core::num*) →* core::bool*};
-static field core::bool* a_lessEqual = 1.{core::num::<=}(2){(core::num*) →* core::bool*};
-static field core::int* a_modulo = 1.{core::num::%}(2){(core::num*) →* core::int*};
+static field core::bool* a_equal = 1.{core::num::==}(2);
+static field core::bool* a_notEqual = !1.{core::num::==}(2);
+static field core::int* a_bitXor = 1.{core::int::^}(2);
+static field core::int* a_bitAnd = 1.{core::int::&}(2);
+static field core::int* a_bitOr = 1.{core::int::|}(2);
+static field core::int* a_bitShiftRight = 1.{core::int::>>}(2);
+static field core::int* a_bitShiftLeft = 1.{core::int::<<}(2);
+static field core::int* a_add = 1.{core::num::+}(2);
+static field core::int* a_subtract = 1.{core::num::-}(2);
+static field core::int* a_multiply = 1.{core::num::*}(2);
+static field core::double* a_divide = 1.{core::num::/}(2);
+static field core::int* a_floorDivide = 1.{core::num::~/}(2);
+static field core::bool* a_greater = 1.{core::num::>}(2);
+static field core::bool* a_less = 1.{core::num::<}(2);
+static field core::bool* a_greaterEqual = 1.{core::num::>=}(2);
+static field core::bool* a_lessEqual = 1.{core::num::<=}(2);
+static field core::int* a_modulo = 1.{core::num::%}(2);
 static method main() → dynamic {
   self::a_equal;
   self::a_notEqual;
diff --git a/pkg/front_end/testcases/inference/infer_binary_int_int.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_binary_int_int.dart.weak.transformed.expect
index 650dde3..e0f1ccf 100644
--- a/pkg/front_end/testcases/inference/infer_binary_int_int.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_int_int.dart.weak.transformed.expect
@@ -2,23 +2,23 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::bool* a_equal = 1 =={core::num::==}{(core::Object*) →* core::bool*} 2;
-static field core::bool* a_notEqual = !(1 =={core::num::==}{(core::Object*) →* core::bool*} 2);
-static field core::int* a_bitXor = 1.{core::int::^}(2){(core::int*) →* core::int*};
-static field core::int* a_bitAnd = 1.{core::int::&}(2){(core::int*) →* core::int*};
-static field core::int* a_bitOr = 1.{core::int::|}(2){(core::int*) →* core::int*};
-static field core::int* a_bitShiftRight = 1.{core::int::>>}(2){(core::int*) →* core::int*};
-static field core::int* a_bitShiftLeft = 1.{core::int::<<}(2){(core::int*) →* core::int*};
-static field core::int* a_add = 1.{core::num::+}(2){(core::num*) →* core::int*};
-static field core::int* a_subtract = 1.{core::num::-}(2){(core::num*) →* core::int*};
-static field core::int* a_multiply = 1.{core::num::*}(2){(core::num*) →* core::int*};
-static field core::double* a_divide = 1.{core::num::/}(2){(core::num*) →* core::double*};
-static field core::int* a_floorDivide = 1.{core::num::~/}(2){(core::num*) →* core::int*};
-static field core::bool* a_greater = 1.{core::num::>}(2){(core::num*) →* core::bool*};
-static field core::bool* a_less = 1.{core::num::<}(2){(core::num*) →* core::bool*};
-static field core::bool* a_greaterEqual = 1.{core::num::>=}(2){(core::num*) →* core::bool*};
-static field core::bool* a_lessEqual = 1.{core::num::<=}(2){(core::num*) →* core::bool*};
-static field core::int* a_modulo = 1.{core::num::%}(2){(core::num*) →* core::int*};
+static field core::bool* a_equal = 1.{core::num::==}(2);
+static field core::bool* a_notEqual = !1.{core::num::==}(2);
+static field core::int* a_bitXor = 1.{core::int::^}(2);
+static field core::int* a_bitAnd = 1.{core::int::&}(2);
+static field core::int* a_bitOr = 1.{core::int::|}(2);
+static field core::int* a_bitShiftRight = 1.{core::int::>>}(2);
+static field core::int* a_bitShiftLeft = 1.{core::int::<<}(2);
+static field core::int* a_add = 1.{core::num::+}(2);
+static field core::int* a_subtract = 1.{core::num::-}(2);
+static field core::int* a_multiply = 1.{core::num::*}(2);
+static field core::double* a_divide = 1.{core::num::/}(2);
+static field core::int* a_floorDivide = 1.{core::num::~/}(2);
+static field core::bool* a_greater = 1.{core::num::>}(2);
+static field core::bool* a_less = 1.{core::num::<}(2);
+static field core::bool* a_greaterEqual = 1.{core::num::>=}(2);
+static field core::bool* a_lessEqual = 1.{core::num::<=}(2);
+static field core::int* a_modulo = 1.{core::num::%}(2);
 static method main() → dynamic {
   self::a_equal;
   self::a_notEqual;
@@ -41,21 +41,21 @@
 
 
 Extra constant evaluation status:
-Evaluated: EqualsCall @ org-dartlang-testcase:///infer_binary_int_int.dart:8:36 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:8:36 -> BoolConstant(false)
 Evaluated: Not @ org-dartlang-testcase:///infer_binary_int_int.dart:9:39 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:10:36 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:11:36 -> IntConstant(0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:12:35 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:13:44 -> IntConstant(0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:14:43 -> IntConstant(4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:15:33 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:16:38 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:17:38 -> IntConstant(2)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:18:37 -> DoubleConstant(0.5)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:19:43 -> IntConstant(0)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:20:37 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:21:34 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:22:43 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:23:40 -> BoolConstant(true)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:24:36 -> IntConstant(1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:10:36 -> IntConstant(3)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:11:36 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:12:35 -> IntConstant(3)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:13:44 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:14:43 -> IntConstant(4)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:15:33 -> IntConstant(3)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:16:38 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:17:38 -> IntConstant(2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:18:37 -> DoubleConstant(0.5)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:19:43 -> IntConstant(0)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:20:37 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:21:34 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:22:43 -> BoolConstant(false)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:23:40 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_binary_int_int.dart:24:36 -> IntConstant(1)
 Extra constant evaluation: evaluated: 34, effectively constant: 17
diff --git a/pkg/front_end/testcases/inference/infer_conditional.dart.weak.expect b/pkg/front_end/testcases/inference/infer_conditional.dart.weak.expect
index b2128b8..d539e95 100644
--- a/pkg/front_end/testcases/inference/infer_conditional.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_conditional.dart.weak.expect
@@ -2,8 +2,8 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::num* a = 1 =={core::num::==}{(core::Object*) →* core::bool*} 2 ?{core::num*} 1 : 2.0;
-static field core::num* b = 1 =={core::num::==}{(core::Object*) →* core::bool*} 2 ?{core::num*} 1.0 : 2;
+static field core::num* a = 1.{core::num::==}(2) ?{core::num*} 1 : 2.0;
+static field core::num* b = 1.{core::num::==}(2) ?{core::num*} 1.0 : 2;
 static method main() → dynamic {
   self::a;
   self::b;
diff --git a/pkg/front_end/testcases/inference/infer_conditional.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_conditional.dart.weak.transformed.expect
index cf7cb3e..c348897 100644
--- a/pkg/front_end/testcases/inference/infer_conditional.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_conditional.dart.weak.transformed.expect
@@ -2,8 +2,8 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::num* a = 1 =={core::num::==}{(core::Object*) →* core::bool*} 2 ?{core::num*} 1 : 2.0;
-static field core::num* b = 1 =={core::num::==}{(core::Object*) →* core::bool*} 2 ?{core::num*} 1.0 : 2;
+static field core::num* a = 1.{core::num::==}(2) ?{core::num*} 1 : 2.0;
+static field core::num* b = 1.{core::num::==}(2) ?{core::num*} 1.0 : 2;
 static method main() → dynamic {
   self::a;
   self::b;
diff --git a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.weak.expect b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.weak.expect
index c0c88a8..252bf92 100644
--- a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.weak.expect
@@ -57,19 +57,19 @@
 static method foo() → dynamic {
   core::String* s;
   core::int* i;
-  s = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::String*;
+  s = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
   s = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:21:61: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   s = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.y*/ y;
-                                                            ^" in new self::B::•().{self::B::y}{core::int*} as{TypeError} core::String*;
-  s = new self::B::•().{self::B::z}{core::String*};
+                                                            ^" in new self::B::•().{self::B::y} as{TypeError} core::String*;
+  s = new self::B::•().{self::B::z};
   s = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:23:61: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   s = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.w*/ w;
-                                                            ^" in new self::B::•().{self::B::w}{core::int*} as{TypeError} core::String*;
-  i = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::int*;
-  i = new self::B::•().{self::B::y}{core::int*};
+                                                            ^" in new self::B::•().{self::B::w} as{TypeError} core::String*;
+  i = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::int*;
+  i = new self::B::•().{self::B::y};
   i = let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:27:61: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   i = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.z*/ z;
-                                                            ^" in new self::B::•().{self::B::z}{core::String*} as{TypeError} core::int*;
-  i = new self::B::•().{self::B::w}{core::int*};
+                                                            ^" in new self::B::•().{self::B::z} as{TypeError} core::int*;
+  i = new self::B::•().{self::B::w};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.weak.transformed.expect
index c0c88a8..252bf92 100644
--- a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.weak.transformed.expect
@@ -57,19 +57,19 @@
 static method foo() → dynamic {
   core::String* s;
   core::int* i;
-  s = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::String*;
+  s = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
   s = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:21:61: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   s = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.y*/ y;
-                                                            ^" in new self::B::•().{self::B::y}{core::int*} as{TypeError} core::String*;
-  s = new self::B::•().{self::B::z}{core::String*};
+                                                            ^" in new self::B::•().{self::B::y} as{TypeError} core::String*;
+  s = new self::B::•().{self::B::z};
   s = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:23:61: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   s = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.w*/ w;
-                                                            ^" in new self::B::•().{self::B::w}{core::int*} as{TypeError} core::String*;
-  i = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::int*;
-  i = new self::B::•().{self::B::y}{core::int*};
+                                                            ^" in new self::B::•().{self::B::w} as{TypeError} core::String*;
+  i = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::int*;
+  i = new self::B::•().{self::B::y};
   i = let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:27:61: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   i = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.z*/ z;
-                                                            ^" in new self::B::•().{self::B::z}{core::String*} as{TypeError} core::int*;
-  i = new self::B::•().{self::B::w}{core::int*};
+                                                            ^" in new self::B::•().{self::B::z} as{TypeError} core::int*;
+  i = new self::B::•().{self::B::w};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.expect
index 1e12aec..fef4a0f 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.expect
@@ -112,9 +112,9 @@
 static field self::A* e = let final self::A* #t1 = new self::A::•() in block {
   #t1.{self::A::x} = 3;
 } =>#t1;
-static field core::int* f = 2.{core::num::+}(3){(core::num*) →* core::int*};
-static field core::int* g = 3.{core::int::unary-}(){() →* core::int*};
-static field self::B* h = new self::A::•().{self::A::+}(3){(dynamic) →* self::B*};
+static field core::int* f = 2.{core::num::+}(3);
+static field core::int* g = 3.{core::int::unary-}();
+static field self::B* h = new self::A::•().{self::A::+}(3);
 static field dynamic i = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:32:58: Error: The operator 'unary-' isn't defined for the class 'A'.
  - 'A' is from 'pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart'.
 Try correcting the operator to an existing operator, or defining a 'unary-' operator.
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.transformed.expect
index 0cc2a2f..57cf06b 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.transformed.expect
@@ -112,9 +112,9 @@
 static field self::A* e = let final self::A* #t1 = new self::A::•() in block {
   #t1.{self::A::x} = 3;
 } =>#t1;
-static field core::int* f = 2.{core::num::+}(3){(core::num*) →* core::int*};
-static field core::int* g = 3.{core::int::unary-}(){() →* core::int*};
-static field self::B* h = new self::A::•().{self::A::+}(3){(dynamic) →* self::B*};
+static field core::int* f = 2.{core::num::+}(3);
+static field core::int* g = 3.{core::int::unary-}();
+static field self::B* h = new self::A::•().{self::A::+}(3);
 static field dynamic i = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:32:58: Error: The operator 'unary-' isn't defined for the class 'A'.
  - 'A' is from 'pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart'.
 Try correcting the operator to an existing operator, or defining a 'unary-' operator.
@@ -191,6 +191,6 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_from_complex_expressions_if_outer_most_value_is_precise.dart:27:25 -> IntConstant(5)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_from_complex_expressions_if_outer_most_value_is_precise.dart:30:32 -> IntConstant(-3)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_from_complex_expressions_if_outer_most_value_is_precise.dart:27:25 -> IntConstant(5)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_from_complex_expressions_if_outer_most_value_is_precise.dart:30:32 -> IntConstant(-3)
 Extra constant evaluation: evaluated: 74, effectively constant: 2
diff --git a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.weak.expect b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.weak.expect
index 8b4fa52..71aa0dc 100644
--- a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.weak.expect
@@ -35,7 +35,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method foo() → dynamic {
-  core::String* y = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::String*;
-  core::int* z = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::int*;
+  core::String* y = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
+  core::int* z = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.weak.transformed.expect
index 8b4fa52..71aa0dc 100644
--- a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.weak.transformed.expect
@@ -35,7 +35,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method foo() → dynamic {
-  core::String* y = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::String*;
-  core::int* z = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::int*;
+  core::String* y = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
+  core::int* z = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.weak.expect b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.weak.expect
index d5127a5..009838f 100644
--- a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.weak.expect
@@ -35,7 +35,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method foo() → dynamic {
-  core::String* y = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::String*;
-  core::int* z = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::int*;
+  core::String* y = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
+  core::int* z = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.weak.transformed.expect
index d5127a5..009838f 100644
--- a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.weak.transformed.expect
@@ -35,7 +35,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method foo() → dynamic {
-  core::String* y = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::String*;
-  core::int* z = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::int*;
+  core::String* y = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
+  core::int* z = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.weak.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.weak.expect
index 6d31625..7d80c98 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.weak.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::double* y = new self::C::•().{self::C::m}<core::double*>(1, b: "bbb", c: 2.0){(core::int*, {b: core::String*, c: core::double*}) →* core::double*};
+  core::double* y = new self::C::•().{self::C::m}<core::double*>(1, b: "bbb", c: 2.0);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.weak.transformed.expect
index 6d31625..7d80c98 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::double* y = new self::C::•().{self::C::m}<core::double*>(1, b: "bbb", c: 2.0){(core::int*, {b: core::String*, c: core::double*}) →* core::double*};
+  core::double* y = new self::C::•().{self::C::m}<core::double*>(1, b: "bbb", c: 2.0);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.weak.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.weak.expect
index 5c86982..db66ee8 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.weak.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::double* y = new self::C::•().{self::C::m}<core::double*>(1, 2.0){(core::int*, [core::double*]) →* core::double*};
+  core::double* y = new self::C::•().{self::C::m}<core::double*>(1, 2.0);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.weak.transformed.expect
index 5c86982..db66ee8 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::double* y = new self::C::•().{self::C::m}<core::double*>(1, 2.0){(core::int*, [core::double*]) →* core::double*};
+  core::double* y = new self::C::•().{self::C::m}<core::double*>(1, 2.0);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.weak.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.weak.expect
index 7af5aa7..3f647fc 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.weak.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::double* y = new self::C::•().{self::C::m}<core::double*>(1, "bbb", 2.0){(core::int*, [core::String*, core::double*]) →* core::double*};
+  core::double* y = new self::C::•().{self::C::m}<core::double*>(1, "bbb", 2.0);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.weak.transformed.expect
index 7af5aa7..3f647fc 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::double* y = new self::C::•().{self::C::m}<core::double*>(1, "bbb", 2.0){(core::int*, [core::String*, core::double*]) →* core::double*};
+  core::double* y = new self::C::•().{self::C::m}<core::double*>(1, "bbb", 2.0);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.weak.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.weak.expect
index 4435be3..83c7b4f 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.weak.expect
@@ -20,5 +20,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::int* y = new self::C::•().{self::C::m}<core::int*>(42){(core::int*) →* core::int*};
+  core::int* y = new self::C::•().{self::C::m}<core::int*>(42);
 }
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.weak.transformed.expect
index 4435be3..83c7b4f 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.weak.transformed.expect
@@ -20,5 +20,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::int* y = new self::C::•().{self::C::m}<core::int*>(42){(core::int*) →* core::int*};
+  core::int* y = new self::C::•().{self::C::m}<core::int*>(42);
 }
diff --git a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.expect b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.expect
index eb05a20..1f0c1f2 100644
--- a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.expect
@@ -23,9 +23,9 @@
   function f6() → core::num*
     return 42;
   function f7() → dynamic
-    return f7(){() →* dynamic};
+    return f7.call();
   function f8() → asy::Stream<core::int*>*
-    return f5(){() →* asy::Stream<core::int*>*};
+    return f5.call();
   () →* core::int* v0 = f0;
   () →* asy::Future<core::int*>* v1 = f1;
   () →* core::int* v2 = f2;
diff --git a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect
index 618d97a..eeeccd2 100644
--- a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect
@@ -116,9 +116,9 @@
   function f6() → core::num*
     return 42;
   function f7() → dynamic
-    return f7(){() →* dynamic};
+    return f7.call();
   function f8() → asy::Stream<core::int*>*
-    return f5(){() →* asy::Stream<core::int*>*};
+    return f5.call();
   () →* core::int* v0 = f0;
   () →* asy::Future<core::int*>* v1 = f1;
   () →* core::int* v2 = f2;
diff --git a/pkg/front_end/testcases/inference/infer_method_function_typed.dart.weak.expect b/pkg/front_end/testcases/inference/infer_method_function_typed.dart.weak.expect
index abae228..d6e4379 100644
--- a/pkg/front_end/testcases/inference/infer_method_function_typed.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_method_function_typed.dart.weak.expect
@@ -28,6 +28,6 @@
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
 static method g(self::B* b) → dynamic {
-  b.{self::B::x}(self::f<() →* dynamic>()){(() →* dynamic) →* void};
+  b.{self::B::x}(self::f<() →* dynamic>());
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_method_function_typed.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_method_function_typed.dart.weak.transformed.expect
index abae228..d6e4379 100644
--- a/pkg/front_end/testcases/inference/infer_method_function_typed.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_method_function_typed.dart.weak.transformed.expect
@@ -28,6 +28,6 @@
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
 static method g(self::B* b) → dynamic {
-  b.{self::B::x}(self::f<() →* dynamic>()){(() →* dynamic) →* void};
+  b.{self::B::x}(self::f<() →* dynamic>());
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_prefix_expression.dart.weak.expect b/pkg/front_end/testcases/inference/infer_prefix_expression.dart.weak.expect
index ec7b742..4d5f369 100644
--- a/pkg/front_end/testcases/inference/infer_prefix_expression.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_prefix_expression.dart.weak.expect
@@ -3,8 +3,8 @@
 import "dart:core" as core;
 
 static field core::bool* a_not = !true;
-static field core::int* a_complement = 1.{core::int::~}(){() →* core::int*};
-static field core::int* a_negate = 1.{core::int::unary-}(){() →* core::int*};
+static field core::int* a_complement = 1.{core::int::~}();
+static field core::int* a_negate = 1.{core::int::unary-}();
 static method main() → dynamic {
   self::a_not;
   self::a_complement;
diff --git a/pkg/front_end/testcases/inference/infer_prefix_expression.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_prefix_expression.dart.weak.transformed.expect
index 23ef7a8..d0e0ac7 100644
--- a/pkg/front_end/testcases/inference/infer_prefix_expression.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_prefix_expression.dart.weak.transformed.expect
@@ -3,8 +3,8 @@
 import "dart:core" as core;
 
 static field core::bool* a_not = !true;
-static field core::int* a_complement = 1.{core::int::~}(){() →* core::int*};
-static field core::int* a_negate = 1.{core::int::unary-}(){() →* core::int*};
+static field core::int* a_complement = 1.{core::int::~}();
+static field core::int* a_negate = 1.{core::int::unary-}();
 static method main() → dynamic {
   self::a_not;
   self::a_complement;
@@ -14,6 +14,6 @@
 
 Extra constant evaluation status:
 Evaluated: Not @ org-dartlang-testcase:///infer_prefix_expression.dart:8:13 -> BoolConstant(false)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_prefix_expression.dart:9:38 -> IntConstant(-2)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_prefix_expression.dart:10:39 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_prefix_expression.dart:9:38 -> IntConstant(-2)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///infer_prefix_expression.dart:10:39 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 6, effectively constant: 3
diff --git a/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.weak.expect b/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.weak.expect
index 2c6f832..0e5d070 100644
--- a/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.weak.expect
@@ -22,8 +22,8 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::A* a = new self::A::•();
-static field core::int* v_complement = self::a.{self::A::~}(){() →* core::int*};
-static field core::double* v_negate = self::a.{self::A::unary-}(){() →* core::double*};
+static field core::int* v_complement = self::a.{self::A::~}();
+static field core::double* v_negate = self::a.{self::A::unary-}();
 static method main() → dynamic {
   self::a;
   self::v_complement;
diff --git a/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.weak.transformed.expect
index 2c6f832..0e5d070 100644
--- a/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.weak.transformed.expect
@@ -22,8 +22,8 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::A* a = new self::A::•();
-static field core::int* v_complement = self::a.{self::A::~}(){() →* core::int*};
-static field core::double* v_negate = self::a.{self::A::unary-}(){() →* core::double*};
+static field core::int* v_complement = self::a.{self::A::~}();
+static field core::double* v_negate = self::a.{self::A::unary-}();
 static method main() → dynamic {
   self::a;
   self::v_complement;
diff --git a/pkg/front_end/testcases/inference/infer_rethrow.dart.weak.expect b/pkg/front_end/testcases/inference/infer_rethrow.dart.weak.expect
index 32fec4b..b45d3019 100644
--- a/pkg/front_end/testcases/inference/infer_rethrow.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_rethrow.dart.weak.expect
@@ -3,10 +3,10 @@
 
 static method test(() →* dynamic f, () →* dynamic g) → dynamic {
   try {
-    f();
+    f.call();
   }
   on dynamic catch(final dynamic _) {
-    g();
+    g.call();
     rethrow;
   }
 }
diff --git a/pkg/front_end/testcases/inference/infer_rethrow.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_rethrow.dart.weak.transformed.expect
index 32fec4b..b45d3019 100644
--- a/pkg/front_end/testcases/inference/infer_rethrow.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_rethrow.dart.weak.transformed.expect
@@ -3,10 +3,10 @@
 
 static method test(() →* dynamic f, () →* dynamic g) → dynamic {
   try {
-    f();
+    f.call();
   }
   on dynamic catch(final dynamic _) {
-    g();
+    g.call();
     rethrow;
   }
 }
diff --git a/pkg/front_end/testcases/inference/infer_return_of_statement_lambda.dart.weak.expect b/pkg/front_end/testcases/inference/infer_return_of_statement_lambda.dart.weak.expect
index cdbf9e5..e547269 100644
--- a/pkg/front_end/testcases/inference/infer_return_of_statement_lambda.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_return_of_statement_lambda.dart.weak.expect
@@ -5,8 +5,8 @@
 static method strings() → core::List<core::String*>* {
   core::Iterable<core::String*>* stuff = <dynamic>[].{core::Iterable::expand}<core::String*>((dynamic i) → core::List<core::String*>* {
     return <core::String*>[];
-  }){((dynamic) →* core::Iterable<core::String*>*) →* core::Iterable<core::String*>*};
-  return stuff.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
+  });
+  return stuff.{core::Iterable::toList}();
 }
 static method main() → dynamic {
   self::strings();
diff --git a/pkg/front_end/testcases/inference/infer_return_of_statement_lambda.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_return_of_statement_lambda.dart.weak.transformed.expect
index 02da645..e0d92ec 100644
--- a/pkg/front_end/testcases/inference/infer_return_of_statement_lambda.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_return_of_statement_lambda.dart.weak.transformed.expect
@@ -5,8 +5,8 @@
 static method strings() → core::List<core::String*>* {
   core::Iterable<core::String*>* stuff = core::_GrowableList::•<dynamic>(0).{core::Iterable::expand}<core::String*>((dynamic i) → core::List<core::String*>* {
     return core::_GrowableList::•<core::String*>(0);
-  }){((dynamic) →* core::Iterable<core::String*>*) →* core::Iterable<core::String*>*};
-  return stuff.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
+  });
+  return stuff.{core::Iterable::toList}();
 }
 static method main() → dynamic {
   self::strings();
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.weak.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.weak.expect
index 7306671..e76572a 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.weak.expect
@@ -35,7 +35,7 @@
 static method foo() → dynamic {
   core::String* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart:17:68: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   String y = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.x*/ x;
-                                                                   ^" in new self::B::•().{self::B::x}{core::int*} as{TypeError} core::String*;
-  core::int* z = new self::B::•().{self::B::x}{core::int*};
+                                                                   ^" in new self::B::•().{self::B::x} as{TypeError} core::String*;
+  core::int* z = new self::B::•().{self::B::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.weak.transformed.expect
index 7306671..e76572a 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.weak.transformed.expect
@@ -35,7 +35,7 @@
 static method foo() → dynamic {
   core::String* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart:17:68: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   String y = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.x*/ x;
-                                                                   ^" in new self::B::•().{self::B::x}{core::int*} as{TypeError} core::String*;
-  core::int* z = new self::B::•().{self::B::x}{core::int*};
+                                                                   ^" in new self::B::•().{self::B::x} as{TypeError} core::String*;
+  core::int* z = new self::B::•().{self::B::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.weak.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.weak.expect
index 357a311..d06646f 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.weak.expect
@@ -45,7 +45,7 @@
 static method foo() → dynamic {
   core::String* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart:17:68: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   String y = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.x*/ x;
-                                                                   ^" in new self::B::•().{self::B::x}{core::int*} as{TypeError} core::String*;
-  core::int* z = new self::B::•().{self::B::x}{core::int*};
+                                                                   ^" in new self::B::•().{self::B::x} as{TypeError} core::String*;
+  core::int* z = new self::B::•().{self::B::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.weak.transformed.expect
index 357a311..d06646f 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.weak.transformed.expect
@@ -45,7 +45,7 @@
 static method foo() → dynamic {
   core::String* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart:17:68: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   String y = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.x*/ x;
-                                                                   ^" in new self::B::•().{self::B::x}{core::int*} as{TypeError} core::String*;
-  core::int* z = new self::B::•().{self::B::x}{core::int*};
+                                                                   ^" in new self::B::•().{self::B::x} as{TypeError} core::String*;
+  core::int* z = new self::B::•().{self::B::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.weak.expect b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.weak.expect
index 8674afe..ab91a2b 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.weak.expect
@@ -25,17 +25,17 @@
     : super core::Object::•()
     ;
   method test1() → dynamic {
-    core::int* a = this.{self::A::x}{core::int*};
+    core::int* a = this.{self::A::x};
     a = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:13:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
     a = /*error:INVALID_ASSIGNMENT*/ \"hi\";
                                      ^" in "hi" as{TypeError} core::int*;
     a = 3;
-    core::int* b = this.{self::A::y}{core::int*};
+    core::int* b = this.{self::A::y};
     b = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:16:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
     b = /*error:INVALID_ASSIGNMENT*/ \"hi\";
                                      ^" in "hi" as{TypeError} core::int*;
     b = 4;
-    core::int* c = this.{self::A::z}{core::int*};
+    core::int* c = this.{self::A::z};
     c = let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:19:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
     c = /*error:INVALID_ASSIGNMENT*/ \"hi\";
                                      ^" in "hi" as{TypeError} core::int*;
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.weak.transformed.expect
index 8674afe..ab91a2b 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.weak.transformed.expect
@@ -25,17 +25,17 @@
     : super core::Object::•()
     ;
   method test1() → dynamic {
-    core::int* a = this.{self::A::x}{core::int*};
+    core::int* a = this.{self::A::x};
     a = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:13:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
     a = /*error:INVALID_ASSIGNMENT*/ \"hi\";
                                      ^" in "hi" as{TypeError} core::int*;
     a = 3;
-    core::int* b = this.{self::A::y}{core::int*};
+    core::int* b = this.{self::A::y};
     b = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:16:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
     b = /*error:INVALID_ASSIGNMENT*/ \"hi\";
                                      ^" in "hi" as{TypeError} core::int*;
     b = 4;
-    core::int* c = this.{self::A::z}{core::int*};
+    core::int* c = this.{self::A::z};
     c = let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:19:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
     c = /*error:INVALID_ASSIGNMENT*/ \"hi\";
                                      ^" in "hi" as{TypeError} core::int*;
diff --git a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.weak.expect b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.weak.expect
index 247bcf0..7f0fd1d 100644
--- a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.weak.expect
@@ -37,10 +37,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method foo() → dynamic {
-  core::int* y = new self::C::•().{self::C::x}{core::int*};
+  core::int* y = new self::C::•().{self::C::x};
   core::String* z = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart:20:68: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   String z = /*error:INVALID_ASSIGNMENT*/ new C(). /*@target=C.x*/ x;
-                                                                   ^" in new self::C::•().{self::C::x}{core::int*} as{TypeError} core::String*;
+                                                                   ^" in new self::C::•().{self::C::x} as{TypeError} core::String*;
 }
 static method main() → dynamic {
   self::foo();
diff --git a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.weak.transformed.expect
index 247bcf0..7f0fd1d 100644
--- a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.weak.transformed.expect
@@ -37,10 +37,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method foo() → dynamic {
-  core::int* y = new self::C::•().{self::C::x}{core::int*};
+  core::int* y = new self::C::•().{self::C::x};
   core::String* z = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart:20:68: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   String z = /*error:INVALID_ASSIGNMENT*/ new C(). /*@target=C.x*/ x;
-                                                                   ^" in new self::C::•().{self::C::x}{core::int*} as{TypeError} core::String*;
+                                                                   ^" in new self::C::•().{self::C::x} as{TypeError} core::String*;
 }
 static method main() → dynamic {
   self::foo();
diff --git a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.weak.expect b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.weak.expect
index ebbcf90..c34888f 100644
--- a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.weak.expect
@@ -50,10 +50,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method foo() → dynamic {
-  core::int* y = new test::C::•().{test::C::x}{core::int*};
+  core::int* y = new test::C::•().{test::C::x};
   core::String* z = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart:20:68: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   String z = /*error:INVALID_ASSIGNMENT*/ new C(). /*@target=C.x*/ x;
-                                                                   ^" in new test::C::•().{test::C::x}{core::int*} as{TypeError} core::String*;
+                                                                   ^" in new test::C::•().{test::C::x} as{TypeError} core::String*;
 }
 static method main() → dynamic {
   test::foo();
diff --git a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.weak.transformed.expect
index ebbcf90..c34888f 100644
--- a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.weak.transformed.expect
@@ -50,10 +50,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method foo() → dynamic {
-  core::int* y = new test::C::•().{test::C::x}{core::int*};
+  core::int* y = new test::C::•().{test::C::x};
   core::String* z = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart:20:68: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   String z = /*error:INVALID_ASSIGNMENT*/ new C(). /*@target=C.x*/ x;
-                                                                   ^" in new test::C::•().{test::C::x}{core::int*} as{TypeError} core::String*;
+                                                                   ^" in new test::C::•().{test::C::x} as{TypeError} core::String*;
 }
 static method main() → dynamic {
   test::foo();
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.weak.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.weak.expect
index 0dfdff3..2395853 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.weak.expect
@@ -54,7 +54,7 @@
 static method foo() → dynamic {
   core::String* y = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:19:68: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   String y = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.x*/ x;
-                                                                   ^" in new self::B::•().{self::B::x}{core::int*} as{TypeError} core::String*;
-  core::int* z = new self::B::•().{self::B::x}{core::int*};
+                                                                   ^" in new self::B::•().{self::B::x} as{TypeError} core::String*;
+  core::int* z = new self::B::•().{self::B::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.weak.transformed.expect
index 0dfdff3..2395853 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.weak.transformed.expect
@@ -54,7 +54,7 @@
 static method foo() → dynamic {
   core::String* y = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:19:68: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   String y = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.x*/ x;
-                                                                   ^" in new self::B::•().{self::B::x}{core::int*} as{TypeError} core::String*;
-  core::int* z = new self::B::•().{self::B::x}{core::int*};
+                                                                   ^" in new self::B::•().{self::B::x} as{TypeError} core::String*;
+  core::int* z = new self::B::•().{self::B::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.weak.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.weak.expect
index 4c24549..b8c9b32 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.weak.expect
@@ -31,13 +31,13 @@
     : super self::A::•()
     ;
   get x() → self::B::E*
-    return this.{self::B::y}{self::B::E*};
+    return this.{self::B::y};
 }
 static method foo() → dynamic {
   core::int* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart:18:73: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   int y = /*error:INVALID_ASSIGNMENT*/ new B<String>(). /*@target=B.x*/ x;
-                                                                        ^" in new self::B::•<core::String*>().{self::B::x}{core::String*} as{TypeError} core::int*;
-  core::String* z = new self::B::•<core::String*>().{self::B::x}{core::String*};
+                                                                        ^" in new self::B::•<core::String*>().{self::B::x} as{TypeError} core::int*;
+  core::String* z = new self::B::•<core::String*>().{self::B::x};
 }
 static method main() → dynamic {
   self::foo();
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.weak.transformed.expect
index 4c24549..b8c9b32 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.weak.transformed.expect
@@ -31,13 +31,13 @@
     : super self::A::•()
     ;
   get x() → self::B::E*
-    return this.{self::B::y}{self::B::E*};
+    return this.{self::B::y};
 }
 static method foo() → dynamic {
   core::int* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart:18:73: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   int y = /*error:INVALID_ASSIGNMENT*/ new B<String>(). /*@target=B.x*/ x;
-                                                                        ^" in new self::B::•<core::String*>().{self::B::x}{core::String*} as{TypeError} core::int*;
-  core::String* z = new self::B::•<core::String*>().{self::B::x}{core::String*};
+                                                                        ^" in new self::B::•<core::String*>().{self::B::x} as{TypeError} core::int*;
+  core::String* z = new self::B::•<core::String*>().{self::B::x};
 }
 static method main() → dynamic {
   self::foo();
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.weak.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.weak.expect
index f76b260..191aea3 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.weak.expect
@@ -68,7 +68,7 @@
 static method foo() → dynamic {
   core::int* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart:30:25: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
       . /*@target=B.m*/ m(null, null);
-                        ^" in new self::B::•<dynamic>().{self::B::m}(null, null){(dynamic, (dynamic, dynamic) →* dynamic) →* core::String*} as{TypeError} core::int*;
-  core::String* z = new self::B::•<dynamic>().{self::B::m}(null, null){(dynamic, (dynamic, dynamic) →* dynamic) →* core::String*};
+                        ^" in new self::B::•<dynamic>().{self::B::m}(null, null) as{TypeError} core::int*;
+  core::String* z = new self::B::•<dynamic>().{self::B::m}(null, null);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.weak.transformed.expect
index f76b260..191aea3 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.weak.transformed.expect
@@ -68,7 +68,7 @@
 static method foo() → dynamic {
   core::int* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart:30:25: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
       . /*@target=B.m*/ m(null, null);
-                        ^" in new self::B::•<dynamic>().{self::B::m}(null, null){(dynamic, (dynamic, dynamic) →* dynamic) →* core::String*} as{TypeError} core::int*;
-  core::String* z = new self::B::•<dynamic>().{self::B::m}(null, null){(dynamic, (dynamic, dynamic) →* dynamic) →* core::String*};
+                        ^" in new self::B::•<dynamic>().{self::B::m}(null, null) as{TypeError} core::int*;
+  core::String* z = new self::B::•<dynamic>().{self::B::m}(null, null);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.weak.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.weak.expect
index b156e85..4bbdc0c 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.weak.expect
@@ -55,8 +55,8 @@
 static method foo() → dynamic {
   core::int* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart:30:29: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
       . /*@target=A.value*/ value;
-                            ^" in new self::B::•<core::String*>().{self::B::m}(null, null){(dynamic, (dynamic, core::int*) →* dynamic) →* self::A<core::String*>*}.{self::A::value}{core::String*} as{TypeError} core::int*;
-  core::String* z = new self::B::•<core::String*>().{self::B::m}(null, null){(dynamic, (dynamic, core::int*) →* dynamic) →* self::A<core::String*>*}.{self::A::value}{core::String*};
+                            ^" in new self::B::•<core::String*>().{self::B::m}(null, null).{self::A::value} as{TypeError} core::int*;
+  core::String* z = new self::B::•<core::String*>().{self::B::m}(null, null).{self::A::value};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.weak.transformed.expect
index b156e85..4bbdc0c 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.weak.transformed.expect
@@ -55,8 +55,8 @@
 static method foo() → dynamic {
   core::int* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart:30:29: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
       . /*@target=A.value*/ value;
-                            ^" in new self::B::•<core::String*>().{self::B::m}(null, null){(dynamic, (dynamic, core::int*) →* dynamic) →* self::A<core::String*>*}.{self::A::value}{core::String*} as{TypeError} core::int*;
-  core::String* z = new self::B::•<core::String*>().{self::B::m}(null, null){(dynamic, (dynamic, core::int*) →* dynamic) →* self::A<core::String*>*}.{self::A::value}{core::String*};
+                            ^" in new self::B::•<core::String*>().{self::B::m}(null, null).{self::A::value} as{TypeError} core::int*;
+  core::String* z = new self::B::•<core::String*>().{self::B::m}(null, null).{self::A::value};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.weak.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.weak.expect
index 5764bd1..a65779d 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.weak.expect
@@ -80,7 +80,7 @@
 static method foo() → dynamic {
   core::int* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart:30:29: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
       . /*@target=A.value*/ value;
-                            ^" in new test::B::•<core::String*>().{test::B::m}(null, null){(dynamic, (dynamic, core::int*) →* dynamic) →* test::A<core::String*>*}.{test::A::value}{core::String*} as{TypeError} core::int*;
-  core::String* z = new test::B::•<core::String*>().{test::B::m}(null, null){(dynamic, (dynamic, core::int*) →* dynamic) →* test::A<core::String*>*}.{test::A::value}{core::String*};
+                            ^" in new test::B::•<core::String*>().{test::B::m}(null, null).{test::A::value} as{TypeError} core::int*;
+  core::String* z = new test::B::•<core::String*>().{test::B::m}(null, null).{test::A::value};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.weak.transformed.expect
index 5764bd1..a65779d 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.weak.transformed.expect
@@ -80,7 +80,7 @@
 static method foo() → dynamic {
   core::int* y = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart:30:29: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
       . /*@target=A.value*/ value;
-                            ^" in new test::B::•<core::String*>().{test::B::m}(null, null){(dynamic, (dynamic, core::int*) →* dynamic) →* test::A<core::String*>*}.{test::A::value}{core::String*} as{TypeError} core::int*;
-  core::String* z = new test::B::•<core::String*>().{test::B::m}(null, null){(dynamic, (dynamic, core::int*) →* dynamic) →* test::A<core::String*>*}.{test::A::value}{core::String*};
+                            ^" in new test::B::•<core::String*>().{test::B::m}(null, null).{test::A::value} as{TypeError} core::int*;
+  core::String* z = new test::B::•<core::String*>().{test::B::m}(null, null).{test::A::value};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_infer.dart.weak.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_infer.dart.weak.expect
index bd1fcf0..5d3812b 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_infer.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_infer.dart.weak.expect
@@ -47,8 +47,8 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method foo() → dynamic {
-  core::String* y = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::String*;
-  core::int* z = new self::B::•().{self::B::x}{dynamic} as{TypeError,ForDynamic} core::int*;
+  core::String* y = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
+  core::int* z = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {
   self::foo();
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.weak.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.weak.expect
index 086fb1f690..0b511ab 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.weak.expect
@@ -135,7 +135,7 @@
                                                                      ^" in map as{TypeError} core::Iterable<dynamic>*) {
     core::String* y = x as{TypeError,ForDynamic} core::String*;
   }
-  for (core::String* x in map.{core::Map::keys}{core::Iterable<core::String*>*}) {
+  for (core::String* x in map.{core::Map::keys}) {
     core::String* y = x;
   }
 }
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.weak.transformed.expect
index 06bfe90..37f2947 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.weak.transformed.expect
@@ -190,7 +190,7 @@
     }
   }
   {
-    core::Iterator<core::String*>* :sync-for-iterator = map.{core::Map::keys}{core::Iterable<core::String*>*}.{core::Iterable::iterator};
+    core::Iterator<core::String*>* :sync-for-iterator = map.{core::Map::keys}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       core::String* x = :sync-for-iterator.{core::Iterator::current};
       {
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_loop_with_inference.dart.weak.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_loop_with_inference.dart.weak.expect
index 22c972f..2dd29d2 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_loop_with_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_loop_with_inference.dart.weak.expect
@@ -3,8 +3,8 @@
 import "dart:core" as core;
 
 static method test() → dynamic {
-  for (core::int* i = 0; i.{core::num::<}(10){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    core::int* j = i.{core::num::+}(1){(core::num*) →* core::int*};
+  for (core::int* i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
+    core::int* j = i.{core::num::+}(1);
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_loop_with_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_loop_with_inference.dart.weak.transformed.expect
index 22c972f..2dd29d2 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_loop_with_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_loop_with_inference.dart.weak.transformed.expect
@@ -3,8 +3,8 @@
 import "dart:core" as core;
 
 static method test() → dynamic {
-  for (core::int* i = 0; i.{core::num::<}(10){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    core::int* j = i.{core::num::+}(1){(core::num*) →* core::int*};
+  for (core::int* i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
+    core::int* j = i.{core::num::+}(1);
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_cascade.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_cascade.dart.weak.expect
index e5b98d2..60680eb 100644
--- a/pkg/front_end/testcases/inference/inferred_type_cascade.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_cascade.dart.weak.expect
@@ -22,7 +22,7 @@
 }
 static field self::A* v = let final self::A* #t1 = new self::A::•() in block {
   #t1.{self::A::a} = 1;
-  #t1.{self::A::b}{core::List<core::int*>*}.{core::List::add}(2){(core::int*) →* void};
-  #t1.{self::A::m}(){() →* void};
+  #t1.{self::A::b}.{core::List::add}(2);
+  #t1.{self::A::m}();
 } =>#t1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_cascade.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_cascade.dart.weak.transformed.expect
index e5b98d2..60680eb 100644
--- a/pkg/front_end/testcases/inference/inferred_type_cascade.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_cascade.dart.weak.transformed.expect
@@ -22,7 +22,7 @@
 }
 static field self::A* v = let final self::A* #t1 = new self::A::•() in block {
   #t1.{self::A::a} = 1;
-  #t1.{self::A::b}{core::List<core::int*>*}.{core::List::add}(2){(core::int*) →* void};
-  #t1.{self::A::m}(){() →* void};
+  #t1.{self::A::b}.{core::List::add}(2);
+  #t1.{self::A::m}();
 } =>#t1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.weak.expect
index 83b4e3b..7aed2ea 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.weak.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c = new self::C::•();
-static field core::bool* x = self::c.{self::C::*}(self::c){(self::C*) →* core::bool*};
+static field core::bool* x = self::c.{self::C::*}(self::c);
 static method main() → dynamic {
   self::c;
   self::x;
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.weak.transformed.expect
index 83b4e3b..7aed2ea 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c = new self::C::•();
-static field core::bool* x = self::c.{self::C::*}(self::c){(self::C*) →* core::bool*};
+static field core::bool* x = self::c.{self::C::*}(self::c);
 static method main() → dynamic {
   self::c;
   self::x;
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.weak.expect
index 6764bc5..d635197 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.weak.expect
@@ -35,7 +35,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c;
-static field core::bool* x = self::c.{self::I::*}(self::c){(self::C*) →* core::bool*};
+static field core::bool* x = self::c.{self::I::*}(self::c);
 static method main() → dynamic {
   self::c;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.weak.transformed.expect
index 6764bc5..d635197 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.weak.transformed.expect
@@ -35,7 +35,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c;
-static field core::bool* x = self::c.{self::I::*}(self::c){(self::C*) →* core::bool*};
+static field core::bool* x = self::c.{self::I::*}(self::c);
 static method main() → dynamic {
   self::c;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.weak.expect
index 250adf8..35a9cbd 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.weak.expect
@@ -21,5 +21,5 @@
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  core::bool* x = c.{self::C::[]}(0){(core::int*) →* core::bool*};
+  core::bool* x = c.{self::C::[]}(0);
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.weak.transformed.expect
index 250adf8..35a9cbd 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.weak.transformed.expect
@@ -21,5 +21,5 @@
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  core::bool* x = c.{self::C::[]}(0){(core::int*) →* core::bool*};
+  core::bool* x = c.{self::C::[]}(0);
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.weak.expect
index 007c0cd..7718f6d 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.weak.expect
@@ -36,6 +36,6 @@
 }
 static method f() → dynamic {
   self::C* c;
-  core::bool* x = c.{self::I::[]}(0){(core::int*) →* core::bool*};
+  core::bool* x = c.{self::I::[]}(0);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.weak.transformed.expect
index 007c0cd..7718f6d 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.weak.transformed.expect
@@ -36,6 +36,6 @@
 }
 static method f() → dynamic {
   self::C* c;
-  core::bool* x = c.{self::I::[]}(0){(core::int*) →* core::bool*};
+  core::bool* x = c.{self::I::[]}(0);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.weak.expect
index d0c4a3c..3eb9975 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.weak.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c = new self::C::•();
-static field core::bool* x = self::c.{self::C::unary-}(){() →* core::bool*};
+static field core::bool* x = self::c.{self::C::unary-}();
 static method main() → dynamic {
   self::c;
   self::x;
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.weak.transformed.expect
index d0c4a3c..3eb9975 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c = new self::C::•();
-static field core::bool* x = self::c.{self::C::unary-}(){() →* core::bool*};
+static field core::bool* x = self::c.{self::C::unary-}();
 static method main() → dynamic {
   self::c;
   self::x;
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.weak.expect
index 443ba4b..1ff6822 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.weak.expect
@@ -35,7 +35,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c;
-static field core::bool* x = self::c.{self::I::unary-}(){() →* core::bool*};
+static field core::bool* x = self::c.{self::I::unary-}();
 static method main() → dynamic {
   self::c;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.weak.transformed.expect
index 443ba4b..1ff6822 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.weak.transformed.expect
@@ -35,7 +35,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c;
-static field core::bool* x = self::c.{self::I::unary-}(){() →* core::bool*};
+static field core::bool* x = self::c.{self::I::unary-}();
 static method main() → dynamic {
   self::c;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.weak.expect
index 909f982..eb6d5a1 100644
--- a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.weak.expect
@@ -19,7 +19,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field () →* core::bool* x = self::f().{self::C::g}{() →* core::bool*};
+static field () →* core::bool* x = self::f().{self::C::g};
 static method f() → self::C*
   return null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.weak.transformed.expect
index 909f982..eb6d5a1 100644
--- a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.weak.transformed.expect
@@ -19,7 +19,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field () →* core::bool* x = self::f().{self::C::g}{() →* core::bool*};
+static field () →* core::bool* x = self::f().{self::C::g};
 static method f() → self::C*
   return null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.weak.expect
index a162c11..c382762 100644
--- a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.weak.expect
@@ -34,7 +34,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field () →* core::bool* x = self::f().{self::I::g}{() →* core::bool*};
+static field () →* core::bool* x = self::f().{self::I::g};
 static method f() → self::C*
   return null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.weak.transformed.expect
index a162c11..c382762 100644
--- a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.weak.transformed.expect
@@ -34,7 +34,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field () →* core::bool* x = self::f().{self::I::g}{() →* core::bool*};
+static field () →* core::bool* x = self::f().{self::I::g};
 static method f() → self::C*
   return null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.weak.expect
index 429fa8a..e853c1f 100644
--- a/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.weak.expect
@@ -19,7 +19,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field core::bool* x = self::f().{self::C::g}(){() →* core::bool*};
+static field core::bool* x = self::f().{self::C::g}();
 static method f() → self::C*
   return null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.weak.transformed.expect
index 429fa8a..e853c1f 100644
--- a/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.weak.transformed.expect
@@ -19,7 +19,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field core::bool* x = self::f().{self::C::g}(){() →* core::bool*};
+static field core::bool* x = self::f().{self::C::g}();
 static method f() → self::C*
   return null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.weak.expect
index c694d88..13f3418 100644
--- a/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.weak.expect
@@ -34,7 +34,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field core::bool* x = self::f().{self::I::g}(){() →* core::bool*};
+static field core::bool* x = self::f().{self::I::g}();
 static method f() → self::C*
   return null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.weak.transformed.expect
index c694d88..13f3418 100644
--- a/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.weak.transformed.expect
@@ -34,7 +34,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field core::bool* x = self::f().{self::I::g}(){() →* core::bool*};
+static field core::bool* x = self::f().{self::I::g}();
 static method f() → self::C*
   return null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.weak.expect b/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.weak.expect
index 7b33a23..02d037c 100644
--- a/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.weak.expect
@@ -51,5 +51,5 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field core::int* y = new self::C::•().{self::C::x}{core::int*};
+static field core::int* y = new self::C::•().{self::C::x};
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.weak.transformed.expect
index 7b33a23..02d037c 100644
--- a/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.weak.transformed.expect
@@ -51,5 +51,5 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field core::int* y = new self::C::•().{self::C::x}{core::int*};
+static field core::int* y = new self::C::•().{self::C::x};
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.expect b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.expect
index 41e2e41..d6804b7 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.expect
@@ -37,7 +37,7 @@
     return x;
   (core::int*) →* core::int* func;
   func = #C1<core::int*>;
-  func = new self::C::•().{self::C::f}{<T extends core::Object* = dynamic>(T*) →* T*}<core::int*>;
+  func = new self::C::•().{self::C::f}<core::int*>;
   func = #C2<core::int*>;
   func = h<core::int*>;
 }
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.transformed.expect
index 8efaf12..392e7e7 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.transformed.expect
@@ -37,7 +37,7 @@
     return x;
   (core::int*) →* core::int* func;
   func = #C1<core::int*>;
-  func = new self::C::•().{self::C::f}{<T extends core::Object* = dynamic>(T*) →* T*}<core::int*>;
+  func = new self::C::•().{self::C::f}<core::int*>;
   func = #C2<core::int*>;
   func = h<core::int*>;
 }
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.weak.expect b/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.weak.expect
index b339db5d..eb193d3 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.weak.expect
@@ -20,6 +20,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C<core::String*>* c) → void {
-  (core::int*) →* (core::String*) →* void tearoff = c.{self::C::f}{<U extends core::Object* = dynamic>(U*) →* (core::String*) →* void} as{TypeError,CovarianceCheck} <U extends core::Object* = dynamic>(U*) →* (core::String*) →* void<core::int*>;
+  (core::int*) →* (core::String*) →* void tearoff = c.{self::C::f} as{TypeError,CovarianceCheck} <U extends core::Object* = dynamic>(U*) →* (core::String*) →* void<core::int*>;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.weak.transformed.expect
index b339db5d..eb193d3 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.weak.transformed.expect
@@ -20,6 +20,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C<core::String*>* c) → void {
-  (core::int*) →* (core::String*) →* void tearoff = c.{self::C::f}{<U extends core::Object* = dynamic>(U*) →* (core::String*) →* void} as{TypeError,CovarianceCheck} <U extends core::Object* = dynamic>(U*) →* (core::String*) →* void<core::int*>;
+  (core::int*) →* (core::String*) →* void tearoff = c.{self::C::f} as{TypeError,CovarianceCheck} <U extends core::Object* = dynamic>(U*) →* (core::String*) →* void<core::int*>;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.weak.expect b/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.weak.expect
index 9cfc708..f378eb9 100644
--- a/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.weak.expect
@@ -6,7 +6,7 @@
   return #C1;
 static method foo() → void {
   core::List<dynamic>* myList = self::getListOfString();
-  myList.{core::Iterable::map}<core::int*>((dynamic type) → core::int* => 42){((dynamic) →* core::int*) →* core::Iterable<core::int*>*};
+  myList.{core::Iterable::map}<core::int*>((dynamic type) → core::int* => 42);
 }
 static method bar() → void {
   dynamic list;
@@ -16,7 +16,7 @@
   on dynamic catch(final dynamic _) {
     return;
   }
-  list{dynamic}.map((dynamic value) → core::String* => "${value}");
+  list.map((dynamic value) → core::String* => "${value}");
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.weak.transformed.expect
index 438dd97..f770ccb 100644
--- a/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
   return #C1;
 static method foo() → void {
   core::List<dynamic>* myList = self::getListOfString();
-  myList.{core::Iterable::map}<core::int*>((dynamic type) → core::int* => 42){((dynamic) →* core::int*) →* core::Iterable<core::int*>*};
+  myList.{core::Iterable::map}<core::int*>((dynamic type) → core::int* => 42);
 }
 static method bar() → void {
   dynamic list;
@@ -16,7 +16,7 @@
   on dynamic catch(final dynamic _) {
     return;
   }
-  list{dynamic}.map((dynamic value) → core::String* => "${value}");
+  list.map((dynamic value) → core::String* => "${value}");
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/lambda_void_context.dart.weak.expect b/pkg/front_end/testcases/inference/lambda_void_context.dart.weak.expect
index bfc338c..45d1725 100644
--- a/pkg/front_end/testcases/inference/lambda_void_context.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/lambda_void_context.dart.weak.expect
@@ -4,6 +4,6 @@
 
 static method f() → dynamic {
   core::List<core::int*>* o;
-  o.{core::Iterable::forEach}((core::int* i) → core::int* => i.{core::num::+}(1){(core::num*) →* core::int*}){((core::int*) →* void) →* void};
+  o.{core::Iterable::forEach}((core::int* i) → core::int* => i.{core::num::+}(1));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/lambda_void_context.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/lambda_void_context.dart.weak.transformed.expect
index bfc338c..45d1725 100644
--- a/pkg/front_end/testcases/inference/lambda_void_context.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/lambda_void_context.dart.weak.transformed.expect
@@ -4,6 +4,6 @@
 
 static method f() → dynamic {
   core::List<core::int*>* o;
-  o.{core::Iterable::forEach}((core::int* i) → core::int* => i.{core::num::+}(1){(core::num*) →* core::int*}){((core::int*) →* void) →* void};
+  o.{core::Iterable::forEach}((core::int* i) → core::int* => i.{core::num::+}(1));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/list_literals.dart.weak.expect b/pkg/front_end/testcases/inference/list_literals.dart.weak.expect
index fb63017..84e85fd 100644
--- a/pkg/front_end/testcases/inference/list_literals.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/list_literals.dart.weak.expect
@@ -21,19 +21,19 @@
   core::List<core::int*>* x = <core::int*>[1, 2, 3];
   x.{core::List::add}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:10:70: Error: The argument type 'String' can't be assigned to the parameter type 'int'.
   x. /*@target=List.add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                     ^" in "hi" as{TypeError} core::int*){(core::int*) →* void};
+                                                                     ^" in "hi" as{TypeError} core::int*);
   x.{core::List::add}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:11:70: Error: The argument type 'double' can't be assigned to the parameter type 'int'.
   x. /*@target=List.add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0);
-                                                                     ^" in 4.0 as{TypeError} core::int*){(core::int*) →* void};
-  x.{core::List::add}(4){(core::int*) →* void};
+                                                                     ^" in 4.0 as{TypeError} core::int*);
+  x.{core::List::add}(4);
   core::List<core::num*>* y = x;
 }
 static method test2() → dynamic {
   core::List<core::num*>* x = <core::num*>[1, 2.0, 3];
   x.{core::List::add}(let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:18:70: Error: The argument type 'String' can't be assigned to the parameter type 'num'.
   x. /*@target=List.add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                     ^" in "hi" as{TypeError} core::num*){(core::num*) →* void};
-  x.{core::List::add}(4.0){(core::num*) →* void};
+                                                                     ^" in "hi" as{TypeError} core::num*);
+  x.{core::List::add}(4.0);
   core::List<core::int*>* y = x as{TypeError} core::List<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/list_literals.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/list_literals.dart.weak.transformed.expect
index 1f10df9..2706692 100644
--- a/pkg/front_end/testcases/inference/list_literals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/list_literals.dart.weak.transformed.expect
@@ -21,19 +21,19 @@
   core::List<core::int*>* x = core::_GrowableList::_literal3<core::int*>(1, 2, 3);
   x.{core::List::add}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:10:70: Error: The argument type 'String' can't be assigned to the parameter type 'int'.
   x. /*@target=List.add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                     ^" in "hi" as{TypeError} core::int*){(core::int*) →* void};
+                                                                     ^" in "hi" as{TypeError} core::int*);
   x.{core::List::add}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:11:70: Error: The argument type 'double' can't be assigned to the parameter type 'int'.
   x. /*@target=List.add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0);
-                                                                     ^" in 4.0 as{TypeError} core::int*){(core::int*) →* void};
-  x.{core::List::add}(4){(core::int*) →* void};
+                                                                     ^" in 4.0 as{TypeError} core::int*);
+  x.{core::List::add}(4);
   core::List<core::num*>* y = x;
 }
 static method test2() → dynamic {
   core::List<core::num*>* x = core::_GrowableList::_literal3<core::num*>(1, 2.0, 3);
   x.{core::List::add}(let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:18:70: Error: The argument type 'String' can't be assigned to the parameter type 'num'.
   x. /*@target=List.add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                     ^" in "hi" as{TypeError} core::num*){(core::num*) →* void};
-  x.{core::List::add}(4.0){(core::num*) →* void};
+                                                                     ^" in "hi" as{TypeError} core::num*);
+  x.{core::List::add}(4.0);
   core::List<core::int*>* y = x as{TypeError} core::List<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/list_literals_can_infer_null_bottom.dart.weak.expect b/pkg/front_end/testcases/inference/list_literals_can_infer_null_bottom.dart.weak.expect
index 6efc2e7..56e22ce 100644
--- a/pkg/front_end/testcases/inference/list_literals_can_infer_null_bottom.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/list_literals_can_infer_null_bottom.dart.weak.expect
@@ -4,6 +4,6 @@
 
 static method test1() → dynamic {
   core::List<Null>* x = <Null>[null];
-  x.{core::List::add}(42 as{TypeError} Null){(Null) →* void};
+  x.{core::List::add}(42 as{TypeError} Null);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/list_literals_can_infer_null_bottom.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/list_literals_can_infer_null_bottom.dart.weak.transformed.expect
index 53cdae6..e5fb9e6 100644
--- a/pkg/front_end/testcases/inference/list_literals_can_infer_null_bottom.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/list_literals_can_infer_null_bottom.dart.weak.transformed.expect
@@ -4,6 +4,6 @@
 
 static method test1() → dynamic {
   core::List<Null>* x = core::_GrowableList::_literal1<Null>(null);
-  x.{core::List::add}(42 as{TypeError} Null){(Null) →* void};
+  x.{core::List::add}(42 as{TypeError} Null);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/list_literals_top_level.dart.weak.expect b/pkg/front_end/testcases/inference/list_literals_top_level.dart.weak.expect
index ae6d28e..6211ad5 100644
--- a/pkg/front_end/testcases/inference/list_literals_top_level.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/list_literals_top_level.dart.weak.expect
@@ -22,18 +22,18 @@
 static method test1() → dynamic {
   self::x1.{core::List::add}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:10:71: Error: The argument type 'String' can't be assigned to the parameter type 'int'.
   x1. /*@target=List.add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                      ^" in "hi" as{TypeError} core::int*){(core::int*) →* void};
+                                                                      ^" in "hi" as{TypeError} core::int*);
   self::x1.{core::List::add}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:11:71: Error: The argument type 'double' can't be assigned to the parameter type 'int'.
   x1. /*@target=List.add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0);
-                                                                      ^" in 4.0 as{TypeError} core::int*){(core::int*) →* void};
-  self::x1.{core::List::add}(4){(core::int*) →* void};
+                                                                      ^" in 4.0 as{TypeError} core::int*);
+  self::x1.{core::List::add}(4);
   core::List<core::num*>* y = self::x1;
 }
 static method test2() → dynamic {
   self::x2.{core::List::add}(let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:18:71: Error: The argument type 'String' can't be assigned to the parameter type 'num'.
   x2. /*@target=List.add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                      ^" in "hi" as{TypeError} core::num*){(core::num*) →* void};
-  self::x2.{core::List::add}(4.0){(core::num*) →* void};
+                                                                      ^" in "hi" as{TypeError} core::num*);
+  self::x2.{core::List::add}(4.0);
   core::List<core::int*>* y = self::x2 as{TypeError} core::List<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/list_literals_top_level.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/list_literals_top_level.dart.weak.transformed.expect
index 3155e77..8680205 100644
--- a/pkg/front_end/testcases/inference/list_literals_top_level.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/list_literals_top_level.dart.weak.transformed.expect
@@ -22,18 +22,18 @@
 static method test1() → dynamic {
   self::x1.{core::List::add}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:10:71: Error: The argument type 'String' can't be assigned to the parameter type 'int'.
   x1. /*@target=List.add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                      ^" in "hi" as{TypeError} core::int*){(core::int*) →* void};
+                                                                      ^" in "hi" as{TypeError} core::int*);
   self::x1.{core::List::add}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:11:71: Error: The argument type 'double' can't be assigned to the parameter type 'int'.
   x1. /*@target=List.add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0);
-                                                                      ^" in 4.0 as{TypeError} core::int*){(core::int*) →* void};
-  self::x1.{core::List::add}(4){(core::int*) →* void};
+                                                                      ^" in 4.0 as{TypeError} core::int*);
+  self::x1.{core::List::add}(4);
   core::List<core::num*>* y = self::x1;
 }
 static method test2() → dynamic {
   self::x2.{core::List::add}(let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:18:71: Error: The argument type 'String' can't be assigned to the parameter type 'num'.
   x2. /*@target=List.add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                      ^" in "hi" as{TypeError} core::num*){(core::num*) →* void};
-  self::x2.{core::List::add}(4.0){(core::num*) →* void};
+                                                                      ^" in "hi" as{TypeError} core::num*);
+  self::x2.{core::List::add}(4.0);
   core::List<core::int*>* y = self::x2 as{TypeError} core::List<core::int*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/map_literals.dart.weak.expect b/pkg/front_end/testcases/inference/map_literals.dart.weak.expect
index 298f552..37b94b0 100644
--- a/pkg/front_end/testcases/inference/map_literals.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/map_literals.dart.weak.expect
@@ -28,31 +28,31 @@
 
 static method test1() → dynamic {
   core::Map<core::int*, core::String*>* x = <core::int*, core::String*>{1: "x", 2: "y"};
-  x.{core::Map::[]=}(3, "z"){(core::int*, core::String*) →* void};
+  x.{core::Map::[]=}(3, "z");
   x.{core::Map::[]=}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:12:46: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
       /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                             ^" in "hi" as{TypeError} core::int*, "w"){(core::int*, core::String*) →* void};
+                                             ^" in "hi" as{TypeError} core::int*, "w");
   x.{core::Map::[]=}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:14:46: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
       /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0] = 'u';
-                                             ^" in 4.0 as{TypeError} core::int*, "u"){(core::int*, core::String*) →* void};
+                                             ^" in 4.0 as{TypeError} core::int*, "u");
   x.{core::Map::[]=}(3, let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:15:60: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   x /*@target=Map.[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                           ^" in 42 as{TypeError} core::String*){(core::int*, core::String*) →* void};
+                                                           ^" in 42 as{TypeError} core::String*);
   core::Map<core::num*, core::String*>* y = x;
 }
 static method test2() → dynamic {
   core::Map<core::num*, core::Pattern*>* x = <core::num*, core::Pattern*>{1: "x", 2: "y", 3.0: core::RegExp::•(".")};
-  x.{core::Map::[]=}(3, "z"){(core::num*, core::Pattern*) →* void};
+  x.{core::Map::[]=}(3, "z");
   x.{core::Map::[]=}(let final Never* #t4 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:27:46: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
       /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                             ^" in "hi" as{TypeError} core::num*, "w"){(core::num*, core::Pattern*) →* void};
-  x.{core::Map::[]=}(4.0, "u"){(core::num*, core::Pattern*) →* void};
+                                             ^" in "hi" as{TypeError} core::num*, "w");
+  x.{core::Map::[]=}(4.0, "u");
   x.{core::Map::[]=}(3, let final Never* #t5 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:29:60: Error: A value of type 'int' can't be assigned to a variable of type 'Pattern'.
  - 'Pattern' is from 'dart:core'.
   x /*@target=Map.[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                           ^" in 42 as{TypeError} core::Pattern*){(core::num*, core::Pattern*) →* void};
+                                                           ^" in 42 as{TypeError} core::Pattern*);
   core::Pattern* p = null;
-  x.{core::Map::[]=}(2, p){(core::num*, core::Pattern*) →* void};
+  x.{core::Map::[]=}(2, p);
   core::Map<core::int*, core::String*>* y = x as{TypeError} core::Map<core::int*, core::String*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/map_literals.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/map_literals.dart.weak.transformed.expect
index 298f552..37b94b0 100644
--- a/pkg/front_end/testcases/inference/map_literals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/map_literals.dart.weak.transformed.expect
@@ -28,31 +28,31 @@
 
 static method test1() → dynamic {
   core::Map<core::int*, core::String*>* x = <core::int*, core::String*>{1: "x", 2: "y"};
-  x.{core::Map::[]=}(3, "z"){(core::int*, core::String*) →* void};
+  x.{core::Map::[]=}(3, "z");
   x.{core::Map::[]=}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:12:46: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
       /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                             ^" in "hi" as{TypeError} core::int*, "w"){(core::int*, core::String*) →* void};
+                                             ^" in "hi" as{TypeError} core::int*, "w");
   x.{core::Map::[]=}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:14:46: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
       /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0] = 'u';
-                                             ^" in 4.0 as{TypeError} core::int*, "u"){(core::int*, core::String*) →* void};
+                                             ^" in 4.0 as{TypeError} core::int*, "u");
   x.{core::Map::[]=}(3, let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:15:60: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   x /*@target=Map.[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                           ^" in 42 as{TypeError} core::String*){(core::int*, core::String*) →* void};
+                                                           ^" in 42 as{TypeError} core::String*);
   core::Map<core::num*, core::String*>* y = x;
 }
 static method test2() → dynamic {
   core::Map<core::num*, core::Pattern*>* x = <core::num*, core::Pattern*>{1: "x", 2: "y", 3.0: core::RegExp::•(".")};
-  x.{core::Map::[]=}(3, "z"){(core::num*, core::Pattern*) →* void};
+  x.{core::Map::[]=}(3, "z");
   x.{core::Map::[]=}(let final Never* #t4 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:27:46: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
       /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                             ^" in "hi" as{TypeError} core::num*, "w"){(core::num*, core::Pattern*) →* void};
-  x.{core::Map::[]=}(4.0, "u"){(core::num*, core::Pattern*) →* void};
+                                             ^" in "hi" as{TypeError} core::num*, "w");
+  x.{core::Map::[]=}(4.0, "u");
   x.{core::Map::[]=}(3, let final Never* #t5 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:29:60: Error: A value of type 'int' can't be assigned to a variable of type 'Pattern'.
  - 'Pattern' is from 'dart:core'.
   x /*@target=Map.[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                           ^" in 42 as{TypeError} core::Pattern*){(core::num*, core::Pattern*) →* void};
+                                                           ^" in 42 as{TypeError} core::Pattern*);
   core::Pattern* p = null;
-  x.{core::Map::[]=}(2, p){(core::num*, core::Pattern*) →* void};
+  x.{core::Map::[]=}(2, p);
   core::Map<core::int*, core::String*>* y = x as{TypeError} core::Map<core::int*, core::String*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/map_literals_can_infer_null.dart.weak.expect b/pkg/front_end/testcases/inference/map_literals_can_infer_null.dart.weak.expect
index b636b6c..a14b93f 100644
--- a/pkg/front_end/testcases/inference/map_literals_can_infer_null.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/map_literals_can_infer_null.dart.weak.expect
@@ -4,6 +4,6 @@
 
 static method test1() → dynamic {
   core::Map<Null, Null>* x = <Null, Null>{null: null};
-  x.{core::Map::[]=}(3 as{TypeError} Null, "z" as{TypeError} Null){(Null, Null) →* void};
+  x.{core::Map::[]=}(3 as{TypeError} Null, "z" as{TypeError} Null);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/map_literals_can_infer_null.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/map_literals_can_infer_null.dart.weak.transformed.expect
index b636b6c..a14b93f 100644
--- a/pkg/front_end/testcases/inference/map_literals_can_infer_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/map_literals_can_infer_null.dart.weak.transformed.expect
@@ -4,6 +4,6 @@
 
 static method test1() → dynamic {
   core::Map<Null, Null>* x = <Null, Null>{null: null};
-  x.{core::Map::[]=}(3 as{TypeError} Null, "z" as{TypeError} Null){(Null, Null) →* void};
+  x.{core::Map::[]=}(3 as{TypeError} Null, "z" as{TypeError} Null);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/map_literals_top_level.dart.weak.expect b/pkg/front_end/testcases/inference/map_literals_top_level.dart.weak.expect
index 09b5da1..8c2724b 100644
--- a/pkg/front_end/testcases/inference/map_literals_top_level.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/map_literals_top_level.dart.weak.expect
@@ -29,30 +29,30 @@
 static field core::Map<core::int*, core::String*>* x1 = <core::int*, core::String*>{1: "x", 2: "y"};
 static field core::Map<core::num*, core::Pattern*>* x2 = <core::num*, core::Pattern*>{1: "x", 2: "y", 3.0: core::RegExp::•(".")};
 static method test1() → dynamic {
-  self::x1.{core::Map::[]=}(3, "z"){(core::int*, core::String*) →* void};
+  self::x1.{core::Map::[]=}(3, "z");
   self::x1.{core::Map::[]=}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:11:66: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   x1 /*@target=Map.[]=*/ [/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                                                 ^" in "hi" as{TypeError} core::int*, "w"){(core::int*, core::String*) →* void};
+                                                                 ^" in "hi" as{TypeError} core::int*, "w");
   self::x1.{core::Map::[]=}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:12:66: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   x1 /*@target=Map.[]=*/ [/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0] = 'u';
-                                                                 ^" in 4.0 as{TypeError} core::int*, "u"){(core::int*, core::String*) →* void};
+                                                                 ^" in 4.0 as{TypeError} core::int*, "u");
   self::x1.{core::Map::[]=}(3, let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:13:61: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   x1 /*@target=Map.[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                            ^" in 42 as{TypeError} core::String*){(core::int*, core::String*) →* void};
+                                                            ^" in 42 as{TypeError} core::String*);
   core::Map<core::num*, core::String*>* y = self::x1;
 }
 static method test2() → dynamic {
-  self::x2.{core::Map::[]=}(3, "z"){(core::num*, core::Pattern*) →* void};
+  self::x2.{core::Map::[]=}(3, "z");
   self::x2.{core::Map::[]=}(let final Never* #t4 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:20:66: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
   x2 /*@target=Map.[]=*/ [/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                                                 ^" in "hi" as{TypeError} core::num*, "w"){(core::num*, core::Pattern*) →* void};
-  self::x2.{core::Map::[]=}(4.0, "u"){(core::num*, core::Pattern*) →* void};
+                                                                 ^" in "hi" as{TypeError} core::num*, "w");
+  self::x2.{core::Map::[]=}(4.0, "u");
   self::x2.{core::Map::[]=}(3, let final Never* #t5 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:22:61: Error: A value of type 'int' can't be assigned to a variable of type 'Pattern'.
  - 'Pattern' is from 'dart:core'.
   x2 /*@target=Map.[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                            ^" in 42 as{TypeError} core::Pattern*){(core::num*, core::Pattern*) →* void};
+                                                            ^" in 42 as{TypeError} core::Pattern*);
   core::Pattern* p = null;
-  self::x2.{core::Map::[]=}(2, p){(core::num*, core::Pattern*) →* void};
+  self::x2.{core::Map::[]=}(2, p);
   core::Map<core::int*, core::String*>* y = self::x2 as{TypeError} core::Map<core::int*, core::String*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/map_literals_top_level.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/map_literals_top_level.dart.weak.transformed.expect
index 09b5da1..8c2724b 100644
--- a/pkg/front_end/testcases/inference/map_literals_top_level.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/map_literals_top_level.dart.weak.transformed.expect
@@ -29,30 +29,30 @@
 static field core::Map<core::int*, core::String*>* x1 = <core::int*, core::String*>{1: "x", 2: "y"};
 static field core::Map<core::num*, core::Pattern*>* x2 = <core::num*, core::Pattern*>{1: "x", 2: "y", 3.0: core::RegExp::•(".")};
 static method test1() → dynamic {
-  self::x1.{core::Map::[]=}(3, "z"){(core::int*, core::String*) →* void};
+  self::x1.{core::Map::[]=}(3, "z");
   self::x1.{core::Map::[]=}(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:11:66: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   x1 /*@target=Map.[]=*/ [/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                                                 ^" in "hi" as{TypeError} core::int*, "w"){(core::int*, core::String*) →* void};
+                                                                 ^" in "hi" as{TypeError} core::int*, "w");
   self::x1.{core::Map::[]=}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:12:66: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   x1 /*@target=Map.[]=*/ [/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0] = 'u';
-                                                                 ^" in 4.0 as{TypeError} core::int*, "u"){(core::int*, core::String*) →* void};
+                                                                 ^" in 4.0 as{TypeError} core::int*, "u");
   self::x1.{core::Map::[]=}(3, let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:13:61: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
   x1 /*@target=Map.[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                            ^" in 42 as{TypeError} core::String*){(core::int*, core::String*) →* void};
+                                                            ^" in 42 as{TypeError} core::String*);
   core::Map<core::num*, core::String*>* y = self::x1;
 }
 static method test2() → dynamic {
-  self::x2.{core::Map::[]=}(3, "z"){(core::num*, core::Pattern*) →* void};
+  self::x2.{core::Map::[]=}(3, "z");
   self::x2.{core::Map::[]=}(let final Never* #t4 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:20:66: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
   x2 /*@target=Map.[]=*/ [/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                                                 ^" in "hi" as{TypeError} core::num*, "w"){(core::num*, core::Pattern*) →* void};
-  self::x2.{core::Map::[]=}(4.0, "u"){(core::num*, core::Pattern*) →* void};
+                                                                 ^" in "hi" as{TypeError} core::num*, "w");
+  self::x2.{core::Map::[]=}(4.0, "u");
   self::x2.{core::Map::[]=}(3, let final Never* #t5 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:22:61: Error: A value of type 'int' can't be assigned to a variable of type 'Pattern'.
  - 'Pattern' is from 'dart:core'.
   x2 /*@target=Map.[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                            ^" in 42 as{TypeError} core::Pattern*){(core::num*, core::Pattern*) →* void};
+                                                            ^" in 42 as{TypeError} core::Pattern*);
   core::Pattern* p = null;
-  self::x2.{core::Map::[]=}(2, p){(core::num*, core::Pattern*) →* void};
+  self::x2.{core::Map::[]=}(2, p);
   core::Map<core::int*, core::String*>* y = self::x2 as{TypeError} core::Map<core::int*, core::String*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.weak.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.weak.expect
index 05bd044..1f1ce8e 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.weak.expect
@@ -34,5 +34,5 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field self::D<core::int*>* f = new self::C::•().{self::C::f}<core::int*>(){() →* self::D<core::int*>*};
+static field self::D<core::int*>* f = new self::C::•().{self::C::f}<core::int*>();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.weak.transformed.expect
index 05bd044..1f1ce8e 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.weak.transformed.expect
@@ -34,5 +34,5 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static field self::D<core::int*>* f = new self::C::•().{self::C::f}<core::int*>(){() →* self::D<core::int*>*};
+static field self::D<core::int*>* f = new self::C::•().{self::C::f}<core::int*>();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.weak.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.weak.expect
index 28c5383..fb30810 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.weak.expect
@@ -35,5 +35,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c;
-static field self::D<core::int*>* f = self::c.{self::C::f}<core::int*>(){() →* self::D<core::int*>*};
+static field self::D<core::int*>* f = self::c.{self::C::f}<core::int*>();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.weak.transformed.expect
index 28c5383..fb30810 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.weak.transformed.expect
@@ -35,5 +35,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c;
-static field self::D<core::int*>* f = self::c.{self::C::f}<core::int*>(){() →* self::D<core::int*>*};
+static field self::D<core::int*>* f = self::c.{self::C::f}<core::int*>();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.weak.expect b/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.weak.expect
index cbf7329..4a4c52a 100644
--- a/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.weak.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g(self::C* c) → dynamic {
-  core::int* x = let final self::C* #t1 = c in #t1 == null ?{core::int*} null : #t1.{self::C::f}(){() →* core::int*};
-  let final self::C* #t2 = c in #t2 == null ?{core::int*} null : #t2.{self::C::f}(){() →* core::int*};
+  core::int* x = let final self::C* #t1 = c in #t1.{self::C::==}(null) ?{core::int*} null : #t1.{self::C::f}();
+  let final self::C* #t2 = c in #t2.{self::C::==}(null) ?{core::int*} null : #t2.{self::C::f}();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.weak.transformed.expect
index cbf7329..4a4c52a 100644
--- a/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g(self::C* c) → dynamic {
-  core::int* x = let final self::C* #t1 = c in #t1 == null ?{core::int*} null : #t1.{self::C::f}(){() →* core::int*};
-  let final self::C* #t2 = c in #t2 == null ?{core::int*} null : #t2.{self::C::f}(){() →* core::int*};
+  core::int* x = let final self::C* #t1 = c in #t1.{self::C::==}(null) ?{core::int*} null : #t1.{self::C::f}();
+  let final self::C* #t2 = c in #t2.{self::C::==}(null) ?{core::int*} null : #t2.{self::C::f}();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/null_aware_property_get.dart.weak.expect b/pkg/front_end/testcases/inference/null_aware_property_get.dart.weak.expect
index b8c3acb..7156c66 100644
--- a/pkg/front_end/testcases/inference/null_aware_property_get.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/null_aware_property_get.dart.weak.expect
@@ -19,7 +19,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method f(self::C* c) → void {
-  core::int* x = let final self::C* #t1 = c in #t1 == null ?{core::int*} null : #t1.{self::C::x}{core::int*};
-  let final self::C* #t2 = c in #t2 == null ?{core::int*} null : #t2.{self::C::x}{core::int*};
+  core::int* x = let final self::C* #t1 = c in #t1.{self::C::==}(null) ?{core::int*} null : #t1.{self::C::x};
+  let final self::C* #t2 = c in #t2.{self::C::==}(null) ?{core::int*} null : #t2.{self::C::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/null_aware_property_get.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/null_aware_property_get.dart.weak.transformed.expect
index b8c3acb..7156c66 100644
--- a/pkg/front_end/testcases/inference/null_aware_property_get.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/null_aware_property_get.dart.weak.transformed.expect
@@ -19,7 +19,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method f(self::C* c) → void {
-  core::int* x = let final self::C* #t1 = c in #t1 == null ?{core::int*} null : #t1.{self::C::x}{core::int*};
-  let final self::C* #t2 = c in #t2 == null ?{core::int*} null : #t2.{self::C::x}{core::int*};
+  core::int* x = let final self::C* #t1 = c in #t1.{self::C::==}(null) ?{core::int*} null : #t1.{self::C::x};
+  let final self::C* #t2 = c in #t2.{self::C::==}(null) ?{core::int*} null : #t2.{self::C::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/null_coalescing_operator.dart.weak.expect b/pkg/front_end/testcases/inference/null_coalescing_operator.dart.weak.expect
index 15f12a3..ec63329 100644
--- a/pkg/front_end/testcases/inference/null_coalescing_operator.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/null_coalescing_operator.dart.weak.expect
@@ -4,6 +4,6 @@
 
 static method main() → dynamic {
   core::List<core::int*>* x;
-  core::List<core::int*>* y = let final core::List<core::int*>* #t1 = x in #t1 == null ?{core::List<core::int*>*} <core::int*>[] : #t1;
+  core::List<core::int*>* y = let final core::List<core::int*>* #t1 = x in #t1.{core::List::==}(null) ?{core::List<core::int*>*} <core::int*>[] : #t1;
   core::List<core::int*>* z = y;
 }
diff --git a/pkg/front_end/testcases/inference/null_coalescing_operator.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/null_coalescing_operator.dart.weak.transformed.expect
index 7a25cb4..7c4682e 100644
--- a/pkg/front_end/testcases/inference/null_coalescing_operator.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/null_coalescing_operator.dart.weak.transformed.expect
@@ -4,6 +4,6 @@
 
 static method main() → dynamic {
   core::List<core::int*>* x;
-  core::List<core::int*>* y = let final core::List<core::int*>* #t1 = x in #t1 == null ?{core::List<core::int*>*} core::_GrowableList::•<core::int*>(0) : #t1;
+  core::List<core::int*>* y = let final core::List<core::int*>* #t1 = x in #t1.{core::List::==}(null) ?{core::List<core::int*>*} core::_GrowableList::•<core::int*>(0) : #t1;
   core::List<core::int*>* z = y;
 }
diff --git a/pkg/front_end/testcases/inference/null_coalescing_operator_2.dart.weak.expect b/pkg/front_end/testcases/inference/null_coalescing_operator_2.dart.weak.expect
index 33d1268..c4ca3fe 100644
--- a/pkg/front_end/testcases/inference/null_coalescing_operator_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/null_coalescing_operator_2.dart.weak.expect
@@ -4,5 +4,5 @@
 
 static method main() → dynamic {
   core::List<core::int*>* x;
-  core::List<core::num*>* y = let final core::List<core::int*>* #t1 = x in #t1 == null ?{core::List<core::num*>*} <core::num*>[] : #t1;
+  core::List<core::num*>* y = let final core::List<core::int*>* #t1 = x in #t1.{core::List::==}(null) ?{core::List<core::num*>*} <core::num*>[] : #t1;
 }
diff --git a/pkg/front_end/testcases/inference/null_coalescing_operator_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/null_coalescing_operator_2.dart.weak.transformed.expect
index c2e2653..02d005c 100644
--- a/pkg/front_end/testcases/inference/null_coalescing_operator_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/null_coalescing_operator_2.dart.weak.transformed.expect
@@ -4,5 +4,5 @@
 
 static method main() → dynamic {
   core::List<core::int*>* x;
-  core::List<core::num*>* y = let final core::List<core::int*>* #t1 = x in #t1 == null ?{core::List<core::num*>*} core::_GrowableList::•<core::num*>(0) : #t1;
+  core::List<core::num*>* y = let final core::List<core::int*>* #t1 = x in #t1.{core::List::==}(null) ?{core::List<core::num*>*} core::_GrowableList::•<core::num*>(0) : #t1;
 }
diff --git a/pkg/front_end/testcases/inference/null_literal_should_not_infer_as_bottom.dart.weak.expect b/pkg/front_end/testcases/inference/null_literal_should_not_infer_as_bottom.dart.weak.expect
index 4344e6b..e3fae9a 100644
--- a/pkg/front_end/testcases/inference/null_literal_should_not_infer_as_bottom.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/null_literal_should_not_infer_as_bottom.dart.weak.expect
@@ -6,13 +6,13 @@
 static method foo((core::Object*) →* core::int* f) → void {}
 static method test() → dynamic {
   (core::Object*) →* Null f = (core::Object* x) → Null => null;
-  core::String* y = f(42){(core::Object*) →* Null};
+  core::String* y = f.call(42);
   f = (core::Object* x) → Null => "hello" as{TypeError} Null;
   dynamic g = null;
   g = "hello";
-  g{dynamic}.foo();
+  g.foo();
   self::h = "hello";
-  self::h{dynamic}.foo();
+  self::h.foo();
   self::foo((core::Object* x) → Null => null);
   self::foo((core::Object* x) → Null => throw "not implemented");
 }
diff --git a/pkg/front_end/testcases/inference/null_literal_should_not_infer_as_bottom.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/null_literal_should_not_infer_as_bottom.dart.weak.transformed.expect
index 4344e6b..e3fae9a 100644
--- a/pkg/front_end/testcases/inference/null_literal_should_not_infer_as_bottom.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/null_literal_should_not_infer_as_bottom.dart.weak.transformed.expect
@@ -6,13 +6,13 @@
 static method foo((core::Object*) →* core::int* f) → void {}
 static method test() → dynamic {
   (core::Object*) →* Null f = (core::Object* x) → Null => null;
-  core::String* y = f(42){(core::Object*) →* Null};
+  core::String* y = f.call(42);
   f = (core::Object* x) → Null => "hello" as{TypeError} Null;
   dynamic g = null;
   g = "hello";
-  g{dynamic}.foo();
+  g.foo();
   self::h = "hello";
-  self::h{dynamic}.foo();
+  self::h.foo();
   self::foo((core::Object* x) → Null => null);
   self::foo((core::Object* x) → Null => throw "not implemented");
 }
diff --git a/pkg/front_end/testcases/inference/overloaded_int_operators.dart.weak.expect b/pkg/front_end/testcases/inference/overloaded_int_operators.dart.weak.expect
index 09b660d..6a9ab0d 100644
--- a/pkg/front_end/testcases/inference/overloaded_int_operators.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/overloaded_int_operators.dart.weak.expect
@@ -6,40 +6,40 @@
   core::num* n = 1;
   core::int* i = 1;
   core::double* d = 1.0;
-  core::double* ddPlus = d.{core::double::+}(d){(core::num*) →* core::double*};
-  core::double* ddMinus = d.{core::double::-}(d){(core::num*) →* core::double*};
-  core::double* ddTimes = d.{core::double::*}(d){(core::num*) →* core::double*};
-  core::double* ddMod = d.{core::double::%}(d){(core::num*) →* core::double*};
-  core::double* diPlus = d.{core::double::+}(i){(core::num*) →* core::double*};
-  core::double* diMinus = d.{core::double::-}(i){(core::num*) →* core::double*};
-  core::double* diTimes = d.{core::double::*}(i){(core::num*) →* core::double*};
-  core::double* diMod = d.{core::double::%}(i){(core::num*) →* core::double*};
-  core::double* dnPlus = d.{core::double::+}(n){(core::num*) →* core::double*};
-  core::double* dnMinus = d.{core::double::-}(n){(core::num*) →* core::double*};
-  core::double* dnTimes = d.{core::double::*}(n){(core::num*) →* core::double*};
-  core::double* dnMod = d.{core::double::%}(n){(core::num*) →* core::double*};
-  core::double* idPlus = i.{core::num::+}(d){(core::num*) →* core::double*};
-  core::double* idMinus = i.{core::num::-}(d){(core::num*) →* core::double*};
-  core::double* idTimes = i.{core::num::*}(d){(core::num*) →* core::double*};
-  core::double* idMod = i.{core::num::%}(d){(core::num*) →* core::double*};
-  core::int* iiPlus = i.{core::num::+}(i){(core::num*) →* core::int*};
-  core::int* iiMinus = i.{core::num::-}(i){(core::num*) →* core::int*};
-  core::int* iiTimes = i.{core::num::*}(i){(core::num*) →* core::int*};
-  core::int* iiMod = i.{core::num::%}(i){(core::num*) →* core::int*};
-  core::num* inPlus = i.{core::num::+}(n){(core::num*) →* core::num*};
-  core::num* inMinus = i.{core::num::-}(n){(core::num*) →* core::num*};
-  core::num* inTimes = i.{core::num::*}(n){(core::num*) →* core::num*};
-  core::num* inMod = i.{core::num::%}(n){(core::num*) →* core::num*};
-  core::num* ndPlus = n.{core::num::+}(d){(core::num*) →* core::num*};
-  core::num* ndMinus = n.{core::num::-}(d){(core::num*) →* core::num*};
-  core::num* ndTimes = n.{core::num::*}(d){(core::num*) →* core::num*};
-  core::num* ndMod = n.{core::num::%}(d){(core::num*) →* core::num*};
-  core::num* niPlus = n.{core::num::+}(i){(core::num*) →* core::num*};
-  core::num* niMinus = n.{core::num::-}(i){(core::num*) →* core::num*};
-  core::num* niTimes = n.{core::num::*}(i){(core::num*) →* core::num*};
-  core::num* niMod = n.{core::num::%}(i){(core::num*) →* core::num*};
-  core::num* nnPlus = n.{core::num::+}(n){(core::num*) →* core::num*};
-  core::num* nnMinus = n.{core::num::-}(n){(core::num*) →* core::num*};
-  core::num* nnTimes = n.{core::num::*}(n){(core::num*) →* core::num*};
-  core::num* nnMod = n.{core::num::%}(n){(core::num*) →* core::num*};
+  core::double* ddPlus = d.{core::double::+}(d);
+  core::double* ddMinus = d.{core::double::-}(d);
+  core::double* ddTimes = d.{core::double::*}(d);
+  core::double* ddMod = d.{core::double::%}(d);
+  core::double* diPlus = d.{core::double::+}(i);
+  core::double* diMinus = d.{core::double::-}(i);
+  core::double* diTimes = d.{core::double::*}(i);
+  core::double* diMod = d.{core::double::%}(i);
+  core::double* dnPlus = d.{core::double::+}(n);
+  core::double* dnMinus = d.{core::double::-}(n);
+  core::double* dnTimes = d.{core::double::*}(n);
+  core::double* dnMod = d.{core::double::%}(n);
+  core::double* idPlus = i.{core::num::+}(d);
+  core::double* idMinus = i.{core::num::-}(d);
+  core::double* idTimes = i.{core::num::*}(d);
+  core::double* idMod = i.{core::num::%}(d);
+  core::int* iiPlus = i.{core::num::+}(i);
+  core::int* iiMinus = i.{core::num::-}(i);
+  core::int* iiTimes = i.{core::num::*}(i);
+  core::int* iiMod = i.{core::num::%}(i);
+  core::num* inPlus = i.{core::num::+}(n);
+  core::num* inMinus = i.{core::num::-}(n);
+  core::num* inTimes = i.{core::num::*}(n);
+  core::num* inMod = i.{core::num::%}(n);
+  core::num* ndPlus = n.{core::num::+}(d);
+  core::num* ndMinus = n.{core::num::-}(d);
+  core::num* ndTimes = n.{core::num::*}(d);
+  core::num* ndMod = n.{core::num::%}(d);
+  core::num* niPlus = n.{core::num::+}(i);
+  core::num* niMinus = n.{core::num::-}(i);
+  core::num* niTimes = n.{core::num::*}(i);
+  core::num* niMod = n.{core::num::%}(i);
+  core::num* nnPlus = n.{core::num::+}(n);
+  core::num* nnMinus = n.{core::num::-}(n);
+  core::num* nnTimes = n.{core::num::*}(n);
+  core::num* nnMod = n.{core::num::%}(n);
 }
diff --git a/pkg/front_end/testcases/inference/overloaded_int_operators.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/overloaded_int_operators.dart.weak.transformed.expect
index 09b660d..6a9ab0d 100644
--- a/pkg/front_end/testcases/inference/overloaded_int_operators.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/overloaded_int_operators.dart.weak.transformed.expect
@@ -6,40 +6,40 @@
   core::num* n = 1;
   core::int* i = 1;
   core::double* d = 1.0;
-  core::double* ddPlus = d.{core::double::+}(d){(core::num*) →* core::double*};
-  core::double* ddMinus = d.{core::double::-}(d){(core::num*) →* core::double*};
-  core::double* ddTimes = d.{core::double::*}(d){(core::num*) →* core::double*};
-  core::double* ddMod = d.{core::double::%}(d){(core::num*) →* core::double*};
-  core::double* diPlus = d.{core::double::+}(i){(core::num*) →* core::double*};
-  core::double* diMinus = d.{core::double::-}(i){(core::num*) →* core::double*};
-  core::double* diTimes = d.{core::double::*}(i){(core::num*) →* core::double*};
-  core::double* diMod = d.{core::double::%}(i){(core::num*) →* core::double*};
-  core::double* dnPlus = d.{core::double::+}(n){(core::num*) →* core::double*};
-  core::double* dnMinus = d.{core::double::-}(n){(core::num*) →* core::double*};
-  core::double* dnTimes = d.{core::double::*}(n){(core::num*) →* core::double*};
-  core::double* dnMod = d.{core::double::%}(n){(core::num*) →* core::double*};
-  core::double* idPlus = i.{core::num::+}(d){(core::num*) →* core::double*};
-  core::double* idMinus = i.{core::num::-}(d){(core::num*) →* core::double*};
-  core::double* idTimes = i.{core::num::*}(d){(core::num*) →* core::double*};
-  core::double* idMod = i.{core::num::%}(d){(core::num*) →* core::double*};
-  core::int* iiPlus = i.{core::num::+}(i){(core::num*) →* core::int*};
-  core::int* iiMinus = i.{core::num::-}(i){(core::num*) →* core::int*};
-  core::int* iiTimes = i.{core::num::*}(i){(core::num*) →* core::int*};
-  core::int* iiMod = i.{core::num::%}(i){(core::num*) →* core::int*};
-  core::num* inPlus = i.{core::num::+}(n){(core::num*) →* core::num*};
-  core::num* inMinus = i.{core::num::-}(n){(core::num*) →* core::num*};
-  core::num* inTimes = i.{core::num::*}(n){(core::num*) →* core::num*};
-  core::num* inMod = i.{core::num::%}(n){(core::num*) →* core::num*};
-  core::num* ndPlus = n.{core::num::+}(d){(core::num*) →* core::num*};
-  core::num* ndMinus = n.{core::num::-}(d){(core::num*) →* core::num*};
-  core::num* ndTimes = n.{core::num::*}(d){(core::num*) →* core::num*};
-  core::num* ndMod = n.{core::num::%}(d){(core::num*) →* core::num*};
-  core::num* niPlus = n.{core::num::+}(i){(core::num*) →* core::num*};
-  core::num* niMinus = n.{core::num::-}(i){(core::num*) →* core::num*};
-  core::num* niTimes = n.{core::num::*}(i){(core::num*) →* core::num*};
-  core::num* niMod = n.{core::num::%}(i){(core::num*) →* core::num*};
-  core::num* nnPlus = n.{core::num::+}(n){(core::num*) →* core::num*};
-  core::num* nnMinus = n.{core::num::-}(n){(core::num*) →* core::num*};
-  core::num* nnTimes = n.{core::num::*}(n){(core::num*) →* core::num*};
-  core::num* nnMod = n.{core::num::%}(n){(core::num*) →* core::num*};
+  core::double* ddPlus = d.{core::double::+}(d);
+  core::double* ddMinus = d.{core::double::-}(d);
+  core::double* ddTimes = d.{core::double::*}(d);
+  core::double* ddMod = d.{core::double::%}(d);
+  core::double* diPlus = d.{core::double::+}(i);
+  core::double* diMinus = d.{core::double::-}(i);
+  core::double* diTimes = d.{core::double::*}(i);
+  core::double* diMod = d.{core::double::%}(i);
+  core::double* dnPlus = d.{core::double::+}(n);
+  core::double* dnMinus = d.{core::double::-}(n);
+  core::double* dnTimes = d.{core::double::*}(n);
+  core::double* dnMod = d.{core::double::%}(n);
+  core::double* idPlus = i.{core::num::+}(d);
+  core::double* idMinus = i.{core::num::-}(d);
+  core::double* idTimes = i.{core::num::*}(d);
+  core::double* idMod = i.{core::num::%}(d);
+  core::int* iiPlus = i.{core::num::+}(i);
+  core::int* iiMinus = i.{core::num::-}(i);
+  core::int* iiTimes = i.{core::num::*}(i);
+  core::int* iiMod = i.{core::num::%}(i);
+  core::num* inPlus = i.{core::num::+}(n);
+  core::num* inMinus = i.{core::num::-}(n);
+  core::num* inTimes = i.{core::num::*}(n);
+  core::num* inMod = i.{core::num::%}(n);
+  core::num* ndPlus = n.{core::num::+}(d);
+  core::num* ndMinus = n.{core::num::-}(d);
+  core::num* ndTimes = n.{core::num::*}(d);
+  core::num* ndMod = n.{core::num::%}(d);
+  core::num* niPlus = n.{core::num::+}(i);
+  core::num* niMinus = n.{core::num::-}(i);
+  core::num* niTimes = n.{core::num::*}(i);
+  core::num* niMod = n.{core::num::%}(i);
+  core::num* nnPlus = n.{core::num::+}(n);
+  core::num* nnMinus = n.{core::num::-}(n);
+  core::num* nnTimes = n.{core::num::*}(n);
+  core::num* nnMod = n.{core::num::%}(n);
 }
diff --git a/pkg/front_end/testcases/inference/override_equals.dart b/pkg/front_end/testcases/inference/override_equals.dart
index 527dbf9..d2ed4ba 100644
--- a/pkg/front_end/testcases/inference/override_equals.dart
+++ b/pkg/front_end/testcases/inference/override_equals.dart
@@ -26,11 +26,11 @@
 test() {
   NullEquality n = new NullEquality();
   var /*@ type=bool* */ equals_self = n /*@target=NullEquality.==*/ == n;
-  var /*@ type=bool* */ equals_null = n  == null;
-  var /*@ type=bool* */ null_equals = null  == n;
+  var /*@ type=bool* */ equals_null = n /*@target=NullEquality.==*/ == null;
+  var /*@ type=bool* */ null_equals = null /*@target=Object.==*/ == n;
   var /*@ type=bool* */ not_equals_self = n /*@target=NullEquality.==*/ != n;
-  var /*@ type=bool* */ not_equals_null = n  != null;
-  var /*@ type=bool* */ null_not_equals = null  != n;
+  var /*@ type=bool* */ not_equals_null = n /*@target=NullEquality.==*/ != null;
+  var /*@ type=bool* */ null_not_equals = null /*@target=Object.==*/ != n;
 }
 
 main() {
diff --git a/pkg/front_end/testcases/inference/override_equals.dart.weak.expect b/pkg/front_end/testcases/inference/override_equals.dart.weak.expect
index 736b7cd..6f3dcc4 100644
--- a/pkg/front_end/testcases/inference/override_equals.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/override_equals.dart.weak.expect
@@ -32,16 +32,16 @@
 }
 static method test() → dynamic {
   self::NullEquality* n = new self::NullEquality::•();
-  core::bool* equals_self = n =={self::NullEquality::==}{(core::Object*) →* Null} n;
-  core::bool* equals_null = n == null;
-  core::bool* null_equals = n == null;
-  core::bool* not_equals_self = !(n =={self::NullEquality::==}{(core::Object*) →* Null} n);
-  core::bool* not_equals_null = !(n == null);
-  core::bool* null_not_equals = !(n == null);
+  core::bool* equals_self = n.{self::NullEquality::==}(n);
+  core::bool* equals_null = n.{self::NullEquality::==}(null);
+  core::bool* null_equals = null.{core::Object::==}(n);
+  core::bool* not_equals_self = !n.{self::NullEquality::==}(n);
+  core::bool* not_equals_null = !n.{self::NullEquality::==}(null);
+  core::bool* null_not_equals = !null.{core::Object::==}(n);
 }
 static method main() → dynamic {
   self::test();
-  new self::SubNullEquality::•().{self::SubNullEquality::test}(){() →* void};
+  new self::SubNullEquality::•().{self::SubNullEquality::test}();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/override_equals.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/override_equals.dart.weak.transformed.expect
index 736b7cd..6f3dcc4 100644
--- a/pkg/front_end/testcases/inference/override_equals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/override_equals.dart.weak.transformed.expect
@@ -32,16 +32,16 @@
 }
 static method test() → dynamic {
   self::NullEquality* n = new self::NullEquality::•();
-  core::bool* equals_self = n =={self::NullEquality::==}{(core::Object*) →* Null} n;
-  core::bool* equals_null = n == null;
-  core::bool* null_equals = n == null;
-  core::bool* not_equals_self = !(n =={self::NullEquality::==}{(core::Object*) →* Null} n);
-  core::bool* not_equals_null = !(n == null);
-  core::bool* null_not_equals = !(n == null);
+  core::bool* equals_self = n.{self::NullEquality::==}(n);
+  core::bool* equals_null = n.{self::NullEquality::==}(null);
+  core::bool* null_equals = null.{core::Object::==}(n);
+  core::bool* not_equals_self = !n.{self::NullEquality::==}(n);
+  core::bool* not_equals_null = !n.{self::NullEquality::==}(null);
+  core::bool* null_not_equals = !null.{core::Object::==}(n);
 }
 static method main() → dynamic {
   self::test();
-  new self::SubNullEquality::•().{self::SubNullEquality::test}(){() →* void};
+  new self::SubNullEquality::•().{self::SubNullEquality::test}();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/inference/promote_bounds.dart.weak.expect b/pkg/front_end/testcases/inference/promote_bounds.dart.weak.expect
index cdec2e88..2559222 100644
--- a/pkg/front_end/testcases/inference/promote_bounds.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/promote_bounds.dart.weak.expect
@@ -26,10 +26,10 @@
 }
 static method f<T extends self::B*>(self::f::T* a) → void {
   if(a is core::String*) {
-    a.{self::B::foo}(){() →* void};
+    a.{self::B::foo}();
   }
   if(a is self::C*) {
-    a{self::f::T* & self::C* /* '*' & '*' = '*' */}.{self::C::bar}(){() →* void};
+    a{self::f::T* & self::C* /* '*' & '*' = '*' */}.{self::C::bar}();
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/promote_bounds.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/promote_bounds.dart.weak.transformed.expect
index cdec2e88..2559222 100644
--- a/pkg/front_end/testcases/inference/promote_bounds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/promote_bounds.dart.weak.transformed.expect
@@ -26,10 +26,10 @@
 }
 static method f<T extends self::B*>(self::f::T* a) → void {
   if(a is core::String*) {
-    a.{self::B::foo}(){() →* void};
+    a.{self::B::foo}();
   }
   if(a is self::C*) {
-    a{self::f::T* & self::C* /* '*' & '*' = '*' */}.{self::C::bar}(){() →* void};
+    a{self::f::T* & self::C* /* '*' & '*' = '*' */}.{self::C::bar}();
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.weak.expect b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.weak.expect
index 3e27040..55a2a96 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.weak.expect
@@ -21,6 +21,6 @@
 static method main() → dynamic {
   self::A* a = new self::A::•();
   self::A* b = a;
-  core::print(a.{self::A::x}{core::int*});
-  core::print(a.{self::A::x}{core::int*}.{core::num::+}(2){(core::num*) →* core::int*});
+  core::print(a.{self::A::x});
+  core::print(a.{self::A::x}.{core::num::+}(2));
 }
diff --git a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.weak.transformed.expect
index 3e27040..55a2a96 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.weak.transformed.expect
@@ -21,6 +21,6 @@
 static method main() → dynamic {
   self::A* a = new self::A::•();
   self::A* b = a;
-  core::print(a.{self::A::x}{core::int*});
-  core::print(a.{self::A::x}{core::int*}.{core::num::+}(2){(core::num*) →* core::int*});
+  core::print(a.{self::A::x});
+  core::print(a.{self::A::x}.{core::num::+}(2));
 }
diff --git a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.weak.expect b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.weak.expect
index 06148db..521cbc3 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.weak.expect
@@ -21,6 +21,6 @@
 static method main() → dynamic {
   dynamic a = new self::A::•();
   self::A* b = a as{TypeError,ForDynamic} self::A*;
-  core::print(a{dynamic}.x);
-  core::print(a{dynamic}.x{dynamic}.+(2));
+  core::print(a.x);
+  core::print(a.x.+(2));
 }
diff --git a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.weak.transformed.expect
index 06148db..521cbc3 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.weak.transformed.expect
@@ -21,6 +21,6 @@
 static method main() → dynamic {
   dynamic a = new self::A::•();
   self::A* b = a as{TypeError,ForDynamic} self::A*;
-  core::print(a{dynamic}.x);
-  core::print(a{dynamic}.x{dynamic}.+(2));
+  core::print(a.x);
+  core::print(a.x.+(2));
 }
diff --git a/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.weak.expect b/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.weak.expect
index 91157a6..10b1dde 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.weak.expect
@@ -68,7 +68,7 @@
 }
 static method main() → void {
   self::D* d1 = new self::D::•();
-  core::print(d1.{self::D::c}{self::C*}.{self::C::b}{self::B*}.{self::B::a}{self::A*}.{self::A::x}{core::int*});
+  core::print(d1.{self::D::c}.{self::C::b}.{self::B::a}.{self::A::x});
   self::D* d2 = new self::D::•();
-  core::print(d2.{self::D::c}{self::C*}.{self::C::b}{self::B*}.{self::B::a}{self::A*}.{self::A::x}{core::int*});
+  core::print(d2.{self::D::c}.{self::C::b}.{self::B::a}.{self::A::x});
 }
diff --git a/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.weak.transformed.expect
index 91157a6..10b1dde 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.weak.transformed.expect
@@ -68,7 +68,7 @@
 }
 static method main() → void {
   self::D* d1 = new self::D::•();
-  core::print(d1.{self::D::c}{self::C*}.{self::C::b}{self::B*}.{self::B::a}{self::A*}.{self::A::x}{core::int*});
+  core::print(d1.{self::D::c}.{self::C::b}.{self::B::a}.{self::A::x});
   self::D* d2 = new self::D::•();
-  core::print(d2.{self::D::c}{self::C*}.{self::C::b}{self::B*}.{self::B::a}{self::A*}.{self::A::x}{core::int*});
+  core::print(d2.{self::D::c}.{self::C::b}.{self::B::a}.{self::A::x});
 }
diff --git a/pkg/front_end/testcases/inference/property_get_toplevel.dart.weak.expect b/pkg/front_end/testcases/inference/property_get_toplevel.dart.weak.expect
index 4c93980..85b4185 100644
--- a/pkg/front_end/testcases/inference/property_get_toplevel.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/property_get_toplevel.dart.weak.expect
@@ -23,6 +23,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c = new self::C::•();
-static field () →* core::int* function_ref = self::c.{self::C::function}{() →* core::int*};
-static field core::List<() →* core::int*>* function_ref_list = <() →* core::int*>[self::c.{self::C::function}{() →* core::int*}];
+static field () →* core::int* function_ref = self::c.{self::C::function};
+static field core::List<() →* core::int*>* function_ref_list = <() →* core::int*>[self::c.{self::C::function}];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/property_get_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/property_get_toplevel.dart.weak.transformed.expect
index eab5b2e..32c55ca 100644
--- a/pkg/front_end/testcases/inference/property_get_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/property_get_toplevel.dart.weak.transformed.expect
@@ -23,6 +23,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c = new self::C::•();
-static field () →* core::int* function_ref = self::c.{self::C::function}{() →* core::int*};
-static field core::List<() →* core::int*>* function_ref_list = core::_GrowableList::_literal1<() →* core::int*>(self::c.{self::C::function}{() →* core::int*});
+static field () →* core::int* function_ref = self::c.{self::C::function};
+static field core::List<() →* core::int*>* function_ref_list = core::_GrowableList::_literal1<() →* core::int*>(self::c.{self::C::function});
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.weak.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.weak.expect
index c4b9a8c..c6c59b5 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.weak.expect
@@ -8,10 +8,10 @@
     : super core::Object::•()
     ;
   method op(core::double* b) → void {
-    core::double* r1 = this.{self::C::a}{self::C::T*}.{core::num::+}(b){(core::num*) →* core::num*} as{TypeError} core::double*;
-    core::double* r2 = this.{self::C::a}{self::C::T*}.{core::num::-}(b){(core::num*) →* core::num*} as{TypeError} core::double*;
-    core::double* r3 = this.{self::C::a}{self::C::T*}.{core::num::*}(b){(core::num*) →* core::num*} as{TypeError} core::double*;
-    core::double* r4 = this.{self::C::a}{self::C::T*}.{core::num::/}(b){(core::num*) →* core::double*};
+    core::double* r1 = this.{self::C::a}.{core::num::+}(b) as{TypeError} core::double*;
+    core::double* r2 = this.{self::C::a}.{core::num::-}(b) as{TypeError} core::double*;
+    core::double* r3 = this.{self::C::a}.{core::num::*}(b) as{TypeError} core::double*;
+    core::double* r4 = this.{self::C::a}.{core::num::/}(b);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.weak.transformed.expect
index c4b9a8c..6560a3f 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.weak.transformed.expect
@@ -8,10 +8,10 @@
     : super core::Object::•()
     ;
   method op(core::double* b) → void {
-    core::double* r1 = this.{self::C::a}{self::C::T*}.{core::num::+}(b){(core::num*) →* core::num*} as{TypeError} core::double*;
-    core::double* r2 = this.{self::C::a}{self::C::T*}.{core::num::-}(b){(core::num*) →* core::num*} as{TypeError} core::double*;
-    core::double* r3 = this.{self::C::a}{self::C::T*}.{core::num::*}(b){(core::num*) →* core::num*} as{TypeError} core::double*;
-    core::double* r4 = this.{self::C::a}{self::C::T*}.{core::num::/}(b){(core::num*) →* core::double*};
+    core::double* r1 = this.{self::C::a}.{core::num::+}(b);
+    core::double* r2 = this.{self::C::a}.{core::num::-}(b);
+    core::double* r3 = this.{self::C::a}.{core::num::*}(b);
+    core::double* r4 = this.{self::C::a}.{core::num::/}(b);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.weak.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.weak.expect
index 23ed30d..729edd2 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.weak.expect
@@ -8,14 +8,14 @@
     : super core::Object::•()
     ;
   method op(core::int* b) → void {
-    self::C::T* r1 = this.{self::C::a}{self::C::T*}.{core::num::+}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    self::C::T* r2 = this.{self::C::a}{self::C::T*}.{core::num::-}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    self::C::T* r3 = this.{self::C::a}{self::C::T*}.{core::num::*}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
+    self::C::T* r1 = this.{self::C::a}.{core::num::+}(b) as{TypeError} self::C::T*;
+    self::C::T* r2 = this.{self::C::a}.{core::num::-}(b) as{TypeError} self::C::T*;
+    self::C::T* r3 = this.{self::C::a}.{core::num::*}(b) as{TypeError} self::C::T*;
   }
   method opEq(core::int* b) → void {
-    this.{self::C::a} = this.{self::C::a}{self::C::T*}.{core::num::+}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    this.{self::C::a} = this.{self::C::a}{self::C::T*}.{core::num::-}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    this.{self::C::a} = this.{self::C::a}{self::C::T*}.{core::num::*}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
+    this.{self::C::a} = this.{self::C::a}.{core::num::+}(b) as{TypeError} self::C::T*;
+    this.{self::C::a} = this.{self::C::a}.{core::num::-}(b) as{TypeError} self::C::T*;
+    this.{self::C::a} = this.{self::C::a}.{core::num::*}(b) as{TypeError} self::C::T*;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.weak.transformed.expect
index 23ed30d..729edd2 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.weak.transformed.expect
@@ -8,14 +8,14 @@
     : super core::Object::•()
     ;
   method op(core::int* b) → void {
-    self::C::T* r1 = this.{self::C::a}{self::C::T*}.{core::num::+}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    self::C::T* r2 = this.{self::C::a}{self::C::T*}.{core::num::-}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    self::C::T* r3 = this.{self::C::a}{self::C::T*}.{core::num::*}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
+    self::C::T* r1 = this.{self::C::a}.{core::num::+}(b) as{TypeError} self::C::T*;
+    self::C::T* r2 = this.{self::C::a}.{core::num::-}(b) as{TypeError} self::C::T*;
+    self::C::T* r3 = this.{self::C::a}.{core::num::*}(b) as{TypeError} self::C::T*;
   }
   method opEq(core::int* b) → void {
-    this.{self::C::a} = this.{self::C::a}{self::C::T*}.{core::num::+}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    this.{self::C::a} = this.{self::C::a}{self::C::T*}.{core::num::-}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    this.{self::C::a} = this.{self::C::a}{self::C::T*}.{core::num::*}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
+    this.{self::C::a} = this.{self::C::a}.{core::num::+}(b) as{TypeError} self::C::T*;
+    this.{self::C::a} = this.{self::C::a}.{core::num::-}(b) as{TypeError} self::C::T*;
+    this.{self::C::a} = this.{self::C::a}.{core::num::*}(b) as{TypeError} self::C::T*;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.weak.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.weak.expect
index 591ea9e..fb481ea 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.weak.expect
@@ -8,14 +8,14 @@
     : super core::Object::•()
     ;
   method op(generic-covariant-impl self::C::T* b) → void {
-    self::C::T* r1 = this.{self::C::a}{self::C::T*}.{core::num::+}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    self::C::T* r2 = this.{self::C::a}{self::C::T*}.{core::num::-}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    self::C::T* r3 = this.{self::C::a}{self::C::T*}.{core::num::*}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
+    self::C::T* r1 = this.{self::C::a}.{core::num::+}(b) as{TypeError} self::C::T*;
+    self::C::T* r2 = this.{self::C::a}.{core::num::-}(b) as{TypeError} self::C::T*;
+    self::C::T* r3 = this.{self::C::a}.{core::num::*}(b) as{TypeError} self::C::T*;
   }
   method opEq(generic-covariant-impl self::C::T* b) → void {
-    this.{self::C::a} = this.{self::C::a}{self::C::T*}.{core::num::+}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    this.{self::C::a} = this.{self::C::a}{self::C::T*}.{core::num::-}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    this.{self::C::a} = this.{self::C::a}{self::C::T*}.{core::num::*}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
+    this.{self::C::a} = this.{self::C::a}.{core::num::+}(b) as{TypeError} self::C::T*;
+    this.{self::C::a} = this.{self::C::a}.{core::num::-}(b) as{TypeError} self::C::T*;
+    this.{self::C::a} = this.{self::C::a}.{core::num::*}(b) as{TypeError} self::C::T*;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.weak.transformed.expect
index 591ea9e..fb481ea 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.weak.transformed.expect
@@ -8,14 +8,14 @@
     : super core::Object::•()
     ;
   method op(generic-covariant-impl self::C::T* b) → void {
-    self::C::T* r1 = this.{self::C::a}{self::C::T*}.{core::num::+}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    self::C::T* r2 = this.{self::C::a}{self::C::T*}.{core::num::-}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    self::C::T* r3 = this.{self::C::a}{self::C::T*}.{core::num::*}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
+    self::C::T* r1 = this.{self::C::a}.{core::num::+}(b) as{TypeError} self::C::T*;
+    self::C::T* r2 = this.{self::C::a}.{core::num::-}(b) as{TypeError} self::C::T*;
+    self::C::T* r3 = this.{self::C::a}.{core::num::*}(b) as{TypeError} self::C::T*;
   }
   method opEq(generic-covariant-impl self::C::T* b) → void {
-    this.{self::C::a} = this.{self::C::a}{self::C::T*}.{core::num::+}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    this.{self::C::a} = this.{self::C::a}{self::C::T*}.{core::num::-}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
-    this.{self::C::a} = this.{self::C::a}{self::C::T*}.{core::num::*}(b){(core::num*) →* core::num*} as{TypeError} self::C::T*;
+    this.{self::C::a} = this.{self::C::a}.{core::num::+}(b) as{TypeError} self::C::T*;
+    this.{self::C::a} = this.{self::C::a}.{core::num::-}(b) as{TypeError} self::C::T*;
+    this.{self::C::a} = this.{self::C::a}.{core::num::*}(b) as{TypeError} self::C::T*;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/static_method_tear_off.dart.weak.outline.expect b/pkg/front_end/testcases/inference/static_method_tear_off.dart.weak.outline.expect
index b473f71..37761d3 100644
--- a/pkg/front_end/testcases/inference/static_method_tear_off.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/static_method_tear_off.dart.weak.outline.expect
@@ -24,5 +24,5 @@
 
 
 Extra constant evaluation status:
-Evaluated: StaticTearOff @ org-dartlang-testcase:///static_method_tear_off.dart:8:13 -> TearOffConstant(C.f)
+Evaluated: StaticGet @ org-dartlang-testcase:///static_method_tear_off.dart:8:13 -> TearOffConstant(C.f)
 Extra constant evaluation: evaluated: 1, effectively constant: 1
diff --git a/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.weak.expect b/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.weak.expect
index 23c68ac..b887901 100644
--- a/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.weak.expect
@@ -23,7 +23,7 @@
     : super self::C::•()
     ;
   method g() → void {
-    core::int* y = super.{self::C::f}(){() →* core::int*};
+    core::int* y = super.{self::C::f}.call();
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.weak.transformed.expect
index 23c68ac..b887901 100644
--- a/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
     : super self::C::•()
     ;
   method g() → void {
-    core::int* y = super.{self::C::f}(){() →* core::int*};
+    core::int* y = super.{self::C::f}.call();
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.weak.expect b/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.weak.expect
index f32675f..3448c3a 100644
--- a/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.weak.expect
@@ -40,7 +40,7 @@
     : super self::C::•()
     ;
   method g() → void {
-    core::int* y = super.{self::C::f}.{self::CallableClass::call}(){() →* core::int*};
+    core::int* y = super.{self::C::f}.{self::CallableClass::call}();
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.weak.transformed.expect
index f32675f..3448c3a 100644
--- a/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.weak.transformed.expect
@@ -40,7 +40,7 @@
     : super self::C::•()
     ;
   method g() → void {
-    core::int* y = super.{self::C::f}.{self::CallableClass::call}(){() →* core::int*};
+    core::int* y = super.{self::C::f}.{self::CallableClass::call}();
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/switch_continue.dart.weak.expect b/pkg/front_end/testcases/inference/switch_continue.dart.weak.expect
index 64406d0..17603ab 100644
--- a/pkg/front_end/testcases/inference/switch_continue.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/switch_continue.dart.weak.expect
@@ -8,13 +8,13 @@
     #L2:
     case #C1:
       {
-        f(){() →* void};
+        f.call();
         continue #L3;
       }
     #L3:
     case #C2:
       {
-        f(){() →* void};
+        f.call();
         break #L1;
       }
   }
diff --git a/pkg/front_end/testcases/inference/switch_continue.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/switch_continue.dart.weak.transformed.expect
index 64406d0..17603ab 100644
--- a/pkg/front_end/testcases/inference/switch_continue.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/switch_continue.dart.weak.transformed.expect
@@ -8,13 +8,13 @@
     #L2:
     case #C1:
       {
-        f(){() →* void};
+        f.call();
         continue #L3;
       }
     #L3:
     case #C2:
       {
-        f(){() →* void};
+        f.call();
         break #L1;
       }
   }
diff --git a/pkg/front_end/testcases/inference/try_catch.dart.weak.expect b/pkg/front_end/testcases/inference/try_catch.dart.weak.expect
index 086e91e..6035841 100644
--- a/pkg/front_end/testcases/inference/try_catch.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/try_catch.dart.weak.expect
@@ -50,7 +50,7 @@
 static method test(() →* void f) → void {
   try {
     core::int* x = 0;
-    f(){() →* void};
+    f.call();
   }
   on self::C* catch(no-exception-var) {
     core::int* x = 0;
diff --git a/pkg/front_end/testcases/inference/try_catch.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/try_catch.dart.weak.transformed.expect
index 086e91e..6035841 100644
--- a/pkg/front_end/testcases/inference/try_catch.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/try_catch.dart.weak.transformed.expect
@@ -50,7 +50,7 @@
 static method test(() →* void f) → void {
   try {
     core::int* x = 0;
-    f(){() →* void};
+    f.call();
   }
   on self::C* catch(no-exception-var) {
     core::int* x = 0;
diff --git a/pkg/front_end/testcases/inference/try_catch_finally.dart.weak.expect b/pkg/front_end/testcases/inference/try_catch_finally.dart.weak.expect
index 62db44d..e2c12ae 100644
--- a/pkg/front_end/testcases/inference/try_catch_finally.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/try_catch_finally.dart.weak.expect
@@ -51,7 +51,7 @@
   try
     try {
       core::int* x = 0;
-      f(){() →* void};
+      f.call();
     }
     on self::C* catch(no-exception-var) {
       core::int* x = 0;
diff --git a/pkg/front_end/testcases/inference/try_catch_finally.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/try_catch_finally.dart.weak.transformed.expect
index 62db44d..e2c12ae 100644
--- a/pkg/front_end/testcases/inference/try_catch_finally.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/try_catch_finally.dart.weak.transformed.expect
@@ -51,7 +51,7 @@
   try
     try {
       core::int* x = 0;
-      f(){() →* void};
+      f.call();
     }
     on self::C* catch(no-exception-var) {
       core::int* x = 0;
diff --git a/pkg/front_end/testcases/inference/try_catch_promotion.dart.weak.expect b/pkg/front_end/testcases/inference/try_catch_promotion.dart.weak.expect
index 0f37b73..adbb087 100644
--- a/pkg/front_end/testcases/inference/try_catch_promotion.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/try_catch_promotion.dart.weak.expect
@@ -39,7 +39,7 @@
 }
 static method test(() →* void f) → void {
   try {
-    f(){() →* void};
+    f.call();
   }
   on self::C* catch(final self::C* x, final core::StackTrace* y) {
     self::C* x1 = x;
diff --git a/pkg/front_end/testcases/inference/try_catch_promotion.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/try_catch_promotion.dart.weak.transformed.expect
index 0f37b73..adbb087 100644
--- a/pkg/front_end/testcases/inference/try_catch_promotion.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/try_catch_promotion.dart.weak.transformed.expect
@@ -39,7 +39,7 @@
 }
 static method test(() →* void f) → void {
   try {
-    f(){() →* void};
+    f.call();
   }
   on self::C* catch(final self::C* x, final core::StackTrace* y) {
     self::C* x1 = x;
diff --git a/pkg/front_end/testcases/inference/try_finally.dart.weak.expect b/pkg/front_end/testcases/inference/try_finally.dart.weak.expect
index f52f88a..bb417be 100644
--- a/pkg/front_end/testcases/inference/try_finally.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/try_finally.dart.weak.expect
@@ -5,7 +5,7 @@
 static method test(() →* void f) → void {
   try {
     core::int* x = 0;
-    f(){() →* void};
+    f.call();
   }
   finally {
     core::int* x = 0;
diff --git a/pkg/front_end/testcases/inference/try_finally.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/try_finally.dart.weak.transformed.expect
index f52f88a..bb417be 100644
--- a/pkg/front_end/testcases/inference/try_finally.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/try_finally.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
 static method test(() →* void f) → void {
   try {
     core::int* x = 0;
-    f(){() →* void};
+    f.call();
   }
   finally {
     core::int* x = 0;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_closure_call.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_closure_call.dart.weak.expect
index 4c0ed46..4fbbdae 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_closure_call.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_closure_call.dart.weak.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::double* v = ((dynamic x) → core::double* => 1.0)(() → core::int* {
+  core::double* v = ((dynamic x) → core::double* => 1.0).call(() → core::int* {
     return 1;
-  }){(dynamic) →* core::double*};
+  });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_closure_call.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_closure_call.dart.weak.transformed.expect
index 4c0ed46..4fbbdae 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_closure_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_closure_call.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::double* v = ((dynamic x) → core::double* => 1.0)(() → core::int* {
+  core::double* v = ((dynamic x) → core::double* => 1.0).call(() → core::int* {
     return 1;
-  }){(dynamic) →* core::double*};
+  });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param.dart.weak.expect
index 2ac59fb..89d0bd3 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param.dart.weak.expect
@@ -6,7 +6,7 @@
   return 1;
 });
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return <self::f::T*>[g(){() →* self::f::T*}];
+  return <self::f::T*>[g.call()];
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param.dart.weak.transformed.expect
index c0f9a58..951265d 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
   return 1;
 });
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return core::_GrowableList::_literal1<self::f::T*>(g(){() →* self::f::T*});
+  return core::_GrowableList::_literal1<self::f::T*>(g.call());
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.weak.expect
index ab6bbb7..2e3ca1e6 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.weak.expect
@@ -25,11 +25,11 @@
  - 'List' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
 var v = (f<dynamic>)(/*@returnType=int**/() {
-          ^"{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.
+          ^".>(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>)(/*@returnType=int**/() {
-                   ^"){dynamic}.call(() → core::int* {
+                   ^").call(() → core::int* {
   return 1;
 });
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return <self::f::T*>[g(){() →* self::f::T*}];
+  return <self::f::T*>[g.call()];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.weak.transformed.expect
index 96fca33..c8e4727 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.weak.transformed.expect
@@ -25,11 +25,11 @@
  - 'List' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
 var v = (f<dynamic>)(/*@returnType=int**/() {
-          ^"{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.
+          ^".>(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>)(/*@returnType=int**/() {
-                   ^"){dynamic}.call(() → core::int* {
+                   ^").call(() → core::int* {
   return 1;
 });
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return core::_GrowableList::_literal1<self::f::T*>(g(){() →* self::f::T*});
+  return core::_GrowableList::_literal1<self::f::T*>(g.call());
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.expect
index ca3de8b..322ca8f 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.expect
@@ -2,11 +2,11 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<dynamic>* v = (#C1)<dynamic>(() → core::int* {
+static field core::List<dynamic>* v = (#C1).call<dynamic>(() → core::int* {
   return 1;
-}){(() →* dynamic) →* core::List<dynamic>*};
+});
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return <self::f::T*>[g(){() →* self::f::T*}];
+  return <self::f::T*>[g.call()];
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.transformed.expect
index 1124860..fd6b5b4 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.transformed.expect
@@ -2,11 +2,11 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<dynamic>* v = (#C1)<dynamic>(() → core::int* {
+static field core::List<dynamic>* v = (#C1).call<dynamic>(() → core::int* {
   return 1;
-}){(() →* dynamic) →* core::List<dynamic>*};
+});
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return core::_GrowableList::_literal1<self::f::T*>(g(){() →* self::f::T*});
+  return core::_GrowableList::_literal1<self::f::T*>(g.call());
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param.dart.weak.expect
index 06e337e..b005e12 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param.dart.weak.expect
@@ -6,7 +6,7 @@
   return 1;
 });
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return <self::f::T*>[g(){() →* self::f::T*}];
+  return <self::f::T*>[g.call()];
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param.dart.weak.transformed.expect
index e7d7199..bff0cad 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
   return 1;
 });
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return core::_GrowableList::_literal1<self::f::T*>(g(){() →* self::f::T*});
+  return core::_GrowableList::_literal1<self::f::T*>(g.call());
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.weak.expect
index d66c0af..938f89a 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.weak.expect
@@ -25,11 +25,11 @@
  - 'List' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
 var v = (f<int>)(/*@returnType=int**/() {
-          ^"{dynamic}.>(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.
+          ^".>(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>)(/*@returnType=int**/() {
-               ^"){dynamic}.call(() → core::int* {
+               ^").call(() → core::int* {
   return 1;
 });
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return <self::f::T*>[g(){() →* self::f::T*}];
+  return <self::f::T*>[g.call()];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.weak.transformed.expect
index 6c6b1ff..c983f6b 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.weak.transformed.expect
@@ -25,11 +25,11 @@
  - 'List' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
 var v = (f<int>)(/*@returnType=int**/() {
-          ^"{dynamic}.>(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.
+          ^".>(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>)(/*@returnType=int**/() {
-               ^"){dynamic}.call(() → core::int* {
+               ^").call(() → core::int* {
   return 1;
 });
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return core::_GrowableList::_literal1<self::f::T*>(g(){() →* self::f::T*});
+  return core::_GrowableList::_literal1<self::f::T*>(g.call());
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.expect
index 169486b..129610f 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.expect
@@ -2,11 +2,11 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<core::int*>* v = (#C1)<core::int*>(() → core::int* {
+static field core::List<core::int*>* v = (#C1).call<core::int*>(() → core::int* {
   return 1;
-}){(() →* core::int*) →* core::List<core::int*>*};
+});
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return <self::f::T*>[g(){() →* self::f::T*}];
+  return <self::f::T*>[g.call()];
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.transformed.expect
index 633c890..cf09c4f 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.transformed.expect
@@ -2,11 +2,11 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<core::int*>* v = (#C1)<core::int*>(() → core::int* {
+static field core::List<core::int*>* v = (#C1).call<core::int*>(() → core::int* {
   return 1;
-}){(() →* core::int*) →* core::List<core::int*>*};
+});
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return core::_GrowableList::_literal1<self::f::T*>(g(){() →* self::f::T*});
+  return core::_GrowableList::_literal1<self::f::T*>(g.call());
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param.dart.weak.expect
index 720cf75..4700f6a 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param.dart.weak.expect
@@ -8,4 +8,4 @@
   });
 }
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return <self::f::T*>[g(){() →* self::f::T*}];
+  return <self::f::T*>[g.call()];
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param.dart.weak.transformed.expect
index a4b1aff..6a725de 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param.dart.weak.transformed.expect
@@ -8,4 +8,4 @@
   });
 }
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return core::_GrowableList::_literal1<self::f::T*>(g(){() →* self::f::T*});
+  return core::_GrowableList::_literal1<self::f::T*>(g.call());
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.weak.expect
index bce5804..00386c6 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.weak.expect
@@ -3,12 +3,12 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::List<core::int*>* v = (#C1)<core::int*>(() → core::int* {
+  core::List<core::int*>* v = (#C1).call<core::int*>(() → core::int* {
     return 1;
-  }){(() →* core::int*) →* core::List<core::int*>*};
+  });
 }
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return <self::f::T*>[g(){() →* self::f::T*}];
+  return <self::f::T*>[g.call()];
 
 constants  {
   #C1 = tearoff self::f
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.weak.transformed.expect
index cb153d8..9c69fce 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.weak.transformed.expect
@@ -3,12 +3,12 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::List<core::int*>* v = (#C1)<core::int*>(() → core::int* {
+  core::List<core::int*>* v = (#C1).call<core::int*>(() → core::int* {
     return 1;
-  }){(() →* core::int*) →* core::List<core::int*>*};
+  });
 }
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return core::_GrowableList::_literal1<self::f::T*>(g(){() →* self::f::T*});
+  return core::_GrowableList::_literal1<self::f::T*>(g.call());
 
 constants  {
   #C1 = tearoff self::f
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.weak.expect
index 742f60c..76e37fd 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.weak.expect
@@ -3,9 +3,9 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::double* v = (#C1)(() → core::int* {
+  core::double* v = (#C1).call(() → core::int* {
     return 1;
-  }){(dynamic) →* core::double*};
+  });
 }
 static method f(dynamic x) → core::double*
   return 1.0;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.weak.transformed.expect
index 742f60c..76e37fd 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.weak.transformed.expect
@@ -3,9 +3,9 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::double* v = (#C1)(() → core::int* {
+  core::double* v = (#C1).call(() → core::int* {
     return 1;
-  }){(dynamic) →* core::double*};
+  });
 }
 static method f(dynamic x) → core::double*
   return 1.0;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.weak.expect
index 7011442a..102bdb33 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.weak.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
-    return <self::C::f::T*>[g(){() →* self::C::f::T*}];
+    return <self::C::f::T*>[g.call()];
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -22,5 +22,5 @@
 static method main() → dynamic {
   core::List<dynamic>* v = new self::C::•().{self::C::f}<dynamic>(() → core::int* {
     return 1;
-  }){(() →* dynamic) →* core::List<dynamic>*};
+  });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.weak.transformed.expect
index bdd5b5b..f2717b8 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
-    return core::_GrowableList::_literal1<self::C::f::T*>(g(){() →* self::C::f::T*});
+    return core::_GrowableList::_literal1<self::C::f::T*>(g.call());
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -22,5 +22,5 @@
 static method main() → dynamic {
   core::List<dynamic>* v = new self::C::•().{self::C::f}<dynamic>(() → core::int* {
     return 1;
-  }){(() →* dynamic) →* core::List<dynamic>*};
+  });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.weak.expect
index 3df5bcf..9921b26 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.weak.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
-    return <self::C::f::T*>[g(){() →* self::C::f::T*}];
+    return <self::C::f::T*>[g.call()];
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -22,5 +22,5 @@
 static method main() → dynamic {
   core::List<core::int*>* v = new self::C::•().{self::C::f}<core::int*>(() → core::int* {
     return 1;
-  }){(() →* core::int*) →* core::List<core::int*>*};
+  });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.weak.transformed.expect
index b967386..c33bf91 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
-    return core::_GrowableList::_literal1<self::C::f::T*>(g(){() →* self::C::f::T*});
+    return core::_GrowableList::_literal1<self::C::f::T*>(g.call());
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -22,5 +22,5 @@
 static method main() → dynamic {
   core::List<core::int*>* v = new self::C::•().{self::C::f}<core::int*>(() → core::int* {
     return 1;
-  }){(() →* core::int*) →* core::List<core::int*>*};
+  });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.weak.expect
index 3df5bcf..9921b26 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.weak.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
-    return <self::C::f::T*>[g(){() →* self::C::f::T*}];
+    return <self::C::f::T*>[g.call()];
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -22,5 +22,5 @@
 static method main() → dynamic {
   core::List<core::int*>* v = new self::C::•().{self::C::f}<core::int*>(() → core::int* {
     return 1;
-  }){(() →* core::int*) →* core::List<core::int*>*};
+  });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.weak.transformed.expect
index b967386..c33bf91 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
-    return core::_GrowableList::_literal1<self::C::f::T*>(g(){() →* self::C::f::T*});
+    return core::_GrowableList::_literal1<self::C::f::T*>(g.call());
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -22,5 +22,5 @@
 static method main() → dynamic {
   core::List<core::int*>* v = new self::C::•().{self::C::f}<core::int*>(() → core::int* {
     return 1;
-  }){(() →* core::int*) →* core::List<core::int*>*};
+  });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.weak.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.weak.expect
index f00aa66..bc8459a 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.weak.expect
@@ -21,7 +21,7 @@
 }
 static field core::double* v = new self::C::•().{self::C::f}(() → core::int* {
   return 1;
-}){(dynamic) →* core::double*};
+});
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.weak.transformed.expect
index f00aa66..bc8459a 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.weak.transformed.expect
@@ -21,7 +21,7 @@
 }
 static field core::double* v = new self::C::•().{self::C::f}(() → core::int* {
   return 1;
-}){(dynamic) →* core::double*};
+});
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.weak.expect b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.weak.expect
index f86a055..9277df0 100644
--- a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.weak.expect
@@ -5,7 +5,7 @@
 static field dynamic x = self::run<dynamic>(#C1);
 static method run<T extends core::Object* = dynamic>(() →* self::run::T* f) → self::run::T* {
   core::print("running");
-  self::run::T* t = f(){() →* self::run::T*};
+  self::run::T* t = f.call();
   core::print("done running");
   return t;
 }
diff --git a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.weak.transformed.expect
index f86a055..9277df0 100644
--- a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
 static field dynamic x = self::run<dynamic>(#C1);
 static method run<T extends core::Object* = dynamic>(() →* self::run::T* f) → self::run::T* {
   core::print("running");
-  self::run::T* t = f(){() →* self::run::T*};
+  self::run::T* t = f.call();
   core::print("done running");
   return t;
 }
diff --git a/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.weak.expect b/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.weak.expect
index a062019..6a3df44 100644
--- a/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.weak.expect
@@ -30,8 +30,8 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::A* a = new self::A::•();
-static field invalid-type b = () → () →* invalid-type => self::a.{self::A::f}<() →* invalid-type>(self::c){(() →* invalid-type) →* () →* invalid-type};
-static field () →* invalid-type c = () → invalid-type => self::a.{self::A::f}<invalid-type>(self::b){(invalid-type) →* invalid-type};
-static field () →* () →* core::int* d = () → () →* core::int* => self::a.{self::A::f}<() →* core::int*>(self::e){(() →* core::int*) →* () →* core::int*};
-static field () →* core::int* e = () → core::int* => self::a.{self::A::g}(self::d){(dynamic) →* core::int*};
+static field invalid-type b = () → () →* invalid-type => self::a.{self::A::f}<() →* invalid-type>(self::c);
+static field () →* invalid-type c = () → invalid-type => self::a.{self::A::f}<invalid-type>(self::b);
+static field () →* () →* core::int* d = () → () →* core::int* => self::a.{self::A::f}<() →* core::int*>(self::e);
+static field () →* core::int* e = () → core::int* => self::a.{self::A::g}(self::d);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.weak.transformed.expect
index a062019..6a3df44 100644
--- a/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.weak.transformed.expect
@@ -30,8 +30,8 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::A* a = new self::A::•();
-static field invalid-type b = () → () →* invalid-type => self::a.{self::A::f}<() →* invalid-type>(self::c){(() →* invalid-type) →* () →* invalid-type};
-static field () →* invalid-type c = () → invalid-type => self::a.{self::A::f}<invalid-type>(self::b){(invalid-type) →* invalid-type};
-static field () →* () →* core::int* d = () → () →* core::int* => self::a.{self::A::f}<() →* core::int*>(self::e){(() →* core::int*) →* () →* core::int*};
-static field () →* core::int* e = () → core::int* => self::a.{self::A::g}(self::d){(dynamic) →* core::int*};
+static field invalid-type b = () → () →* invalid-type => self::a.{self::A::f}<() →* invalid-type>(self::c);
+static field () →* invalid-type c = () → invalid-type => self::a.{self::A::f}<invalid-type>(self::b);
+static field () →* () →* core::int* d = () → () →* core::int* => self::a.{self::A::f}<() →* core::int*>(self::e);
+static field () →* core::int* e = () → core::int* => self::a.{self::A::g}(self::d);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.weak.expect b/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.weak.expect
index 3ae5f85..70eab38 100644
--- a/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.weak.expect
@@ -13,10 +13,10 @@
 static field core::int* intValue = 0;
 static field core::num* numValue = 0;
 static field core::double* doubleValue = 0.0;
-static field invalid-type a = () → core::num* => self::intValue.{core::num::+}(self::b as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
-static field dynamic b = self::a{dynamic}.call();
-static field () →* core::num* c = () → core::num* => self::numValue.{core::num::+}(self::d){(core::num*) →* core::num*};
-static field core::num* d = self::c(){() →* core::num*};
-static field () →* core::double* e = () → core::double* => self::doubleValue.{core::double::+}(self::f){(core::num*) →* core::double*};
-static field core::double* f = self::e(){() →* core::double*};
+static field invalid-type a = () → core::num* => self::intValue.{core::num::+}(self::b as{TypeError,ForDynamic} core::num*);
+static field dynamic b = self::a.call();
+static field () →* core::num* c = () → core::num* => self::numValue.{core::num::+}(self::d);
+static field core::num* d = self::c.call();
+static field () →* core::double* e = () → core::double* => self::doubleValue.{core::double::+}(self::f);
+static field core::double* f = self::e.call();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.weak.transformed.expect
index 3ae5f85..70eab38 100644
--- a/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.weak.transformed.expect
@@ -13,10 +13,10 @@
 static field core::int* intValue = 0;
 static field core::num* numValue = 0;
 static field core::double* doubleValue = 0.0;
-static field invalid-type a = () → core::num* => self::intValue.{core::num::+}(self::b as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
-static field dynamic b = self::a{dynamic}.call();
-static field () →* core::num* c = () → core::num* => self::numValue.{core::num::+}(self::d){(core::num*) →* core::num*};
-static field core::num* d = self::c(){() →* core::num*};
-static field () →* core::double* e = () → core::double* => self::doubleValue.{core::double::+}(self::f){(core::num*) →* core::double*};
-static field core::double* f = self::e(){() →* core::double*};
+static field invalid-type a = () → core::num* => self::intValue.{core::num::+}(self::b as{TypeError,ForDynamic} core::num*);
+static field dynamic b = self::a.call();
+static field () →* core::num* c = () → core::num* => self::numValue.{core::num::+}(self::d);
+static field core::num* d = self::c.call();
+static field () →* core::double* e = () → core::double* => self::doubleValue.{core::double::+}(self::f);
+static field core::double* f = self::e.call();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.weak.expect b/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.weak.expect
index b83a5f8..eac251e 100644
--- a/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.weak.expect
@@ -11,8 +11,8 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  field invalid-type x = () → invalid-type => new self::B::•().{self::B::x}{invalid-type};
-  field () →* invalid-type y = () → invalid-type => new self::B::•().{self::B::x}{invalid-type};
+  field invalid-type x = () → invalid-type => new self::B::•().{self::B::x};
+  field () →* invalid-type y = () → invalid-type => new self::B::•().{self::B::x};
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.weak.transformed.expect
index b83a5f8..eac251e 100644
--- a/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.weak.transformed.expect
@@ -11,8 +11,8 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  field invalid-type x = () → invalid-type => new self::B::•().{self::B::x}{invalid-type};
-  field () →* invalid-type y = () → invalid-type => new self::B::•().{self::B::x}{invalid-type};
+  field invalid-type x = () → invalid-type => new self::B::•().{self::B::x};
+  field () →* invalid-type y = () → invalid-type => new self::B::•().{self::B::x};
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.weak.expect b/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.weak.expect
index cf8fb9e..9bd9561 100644
--- a/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.weak.expect
@@ -111,15 +111,15 @@
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
 static method test1(self::G* g) → void {
-  let final self::G* #t1 = g in let final core::int* #t2 = 0 in #t1.{self::G::[]=}(#t2, #t1.{self::G::[]}(#t2){(core::int*) →* self::A*}.{self::A::*}(self::f<self::D*>()){(self::D*) →* self::C*}){(core::int*, self::B*) →* void};
-  self::C* x = let final self::G* #t3 = g in let final core::int* #t4 = 0 in let final self::C* #t5 = #t3.{self::G::[]}(#t4){(core::int*) →* self::A*}.{self::A::*}(self::f<self::D*>()){(self::D*) →* self::C*} in let final void #t6 = #t3.{self::G::[]=}(#t4, #t5){(core::int*, self::B*) →* void} in #t5;
+  let final self::G* #t1 = g in let final core::int* #t2 = 0 in #t1.{self::G::[]=}(#t2, #t1.{self::G::[]}(#t2).{self::A::*}(self::f<self::D*>()));
+  self::C* x = let final self::G* #t3 = g in let final core::int* #t4 = 0 in let final self::C* #t5 = #t3.{self::G::[]}(#t4).{self::A::*}(self::f<self::D*>()) in let final void #t6 = #t3.{self::G::[]=}(#t4, #t5) in #t5;
 }
 static method test2(self::G* g) → void {
-  let final self::G* #t7 = g in let final core::int* #t8 = 0 in let final self::C* #t9 = #t7.{self::G::[]}(#t8){(core::int*) →* self::A*}.{self::A::+}(1){(core::int*) →* self::C*} in let final void #t10 = #t7.{self::G::[]=}(#t8, #t9){(core::int*, self::B*) →* void} in #t9;
-  self::C* x = let final self::G* #t11 = g in let final core::int* #t12 = 0 in let final self::C* #t13 = #t11.{self::G::[]}(#t12){(core::int*) →* self::A*}.{self::A::+}(1){(core::int*) →* self::C*} in let final void #t14 = #t11.{self::G::[]=}(#t12, #t13){(core::int*, self::B*) →* void} in #t13;
+  let final self::G* #t7 = g in let final core::int* #t8 = 0 in let final self::C* #t9 = #t7.{self::G::[]}(#t8).{self::A::+}(1) in let final void #t10 = #t7.{self::G::[]=}(#t8, #t9) in #t9;
+  self::C* x = let final self::G* #t11 = g in let final core::int* #t12 = 0 in let final self::C* #t13 = #t11.{self::G::[]}(#t12).{self::A::+}(1) in let final void #t14 = #t11.{self::G::[]=}(#t12, #t13) in #t13;
 }
 static method test3(self::G* g) → void {
-  let final self::G* #t15 = g in let final core::int* #t16 = 0 in #t15.{self::G::[]=}(#t16, #t15.{self::G::[]}(#t16){(core::int*) →* self::A*}.{self::A::+}(1){(core::int*) →* self::C*}){(core::int*, self::B*) →* void};
-  self::A* x = let final self::G* #t17 = g in let final core::int* #t18 = 0 in let final self::A* #t19 = #t17.{self::G::[]}(#t18){(core::int*) →* self::A*} in let final void #t20 = #t17.{self::G::[]=}(#t18, #t19.{self::A::+}(1){(core::int*) →* self::C*}){(core::int*, self::B*) →* void} in #t19;
+  let final self::G* #t15 = g in let final core::int* #t16 = 0 in #t15.{self::G::[]=}(#t16, #t15.{self::G::[]}(#t16).{self::A::+}(1));
+  self::A* x = let final self::G* #t17 = g in let final core::int* #t18 = 0 in let final self::A* #t19 = #t17.{self::G::[]}(#t18) in let final void #t20 = #t17.{self::G::[]=}(#t18, #t19.{self::A::+}(1)) in #t19;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.weak.transformed.expect
index a14cd5c..2c14e98 100644
--- a/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.weak.transformed.expect
@@ -111,16 +111,16 @@
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
 static method test1(self::G* g) → void {
-  let final self::G* #t1 = g in let final core::int* #t2 = 0 in #t1.{self::G::[]=}(#t2, #t1.{self::G::[]}(#t2){(core::int*) →* self::A*}.{self::A::*}(self::f<self::D*>()){(self::D*) →* self::C*}){(core::int*, self::B*) →* void};
-  self::C* x = let final self::G* #t3 = g in let final core::int* #t4 = 0 in let final self::C* #t5 = #t3.{self::G::[]}(#t4){(core::int*) →* self::A*}.{self::A::*}(self::f<self::D*>()){(self::D*) →* self::C*} in let final void #t6 = #t3.{self::G::[]=}(#t4, #t5){(core::int*, self::B*) →* void} in #t5;
+  let final self::G* #t1 = g in let final core::int* #t2 = 0 in #t1.{self::G::[]=}(#t2, #t1.{self::G::[]}(#t2).{self::A::*}(self::f<self::D*>()));
+  self::C* x = let final self::G* #t3 = g in let final core::int* #t4 = 0 in let final self::C* #t5 = #t3.{self::G::[]}(#t4).{self::A::*}(self::f<self::D*>()) in let final void #t6 = #t3.{self::G::[]=}(#t4, #t5) in #t5;
 }
 static method test2(self::G* g) → void {
-  let final self::G* #t7 = g in let final core::int* #t8 = 0 in let final self::C* #t9 = #t7.{self::G::[]}(#t8){(core::int*) →* self::A*}.{self::A::+}(1){(core::int*) →* self::C*} in let final void #t10 = #t7.{self::G::[]=}(#t8, #t9){(core::int*, self::B*) →* void} in #t9;
-  self::C* x = let final self::G* #t11 = g in let final core::int* #t12 = 0 in let final self::C* #t13 = #t11.{self::G::[]}(#t12){(core::int*) →* self::A*}.{self::A::+}(1){(core::int*) →* self::C*} in let final void #t14 = #t11.{self::G::[]=}(#t12, #t13){(core::int*, self::B*) →* void} in #t13;
+  let final self::G* #t7 = g in let final core::int* #t8 = 0 in let final self::C* #t9 = #t7.{self::G::[]}(#t8).{self::A::+}(1) in let final void #t10 = #t7.{self::G::[]=}(#t8, #t9) in #t9;
+  self::C* x = let final self::G* #t11 = g in let final core::int* #t12 = 0 in let final self::C* #t13 = #t11.{self::G::[]}(#t12).{self::A::+}(1) in let final void #t14 = #t11.{self::G::[]=}(#t12, #t13) in #t13;
 }
 static method test3(self::G* g) → void {
-  let final self::G* #t15 = g in let final core::int* #t16 = 0 in #t15.{self::G::[]=}(#t16, #t15.{self::G::[]}(#t16){(core::int*) →* self::A*}.{self::A::+}(1){(core::int*) →* self::C*}){(core::int*, self::B*) →* void};
-  self::A* x = let final self::G* #t17 = g in let final core::int* #t18 = 0 in let final self::A* #t19 = #t17.{self::G::[]}(#t18){(core::int*) →* self::A*} in let final void #t20 = #t17.{self::G::[]=}(#t18, #t19.{self::A::+}(1){(core::int*) →* self::C*}){(core::int*, self::B*) →* void} in #t19;
+  let final self::G* #t15 = g in let final core::int* #t16 = 0 in #t15.{self::G::[]=}(#t16, #t15.{self::G::[]}(#t16).{self::A::+}(1));
+  self::A* x = let final self::G* #t17 = g in let final core::int* #t18 = 0 in let final self::A* #t19 = #t17.{self::G::[]}(#t18) in let final void #t20 = #t17.{self::G::[]=}(#t18, #t19.{self::A::+}(1)) in #t19;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.weak.expect
index 43a39ef..a36e492 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.weak.expect
@@ -42,19 +42,19 @@
     ;
   method test() → void {
     this.{self::Test::member} = self::f<self::B*>();
-    this.{self::Test::member}{self::B*} == null ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
+    this.{self::Test::member}.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = this.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = this.{self::Test::member}{self::B*} in #t1 == null ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
-    self::A* v3 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    self::B* v4 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    self::C* v5 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    self::B* v6 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v7 = let final self::B* #t2 = this.{self::Test::member}{self::B*} in let final self::B* #t3 = this.{self::Test::member} = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+    self::B* v2 = let final self::B* #t1 = this.{self::Test::member} in #t1.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
+    self::A* v3 = this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    self::B* v4 = this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    self::C* v5 = this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    self::B* v6 = this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
+    self::B* v7 = let final self::B* #t2 = this.{self::Test::member} in let final self::B* #t3 = this.{self::Test::member} = #t2.{self::B::-}(1) in #t2;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.weak.transformed.expect
index 43a39ef..a36e492 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.weak.transformed.expect
@@ -42,19 +42,19 @@
     ;
   method test() → void {
     this.{self::Test::member} = self::f<self::B*>();
-    this.{self::Test::member}{self::B*} == null ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
+    this.{self::Test::member}.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
+    this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = this.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = this.{self::Test::member}{self::B*} in #t1 == null ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
-    self::A* v3 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    self::B* v4 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    self::C* v5 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    self::B* v6 = this.{self::Test::member} = this.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v7 = let final self::B* #t2 = this.{self::Test::member}{self::B*} in let final self::B* #t3 = this.{self::Test::member} = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+    self::B* v2 = let final self::B* #t1 = this.{self::Test::member} in #t1.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
+    self::A* v3 = this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    self::B* v4 = this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    self::C* v5 = this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    self::B* v6 = this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
+    self::B* v7 = let final self::B* #t2 = this.{self::Test::member} in let final self::B* #t3 = this.{self::Test::member} = #t2.{self::B::-}(1) in #t2;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.weak.expect
index c9e63c0..7358171 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.weak.expect
@@ -10,12 +10,12 @@
   method test() → void {
     core::int* v1 = this.{self::Test1::t} = self::getInt();
     core::num* v2 = this.{self::Test1::t} = self::getNum() as{TypeError} core::int*;
-    core::int* v4 = let final core::int* #t1 = this.{self::Test1::t}{core::int*} in #t1 == null ?{core::int*} this.{self::Test1::t} = self::getInt() : #t1;
-    core::num* v5 = let final core::int* #t2 = this.{self::Test1::t}{core::int*} in #t2 == null ?{core::num*} this.{self::Test1::t} = self::getNum() as{TypeError} core::int* : #t2;
-    core::int* v7 = this.{self::Test1::t} = this.{self::Test1::t}{core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-    core::num* v8 = this.{self::Test1::t} = this.{self::Test1::t}{core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int*;
-    core::int* v10 = this.{self::Test1::t} = this.{self::Test1::t}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-    core::int* v11 = let final core::int* #t3 = this.{self::Test1::t}{core::int*} in let final core::int* #t4 = this.{self::Test1::t} = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3;
+    core::int* v4 = let final core::int* #t1 = this.{self::Test1::t} in #t1.{core::num::==}(null) ?{core::int*} this.{self::Test1::t} = self::getInt() : #t1;
+    core::num* v5 = let final core::int* #t2 = this.{self::Test1::t} in #t2.{core::num::==}(null) ?{core::num*} this.{self::Test1::t} = self::getNum() as{TypeError} core::int* : #t2;
+    core::int* v7 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(self::getInt());
+    core::num* v8 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(self::getNum()) as{TypeError} core::int*;
+    core::int* v10 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(1);
+    core::int* v11 = let final core::int* #t3 = this.{self::Test1::t} in let final core::int* #t4 = this.{self::Test1::t} = #t3.{core::num::+}(1) in #t3;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -37,14 +37,14 @@
     core::int* v1 = this.{self::Test2::t} = self::getInt();
     core::num* v2 = this.{self::Test2::t} = self::getNum();
     core::double* v3 = this.{self::Test2::t} = self::getDouble();
-    core::num* v4 = let final core::num* #t5 = this.{self::Test2::t}{core::num*} in #t5 == null ?{core::num*} this.{self::Test2::t} = self::getInt() : #t5;
-    core::num* v5 = let final core::num* #t6 = this.{self::Test2::t}{core::num*} in #t6 == null ?{core::num*} this.{self::Test2::t} = self::getNum() : #t6;
-    core::num* v6 = let final core::num* #t7 = this.{self::Test2::t}{core::num*} in #t7 == null ?{core::num*} this.{self::Test2::t} = self::getDouble() : #t7;
-    core::num* v7 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-    core::num* v8 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-    core::num* v9 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-    core::num* v10 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(1){(core::num*) →* core::num*};
-    core::num* v11 = let final core::num* #t8 = this.{self::Test2::t}{core::num*} in let final core::num* #t9 = this.{self::Test2::t} = #t8.{core::num::+}(1){(core::num*) →* core::num*} in #t8;
+    core::num* v4 = let final core::num* #t5 = this.{self::Test2::t} in #t5.{core::num::==}(null) ?{core::num*} this.{self::Test2::t} = self::getInt() : #t5;
+    core::num* v5 = let final core::num* #t6 = this.{self::Test2::t} in #t6.{core::num::==}(null) ?{core::num*} this.{self::Test2::t} = self::getNum() : #t6;
+    core::num* v6 = let final core::num* #t7 = this.{self::Test2::t} in #t7.{core::num::==}(null) ?{core::num*} this.{self::Test2::t} = self::getDouble() : #t7;
+    core::num* v7 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(self::getInt());
+    core::num* v8 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(self::getNum());
+    core::num* v9 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(self::getDouble());
+    core::num* v10 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(1);
+    core::num* v11 = let final core::num* #t8 = this.{self::Test2::t} in let final core::num* #t9 = this.{self::Test2::t} = #t8.{core::num::+}(1) in #t8;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -65,13 +65,13 @@
   method test3() → void {
     core::num* v2 = this.{self::Test3::t} = self::getNum() as{TypeError} core::double*;
     core::double* v3 = this.{self::Test3::t} = self::getDouble();
-    core::num* v5 = let final core::double* #t10 = this.{self::Test3::t}{core::double*} in #t10 == null ?{core::num*} this.{self::Test3::t} = self::getNum() as{TypeError} core::double* : #t10;
-    core::double* v6 = let final core::double* #t11 = this.{self::Test3::t}{core::double*} in #t11 == null ?{core::double*} this.{self::Test3::t} = self::getDouble() : #t11;
-    core::double* v7 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-    core::double* v8 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-    core::double* v9 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-    core::double* v10 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(1){(core::num*) →* core::double*};
-    core::double* v11 = let final core::double* #t12 = this.{self::Test3::t}{core::double*} in let final core::double* #t13 = this.{self::Test3::t} = #t12.{core::double::+}(1){(core::num*) →* core::double*} in #t12;
+    core::num* v5 = let final core::double* #t10 = this.{self::Test3::t} in #t10.{core::num::==}(null) ?{core::num*} this.{self::Test3::t} = self::getNum() as{TypeError} core::double* : #t10;
+    core::double* v6 = let final core::double* #t11 = this.{self::Test3::t} in #t11.{core::num::==}(null) ?{core::double*} this.{self::Test3::t} = self::getDouble() : #t11;
+    core::double* v7 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(self::getInt());
+    core::double* v8 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(self::getNum());
+    core::double* v9 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(self::getDouble());
+    core::double* v10 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(1);
+    core::double* v11 = let final core::double* #t12 = this.{self::Test3::t} in let final core::double* #t13 = this.{self::Test3::t} = #t12.{core::double::+}(1) in #t12;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.weak.transformed.expect
index c9e63c0..7358171 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.weak.transformed.expect
@@ -10,12 +10,12 @@
   method test() → void {
     core::int* v1 = this.{self::Test1::t} = self::getInt();
     core::num* v2 = this.{self::Test1::t} = self::getNum() as{TypeError} core::int*;
-    core::int* v4 = let final core::int* #t1 = this.{self::Test1::t}{core::int*} in #t1 == null ?{core::int*} this.{self::Test1::t} = self::getInt() : #t1;
-    core::num* v5 = let final core::int* #t2 = this.{self::Test1::t}{core::int*} in #t2 == null ?{core::num*} this.{self::Test1::t} = self::getNum() as{TypeError} core::int* : #t2;
-    core::int* v7 = this.{self::Test1::t} = this.{self::Test1::t}{core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-    core::num* v8 = this.{self::Test1::t} = this.{self::Test1::t}{core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int*;
-    core::int* v10 = this.{self::Test1::t} = this.{self::Test1::t}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-    core::int* v11 = let final core::int* #t3 = this.{self::Test1::t}{core::int*} in let final core::int* #t4 = this.{self::Test1::t} = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3;
+    core::int* v4 = let final core::int* #t1 = this.{self::Test1::t} in #t1.{core::num::==}(null) ?{core::int*} this.{self::Test1::t} = self::getInt() : #t1;
+    core::num* v5 = let final core::int* #t2 = this.{self::Test1::t} in #t2.{core::num::==}(null) ?{core::num*} this.{self::Test1::t} = self::getNum() as{TypeError} core::int* : #t2;
+    core::int* v7 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(self::getInt());
+    core::num* v8 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(self::getNum()) as{TypeError} core::int*;
+    core::int* v10 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(1);
+    core::int* v11 = let final core::int* #t3 = this.{self::Test1::t} in let final core::int* #t4 = this.{self::Test1::t} = #t3.{core::num::+}(1) in #t3;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -37,14 +37,14 @@
     core::int* v1 = this.{self::Test2::t} = self::getInt();
     core::num* v2 = this.{self::Test2::t} = self::getNum();
     core::double* v3 = this.{self::Test2::t} = self::getDouble();
-    core::num* v4 = let final core::num* #t5 = this.{self::Test2::t}{core::num*} in #t5 == null ?{core::num*} this.{self::Test2::t} = self::getInt() : #t5;
-    core::num* v5 = let final core::num* #t6 = this.{self::Test2::t}{core::num*} in #t6 == null ?{core::num*} this.{self::Test2::t} = self::getNum() : #t6;
-    core::num* v6 = let final core::num* #t7 = this.{self::Test2::t}{core::num*} in #t7 == null ?{core::num*} this.{self::Test2::t} = self::getDouble() : #t7;
-    core::num* v7 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-    core::num* v8 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-    core::num* v9 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-    core::num* v10 = this.{self::Test2::t} = this.{self::Test2::t}{core::num*}.{core::num::+}(1){(core::num*) →* core::num*};
-    core::num* v11 = let final core::num* #t8 = this.{self::Test2::t}{core::num*} in let final core::num* #t9 = this.{self::Test2::t} = #t8.{core::num::+}(1){(core::num*) →* core::num*} in #t8;
+    core::num* v4 = let final core::num* #t5 = this.{self::Test2::t} in #t5.{core::num::==}(null) ?{core::num*} this.{self::Test2::t} = self::getInt() : #t5;
+    core::num* v5 = let final core::num* #t6 = this.{self::Test2::t} in #t6.{core::num::==}(null) ?{core::num*} this.{self::Test2::t} = self::getNum() : #t6;
+    core::num* v6 = let final core::num* #t7 = this.{self::Test2::t} in #t7.{core::num::==}(null) ?{core::num*} this.{self::Test2::t} = self::getDouble() : #t7;
+    core::num* v7 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(self::getInt());
+    core::num* v8 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(self::getNum());
+    core::num* v9 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(self::getDouble());
+    core::num* v10 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(1);
+    core::num* v11 = let final core::num* #t8 = this.{self::Test2::t} in let final core::num* #t9 = this.{self::Test2::t} = #t8.{core::num::+}(1) in #t8;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -65,13 +65,13 @@
   method test3() → void {
     core::num* v2 = this.{self::Test3::t} = self::getNum() as{TypeError} core::double*;
     core::double* v3 = this.{self::Test3::t} = self::getDouble();
-    core::num* v5 = let final core::double* #t10 = this.{self::Test3::t}{core::double*} in #t10 == null ?{core::num*} this.{self::Test3::t} = self::getNum() as{TypeError} core::double* : #t10;
-    core::double* v6 = let final core::double* #t11 = this.{self::Test3::t}{core::double*} in #t11 == null ?{core::double*} this.{self::Test3::t} = self::getDouble() : #t11;
-    core::double* v7 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-    core::double* v8 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-    core::double* v9 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-    core::double* v10 = this.{self::Test3::t} = this.{self::Test3::t}{core::double*}.{core::double::+}(1){(core::num*) →* core::double*};
-    core::double* v11 = let final core::double* #t12 = this.{self::Test3::t}{core::double*} in let final core::double* #t13 = this.{self::Test3::t} = #t12.{core::double::+}(1){(core::num*) →* core::double*} in #t12;
+    core::num* v5 = let final core::double* #t10 = this.{self::Test3::t} in #t10.{core::num::==}(null) ?{core::num*} this.{self::Test3::t} = self::getNum() as{TypeError} core::double* : #t10;
+    core::double* v6 = let final core::double* #t11 = this.{self::Test3::t} in #t11.{core::num::==}(null) ?{core::double*} this.{self::Test3::t} = self::getDouble() : #t11;
+    core::double* v7 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(self::getInt());
+    core::double* v8 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(self::getNum());
+    core::double* v9 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(self::getDouble());
+    core::double* v10 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(1);
+    core::double* v11 = let final core::double* #t12 = this.{self::Test3::t} in let final core::double* #t13 = this.{self::Test3::t} = #t12.{core::double::+}(1) in #t12;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index.dart.weak.expect
index f6ef830..7d38c0b 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index.dart.weak.expect
@@ -3,5 +3,5 @@
 import "dart:core" as core;
 
 static field core::List<core::double*>* a = <core::double*>[];
-static field core::double* b = let final core::List<core::double*>* #t1 = self::a in let final core::int* #t2 = 0 in let final core::double* #t3 = 1.0 in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int*, core::double*) →* void} in #t3;
+static field core::double* b = let final core::List<core::double*>* #t1 = self::a in let final core::int* #t2 = 0 in let final core::double* #t3 = 1.0 in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3) in #t3;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index.dart.weak.transformed.expect
index d457863..c46cd53 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static field core::List<core::double*>* a = core::_GrowableList::•<core::double*>(0);
-static field core::double* b = let final core::List<core::double*>* #t1 = self::a in let final core::int* #t2 = 0 in let final core::double* #t3 = 1.0 in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int*, core::double*) →* void} in #t3;
+static field core::double* b = let final core::List<core::double*>* #t1 = self::a in let final core::int* #t2 = 0 in let final core::double* #t3 = 1.0 in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3) in #t3;
 static method main() → dynamic {}
 
 
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.weak.expect
index 8b4ab90..406e14d 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.weak.expect
@@ -59,22 +59,22 @@
   operator []=(self::Index* i, self::B* v) → void {}
   method test() → void {
     self::Test* t = self::f<self::Test*>();
-    t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>()){(self::Index*, self::B*) →* void};
-    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2){(self::Index*) →* self::B*} == null ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()){(self::Index*, self::B*) →* void} : null;
-    let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*){(self::Index*, self::B*) →* void};
-    let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in #t5.{self::Test::[]=}(#t6, #t5.{self::Test::[]}(#t6){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*}){(self::Index*, self::B*) →* void};
-    let final self::Test* #t7 = t in let final self::Index* #t8 = self::f<self::Index*>() in #t7.{self::Test::[]=}(#t8, #t7.{self::Test::[]}(#t8){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*}){(self::Index*, self::B*) →* void};
-    t.{self::Test::[]}(self::f<self::Index*>()){(self::Index*) →* self::B*};
-    let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in let final self::B* #t11 = #t9.{self::Test::[]}(#t10){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t12 = #t9.{self::Test::[]=}(#t10, #t11){(self::Index*, self::B*) →* void} in #t11;
-    let final self::Test* #t13 = t in let final self::Index* #t14 = self::f<self::Index*>() in #t13.{self::Test::[]=}(#t14, #t13.{self::Test::[]}(#t14){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void};
-    self::B* v1 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = self::f<self::B*>() in let final void #t18 = #t15.{self::Test::[]=}(#t16, #t17){(self::Index*, self::B*) →* void} in #t17;
-    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20){(self::Index*) →* self::B*} in #t21 == null ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22){(self::Index*, self::B*) →* void} in #t22 : #t21;
-    self::A* v3 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::A* #t26 = #t24.{self::Test::[]}(#t25){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26){(self::Index*, self::B*) →* void} in #t26;
-    self::B* v4 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::B* #t30 = #t28.{self::Test::[]}(#t29){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30){(self::Index*, self::B*) →* void} in #t30;
-    self::C* v5 = let final self::Test* #t32 = t in let final self::Index* #t33 = self::f<self::Index*>() in let final self::C* #t34 = #t32.{self::Test::[]}(#t33){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t35 = #t32.{self::Test::[]=}(#t33, #t34){(self::Index*, self::B*) →* void} in #t34;
-    self::B* v6 = t.{self::Test::[]}(self::f<self::Index*>()){(self::Index*) →* self::B*};
-    self::B* v7 = let final self::Test* #t36 = t in let final self::Index* #t37 = self::f<self::Index*>() in let final self::B* #t38 = #t36.{self::Test::[]}(#t37){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t39 = #t36.{self::Test::[]=}(#t37, #t38){(self::Index*, self::B*) →* void} in #t38;
-    self::B* v8 = let final self::Test* #t40 = t in let final self::Index* #t41 = self::f<self::Index*>() in let final self::B* #t42 = #t40.{self::Test::[]}(#t41){(self::Index*) →* self::B*} in let final void #t43 = #t40.{self::Test::[]=}(#t41, #t42.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void} in #t42;
+    t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
+    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{self::A::==}(null) ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()) : null;
+    let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
+    let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in #t5.{self::Test::[]=}(#t6, #t5.{self::Test::[]}(#t6).{self::B::*}(self::f<self::B*>()));
+    let final self::Test* #t7 = t in let final self::Index* #t8 = self::f<self::Index*>() in #t7.{self::Test::[]=}(#t8, #t7.{self::Test::[]}(#t8).{self::B::&}(self::f<self::A*>()));
+    t.{self::Test::[]}(self::f<self::Index*>());
+    let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in let final self::B* #t11 = #t9.{self::Test::[]}(#t10).{self::B::-}(1) in let final void #t12 = #t9.{self::Test::[]=}(#t10, #t11) in #t11;
+    let final self::Test* #t13 = t in let final self::Index* #t14 = self::f<self::Index*>() in #t13.{self::Test::[]=}(#t14, #t13.{self::Test::[]}(#t14).{self::B::-}(1));
+    self::B* v1 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = self::f<self::B*>() in let final void #t18 = #t15.{self::Test::[]=}(#t16, #t17) in #t17;
+    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20) in #t21.{self::A::==}(null) ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22) in #t22 : #t21;
+    self::A* v3 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::A* #t26 = #t24.{self::Test::[]}(#t25).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26) in #t26;
+    self::B* v4 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::B* #t30 = #t28.{self::Test::[]}(#t29).{self::B::*}(self::f<self::B*>()) in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30) in #t30;
+    self::C* v5 = let final self::Test* #t32 = t in let final self::Index* #t33 = self::f<self::Index*>() in let final self::C* #t34 = #t32.{self::Test::[]}(#t33).{self::B::&}(self::f<self::A*>()) in let final void #t35 = #t32.{self::Test::[]=}(#t33, #t34) in #t34;
+    self::B* v6 = t.{self::Test::[]}(self::f<self::Index*>());
+    self::B* v7 = let final self::Test* #t36 = t in let final self::Index* #t37 = self::f<self::Index*>() in let final self::B* #t38 = #t36.{self::Test::[]}(#t37).{self::B::-}(1) in let final void #t39 = #t36.{self::Test::[]=}(#t37, #t38) in #t38;
+    self::B* v8 = let final self::Test* #t40 = t in let final self::Index* #t41 = self::f<self::Index*>() in let final self::B* #t42 = #t40.{self::Test::[]}(#t41) in let final void #t43 = #t40.{self::Test::[]=}(#t41, #t42.{self::B::-}(1)) in #t42;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.weak.transformed.expect
index 8b4ab90..406e14d 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.weak.transformed.expect
@@ -59,22 +59,22 @@
   operator []=(self::Index* i, self::B* v) → void {}
   method test() → void {
     self::Test* t = self::f<self::Test*>();
-    t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>()){(self::Index*, self::B*) →* void};
-    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2){(self::Index*) →* self::B*} == null ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()){(self::Index*, self::B*) →* void} : null;
-    let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*){(self::Index*, self::B*) →* void};
-    let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in #t5.{self::Test::[]=}(#t6, #t5.{self::Test::[]}(#t6){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*}){(self::Index*, self::B*) →* void};
-    let final self::Test* #t7 = t in let final self::Index* #t8 = self::f<self::Index*>() in #t7.{self::Test::[]=}(#t8, #t7.{self::Test::[]}(#t8){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*}){(self::Index*, self::B*) →* void};
-    t.{self::Test::[]}(self::f<self::Index*>()){(self::Index*) →* self::B*};
-    let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in let final self::B* #t11 = #t9.{self::Test::[]}(#t10){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t12 = #t9.{self::Test::[]=}(#t10, #t11){(self::Index*, self::B*) →* void} in #t11;
-    let final self::Test* #t13 = t in let final self::Index* #t14 = self::f<self::Index*>() in #t13.{self::Test::[]=}(#t14, #t13.{self::Test::[]}(#t14){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void};
-    self::B* v1 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = self::f<self::B*>() in let final void #t18 = #t15.{self::Test::[]=}(#t16, #t17){(self::Index*, self::B*) →* void} in #t17;
-    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20){(self::Index*) →* self::B*} in #t21 == null ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22){(self::Index*, self::B*) →* void} in #t22 : #t21;
-    self::A* v3 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::A* #t26 = #t24.{self::Test::[]}(#t25){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26){(self::Index*, self::B*) →* void} in #t26;
-    self::B* v4 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::B* #t30 = #t28.{self::Test::[]}(#t29){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30){(self::Index*, self::B*) →* void} in #t30;
-    self::C* v5 = let final self::Test* #t32 = t in let final self::Index* #t33 = self::f<self::Index*>() in let final self::C* #t34 = #t32.{self::Test::[]}(#t33){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t35 = #t32.{self::Test::[]=}(#t33, #t34){(self::Index*, self::B*) →* void} in #t34;
-    self::B* v6 = t.{self::Test::[]}(self::f<self::Index*>()){(self::Index*) →* self::B*};
-    self::B* v7 = let final self::Test* #t36 = t in let final self::Index* #t37 = self::f<self::Index*>() in let final self::B* #t38 = #t36.{self::Test::[]}(#t37){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t39 = #t36.{self::Test::[]=}(#t37, #t38){(self::Index*, self::B*) →* void} in #t38;
-    self::B* v8 = let final self::Test* #t40 = t in let final self::Index* #t41 = self::f<self::Index*>() in let final self::B* #t42 = #t40.{self::Test::[]}(#t41){(self::Index*) →* self::B*} in let final void #t43 = #t40.{self::Test::[]=}(#t41, #t42.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void} in #t42;
+    t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
+    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{self::A::==}(null) ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()) : null;
+    let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
+    let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in #t5.{self::Test::[]=}(#t6, #t5.{self::Test::[]}(#t6).{self::B::*}(self::f<self::B*>()));
+    let final self::Test* #t7 = t in let final self::Index* #t8 = self::f<self::Index*>() in #t7.{self::Test::[]=}(#t8, #t7.{self::Test::[]}(#t8).{self::B::&}(self::f<self::A*>()));
+    t.{self::Test::[]}(self::f<self::Index*>());
+    let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in let final self::B* #t11 = #t9.{self::Test::[]}(#t10).{self::B::-}(1) in let final void #t12 = #t9.{self::Test::[]=}(#t10, #t11) in #t11;
+    let final self::Test* #t13 = t in let final self::Index* #t14 = self::f<self::Index*>() in #t13.{self::Test::[]=}(#t14, #t13.{self::Test::[]}(#t14).{self::B::-}(1));
+    self::B* v1 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = self::f<self::B*>() in let final void #t18 = #t15.{self::Test::[]=}(#t16, #t17) in #t17;
+    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20) in #t21.{self::A::==}(null) ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22) in #t22 : #t21;
+    self::A* v3 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::A* #t26 = #t24.{self::Test::[]}(#t25).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26) in #t26;
+    self::B* v4 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::B* #t30 = #t28.{self::Test::[]}(#t29).{self::B::*}(self::f<self::B*>()) in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30) in #t30;
+    self::C* v5 = let final self::Test* #t32 = t in let final self::Index* #t33 = self::f<self::Index*>() in let final self::C* #t34 = #t32.{self::Test::[]}(#t33).{self::B::&}(self::f<self::A*>()) in let final void #t35 = #t32.{self::Test::[]=}(#t33, #t34) in #t34;
+    self::B* v6 = t.{self::Test::[]}(self::f<self::Index*>());
+    self::B* v7 = let final self::Test* #t36 = t in let final self::Index* #t37 = self::f<self::Index*>() in let final self::B* #t38 = #t36.{self::Test::[]}(#t37).{self::B::-}(1) in let final void #t39 = #t36.{self::Test::[]=}(#t37, #t38) in #t38;
+    self::B* v8 = let final self::Test* #t40 = t in let final self::Index* #t41 = self::f<self::Index*>() in let final self::B* #t42 = #t40.{self::Test::[]}(#t41) in let final void #t43 = #t40.{self::Test::[]=}(#t41, #t42.{self::B::-}(1)) in #t42;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.weak.expect
index 685af9c..1f1375b 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.weak.expect
@@ -74,16 +74,16 @@
   operator []=(self::Index* i, self::A* v) → void {}
   method test() → void {
     self::Test* t = self::f<self::Test*>();
-    t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::A*>()){(self::Index*, self::A*) →* void};
-    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2){(self::Index*) →* self::B*} == null ?{self::A*} #t1.{self::Test::[]=}(#t2, self::f<self::A*>()){(self::Index*, self::A*) →* void} : null;
-    let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::E*>()){(self::E*) →* self::D*}){(self::Index*, self::A*) →* void};
-    let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in let final self::D* #t7 = #t5.{self::Test::[]}(#t6){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::D*} in let final void #t8 = #t5.{self::Test::[]=}(#t6, #t7){(self::Index*, self::A*) →* void} in #t7;
-    let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in #t9.{self::Test::[]=}(#t10, #t9.{self::Test::[]}(#t10){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::D*}){(self::Index*, self::A*) →* void};
-    self::A* v1 = let final self::Test* #t11 = t in let final self::Index* #t12 = self::f<self::Index*>() in let final self::A* #t13 = self::f<self::A*>() in let final void #t14 = #t11.{self::Test::[]=}(#t12, #t13){(self::Index*, self::A*) →* void} in #t13;
-    self::A* v2 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = #t15.{self::Test::[]}(#t16){(self::Index*) →* self::B*} in #t17 == null ?{self::A*} let final self::A* #t18 = self::f<self::A*>() in let final void #t19 = #t15.{self::Test::[]=}(#t16, #t18){(self::Index*, self::A*) →* void} in #t18 : #t17;
-    self::D* v3 = let final self::Test* #t20 = t in let final self::Index* #t21 = self::f<self::Index*>() in let final self::D* #t22 = #t20.{self::Test::[]}(#t21){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::E*>()){(self::E*) →* self::D*} in let final void #t23 = #t20.{self::Test::[]=}(#t21, #t22){(self::Index*, self::A*) →* void} in #t22;
-    self::D* v4 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::D* #t26 = #t24.{self::Test::[]}(#t25){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::D*} in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26){(self::Index*, self::A*) →* void} in #t26;
-    self::B* v5 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::B* #t30 = #t28.{self::Test::[]}(#t29){(self::Index*) →* self::B*} in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30.{self::B::-}(1){(core::int*) →* self::D*}){(self::Index*, self::A*) →* void} in #t30;
+    t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::A*>());
+    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{self::A::==}(null) ?{self::A*} #t1.{self::Test::[]=}(#t2, self::f<self::A*>()) : null;
+    let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4).{self::B::+}(self::f<self::E*>()));
+    let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in let final self::D* #t7 = #t5.{self::Test::[]}(#t6).{self::B::-}(1) in let final void #t8 = #t5.{self::Test::[]=}(#t6, #t7) in #t7;
+    let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in #t9.{self::Test::[]=}(#t10, #t9.{self::Test::[]}(#t10).{self::B::-}(1));
+    self::A* v1 = let final self::Test* #t11 = t in let final self::Index* #t12 = self::f<self::Index*>() in let final self::A* #t13 = self::f<self::A*>() in let final void #t14 = #t11.{self::Test::[]=}(#t12, #t13) in #t13;
+    self::A* v2 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = #t15.{self::Test::[]}(#t16) in #t17.{self::A::==}(null) ?{self::A*} let final self::A* #t18 = self::f<self::A*>() in let final void #t19 = #t15.{self::Test::[]=}(#t16, #t18) in #t18 : #t17;
+    self::D* v3 = let final self::Test* #t20 = t in let final self::Index* #t21 = self::f<self::Index*>() in let final self::D* #t22 = #t20.{self::Test::[]}(#t21).{self::B::+}(self::f<self::E*>()) in let final void #t23 = #t20.{self::Test::[]=}(#t21, #t22) in #t22;
+    self::D* v4 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::D* #t26 = #t24.{self::Test::[]}(#t25).{self::B::-}(1) in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26) in #t26;
+    self::B* v5 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::B* #t30 = #t28.{self::Test::[]}(#t29) in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30.{self::B::-}(1)) in #t30;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.weak.transformed.expect
index 685af9c..1f1375b 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.weak.transformed.expect
@@ -74,16 +74,16 @@
   operator []=(self::Index* i, self::A* v) → void {}
   method test() → void {
     self::Test* t = self::f<self::Test*>();
-    t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::A*>()){(self::Index*, self::A*) →* void};
-    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2){(self::Index*) →* self::B*} == null ?{self::A*} #t1.{self::Test::[]=}(#t2, self::f<self::A*>()){(self::Index*, self::A*) →* void} : null;
-    let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::E*>()){(self::E*) →* self::D*}){(self::Index*, self::A*) →* void};
-    let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in let final self::D* #t7 = #t5.{self::Test::[]}(#t6){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::D*} in let final void #t8 = #t5.{self::Test::[]=}(#t6, #t7){(self::Index*, self::A*) →* void} in #t7;
-    let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in #t9.{self::Test::[]=}(#t10, #t9.{self::Test::[]}(#t10){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::D*}){(self::Index*, self::A*) →* void};
-    self::A* v1 = let final self::Test* #t11 = t in let final self::Index* #t12 = self::f<self::Index*>() in let final self::A* #t13 = self::f<self::A*>() in let final void #t14 = #t11.{self::Test::[]=}(#t12, #t13){(self::Index*, self::A*) →* void} in #t13;
-    self::A* v2 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = #t15.{self::Test::[]}(#t16){(self::Index*) →* self::B*} in #t17 == null ?{self::A*} let final self::A* #t18 = self::f<self::A*>() in let final void #t19 = #t15.{self::Test::[]=}(#t16, #t18){(self::Index*, self::A*) →* void} in #t18 : #t17;
-    self::D* v3 = let final self::Test* #t20 = t in let final self::Index* #t21 = self::f<self::Index*>() in let final self::D* #t22 = #t20.{self::Test::[]}(#t21){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::E*>()){(self::E*) →* self::D*} in let final void #t23 = #t20.{self::Test::[]=}(#t21, #t22){(self::Index*, self::A*) →* void} in #t22;
-    self::D* v4 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::D* #t26 = #t24.{self::Test::[]}(#t25){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::D*} in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26){(self::Index*, self::A*) →* void} in #t26;
-    self::B* v5 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::B* #t30 = #t28.{self::Test::[]}(#t29){(self::Index*) →* self::B*} in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30.{self::B::-}(1){(core::int*) →* self::D*}){(self::Index*, self::A*) →* void} in #t30;
+    t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::A*>());
+    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{self::A::==}(null) ?{self::A*} #t1.{self::Test::[]=}(#t2, self::f<self::A*>()) : null;
+    let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4).{self::B::+}(self::f<self::E*>()));
+    let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in let final self::D* #t7 = #t5.{self::Test::[]}(#t6).{self::B::-}(1) in let final void #t8 = #t5.{self::Test::[]=}(#t6, #t7) in #t7;
+    let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in #t9.{self::Test::[]=}(#t10, #t9.{self::Test::[]}(#t10).{self::B::-}(1));
+    self::A* v1 = let final self::Test* #t11 = t in let final self::Index* #t12 = self::f<self::Index*>() in let final self::A* #t13 = self::f<self::A*>() in let final void #t14 = #t11.{self::Test::[]=}(#t12, #t13) in #t13;
+    self::A* v2 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = #t15.{self::Test::[]}(#t16) in #t17.{self::A::==}(null) ?{self::A*} let final self::A* #t18 = self::f<self::A*>() in let final void #t19 = #t15.{self::Test::[]=}(#t16, #t18) in #t18 : #t17;
+    self::D* v3 = let final self::Test* #t20 = t in let final self::Index* #t21 = self::f<self::Index*>() in let final self::D* #t22 = #t20.{self::Test::[]}(#t21).{self::B::+}(self::f<self::E*>()) in let final void #t23 = #t20.{self::Test::[]=}(#t21, #t22) in #t22;
+    self::D* v4 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::D* #t26 = #t24.{self::Test::[]}(#t25).{self::B::-}(1) in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26) in #t26;
+    self::B* v5 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::B* #t30 = #t28.{self::Test::[]}(#t29) in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30.{self::B::-}(1)) in #t30;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.weak.expect
index 3a7a814..96b0328 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.weak.expect
@@ -74,19 +74,19 @@
     ;
   method test() → void {
     super.{self::Base::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1) == null ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
-    let final self::Index* #t2 = self::f<self::Index*>() in super.{self::Base::[]=}(#t2, super.{self::Base::[]}(#t2).{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*);
-    let final self::Index* #t3 = self::f<self::Index*>() in super.{self::Base::[]=}(#t3, super.{self::Base::[]}(#t3).{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*});
-    let final self::Index* #t4 = self::f<self::Index*>() in super.{self::Base::[]=}(#t4, super.{self::Base::[]}(#t4).{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*});
-    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = super.{self::Base::[]}(#t5).{self::B::-}(1){(core::int*) →* self::B*} in let final void #t7 = super.{self::Base::[]=}(#t5, #t6) in #t6;
-    let final self::Index* #t8 = self::f<self::Index*>() in super.{self::Base::[]=}(#t8, super.{self::Base::[]}(#t8).{self::B::-}(1){(core::int*) →* self::B*});
+    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1).{self::A::==}(null) ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t2 = self::f<self::Index*>() in super.{self::Base::[]=}(#t2, super.{self::Base::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
+    let final self::Index* #t3 = self::f<self::Index*>() in super.{self::Base::[]=}(#t3, super.{self::Base::[]}(#t3).{self::B::*}(self::f<self::B*>()));
+    let final self::Index* #t4 = self::f<self::Index*>() in super.{self::Base::[]=}(#t4, super.{self::Base::[]}(#t4).{self::B::&}(self::f<self::A*>()));
+    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = super.{self::Base::[]}(#t5).{self::B::-}(1) in let final void #t7 = super.{self::Base::[]=}(#t5, #t6) in #t6;
+    let final self::Index* #t8 = self::f<self::Index*>() in super.{self::Base::[]=}(#t8, super.{self::Base::[]}(#t8).{self::B::-}(1));
     self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = super.{self::Base::[]=}(#t9, #t10) in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13 == null ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
-    self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = super.{self::Base::[]}(#t16).{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t18 = super.{self::Base::[]=}(#t16, #t17) in #t17;
-    self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = super.{self::Base::[]}(#t19).{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t21 = super.{self::Base::[]=}(#t19, #t20) in #t20;
-    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = super.{self::Base::[]}(#t22).{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t24 = super.{self::Base::[]=}(#t22, #t23) in #t23;
-    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = super.{self::Base::[]}(#t25).{self::B::-}(1){(core::int*) →* self::B*} in let final void #t27 = super.{self::Base::[]=}(#t25, #t26) in #t26;
-    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = super.{self::Base::[]}(#t28) in let final void #t30 = super.{self::Base::[]=}(#t28, #t29.{self::B::-}(1){(core::int*) →* self::B*}) in #t29;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
+    self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = super.{self::Base::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = super.{self::Base::[]=}(#t16, #t17) in #t17;
+    self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = super.{self::Base::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = super.{self::Base::[]=}(#t19, #t20) in #t20;
+    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = super.{self::Base::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = super.{self::Base::[]=}(#t22, #t23) in #t23;
+    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = super.{self::Base::[]}(#t25).{self::B::-}(1) in let final void #t27 = super.{self::Base::[]=}(#t25, #t26) in #t26;
+    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = super.{self::Base::[]}(#t28) in let final void #t30 = super.{self::Base::[]=}(#t28, #t29.{self::B::-}(1)) in #t29;
   }
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.weak.transformed.expect
index 3a7a814..96b0328 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.weak.transformed.expect
@@ -74,19 +74,19 @@
     ;
   method test() → void {
     super.{self::Base::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1) == null ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
-    let final self::Index* #t2 = self::f<self::Index*>() in super.{self::Base::[]=}(#t2, super.{self::Base::[]}(#t2).{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*);
-    let final self::Index* #t3 = self::f<self::Index*>() in super.{self::Base::[]=}(#t3, super.{self::Base::[]}(#t3).{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*});
-    let final self::Index* #t4 = self::f<self::Index*>() in super.{self::Base::[]=}(#t4, super.{self::Base::[]}(#t4).{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*});
-    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = super.{self::Base::[]}(#t5).{self::B::-}(1){(core::int*) →* self::B*} in let final void #t7 = super.{self::Base::[]=}(#t5, #t6) in #t6;
-    let final self::Index* #t8 = self::f<self::Index*>() in super.{self::Base::[]=}(#t8, super.{self::Base::[]}(#t8).{self::B::-}(1){(core::int*) →* self::B*});
+    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1).{self::A::==}(null) ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t2 = self::f<self::Index*>() in super.{self::Base::[]=}(#t2, super.{self::Base::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
+    let final self::Index* #t3 = self::f<self::Index*>() in super.{self::Base::[]=}(#t3, super.{self::Base::[]}(#t3).{self::B::*}(self::f<self::B*>()));
+    let final self::Index* #t4 = self::f<self::Index*>() in super.{self::Base::[]=}(#t4, super.{self::Base::[]}(#t4).{self::B::&}(self::f<self::A*>()));
+    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = super.{self::Base::[]}(#t5).{self::B::-}(1) in let final void #t7 = super.{self::Base::[]=}(#t5, #t6) in #t6;
+    let final self::Index* #t8 = self::f<self::Index*>() in super.{self::Base::[]=}(#t8, super.{self::Base::[]}(#t8).{self::B::-}(1));
     self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = super.{self::Base::[]=}(#t9, #t10) in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13 == null ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
-    self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = super.{self::Base::[]}(#t16).{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t18 = super.{self::Base::[]=}(#t16, #t17) in #t17;
-    self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = super.{self::Base::[]}(#t19).{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t21 = super.{self::Base::[]=}(#t19, #t20) in #t20;
-    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = super.{self::Base::[]}(#t22).{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t24 = super.{self::Base::[]=}(#t22, #t23) in #t23;
-    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = super.{self::Base::[]}(#t25).{self::B::-}(1){(core::int*) →* self::B*} in let final void #t27 = super.{self::Base::[]=}(#t25, #t26) in #t26;
-    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = super.{self::Base::[]}(#t28) in let final void #t30 = super.{self::Base::[]=}(#t28, #t29.{self::B::-}(1){(core::int*) →* self::B*}) in #t29;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
+    self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = super.{self::Base::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = super.{self::Base::[]=}(#t16, #t17) in #t17;
+    self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = super.{self::Base::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = super.{self::Base::[]=}(#t19, #t20) in #t20;
+    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = super.{self::Base::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = super.{self::Base::[]=}(#t22, #t23) in #t23;
+    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = super.{self::Base::[]}(#t25).{self::B::-}(1) in let final void #t27 = super.{self::Base::[]=}(#t25, #t26) in #t26;
+    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = super.{self::Base::[]}(#t28) in let final void #t30 = super.{self::Base::[]=}(#t28, #t29.{self::B::-}(1)) in #t29;
   }
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.weak.expect
index 7305204..5831c53 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.weak.expect
@@ -38,9 +38,9 @@
     : super core::Object::•()
     ;
   operator [](core::String* s) → self::Base::T*
-    return this.{self::Base::getValue}(s){(core::String*) →* self::Base::T*};
+    return this.{self::Base::getValue}(s);
   operator []=(core::String* s, generic-covariant-impl self::Base::U* v) → void
-    return this.{self::Base::setValue}(s, v){(core::String*, self::Base::U*) →* void};
+    return this.{self::Base::setValue}(s, v);
   abstract method getValue(core::String* s) → self::Base::T*;
   abstract method setValue(core::String* s, generic-covariant-impl self::Base::U* v) → void;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -61,12 +61,12 @@
   method test() → void {
     core::int* v1 = let final core::String* #t1 = "x" in let final core::int* #t2 = self::getInt() in let final void #t3 = super.{self::Base::[]=}(#t1, #t2) in #t2;
     core::num* v2 = let final core::String* #t4 = "x" in let final core::num* #t5 = self::getNum() as{TypeError} core::int* in let final void #t6 = super.{self::Base::[]=}(#t4, #t5) in #t5;
-    core::int* v4 = let final core::String* #t7 = "x" in let final core::int* #t8 = super.{self::Base::[]}(#t7) in #t8 == null ?{core::int*} let final core::int* #t9 = self::getInt() in let final void #t10 = super.{self::Base::[]=}(#t7, #t9) in #t9 : #t8;
-    core::num* v5 = let final core::String* #t11 = "x" in let final core::int* #t12 = super.{self::Base::[]}(#t11) in #t12 == null ?{core::num*} let final core::num* #t13 = self::getNum() as{TypeError} core::int* in let final void #t14 = super.{self::Base::[]=}(#t11, #t13) in #t13 : #t12;
-    core::int* v7 = let final core::String* #t15 = "x" in let final core::int* #t16 = super.{self::Base::[]}(#t15).{core::num::+}(self::getInt()){(core::num*) →* core::int*} in let final void #t17 = super.{self::Base::[]=}(#t15, #t16) in #t16;
-    core::num* v8 = let final core::String* #t18 = "x" in let final core::num* #t19 = super.{self::Base::[]}(#t18).{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t20 = super.{self::Base::[]=}(#t18, #t19) in #t19;
-    core::int* v10 = let final core::String* #t21 = "x" in let final core::int* #t22 = super.{self::Base::[]}(#t21).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t23 = super.{self::Base::[]=}(#t21, #t22) in #t22;
-    core::int* v11 = let final core::String* #t24 = "x" in let final core::int* #t25 = super.{self::Base::[]}(#t24) in let final void #t26 = super.{self::Base::[]=}(#t24, #t25.{core::num::+}(1){(core::num*) →* core::int*}) in #t25;
+    core::int* v4 = let final core::String* #t7 = "x" in let final core::int* #t8 = super.{self::Base::[]}(#t7) in #t8.{core::num::==}(null) ?{core::int*} let final core::int* #t9 = self::getInt() in let final void #t10 = super.{self::Base::[]=}(#t7, #t9) in #t9 : #t8;
+    core::num* v5 = let final core::String* #t11 = "x" in let final core::int* #t12 = super.{self::Base::[]}(#t11) in #t12.{core::num::==}(null) ?{core::num*} let final core::num* #t13 = self::getNum() as{TypeError} core::int* in let final void #t14 = super.{self::Base::[]=}(#t11, #t13) in #t13 : #t12;
+    core::int* v7 = let final core::String* #t15 = "x" in let final core::int* #t16 = super.{self::Base::[]}(#t15).{core::num::+}(self::getInt()) in let final void #t17 = super.{self::Base::[]=}(#t15, #t16) in #t16;
+    core::num* v8 = let final core::String* #t18 = "x" in let final core::num* #t19 = super.{self::Base::[]}(#t18).{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t20 = super.{self::Base::[]=}(#t18, #t19) in #t19;
+    core::int* v10 = let final core::String* #t21 = "x" in let final core::int* #t22 = super.{self::Base::[]}(#t21).{core::num::+}(1) in let final void #t23 = super.{self::Base::[]=}(#t21, #t22) in #t22;
+    core::int* v11 = let final core::String* #t24 = "x" in let final core::int* #t25 = super.{self::Base::[]}(#t24) in let final void #t26 = super.{self::Base::[]=}(#t24, #t25.{core::num::+}(1)) in #t25;
   }
 }
 abstract class Test2 extends self::Base<core::int*, core::num*> {
@@ -77,14 +77,14 @@
     core::int* v1 = let final core::String* #t27 = "x" in let final core::int* #t28 = self::getInt() in let final void #t29 = super.{self::Base::[]=}(#t27, #t28) in #t28;
     core::num* v2 = let final core::String* #t30 = "x" in let final core::num* #t31 = self::getNum() in let final void #t32 = super.{self::Base::[]=}(#t30, #t31) in #t31;
     core::double* v3 = let final core::String* #t33 = "x" in let final core::double* #t34 = self::getDouble() in let final void #t35 = super.{self::Base::[]=}(#t33, #t34) in #t34;
-    core::int* v4 = let final core::String* #t36 = "x" in let final core::int* #t37 = super.{self::Base::[]}(#t36) in #t37 == null ?{core::int*} let final core::int* #t38 = self::getInt() in let final void #t39 = super.{self::Base::[]=}(#t36, #t38) in #t38 : #t37;
-    core::num* v5 = let final core::String* #t40 = "x" in let final core::int* #t41 = super.{self::Base::[]}(#t40) in #t41 == null ?{core::num*} let final core::num* #t42 = self::getNum() in let final void #t43 = super.{self::Base::[]=}(#t40, #t42) in #t42 : #t41;
-    core::num* v6 = let final core::String* #t44 = "x" in let final core::int* #t45 = super.{self::Base::[]}(#t44) in #t45 == null ?{core::num*} let final core::double* #t46 = self::getDouble() in let final void #t47 = super.{self::Base::[]=}(#t44, #t46) in #t46 : #t45;
-    core::int* v7 = let final core::String* #t48 = "x" in let final core::int* #t49 = super.{self::Base::[]}(#t48).{core::num::+}(self::getInt()){(core::num*) →* core::int*} in let final void #t50 = super.{self::Base::[]=}(#t48, #t49) in #t49;
-    core::num* v8 = let final core::String* #t51 = "x" in let final core::num* #t52 = super.{self::Base::[]}(#t51).{core::num::+}(self::getNum()){(core::num*) →* core::num*} in let final void #t53 = super.{self::Base::[]=}(#t51, #t52) in #t52;
-    core::double* v9 = let final core::String* #t54 = "x" in let final core::double* #t55 = super.{self::Base::[]}(#t54).{core::num::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t56 = super.{self::Base::[]=}(#t54, #t55) in #t55;
-    core::int* v10 = let final core::String* #t57 = "x" in let final core::int* #t58 = super.{self::Base::[]}(#t57).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t59 = super.{self::Base::[]=}(#t57, #t58) in #t58;
-    core::int* v11 = let final core::String* #t60 = "x" in let final core::int* #t61 = super.{self::Base::[]}(#t60) in let final void #t62 = super.{self::Base::[]=}(#t60, #t61.{core::num::+}(1){(core::num*) →* core::int*}) in #t61;
+    core::int* v4 = let final core::String* #t36 = "x" in let final core::int* #t37 = super.{self::Base::[]}(#t36) in #t37.{core::num::==}(null) ?{core::int*} let final core::int* #t38 = self::getInt() in let final void #t39 = super.{self::Base::[]=}(#t36, #t38) in #t38 : #t37;
+    core::num* v5 = let final core::String* #t40 = "x" in let final core::int* #t41 = super.{self::Base::[]}(#t40) in #t41.{core::num::==}(null) ?{core::num*} let final core::num* #t42 = self::getNum() in let final void #t43 = super.{self::Base::[]=}(#t40, #t42) in #t42 : #t41;
+    core::num* v6 = let final core::String* #t44 = "x" in let final core::int* #t45 = super.{self::Base::[]}(#t44) in #t45.{core::num::==}(null) ?{core::num*} let final core::double* #t46 = self::getDouble() in let final void #t47 = super.{self::Base::[]=}(#t44, #t46) in #t46 : #t45;
+    core::int* v7 = let final core::String* #t48 = "x" in let final core::int* #t49 = super.{self::Base::[]}(#t48).{core::num::+}(self::getInt()) in let final void #t50 = super.{self::Base::[]=}(#t48, #t49) in #t49;
+    core::num* v8 = let final core::String* #t51 = "x" in let final core::num* #t52 = super.{self::Base::[]}(#t51).{core::num::+}(self::getNum()) in let final void #t53 = super.{self::Base::[]=}(#t51, #t52) in #t52;
+    core::double* v9 = let final core::String* #t54 = "x" in let final core::double* #t55 = super.{self::Base::[]}(#t54).{core::num::+}(self::getDouble()) in let final void #t56 = super.{self::Base::[]=}(#t54, #t55) in #t55;
+    core::int* v10 = let final core::String* #t57 = "x" in let final core::int* #t58 = super.{self::Base::[]}(#t57).{core::num::+}(1) in let final void #t59 = super.{self::Base::[]=}(#t57, #t58) in #t58;
+    core::int* v11 = let final core::String* #t60 = "x" in let final core::int* #t61 = super.{self::Base::[]}(#t60) in let final void #t62 = super.{self::Base::[]=}(#t60, #t61.{core::num::+}(1)) in #t61;
   }
 }
 abstract class Test3 extends self::Base<core::int*, core::double*> {
@@ -94,19 +94,19 @@
   method test() → void {
     core::num* v2 = let final core::String* #t63 = "x" in let final core::num* #t64 = self::getNum() as{TypeError} core::double* in let final void #t65 = super.{self::Base::[]=}(#t63, #t64) in #t64;
     core::double* v3 = let final core::String* #t66 = "x" in let final core::double* #t67 = self::getDouble() in let final void #t68 = super.{self::Base::[]=}(#t66, #t67) in #t67;
-    core::num* v5 = let final core::String* #t69 = "x" in let final core::int* #t70 = super.{self::Base::[]}(#t69) in #t70 == null ?{core::num*} let final core::num* #t71 = self::getNum() as{TypeError} core::double* in let final void #t72 = super.{self::Base::[]=}(#t69, #t71) in #t71 : #t70;
-    core::num* v6 = let final core::String* #t73 = "x" in let final core::int* #t74 = super.{self::Base::[]}(#t73) in #t74 == null ?{core::num*} let final core::double* #t75 = self::getDouble() in let final void #t76 = super.{self::Base::[]=}(#t73, #t75) in #t75 : #t74;
+    core::num* v5 = let final core::String* #t69 = "x" in let final core::int* #t70 = super.{self::Base::[]}(#t69) in #t70.{core::num::==}(null) ?{core::num*} let final core::num* #t71 = self::getNum() as{TypeError} core::double* in let final void #t72 = super.{self::Base::[]=}(#t69, #t71) in #t71 : #t70;
+    core::num* v6 = let final core::String* #t73 = "x" in let final core::int* #t74 = super.{self::Base::[]}(#t73) in #t74.{core::num::==}(null) ?{core::num*} let final core::double* #t75 = self::getDouble() in let final void #t76 = super.{self::Base::[]=}(#t73, #t75) in #t75 : #t74;
     core::int* v7 = let final core::String* #t77 = "x" in let final core::int* #t78 = let final Never* #t79 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:106:31: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
             /*@target=num.+*/ += getInt();
-                              ^" in super.{self::Base::[]}(#t77).{core::num::+}(self::getInt()){(core::num*) →* core::int*} as{TypeError} core::double* in let final void #t80 = super.{self::Base::[]=}(#t77, #t78) in #t78;
-    core::num* v8 = let final core::String* #t81 = "x" in let final core::num* #t82 = super.{self::Base::[]}(#t81).{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t83 = super.{self::Base::[]=}(#t81, #t82) in #t82;
-    core::double* v9 = let final core::String* #t84 = "x" in let final core::double* #t85 = super.{self::Base::[]}(#t84).{core::num::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t86 = super.{self::Base::[]=}(#t84, #t85) in #t85;
+                              ^" in super.{self::Base::[]}(#t77).{core::num::+}(self::getInt()) as{TypeError} core::double* in let final void #t80 = super.{self::Base::[]=}(#t77, #t78) in #t78;
+    core::num* v8 = let final core::String* #t81 = "x" in let final core::num* #t82 = super.{self::Base::[]}(#t81).{core::num::+}(self::getNum()) as{TypeError} core::double* in let final void #t83 = super.{self::Base::[]=}(#t81, #t82) in #t82;
+    core::double* v9 = let final core::String* #t84 = "x" in let final core::double* #t85 = super.{self::Base::[]}(#t84).{core::num::+}(self::getDouble()) in let final void #t86 = super.{self::Base::[]=}(#t84, #t85) in #t85;
     core::int* v10 = let final core::String* #t87 = "x" in let final core::int* #t88 = let final Never* #t89 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:116:50: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
     var /*@ type=int* */ v10 = /*@target=num.+*/ ++super
-                                                 ^" in super.{self::Base::[]}(#t87).{core::num::+}(1){(core::num*) →* core::int*} as{TypeError} core::double* in let final void #t90 = super.{self::Base::[]=}(#t87, #t88) in #t88;
+                                                 ^" in super.{self::Base::[]}(#t87).{core::num::+}(1) as{TypeError} core::double* in let final void #t90 = super.{self::Base::[]=}(#t87, #t88) in #t88;
     core::int* v11 = let final core::String* #t91 = "x" in let final core::int* #t92 = super.{self::Base::[]}(#t91) in let final void #t93 = super.{self::Base::[]=}(#t91, let final Never* #t94 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:120:33: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
         ['x'] /*@target=num.+*/ ++;
-                                ^" in #t92.{core::num::+}(1){(core::num*) →* core::int*} as{TypeError} core::double*) in #t92;
+                                ^" in #t92.{core::num::+}(1) as{TypeError} core::double*) in #t92;
   }
 }
 abstract class Test4 extends self::Base<core::num*, core::int*> {
@@ -116,12 +116,12 @@
   method test() → void {
     core::int* v1 = let final core::String* #t95 = "x" in let final core::int* #t96 = self::getInt() in let final void #t97 = super.{self::Base::[]=}(#t95, #t96) in #t96;
     core::num* v2 = let final core::String* #t98 = "x" in let final core::num* #t99 = self::getNum() as{TypeError} core::int* in let final void #t100 = super.{self::Base::[]=}(#t98, #t99) in #t99;
-    core::num* v4 = let final core::String* #t101 = "x" in let final core::num* #t102 = super.{self::Base::[]}(#t101) in #t102 == null ?{core::num*} let final core::int* #t103 = self::getInt() in let final void #t104 = super.{self::Base::[]=}(#t101, #t103) in #t103 : #t102;
-    core::num* v5 = let final core::String* #t105 = "x" in let final core::num* #t106 = super.{self::Base::[]}(#t105) in #t106 == null ?{core::num*} let final core::num* #t107 = self::getNum() as{TypeError} core::int* in let final void #t108 = super.{self::Base::[]=}(#t105, #t107) in #t107 : #t106;
-    core::num* v7 = let final core::String* #t109 = "x" in let final core::num* #t110 = super.{self::Base::[]}(#t109).{core::num::+}(self::getInt()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t111 = super.{self::Base::[]=}(#t109, #t110) in #t110;
-    core::num* v8 = let final core::String* #t112 = "x" in let final core::num* #t113 = super.{self::Base::[]}(#t112).{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t114 = super.{self::Base::[]=}(#t112, #t113) in #t113;
-    core::num* v10 = let final core::String* #t115 = "x" in let final core::num* #t116 = super.{self::Base::[]}(#t115).{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t117 = super.{self::Base::[]=}(#t115, #t116) in #t116;
-    core::num* v11 = let final core::String* #t118 = "x" in let final core::num* #t119 = super.{self::Base::[]}(#t118) in let final void #t120 = super.{self::Base::[]=}(#t118, #t119.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::int*) in #t119;
+    core::num* v4 = let final core::String* #t101 = "x" in let final core::num* #t102 = super.{self::Base::[]}(#t101) in #t102.{core::num::==}(null) ?{core::num*} let final core::int* #t103 = self::getInt() in let final void #t104 = super.{self::Base::[]=}(#t101, #t103) in #t103 : #t102;
+    core::num* v5 = let final core::String* #t105 = "x" in let final core::num* #t106 = super.{self::Base::[]}(#t105) in #t106.{core::num::==}(null) ?{core::num*} let final core::num* #t107 = self::getNum() as{TypeError} core::int* in let final void #t108 = super.{self::Base::[]=}(#t105, #t107) in #t107 : #t106;
+    core::num* v7 = let final core::String* #t109 = "x" in let final core::num* #t110 = super.{self::Base::[]}(#t109).{core::num::+}(self::getInt()) as{TypeError} core::int* in let final void #t111 = super.{self::Base::[]=}(#t109, #t110) in #t110;
+    core::num* v8 = let final core::String* #t112 = "x" in let final core::num* #t113 = super.{self::Base::[]}(#t112).{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t114 = super.{self::Base::[]=}(#t112, #t113) in #t113;
+    core::num* v10 = let final core::String* #t115 = "x" in let final core::num* #t116 = super.{self::Base::[]}(#t115).{core::num::+}(1) as{TypeError} core::int* in let final void #t117 = super.{self::Base::[]=}(#t115, #t116) in #t116;
+    core::num* v11 = let final core::String* #t118 = "x" in let final core::num* #t119 = super.{self::Base::[]}(#t118) in let final void #t120 = super.{self::Base::[]=}(#t118, #t119.{core::num::+}(1) as{TypeError} core::int*) in #t119;
   }
 }
 abstract class Test5 extends self::Base<core::num*, core::num*> {
@@ -132,14 +132,14 @@
     core::int* v1 = let final core::String* #t121 = "x" in let final core::int* #t122 = self::getInt() in let final void #t123 = super.{self::Base::[]=}(#t121, #t122) in #t122;
     core::num* v2 = let final core::String* #t124 = "x" in let final core::num* #t125 = self::getNum() in let final void #t126 = super.{self::Base::[]=}(#t124, #t125) in #t125;
     core::double* v3 = let final core::String* #t127 = "x" in let final core::double* #t128 = self::getDouble() in let final void #t129 = super.{self::Base::[]=}(#t127, #t128) in #t128;
-    core::num* v4 = let final core::String* #t130 = "x" in let final core::num* #t131 = super.{self::Base::[]}(#t130) in #t131 == null ?{core::num*} let final core::int* #t132 = self::getInt() in let final void #t133 = super.{self::Base::[]=}(#t130, #t132) in #t132 : #t131;
-    core::num* v5 = let final core::String* #t134 = "x" in let final core::num* #t135 = super.{self::Base::[]}(#t134) in #t135 == null ?{core::num*} let final core::num* #t136 = self::getNum() in let final void #t137 = super.{self::Base::[]=}(#t134, #t136) in #t136 : #t135;
-    core::num* v6 = let final core::String* #t138 = "x" in let final core::num* #t139 = super.{self::Base::[]}(#t138) in #t139 == null ?{core::num*} let final core::double* #t140 = self::getDouble() in let final void #t141 = super.{self::Base::[]=}(#t138, #t140) in #t140 : #t139;
-    core::num* v7 = let final core::String* #t142 = "x" in let final core::num* #t143 = super.{self::Base::[]}(#t142).{core::num::+}(self::getInt()){(core::num*) →* core::num*} in let final void #t144 = super.{self::Base::[]=}(#t142, #t143) in #t143;
-    core::num* v8 = let final core::String* #t145 = "x" in let final core::num* #t146 = super.{self::Base::[]}(#t145).{core::num::+}(self::getNum()){(core::num*) →* core::num*} in let final void #t147 = super.{self::Base::[]=}(#t145, #t146) in #t146;
-    core::num* v9 = let final core::String* #t148 = "x" in let final core::num* #t149 = super.{self::Base::[]}(#t148).{core::num::+}(self::getDouble()){(core::num*) →* core::num*} in let final void #t150 = super.{self::Base::[]=}(#t148, #t149) in #t149;
-    core::num* v10 = let final core::String* #t151 = "x" in let final core::num* #t152 = super.{self::Base::[]}(#t151).{core::num::+}(1){(core::num*) →* core::num*} in let final void #t153 = super.{self::Base::[]=}(#t151, #t152) in #t152;
-    core::num* v11 = let final core::String* #t154 = "x" in let final core::num* #t155 = super.{self::Base::[]}(#t154) in let final void #t156 = super.{self::Base::[]=}(#t154, #t155.{core::num::+}(1){(core::num*) →* core::num*}) in #t155;
+    core::num* v4 = let final core::String* #t130 = "x" in let final core::num* #t131 = super.{self::Base::[]}(#t130) in #t131.{core::num::==}(null) ?{core::num*} let final core::int* #t132 = self::getInt() in let final void #t133 = super.{self::Base::[]=}(#t130, #t132) in #t132 : #t131;
+    core::num* v5 = let final core::String* #t134 = "x" in let final core::num* #t135 = super.{self::Base::[]}(#t134) in #t135.{core::num::==}(null) ?{core::num*} let final core::num* #t136 = self::getNum() in let final void #t137 = super.{self::Base::[]=}(#t134, #t136) in #t136 : #t135;
+    core::num* v6 = let final core::String* #t138 = "x" in let final core::num* #t139 = super.{self::Base::[]}(#t138) in #t139.{core::num::==}(null) ?{core::num*} let final core::double* #t140 = self::getDouble() in let final void #t141 = super.{self::Base::[]=}(#t138, #t140) in #t140 : #t139;
+    core::num* v7 = let final core::String* #t142 = "x" in let final core::num* #t143 = super.{self::Base::[]}(#t142).{core::num::+}(self::getInt()) in let final void #t144 = super.{self::Base::[]=}(#t142, #t143) in #t143;
+    core::num* v8 = let final core::String* #t145 = "x" in let final core::num* #t146 = super.{self::Base::[]}(#t145).{core::num::+}(self::getNum()) in let final void #t147 = super.{self::Base::[]=}(#t145, #t146) in #t146;
+    core::num* v9 = let final core::String* #t148 = "x" in let final core::num* #t149 = super.{self::Base::[]}(#t148).{core::num::+}(self::getDouble()) in let final void #t150 = super.{self::Base::[]=}(#t148, #t149) in #t149;
+    core::num* v10 = let final core::String* #t151 = "x" in let final core::num* #t152 = super.{self::Base::[]}(#t151).{core::num::+}(1) in let final void #t153 = super.{self::Base::[]=}(#t151, #t152) in #t152;
+    core::num* v11 = let final core::String* #t154 = "x" in let final core::num* #t155 = super.{self::Base::[]}(#t154) in let final void #t156 = super.{self::Base::[]=}(#t154, #t155.{core::num::+}(1)) in #t155;
   }
 }
 abstract class Test6 extends self::Base<core::num*, core::double*> {
@@ -149,13 +149,13 @@
   method test() → void {
     core::num* v2 = let final core::String* #t157 = "x" in let final core::num* #t158 = self::getNum() as{TypeError} core::double* in let final void #t159 = super.{self::Base::[]=}(#t157, #t158) in #t158;
     core::double* v3 = let final core::String* #t160 = "x" in let final core::double* #t161 = self::getDouble() in let final void #t162 = super.{self::Base::[]=}(#t160, #t161) in #t161;
-    core::num* v5 = let final core::String* #t163 = "x" in let final core::num* #t164 = super.{self::Base::[]}(#t163) in #t164 == null ?{core::num*} let final core::num* #t165 = self::getNum() as{TypeError} core::double* in let final void #t166 = super.{self::Base::[]=}(#t163, #t165) in #t165 : #t164;
-    core::num* v6 = let final core::String* #t167 = "x" in let final core::num* #t168 = super.{self::Base::[]}(#t167) in #t168 == null ?{core::num*} let final core::double* #t169 = self::getDouble() in let final void #t170 = super.{self::Base::[]=}(#t167, #t169) in #t169 : #t168;
-    core::num* v7 = let final core::String* #t171 = "x" in let final core::num* #t172 = super.{self::Base::[]}(#t171).{core::num::+}(self::getInt()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t173 = super.{self::Base::[]=}(#t171, #t172) in #t172;
-    core::num* v8 = let final core::String* #t174 = "x" in let final core::num* #t175 = super.{self::Base::[]}(#t174).{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t176 = super.{self::Base::[]=}(#t174, #t175) in #t175;
-    core::num* v9 = let final core::String* #t177 = "x" in let final core::num* #t178 = super.{self::Base::[]}(#t177).{core::num::+}(self::getDouble()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t179 = super.{self::Base::[]=}(#t177, #t178) in #t178;
-    core::num* v10 = let final core::String* #t180 = "x" in let final core::num* #t181 = super.{self::Base::[]}(#t180).{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t182 = super.{self::Base::[]=}(#t180, #t181) in #t181;
-    core::num* v11 = let final core::String* #t183 = "x" in let final core::num* #t184 = super.{self::Base::[]}(#t183) in let final void #t185 = super.{self::Base::[]=}(#t183, #t184.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::double*) in #t184;
+    core::num* v5 = let final core::String* #t163 = "x" in let final core::num* #t164 = super.{self::Base::[]}(#t163) in #t164.{core::num::==}(null) ?{core::num*} let final core::num* #t165 = self::getNum() as{TypeError} core::double* in let final void #t166 = super.{self::Base::[]=}(#t163, #t165) in #t165 : #t164;
+    core::num* v6 = let final core::String* #t167 = "x" in let final core::num* #t168 = super.{self::Base::[]}(#t167) in #t168.{core::num::==}(null) ?{core::num*} let final core::double* #t169 = self::getDouble() in let final void #t170 = super.{self::Base::[]=}(#t167, #t169) in #t169 : #t168;
+    core::num* v7 = let final core::String* #t171 = "x" in let final core::num* #t172 = super.{self::Base::[]}(#t171).{core::num::+}(self::getInt()) as{TypeError} core::double* in let final void #t173 = super.{self::Base::[]=}(#t171, #t172) in #t172;
+    core::num* v8 = let final core::String* #t174 = "x" in let final core::num* #t175 = super.{self::Base::[]}(#t174).{core::num::+}(self::getNum()) as{TypeError} core::double* in let final void #t176 = super.{self::Base::[]=}(#t174, #t175) in #t175;
+    core::num* v9 = let final core::String* #t177 = "x" in let final core::num* #t178 = super.{self::Base::[]}(#t177).{core::num::+}(self::getDouble()) as{TypeError} core::double* in let final void #t179 = super.{self::Base::[]=}(#t177, #t178) in #t178;
+    core::num* v10 = let final core::String* #t180 = "x" in let final core::num* #t181 = super.{self::Base::[]}(#t180).{core::num::+}(1) as{TypeError} core::double* in let final void #t182 = super.{self::Base::[]=}(#t180, #t181) in #t181;
+    core::num* v11 = let final core::String* #t183 = "x" in let final core::num* #t184 = super.{self::Base::[]}(#t183) in let final void #t185 = super.{self::Base::[]=}(#t183, #t184.{core::num::+}(1) as{TypeError} core::double*) in #t184;
   }
 }
 abstract class Test7 extends self::Base<core::double*, core::int*> {
@@ -165,20 +165,20 @@
   method test() → void {
     core::int* v1 = let final core::String* #t186 = "x" in let final core::int* #t187 = self::getInt() in let final void #t188 = super.{self::Base::[]=}(#t186, #t187) in #t187;
     core::num* v2 = let final core::String* #t189 = "x" in let final core::num* #t190 = self::getNum() as{TypeError} core::int* in let final void #t191 = super.{self::Base::[]=}(#t189, #t190) in #t190;
-    core::num* v4 = let final core::String* #t192 = "x" in let final core::double* #t193 = super.{self::Base::[]}(#t192) in #t193 == null ?{core::num*} let final core::int* #t194 = self::getInt() in let final void #t195 = super.{self::Base::[]=}(#t192, #t194) in #t194 : #t193;
-    core::num* v5 = let final core::String* #t196 = "x" in let final core::double* #t197 = super.{self::Base::[]}(#t196) in #t197 == null ?{core::num*} let final core::num* #t198 = self::getNum() as{TypeError} core::int* in let final void #t199 = super.{self::Base::[]=}(#t196, #t198) in #t198 : #t197;
+    core::num* v4 = let final core::String* #t192 = "x" in let final core::double* #t193 = super.{self::Base::[]}(#t192) in #t193.{core::num::==}(null) ?{core::num*} let final core::int* #t194 = self::getInt() in let final void #t195 = super.{self::Base::[]=}(#t192, #t194) in #t194 : #t193;
+    core::num* v5 = let final core::String* #t196 = "x" in let final core::double* #t197 = super.{self::Base::[]}(#t196) in #t197.{core::num::==}(null) ?{core::num*} let final core::num* #t198 = self::getNum() as{TypeError} core::int* in let final void #t199 = super.{self::Base::[]=}(#t196, #t198) in #t198 : #t197;
     core::double* v7 = let final core::String* #t200 = "x" in let final core::double* #t201 = let final Never* #t202 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:244:34: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
             /*@target=double.+*/ += getInt();
-                                 ^" in super.{self::Base::[]}(#t200).{core::double::+}(self::getInt()){(core::num*) →* core::double*} as{TypeError} core::int* in let final void #t203 = super.{self::Base::[]=}(#t200, #t201) in #t201;
+                                 ^" in super.{self::Base::[]}(#t200).{core::double::+}(self::getInt()) as{TypeError} core::int* in let final void #t203 = super.{self::Base::[]=}(#t200, #t201) in #t201;
     core::double* v8 = let final core::String* #t204 = "x" in let final core::double* #t205 = let final Never* #t206 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:248:34: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
             /*@target=double.+*/ += getNum();
-                                 ^" in super.{self::Base::[]}(#t204).{core::double::+}(self::getNum()){(core::num*) →* core::double*} as{TypeError} core::int* in let final void #t207 = super.{self::Base::[]=}(#t204, #t205) in #t205;
+                                 ^" in super.{self::Base::[]}(#t204).{core::double::+}(self::getNum()) as{TypeError} core::int* in let final void #t207 = super.{self::Base::[]=}(#t204, #t205) in #t205;
     core::double* v10 = let final core::String* #t208 = "x" in let final core::double* #t209 = let final Never* #t210 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:250:56: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
     var /*@ type=double* */ v10 = /*@target=double.+*/ ++super
-                                                       ^" in super.{self::Base::[]}(#t208).{core::double::+}(1){(core::num*) →* core::double*} as{TypeError} core::int* in let final void #t211 = super.{self::Base::[]=}(#t208, #t209) in #t209;
+                                                       ^" in super.{self::Base::[]}(#t208).{core::double::+}(1) as{TypeError} core::int* in let final void #t211 = super.{self::Base::[]=}(#t208, #t209) in #t209;
     core::double* v11 = let final core::String* #t212 = "x" in let final core::double* #t213 = super.{self::Base::[]}(#t212) in let final void #t214 = super.{self::Base::[]=}(#t212, let final Never* #t215 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:254:36: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
         ['x'] /*@target=double.+*/ ++;
-                                   ^" in #t213.{core::double::+}(1){(core::num*) →* core::double*} as{TypeError} core::int*) in #t213;
+                                   ^" in #t213.{core::double::+}(1) as{TypeError} core::int*) in #t213;
   }
 }
 abstract class Test8 extends self::Base<core::double*, core::num*> {
@@ -189,14 +189,14 @@
     core::int* v1 = let final core::String* #t216 = "x" in let final core::int* #t217 = self::getInt() in let final void #t218 = super.{self::Base::[]=}(#t216, #t217) in #t217;
     core::num* v2 = let final core::String* #t219 = "x" in let final core::num* #t220 = self::getNum() in let final void #t221 = super.{self::Base::[]=}(#t219, #t220) in #t220;
     core::double* v3 = let final core::String* #t222 = "x" in let final core::double* #t223 = self::getDouble() in let final void #t224 = super.{self::Base::[]=}(#t222, #t223) in #t223;
-    core::num* v4 = let final core::String* #t225 = "x" in let final core::double* #t226 = super.{self::Base::[]}(#t225) in #t226 == null ?{core::num*} let final core::int* #t227 = self::getInt() in let final void #t228 = super.{self::Base::[]=}(#t225, #t227) in #t227 : #t226;
-    core::num* v5 = let final core::String* #t229 = "x" in let final core::double* #t230 = super.{self::Base::[]}(#t229) in #t230 == null ?{core::num*} let final core::num* #t231 = self::getNum() in let final void #t232 = super.{self::Base::[]=}(#t229, #t231) in #t231 : #t230;
-    core::double* v6 = let final core::String* #t233 = "x" in let final core::double* #t234 = super.{self::Base::[]}(#t233) in #t234 == null ?{core::double*} let final core::double* #t235 = self::getDouble() in let final void #t236 = super.{self::Base::[]=}(#t233, #t235) in #t235 : #t234;
-    core::double* v7 = let final core::String* #t237 = "x" in let final core::double* #t238 = super.{self::Base::[]}(#t237).{core::double::+}(self::getInt()){(core::num*) →* core::double*} in let final void #t239 = super.{self::Base::[]=}(#t237, #t238) in #t238;
-    core::double* v8 = let final core::String* #t240 = "x" in let final core::double* #t241 = super.{self::Base::[]}(#t240).{core::double::+}(self::getNum()){(core::num*) →* core::double*} in let final void #t242 = super.{self::Base::[]=}(#t240, #t241) in #t241;
-    core::double* v9 = let final core::String* #t243 = "x" in let final core::double* #t244 = super.{self::Base::[]}(#t243).{core::double::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t245 = super.{self::Base::[]=}(#t243, #t244) in #t244;
-    core::double* v10 = let final core::String* #t246 = "x" in let final core::double* #t247 = super.{self::Base::[]}(#t246).{core::double::+}(1){(core::num*) →* core::double*} in let final void #t248 = super.{self::Base::[]=}(#t246, #t247) in #t247;
-    core::double* v11 = let final core::String* #t249 = "x" in let final core::double* #t250 = super.{self::Base::[]}(#t249) in let final void #t251 = super.{self::Base::[]=}(#t249, #t250.{core::double::+}(1){(core::num*) →* core::double*}) in #t250;
+    core::num* v4 = let final core::String* #t225 = "x" in let final core::double* #t226 = super.{self::Base::[]}(#t225) in #t226.{core::num::==}(null) ?{core::num*} let final core::int* #t227 = self::getInt() in let final void #t228 = super.{self::Base::[]=}(#t225, #t227) in #t227 : #t226;
+    core::num* v5 = let final core::String* #t229 = "x" in let final core::double* #t230 = super.{self::Base::[]}(#t229) in #t230.{core::num::==}(null) ?{core::num*} let final core::num* #t231 = self::getNum() in let final void #t232 = super.{self::Base::[]=}(#t229, #t231) in #t231 : #t230;
+    core::double* v6 = let final core::String* #t233 = "x" in let final core::double* #t234 = super.{self::Base::[]}(#t233) in #t234.{core::num::==}(null) ?{core::double*} let final core::double* #t235 = self::getDouble() in let final void #t236 = super.{self::Base::[]=}(#t233, #t235) in #t235 : #t234;
+    core::double* v7 = let final core::String* #t237 = "x" in let final core::double* #t238 = super.{self::Base::[]}(#t237).{core::double::+}(self::getInt()) in let final void #t239 = super.{self::Base::[]=}(#t237, #t238) in #t238;
+    core::double* v8 = let final core::String* #t240 = "x" in let final core::double* #t241 = super.{self::Base::[]}(#t240).{core::double::+}(self::getNum()) in let final void #t242 = super.{self::Base::[]=}(#t240, #t241) in #t241;
+    core::double* v9 = let final core::String* #t243 = "x" in let final core::double* #t244 = super.{self::Base::[]}(#t243).{core::double::+}(self::getDouble()) in let final void #t245 = super.{self::Base::[]=}(#t243, #t244) in #t244;
+    core::double* v10 = let final core::String* #t246 = "x" in let final core::double* #t247 = super.{self::Base::[]}(#t246).{core::double::+}(1) in let final void #t248 = super.{self::Base::[]=}(#t246, #t247) in #t247;
+    core::double* v11 = let final core::String* #t249 = "x" in let final core::double* #t250 = super.{self::Base::[]}(#t249) in let final void #t251 = super.{self::Base::[]=}(#t249, #t250.{core::double::+}(1)) in #t250;
   }
 }
 abstract class Test9 extends self::Base<core::double*, core::double*> {
@@ -206,13 +206,13 @@
   method test() → void {
     core::num* v2 = let final core::String* #t252 = "x" in let final core::num* #t253 = self::getNum() as{TypeError} core::double* in let final void #t254 = super.{self::Base::[]=}(#t252, #t253) in #t253;
     core::double* v3 = let final core::String* #t255 = "x" in let final core::double* #t256 = self::getDouble() in let final void #t257 = super.{self::Base::[]=}(#t255, #t256) in #t256;
-    core::num* v5 = let final core::String* #t258 = "x" in let final core::double* #t259 = super.{self::Base::[]}(#t258) in #t259 == null ?{core::num*} let final core::num* #t260 = self::getNum() as{TypeError} core::double* in let final void #t261 = super.{self::Base::[]=}(#t258, #t260) in #t260 : #t259;
-    core::double* v6 = let final core::String* #t262 = "x" in let final core::double* #t263 = super.{self::Base::[]}(#t262) in #t263 == null ?{core::double*} let final core::double* #t264 = self::getDouble() in let final void #t265 = super.{self::Base::[]=}(#t262, #t264) in #t264 : #t263;
-    core::double* v7 = let final core::String* #t266 = "x" in let final core::double* #t267 = super.{self::Base::[]}(#t266).{core::double::+}(self::getInt()){(core::num*) →* core::double*} in let final void #t268 = super.{self::Base::[]=}(#t266, #t267) in #t267;
-    core::double* v8 = let final core::String* #t269 = "x" in let final core::double* #t270 = super.{self::Base::[]}(#t269).{core::double::+}(self::getNum()){(core::num*) →* core::double*} in let final void #t271 = super.{self::Base::[]=}(#t269, #t270) in #t270;
-    core::double* v9 = let final core::String* #t272 = "x" in let final core::double* #t273 = super.{self::Base::[]}(#t272).{core::double::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t274 = super.{self::Base::[]=}(#t272, #t273) in #t273;
-    core::double* v10 = let final core::String* #t275 = "x" in let final core::double* #t276 = super.{self::Base::[]}(#t275).{core::double::+}(1){(core::num*) →* core::double*} in let final void #t277 = super.{self::Base::[]=}(#t275, #t276) in #t276;
-    core::double* v11 = let final core::String* #t278 = "x" in let final core::double* #t279 = super.{self::Base::[]}(#t278) in let final void #t280 = super.{self::Base::[]=}(#t278, #t279.{core::double::+}(1){(core::num*) →* core::double*}) in #t279;
+    core::num* v5 = let final core::String* #t258 = "x" in let final core::double* #t259 = super.{self::Base::[]}(#t258) in #t259.{core::num::==}(null) ?{core::num*} let final core::num* #t260 = self::getNum() as{TypeError} core::double* in let final void #t261 = super.{self::Base::[]=}(#t258, #t260) in #t260 : #t259;
+    core::double* v6 = let final core::String* #t262 = "x" in let final core::double* #t263 = super.{self::Base::[]}(#t262) in #t263.{core::num::==}(null) ?{core::double*} let final core::double* #t264 = self::getDouble() in let final void #t265 = super.{self::Base::[]=}(#t262, #t264) in #t264 : #t263;
+    core::double* v7 = let final core::String* #t266 = "x" in let final core::double* #t267 = super.{self::Base::[]}(#t266).{core::double::+}(self::getInt()) in let final void #t268 = super.{self::Base::[]=}(#t266, #t267) in #t267;
+    core::double* v8 = let final core::String* #t269 = "x" in let final core::double* #t270 = super.{self::Base::[]}(#t269).{core::double::+}(self::getNum()) in let final void #t271 = super.{self::Base::[]=}(#t269, #t270) in #t270;
+    core::double* v9 = let final core::String* #t272 = "x" in let final core::double* #t273 = super.{self::Base::[]}(#t272).{core::double::+}(self::getDouble()) in let final void #t274 = super.{self::Base::[]=}(#t272, #t273) in #t273;
+    core::double* v10 = let final core::String* #t275 = "x" in let final core::double* #t276 = super.{self::Base::[]}(#t275).{core::double::+}(1) in let final void #t277 = super.{self::Base::[]=}(#t275, #t276) in #t276;
+    core::double* v11 = let final core::String* #t278 = "x" in let final core::double* #t279 = super.{self::Base::[]}(#t278) in let final void #t280 = super.{self::Base::[]=}(#t278, #t279.{core::double::+}(1)) in #t279;
   }
 }
 static method getInt() → core::int*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.weak.expect
index 0202be1..0776313 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.weak.expect
@@ -58,20 +58,20 @@
     return null;
   operator []=(self::Index* i, self::B* v) → void {}
   method test() → void {
-    this.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>()){(self::Index*, self::B*) →* void};
-    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1){(self::Index*) →* self::B*} == null ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()){(self::Index*, self::B*) →* void} : null;
-    let final self::Index* #t2 = self::f<self::Index*>() in this.{self::Test::[]=}(#t2, this.{self::Test::[]}(#t2){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*){(self::Index*, self::B*) →* void};
-    let final self::Index* #t3 = self::f<self::Index*>() in this.{self::Test::[]=}(#t3, this.{self::Test::[]}(#t3){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*}){(self::Index*, self::B*) →* void};
-    let final self::Index* #t4 = self::f<self::Index*>() in this.{self::Test::[]=}(#t4, this.{self::Test::[]}(#t4){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*}){(self::Index*, self::B*) →* void};
-    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = this.{self::Test::[]}(#t5){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t7 = this.{self::Test::[]=}(#t5, #t6){(self::Index*, self::B*) →* void} in #t6;
-    let final self::Index* #t8 = self::f<self::Index*>() in this.{self::Test::[]=}(#t8, this.{self::Test::[]}(#t8){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void};
-    self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = this.{self::Test::[]=}(#t9, #t10){(self::Index*, self::B*) →* void} in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12){(self::Index*) →* self::B*} in #t13 == null ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14){(self::Index*, self::B*) →* void} in #t14 : #t13;
-    self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = this.{self::Test::[]}(#t16){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t18 = this.{self::Test::[]=}(#t16, #t17){(self::Index*, self::B*) →* void} in #t17;
-    self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = this.{self::Test::[]}(#t19){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t21 = this.{self::Test::[]=}(#t19, #t20){(self::Index*, self::B*) →* void} in #t20;
-    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = this.{self::Test::[]}(#t22){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t24 = this.{self::Test::[]=}(#t22, #t23){(self::Index*, self::B*) →* void} in #t23;
-    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = this.{self::Test::[]}(#t25){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t27 = this.{self::Test::[]=}(#t25, #t26){(self::Index*, self::B*) →* void} in #t26;
-    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = this.{self::Test::[]}(#t28){(self::Index*) →* self::B*} in let final void #t30 = this.{self::Test::[]=}(#t28, #t29.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void} in #t29;
+    this.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
+    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1).{self::A::==}(null) ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t2 = self::f<self::Index*>() in this.{self::Test::[]=}(#t2, this.{self::Test::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
+    let final self::Index* #t3 = self::f<self::Index*>() in this.{self::Test::[]=}(#t3, this.{self::Test::[]}(#t3).{self::B::*}(self::f<self::B*>()));
+    let final self::Index* #t4 = self::f<self::Index*>() in this.{self::Test::[]=}(#t4, this.{self::Test::[]}(#t4).{self::B::&}(self::f<self::A*>()));
+    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = this.{self::Test::[]}(#t5).{self::B::-}(1) in let final void #t7 = this.{self::Test::[]=}(#t5, #t6) in #t6;
+    let final self::Index* #t8 = self::f<self::Index*>() in this.{self::Test::[]=}(#t8, this.{self::Test::[]}(#t8).{self::B::-}(1));
+    self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = this.{self::Test::[]=}(#t9, #t10) in #t10;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14) in #t14 : #t13;
+    self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = this.{self::Test::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = this.{self::Test::[]=}(#t16, #t17) in #t17;
+    self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = this.{self::Test::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = this.{self::Test::[]=}(#t19, #t20) in #t20;
+    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = this.{self::Test::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = this.{self::Test::[]=}(#t22, #t23) in #t23;
+    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = this.{self::Test::[]}(#t25).{self::B::-}(1) in let final void #t27 = this.{self::Test::[]=}(#t25, #t26) in #t26;
+    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = this.{self::Test::[]}(#t28) in let final void #t30 = this.{self::Test::[]=}(#t28, #t29.{self::B::-}(1)) in #t29;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.weak.transformed.expect
index 0202be1..0776313 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.weak.transformed.expect
@@ -58,20 +58,20 @@
     return null;
   operator []=(self::Index* i, self::B* v) → void {}
   method test() → void {
-    this.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>()){(self::Index*, self::B*) →* void};
-    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1){(self::Index*) →* self::B*} == null ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()){(self::Index*, self::B*) →* void} : null;
-    let final self::Index* #t2 = self::f<self::Index*>() in this.{self::Test::[]=}(#t2, this.{self::Test::[]}(#t2){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*){(self::Index*, self::B*) →* void};
-    let final self::Index* #t3 = self::f<self::Index*>() in this.{self::Test::[]=}(#t3, this.{self::Test::[]}(#t3){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*}){(self::Index*, self::B*) →* void};
-    let final self::Index* #t4 = self::f<self::Index*>() in this.{self::Test::[]=}(#t4, this.{self::Test::[]}(#t4){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*}){(self::Index*, self::B*) →* void};
-    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = this.{self::Test::[]}(#t5){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t7 = this.{self::Test::[]=}(#t5, #t6){(self::Index*, self::B*) →* void} in #t6;
-    let final self::Index* #t8 = self::f<self::Index*>() in this.{self::Test::[]=}(#t8, this.{self::Test::[]}(#t8){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void};
-    self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = this.{self::Test::[]=}(#t9, #t10){(self::Index*, self::B*) →* void} in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12){(self::Index*) →* self::B*} in #t13 == null ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14){(self::Index*, self::B*) →* void} in #t14 : #t13;
-    self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = this.{self::Test::[]}(#t16){(self::Index*) →* self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t18 = this.{self::Test::[]=}(#t16, #t17){(self::Index*, self::B*) →* void} in #t17;
-    self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = this.{self::Test::[]}(#t19){(self::Index*) →* self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t21 = this.{self::Test::[]=}(#t19, #t20){(self::Index*, self::B*) →* void} in #t20;
-    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = this.{self::Test::[]}(#t22){(self::Index*) →* self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t24 = this.{self::Test::[]=}(#t22, #t23){(self::Index*, self::B*) →* void} in #t23;
-    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = this.{self::Test::[]}(#t25){(self::Index*) →* self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t27 = this.{self::Test::[]=}(#t25, #t26){(self::Index*, self::B*) →* void} in #t26;
-    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = this.{self::Test::[]}(#t28){(self::Index*) →* self::B*} in let final void #t30 = this.{self::Test::[]=}(#t28, #t29.{self::B::-}(1){(core::int*) →* self::B*}){(self::Index*, self::B*) →* void} in #t29;
+    this.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
+    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1).{self::A::==}(null) ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t2 = self::f<self::Index*>() in this.{self::Test::[]=}(#t2, this.{self::Test::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
+    let final self::Index* #t3 = self::f<self::Index*>() in this.{self::Test::[]=}(#t3, this.{self::Test::[]}(#t3).{self::B::*}(self::f<self::B*>()));
+    let final self::Index* #t4 = self::f<self::Index*>() in this.{self::Test::[]=}(#t4, this.{self::Test::[]}(#t4).{self::B::&}(self::f<self::A*>()));
+    let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = this.{self::Test::[]}(#t5).{self::B::-}(1) in let final void #t7 = this.{self::Test::[]=}(#t5, #t6) in #t6;
+    let final self::Index* #t8 = self::f<self::Index*>() in this.{self::Test::[]=}(#t8, this.{self::Test::[]}(#t8).{self::B::-}(1));
+    self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = this.{self::Test::[]=}(#t9, #t10) in #t10;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14) in #t14 : #t13;
+    self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = this.{self::Test::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = this.{self::Test::[]=}(#t16, #t17) in #t17;
+    self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = this.{self::Test::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = this.{self::Test::[]=}(#t19, #t20) in #t20;
+    self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = this.{self::Test::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = this.{self::Test::[]=}(#t22, #t23) in #t23;
+    self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = this.{self::Test::[]}(#t25).{self::B::-}(1) in let final void #t27 = this.{self::Test::[]=}(#t25, #t26) in #t26;
+    self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = this.{self::Test::[]}(#t28) in let final void #t30 = this.{self::Test::[]=}(#t28, #t29.{self::B::-}(1)) in #t29;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.weak.expect
index 7648761..f3c3437 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.weak.expect
@@ -40,14 +40,14 @@
   abstract operator [](core::String* s) → core::int*;
   abstract operator []=(core::String* s, core::int* v) → void;
   method test() → void {
-    core::int* v1 = let final core::String* #t1 = "x" in let final core::int* #t2 = self::getInt() in let final void #t3 = this.{self::Test1::[]=}(#t1, #t2){(core::String*, core::int*) →* void} in #t2;
-    core::num* v2 = let final core::String* #t4 = "x" in let final core::num* #t5 = self::getNum() as{TypeError} core::int* in let final void #t6 = this.{self::Test1::[]=}(#t4, #t5){(core::String*, core::int*) →* void} in #t5;
-    core::int* v4 = let final core::String* #t7 = "x" in let final core::int* #t8 = this.{self::Test1::[]}(#t7){(core::String*) →* core::int*} in #t8 == null ?{core::int*} let final core::int* #t9 = self::getInt() in let final void #t10 = this.{self::Test1::[]=}(#t7, #t9){(core::String*, core::int*) →* void} in #t9 : #t8;
-    core::num* v5 = let final core::String* #t11 = "x" in let final core::int* #t12 = this.{self::Test1::[]}(#t11){(core::String*) →* core::int*} in #t12 == null ?{core::num*} let final core::num* #t13 = self::getNum() as{TypeError} core::int* in let final void #t14 = this.{self::Test1::[]=}(#t11, #t13){(core::String*, core::int*) →* void} in #t13 : #t12;
-    core::int* v7 = let final core::String* #t15 = "x" in let final core::int* #t16 = this.{self::Test1::[]}(#t15){(core::String*) →* core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} in let final void #t17 = this.{self::Test1::[]=}(#t15, #t16){(core::String*, core::int*) →* void} in #t16;
-    core::num* v8 = let final core::String* #t18 = "x" in let final core::num* #t19 = this.{self::Test1::[]}(#t18){(core::String*) →* core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t20 = this.{self::Test1::[]=}(#t18, #t19){(core::String*, core::int*) →* void} in #t19;
-    core::int* v10 = let final core::String* #t21 = "x" in let final core::int* #t22 = this.{self::Test1::[]}(#t21){(core::String*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t23 = this.{self::Test1::[]=}(#t21, #t22){(core::String*, core::int*) →* void} in #t22;
-    core::int* v11 = let final core::String* #t24 = "x" in let final core::int* #t25 = this.{self::Test1::[]}(#t24){(core::String*) →* core::int*} in let final void #t26 = this.{self::Test1::[]=}(#t24, #t25.{core::num::+}(1){(core::num*) →* core::int*}){(core::String*, core::int*) →* void} in #t25;
+    core::int* v1 = let final core::String* #t1 = "x" in let final core::int* #t2 = self::getInt() in let final void #t3 = this.{self::Test1::[]=}(#t1, #t2) in #t2;
+    core::num* v2 = let final core::String* #t4 = "x" in let final core::num* #t5 = self::getNum() as{TypeError} core::int* in let final void #t6 = this.{self::Test1::[]=}(#t4, #t5) in #t5;
+    core::int* v4 = let final core::String* #t7 = "x" in let final core::int* #t8 = this.{self::Test1::[]}(#t7) in #t8.{core::num::==}(null) ?{core::int*} let final core::int* #t9 = self::getInt() in let final void #t10 = this.{self::Test1::[]=}(#t7, #t9) in #t9 : #t8;
+    core::num* v5 = let final core::String* #t11 = "x" in let final core::int* #t12 = this.{self::Test1::[]}(#t11) in #t12.{core::num::==}(null) ?{core::num*} let final core::num* #t13 = self::getNum() as{TypeError} core::int* in let final void #t14 = this.{self::Test1::[]=}(#t11, #t13) in #t13 : #t12;
+    core::int* v7 = let final core::String* #t15 = "x" in let final core::int* #t16 = this.{self::Test1::[]}(#t15).{core::num::+}(self::getInt()) in let final void #t17 = this.{self::Test1::[]=}(#t15, #t16) in #t16;
+    core::num* v8 = let final core::String* #t18 = "x" in let final core::num* #t19 = this.{self::Test1::[]}(#t18).{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t20 = this.{self::Test1::[]=}(#t18, #t19) in #t19;
+    core::int* v10 = let final core::String* #t21 = "x" in let final core::int* #t22 = this.{self::Test1::[]}(#t21).{core::num::+}(1) in let final void #t23 = this.{self::Test1::[]=}(#t21, #t22) in #t22;
+    core::int* v11 = let final core::String* #t24 = "x" in let final core::int* #t25 = this.{self::Test1::[]}(#t24) in let final void #t26 = this.{self::Test1::[]=}(#t24, #t25.{core::num::+}(1)) in #t25;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -67,17 +67,17 @@
   abstract operator [](core::String* s) → core::int*;
   abstract operator []=(core::String* s, core::num* v) → void;
   method test() → void {
-    core::int* v1 = let final core::String* #t27 = "x" in let final core::int* #t28 = self::getInt() in let final void #t29 = this.{self::Test2::[]=}(#t27, #t28){(core::String*, core::num*) →* void} in #t28;
-    core::num* v2 = let final core::String* #t30 = "x" in let final core::num* #t31 = self::getNum() in let final void #t32 = this.{self::Test2::[]=}(#t30, #t31){(core::String*, core::num*) →* void} in #t31;
-    core::double* v3 = let final core::String* #t33 = "x" in let final core::double* #t34 = self::getDouble() in let final void #t35 = this.{self::Test2::[]=}(#t33, #t34){(core::String*, core::num*) →* void} in #t34;
-    core::int* v4 = let final core::String* #t36 = "x" in let final core::int* #t37 = this.{self::Test2::[]}(#t36){(core::String*) →* core::int*} in #t37 == null ?{core::int*} let final core::int* #t38 = self::getInt() in let final void #t39 = this.{self::Test2::[]=}(#t36, #t38){(core::String*, core::num*) →* void} in #t38 : #t37;
-    core::num* v5 = let final core::String* #t40 = "x" in let final core::int* #t41 = this.{self::Test2::[]}(#t40){(core::String*) →* core::int*} in #t41 == null ?{core::num*} let final core::num* #t42 = self::getNum() in let final void #t43 = this.{self::Test2::[]=}(#t40, #t42){(core::String*, core::num*) →* void} in #t42 : #t41;
-    core::num* v6 = let final core::String* #t44 = "x" in let final core::int* #t45 = this.{self::Test2::[]}(#t44){(core::String*) →* core::int*} in #t45 == null ?{core::num*} let final core::double* #t46 = self::getDouble() in let final void #t47 = this.{self::Test2::[]=}(#t44, #t46){(core::String*, core::num*) →* void} in #t46 : #t45;
-    core::int* v7 = let final core::String* #t48 = "x" in let final core::int* #t49 = this.{self::Test2::[]}(#t48){(core::String*) →* core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} in let final void #t50 = this.{self::Test2::[]=}(#t48, #t49){(core::String*, core::num*) →* void} in #t49;
-    core::num* v8 = let final core::String* #t51 = "x" in let final core::num* #t52 = this.{self::Test2::[]}(#t51){(core::String*) →* core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} in let final void #t53 = this.{self::Test2::[]=}(#t51, #t52){(core::String*, core::num*) →* void} in #t52;
-    core::double* v9 = let final core::String* #t54 = "x" in let final core::double* #t55 = this.{self::Test2::[]}(#t54){(core::String*) →* core::int*}.{core::num::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t56 = this.{self::Test2::[]=}(#t54, #t55){(core::String*, core::num*) →* void} in #t55;
-    core::int* v10 = let final core::String* #t57 = "x" in let final core::int* #t58 = this.{self::Test2::[]}(#t57){(core::String*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t59 = this.{self::Test2::[]=}(#t57, #t58){(core::String*, core::num*) →* void} in #t58;
-    core::int* v11 = let final core::String* #t60 = "x" in let final core::int* #t61 = this.{self::Test2::[]}(#t60){(core::String*) →* core::int*} in let final void #t62 = this.{self::Test2::[]=}(#t60, #t61.{core::num::+}(1){(core::num*) →* core::int*}){(core::String*, core::num*) →* void} in #t61;
+    core::int* v1 = let final core::String* #t27 = "x" in let final core::int* #t28 = self::getInt() in let final void #t29 = this.{self::Test2::[]=}(#t27, #t28) in #t28;
+    core::num* v2 = let final core::String* #t30 = "x" in let final core::num* #t31 = self::getNum() in let final void #t32 = this.{self::Test2::[]=}(#t30, #t31) in #t31;
+    core::double* v3 = let final core::String* #t33 = "x" in let final core::double* #t34 = self::getDouble() in let final void #t35 = this.{self::Test2::[]=}(#t33, #t34) in #t34;
+    core::int* v4 = let final core::String* #t36 = "x" in let final core::int* #t37 = this.{self::Test2::[]}(#t36) in #t37.{core::num::==}(null) ?{core::int*} let final core::int* #t38 = self::getInt() in let final void #t39 = this.{self::Test2::[]=}(#t36, #t38) in #t38 : #t37;
+    core::num* v5 = let final core::String* #t40 = "x" in let final core::int* #t41 = this.{self::Test2::[]}(#t40) in #t41.{core::num::==}(null) ?{core::num*} let final core::num* #t42 = self::getNum() in let final void #t43 = this.{self::Test2::[]=}(#t40, #t42) in #t42 : #t41;
+    core::num* v6 = let final core::String* #t44 = "x" in let final core::int* #t45 = this.{self::Test2::[]}(#t44) in #t45.{core::num::==}(null) ?{core::num*} let final core::double* #t46 = self::getDouble() in let final void #t47 = this.{self::Test2::[]=}(#t44, #t46) in #t46 : #t45;
+    core::int* v7 = let final core::String* #t48 = "x" in let final core::int* #t49 = this.{self::Test2::[]}(#t48).{core::num::+}(self::getInt()) in let final void #t50 = this.{self::Test2::[]=}(#t48, #t49) in #t49;
+    core::num* v8 = let final core::String* #t51 = "x" in let final core::num* #t52 = this.{self::Test2::[]}(#t51).{core::num::+}(self::getNum()) in let final void #t53 = this.{self::Test2::[]=}(#t51, #t52) in #t52;
+    core::double* v9 = let final core::String* #t54 = "x" in let final core::double* #t55 = this.{self::Test2::[]}(#t54).{core::num::+}(self::getDouble()) in let final void #t56 = this.{self::Test2::[]=}(#t54, #t55) in #t55;
+    core::int* v10 = let final core::String* #t57 = "x" in let final core::int* #t58 = this.{self::Test2::[]}(#t57).{core::num::+}(1) in let final void #t59 = this.{self::Test2::[]=}(#t57, #t58) in #t58;
+    core::int* v11 = let final core::String* #t60 = "x" in let final core::int* #t61 = this.{self::Test2::[]}(#t60) in let final void #t62 = this.{self::Test2::[]=}(#t60, #t61.{core::num::+}(1)) in #t61;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -97,21 +97,21 @@
   abstract operator [](core::String* s) → core::int*;
   abstract operator []=(core::String* s, core::double* v) → void;
   method test() → void {
-    core::num* v2 = let final core::String* #t63 = "x" in let final core::num* #t64 = self::getNum() as{TypeError} core::double* in let final void #t65 = this.{self::Test3::[]=}(#t63, #t64){(core::String*, core::double*) →* void} in #t64;
-    core::double* v3 = let final core::String* #t66 = "x" in let final core::double* #t67 = self::getDouble() in let final void #t68 = this.{self::Test3::[]=}(#t66, #t67){(core::String*, core::double*) →* void} in #t67;
-    core::num* v5 = let final core::String* #t69 = "x" in let final core::int* #t70 = this.{self::Test3::[]}(#t69){(core::String*) →* core::int*} in #t70 == null ?{core::num*} let final core::num* #t71 = self::getNum() as{TypeError} core::double* in let final void #t72 = this.{self::Test3::[]=}(#t69, #t71){(core::String*, core::double*) →* void} in #t71 : #t70;
-    core::num* v6 = let final core::String* #t73 = "x" in let final core::int* #t74 = this.{self::Test3::[]}(#t73){(core::String*) →* core::int*} in #t74 == null ?{core::num*} let final core::double* #t75 = self::getDouble() in let final void #t76 = this.{self::Test3::[]=}(#t73, #t75){(core::String*, core::double*) →* void} in #t75 : #t74;
+    core::num* v2 = let final core::String* #t63 = "x" in let final core::num* #t64 = self::getNum() as{TypeError} core::double* in let final void #t65 = this.{self::Test3::[]=}(#t63, #t64) in #t64;
+    core::double* v3 = let final core::String* #t66 = "x" in let final core::double* #t67 = self::getDouble() in let final void #t68 = this.{self::Test3::[]=}(#t66, #t67) in #t67;
+    core::num* v5 = let final core::String* #t69 = "x" in let final core::int* #t70 = this.{self::Test3::[]}(#t69) in #t70.{core::num::==}(null) ?{core::num*} let final core::num* #t71 = self::getNum() as{TypeError} core::double* in let final void #t72 = this.{self::Test3::[]=}(#t69, #t71) in #t71 : #t70;
+    core::num* v6 = let final core::String* #t73 = "x" in let final core::int* #t74 = this.{self::Test3::[]}(#t73) in #t74.{core::num::==}(null) ?{core::num*} let final core::double* #t75 = self::getDouble() in let final void #t76 = this.{self::Test3::[]=}(#t73, #t75) in #t75 : #t74;
     core::int* v7 = let final core::String* #t77 = "x" in let final core::int* #t78 = let final Never* #t79 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:109:27: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
         /*@target=num.+*/ += getInt();
-                          ^" in this.{self::Test3::[]}(#t77){(core::String*) →* core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} as{TypeError} core::double* in let final void #t80 = this.{self::Test3::[]=}(#t77, #t78){(core::String*, core::double*) →* void} in #t78;
-    core::num* v8 = let final core::String* #t81 = "x" in let final core::num* #t82 = this.{self::Test3::[]}(#t81){(core::String*) →* core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t83 = this.{self::Test3::[]=}(#t81, #t82){(core::String*, core::double*) →* void} in #t82;
-    core::double* v9 = let final core::String* #t84 = "x" in let final core::double* #t85 = this.{self::Test3::[]}(#t84){(core::String*) →* core::int*}.{core::num::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t86 = this.{self::Test3::[]=}(#t84, #t85){(core::String*, core::double*) →* void} in #t85;
+                          ^" in this.{self::Test3::[]}(#t77).{core::num::+}(self::getInt()) as{TypeError} core::double* in let final void #t80 = this.{self::Test3::[]=}(#t77, #t78) in #t78;
+    core::num* v8 = let final core::String* #t81 = "x" in let final core::num* #t82 = this.{self::Test3::[]}(#t81).{core::num::+}(self::getNum()) as{TypeError} core::double* in let final void #t83 = this.{self::Test3::[]=}(#t81, #t82) in #t82;
+    core::double* v9 = let final core::String* #t84 = "x" in let final core::double* #t85 = this.{self::Test3::[]}(#t84).{core::num::+}(self::getDouble()) in let final void #t86 = this.{self::Test3::[]=}(#t84, #t85) in #t85;
     core::int* v10 = let final core::String* #t87 = "x" in let final core::int* #t88 = let final Never* #t89 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:119:50: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
     var /*@ type=int* */ v10 = /*@target=num.+*/ ++this
-                                                 ^" in this.{self::Test3::[]}(#t87){(core::String*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*} as{TypeError} core::double* in let final void #t90 = this.{self::Test3::[]=}(#t87, #t88){(core::String*, core::double*) →* void} in #t88;
-    core::int* v11 = let final core::String* #t91 = "x" in let final core::int* #t92 = this.{self::Test3::[]}(#t91){(core::String*) →* core::int*} in let final void #t93 = this.{self::Test3::[]=}(#t91, let final Never* #t94 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:124:27: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
+                                                 ^" in this.{self::Test3::[]}(#t87).{core::num::+}(1) as{TypeError} core::double* in let final void #t90 = this.{self::Test3::[]=}(#t87, #t88) in #t88;
+    core::int* v11 = let final core::String* #t91 = "x" in let final core::int* #t92 = this.{self::Test3::[]}(#t91) in let final void #t93 = this.{self::Test3::[]=}(#t91, let final Never* #t94 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:124:27: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
         /*@target=num.+*/ ++;
-                          ^" in #t92.{core::num::+}(1){(core::num*) →* core::int*} as{TypeError} core::double*){(core::String*, core::double*) →* void} in #t92;
+                          ^" in #t92.{core::num::+}(1) as{TypeError} core::double*) in #t92;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -131,14 +131,14 @@
   abstract operator [](core::String* s) → core::num*;
   abstract operator []=(core::String* s, core::int* v) → void;
   method test() → void {
-    core::int* v1 = let final core::String* #t95 = "x" in let final core::int* #t96 = self::getInt() in let final void #t97 = this.{self::Test4::[]=}(#t95, #t96){(core::String*, core::int*) →* void} in #t96;
-    core::num* v2 = let final core::String* #t98 = "x" in let final core::num* #t99 = self::getNum() as{TypeError} core::int* in let final void #t100 = this.{self::Test4::[]=}(#t98, #t99){(core::String*, core::int*) →* void} in #t99;
-    core::num* v4 = let final core::String* #t101 = "x" in let final core::num* #t102 = this.{self::Test4::[]}(#t101){(core::String*) →* core::num*} in #t102 == null ?{core::num*} let final core::int* #t103 = self::getInt() in let final void #t104 = this.{self::Test4::[]=}(#t101, #t103){(core::String*, core::int*) →* void} in #t103 : #t102;
-    core::num* v5 = let final core::String* #t105 = "x" in let final core::num* #t106 = this.{self::Test4::[]}(#t105){(core::String*) →* core::num*} in #t106 == null ?{core::num*} let final core::num* #t107 = self::getNum() as{TypeError} core::int* in let final void #t108 = this.{self::Test4::[]=}(#t105, #t107){(core::String*, core::int*) →* void} in #t107 : #t106;
-    core::num* v7 = let final core::String* #t109 = "x" in let final core::num* #t110 = this.{self::Test4::[]}(#t109){(core::String*) →* core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t111 = this.{self::Test4::[]=}(#t109, #t110){(core::String*, core::int*) →* void} in #t110;
-    core::num* v8 = let final core::String* #t112 = "x" in let final core::num* #t113 = this.{self::Test4::[]}(#t112){(core::String*) →* core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t114 = this.{self::Test4::[]=}(#t112, #t113){(core::String*, core::int*) →* void} in #t113;
-    core::num* v10 = let final core::String* #t115 = "x" in let final core::num* #t116 = this.{self::Test4::[]}(#t115){(core::String*) →* core::num*}.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t117 = this.{self::Test4::[]=}(#t115, #t116){(core::String*, core::int*) →* void} in #t116;
-    core::num* v11 = let final core::String* #t118 = "x" in let final core::num* #t119 = this.{self::Test4::[]}(#t118){(core::String*) →* core::num*} in let final void #t120 = this.{self::Test4::[]=}(#t118, #t119.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::int*){(core::String*, core::int*) →* void} in #t119;
+    core::int* v1 = let final core::String* #t95 = "x" in let final core::int* #t96 = self::getInt() in let final void #t97 = this.{self::Test4::[]=}(#t95, #t96) in #t96;
+    core::num* v2 = let final core::String* #t98 = "x" in let final core::num* #t99 = self::getNum() as{TypeError} core::int* in let final void #t100 = this.{self::Test4::[]=}(#t98, #t99) in #t99;
+    core::num* v4 = let final core::String* #t101 = "x" in let final core::num* #t102 = this.{self::Test4::[]}(#t101) in #t102.{core::num::==}(null) ?{core::num*} let final core::int* #t103 = self::getInt() in let final void #t104 = this.{self::Test4::[]=}(#t101, #t103) in #t103 : #t102;
+    core::num* v5 = let final core::String* #t105 = "x" in let final core::num* #t106 = this.{self::Test4::[]}(#t105) in #t106.{core::num::==}(null) ?{core::num*} let final core::num* #t107 = self::getNum() as{TypeError} core::int* in let final void #t108 = this.{self::Test4::[]=}(#t105, #t107) in #t107 : #t106;
+    core::num* v7 = let final core::String* #t109 = "x" in let final core::num* #t110 = this.{self::Test4::[]}(#t109).{core::num::+}(self::getInt()) as{TypeError} core::int* in let final void #t111 = this.{self::Test4::[]=}(#t109, #t110) in #t110;
+    core::num* v8 = let final core::String* #t112 = "x" in let final core::num* #t113 = this.{self::Test4::[]}(#t112).{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t114 = this.{self::Test4::[]=}(#t112, #t113) in #t113;
+    core::num* v10 = let final core::String* #t115 = "x" in let final core::num* #t116 = this.{self::Test4::[]}(#t115).{core::num::+}(1) as{TypeError} core::int* in let final void #t117 = this.{self::Test4::[]=}(#t115, #t116) in #t116;
+    core::num* v11 = let final core::String* #t118 = "x" in let final core::num* #t119 = this.{self::Test4::[]}(#t118) in let final void #t120 = this.{self::Test4::[]=}(#t118, #t119.{core::num::+}(1) as{TypeError} core::int*) in #t119;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -158,17 +158,17 @@
   abstract operator [](core::String* s) → core::num*;
   abstract operator []=(core::String* s, core::num* v) → void;
   method test() → void {
-    core::int* v1 = let final core::String* #t121 = "x" in let final core::int* #t122 = self::getInt() in let final void #t123 = this.{self::Test5::[]=}(#t121, #t122){(core::String*, core::num*) →* void} in #t122;
-    core::num* v2 = let final core::String* #t124 = "x" in let final core::num* #t125 = self::getNum() in let final void #t126 = this.{self::Test5::[]=}(#t124, #t125){(core::String*, core::num*) →* void} in #t125;
-    core::double* v3 = let final core::String* #t127 = "x" in let final core::double* #t128 = self::getDouble() in let final void #t129 = this.{self::Test5::[]=}(#t127, #t128){(core::String*, core::num*) →* void} in #t128;
-    core::num* v4 = let final core::String* #t130 = "x" in let final core::num* #t131 = this.{self::Test5::[]}(#t130){(core::String*) →* core::num*} in #t131 == null ?{core::num*} let final core::int* #t132 = self::getInt() in let final void #t133 = this.{self::Test5::[]=}(#t130, #t132){(core::String*, core::num*) →* void} in #t132 : #t131;
-    core::num* v5 = let final core::String* #t134 = "x" in let final core::num* #t135 = this.{self::Test5::[]}(#t134){(core::String*) →* core::num*} in #t135 == null ?{core::num*} let final core::num* #t136 = self::getNum() in let final void #t137 = this.{self::Test5::[]=}(#t134, #t136){(core::String*, core::num*) →* void} in #t136 : #t135;
-    core::num* v6 = let final core::String* #t138 = "x" in let final core::num* #t139 = this.{self::Test5::[]}(#t138){(core::String*) →* core::num*} in #t139 == null ?{core::num*} let final core::double* #t140 = self::getDouble() in let final void #t141 = this.{self::Test5::[]=}(#t138, #t140){(core::String*, core::num*) →* void} in #t140 : #t139;
-    core::num* v7 = let final core::String* #t142 = "x" in let final core::num* #t143 = this.{self::Test5::[]}(#t142){(core::String*) →* core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} in let final void #t144 = this.{self::Test5::[]=}(#t142, #t143){(core::String*, core::num*) →* void} in #t143;
-    core::num* v8 = let final core::String* #t145 = "x" in let final core::num* #t146 = this.{self::Test5::[]}(#t145){(core::String*) →* core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} in let final void #t147 = this.{self::Test5::[]=}(#t145, #t146){(core::String*, core::num*) →* void} in #t146;
-    core::num* v9 = let final core::String* #t148 = "x" in let final core::num* #t149 = this.{self::Test5::[]}(#t148){(core::String*) →* core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*} in let final void #t150 = this.{self::Test5::[]=}(#t148, #t149){(core::String*, core::num*) →* void} in #t149;
-    core::num* v10 = let final core::String* #t151 = "x" in let final core::num* #t152 = this.{self::Test5::[]}(#t151){(core::String*) →* core::num*}.{core::num::+}(1){(core::num*) →* core::num*} in let final void #t153 = this.{self::Test5::[]=}(#t151, #t152){(core::String*, core::num*) →* void} in #t152;
-    core::num* v11 = let final core::String* #t154 = "x" in let final core::num* #t155 = this.{self::Test5::[]}(#t154){(core::String*) →* core::num*} in let final void #t156 = this.{self::Test5::[]=}(#t154, #t155.{core::num::+}(1){(core::num*) →* core::num*}){(core::String*, core::num*) →* void} in #t155;
+    core::int* v1 = let final core::String* #t121 = "x" in let final core::int* #t122 = self::getInt() in let final void #t123 = this.{self::Test5::[]=}(#t121, #t122) in #t122;
+    core::num* v2 = let final core::String* #t124 = "x" in let final core::num* #t125 = self::getNum() in let final void #t126 = this.{self::Test5::[]=}(#t124, #t125) in #t125;
+    core::double* v3 = let final core::String* #t127 = "x" in let final core::double* #t128 = self::getDouble() in let final void #t129 = this.{self::Test5::[]=}(#t127, #t128) in #t128;
+    core::num* v4 = let final core::String* #t130 = "x" in let final core::num* #t131 = this.{self::Test5::[]}(#t130) in #t131.{core::num::==}(null) ?{core::num*} let final core::int* #t132 = self::getInt() in let final void #t133 = this.{self::Test5::[]=}(#t130, #t132) in #t132 : #t131;
+    core::num* v5 = let final core::String* #t134 = "x" in let final core::num* #t135 = this.{self::Test5::[]}(#t134) in #t135.{core::num::==}(null) ?{core::num*} let final core::num* #t136 = self::getNum() in let final void #t137 = this.{self::Test5::[]=}(#t134, #t136) in #t136 : #t135;
+    core::num* v6 = let final core::String* #t138 = "x" in let final core::num* #t139 = this.{self::Test5::[]}(#t138) in #t139.{core::num::==}(null) ?{core::num*} let final core::double* #t140 = self::getDouble() in let final void #t141 = this.{self::Test5::[]=}(#t138, #t140) in #t140 : #t139;
+    core::num* v7 = let final core::String* #t142 = "x" in let final core::num* #t143 = this.{self::Test5::[]}(#t142).{core::num::+}(self::getInt()) in let final void #t144 = this.{self::Test5::[]=}(#t142, #t143) in #t143;
+    core::num* v8 = let final core::String* #t145 = "x" in let final core::num* #t146 = this.{self::Test5::[]}(#t145).{core::num::+}(self::getNum()) in let final void #t147 = this.{self::Test5::[]=}(#t145, #t146) in #t146;
+    core::num* v9 = let final core::String* #t148 = "x" in let final core::num* #t149 = this.{self::Test5::[]}(#t148).{core::num::+}(self::getDouble()) in let final void #t150 = this.{self::Test5::[]=}(#t148, #t149) in #t149;
+    core::num* v10 = let final core::String* #t151 = "x" in let final core::num* #t152 = this.{self::Test5::[]}(#t151).{core::num::+}(1) in let final void #t153 = this.{self::Test5::[]=}(#t151, #t152) in #t152;
+    core::num* v11 = let final core::String* #t154 = "x" in let final core::num* #t155 = this.{self::Test5::[]}(#t154) in let final void #t156 = this.{self::Test5::[]=}(#t154, #t155.{core::num::+}(1)) in #t155;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -188,15 +188,15 @@
   abstract operator [](core::String* s) → core::num*;
   abstract operator []=(core::String* s, core::double* v) → void;
   method test() → void {
-    core::num* v2 = let final core::String* #t157 = "x" in let final core::num* #t158 = self::getNum() as{TypeError} core::double* in let final void #t159 = this.{self::Test6::[]=}(#t157, #t158){(core::String*, core::double*) →* void} in #t158;
-    core::double* v3 = let final core::String* #t160 = "x" in let final core::double* #t161 = self::getDouble() in let final void #t162 = this.{self::Test6::[]=}(#t160, #t161){(core::String*, core::double*) →* void} in #t161;
-    core::num* v5 = let final core::String* #t163 = "x" in let final core::num* #t164 = this.{self::Test6::[]}(#t163){(core::String*) →* core::num*} in #t164 == null ?{core::num*} let final core::num* #t165 = self::getNum() as{TypeError} core::double* in let final void #t166 = this.{self::Test6::[]=}(#t163, #t165){(core::String*, core::double*) →* void} in #t165 : #t164;
-    core::num* v6 = let final core::String* #t167 = "x" in let final core::num* #t168 = this.{self::Test6::[]}(#t167){(core::String*) →* core::num*} in #t168 == null ?{core::num*} let final core::double* #t169 = self::getDouble() in let final void #t170 = this.{self::Test6::[]=}(#t167, #t169){(core::String*, core::double*) →* void} in #t169 : #t168;
-    core::num* v7 = let final core::String* #t171 = "x" in let final core::num* #t172 = this.{self::Test6::[]}(#t171){(core::String*) →* core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t173 = this.{self::Test6::[]=}(#t171, #t172){(core::String*, core::double*) →* void} in #t172;
-    core::num* v8 = let final core::String* #t174 = "x" in let final core::num* #t175 = this.{self::Test6::[]}(#t174){(core::String*) →* core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t176 = this.{self::Test6::[]=}(#t174, #t175){(core::String*, core::double*) →* void} in #t175;
-    core::num* v9 = let final core::String* #t177 = "x" in let final core::num* #t178 = this.{self::Test6::[]}(#t177){(core::String*) →* core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t179 = this.{self::Test6::[]=}(#t177, #t178){(core::String*, core::double*) →* void} in #t178;
-    core::num* v10 = let final core::String* #t180 = "x" in let final core::num* #t181 = this.{self::Test6::[]}(#t180){(core::String*) →* core::num*}.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t182 = this.{self::Test6::[]=}(#t180, #t181){(core::String*, core::double*) →* void} in #t181;
-    core::num* v11 = let final core::String* #t183 = "x" in let final core::num* #t184 = this.{self::Test6::[]}(#t183){(core::String*) →* core::num*} in let final void #t185 = this.{self::Test6::[]=}(#t183, #t184.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::double*){(core::String*, core::double*) →* void} in #t184;
+    core::num* v2 = let final core::String* #t157 = "x" in let final core::num* #t158 = self::getNum() as{TypeError} core::double* in let final void #t159 = this.{self::Test6::[]=}(#t157, #t158) in #t158;
+    core::double* v3 = let final core::String* #t160 = "x" in let final core::double* #t161 = self::getDouble() in let final void #t162 = this.{self::Test6::[]=}(#t160, #t161) in #t161;
+    core::num* v5 = let final core::String* #t163 = "x" in let final core::num* #t164 = this.{self::Test6::[]}(#t163) in #t164.{core::num::==}(null) ?{core::num*} let final core::num* #t165 = self::getNum() as{TypeError} core::double* in let final void #t166 = this.{self::Test6::[]=}(#t163, #t165) in #t165 : #t164;
+    core::num* v6 = let final core::String* #t167 = "x" in let final core::num* #t168 = this.{self::Test6::[]}(#t167) in #t168.{core::num::==}(null) ?{core::num*} let final core::double* #t169 = self::getDouble() in let final void #t170 = this.{self::Test6::[]=}(#t167, #t169) in #t169 : #t168;
+    core::num* v7 = let final core::String* #t171 = "x" in let final core::num* #t172 = this.{self::Test6::[]}(#t171).{core::num::+}(self::getInt()) as{TypeError} core::double* in let final void #t173 = this.{self::Test6::[]=}(#t171, #t172) in #t172;
+    core::num* v8 = let final core::String* #t174 = "x" in let final core::num* #t175 = this.{self::Test6::[]}(#t174).{core::num::+}(self::getNum()) as{TypeError} core::double* in let final void #t176 = this.{self::Test6::[]=}(#t174, #t175) in #t175;
+    core::num* v9 = let final core::String* #t177 = "x" in let final core::num* #t178 = this.{self::Test6::[]}(#t177).{core::num::+}(self::getDouble()) as{TypeError} core::double* in let final void #t179 = this.{self::Test6::[]=}(#t177, #t178) in #t178;
+    core::num* v10 = let final core::String* #t180 = "x" in let final core::num* #t181 = this.{self::Test6::[]}(#t180).{core::num::+}(1) as{TypeError} core::double* in let final void #t182 = this.{self::Test6::[]=}(#t180, #t181) in #t181;
+    core::num* v11 = let final core::String* #t183 = "x" in let final core::num* #t184 = this.{self::Test6::[]}(#t183) in let final void #t185 = this.{self::Test6::[]=}(#t183, #t184.{core::num::+}(1) as{TypeError} core::double*) in #t184;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -216,22 +216,22 @@
   abstract operator [](core::String* s) → core::double*;
   abstract operator []=(core::String* s, core::int* v) → void;
   method test() → void {
-    core::int* v1 = let final core::String* #t186 = "x" in let final core::int* #t187 = self::getInt() in let final void #t188 = this.{self::Test7::[]=}(#t186, #t187){(core::String*, core::int*) →* void} in #t187;
-    core::num* v2 = let final core::String* #t189 = "x" in let final core::num* #t190 = self::getNum() as{TypeError} core::int* in let final void #t191 = this.{self::Test7::[]=}(#t189, #t190){(core::String*, core::int*) →* void} in #t190;
-    core::num* v4 = let final core::String* #t192 = "x" in let final core::double* #t193 = this.{self::Test7::[]}(#t192){(core::String*) →* core::double*} in #t193 == null ?{core::num*} let final core::int* #t194 = self::getInt() in let final void #t195 = this.{self::Test7::[]=}(#t192, #t194){(core::String*, core::int*) →* void} in #t194 : #t193;
-    core::num* v5 = let final core::String* #t196 = "x" in let final core::double* #t197 = this.{self::Test7::[]}(#t196){(core::String*) →* core::double*} in #t197 == null ?{core::num*} let final core::num* #t198 = self::getNum() as{TypeError} core::int* in let final void #t199 = this.{self::Test7::[]=}(#t196, #t198){(core::String*, core::int*) →* void} in #t198 : #t197;
+    core::int* v1 = let final core::String* #t186 = "x" in let final core::int* #t187 = self::getInt() in let final void #t188 = this.{self::Test7::[]=}(#t186, #t187) in #t187;
+    core::num* v2 = let final core::String* #t189 = "x" in let final core::num* #t190 = self::getNum() as{TypeError} core::int* in let final void #t191 = this.{self::Test7::[]=}(#t189, #t190) in #t190;
+    core::num* v4 = let final core::String* #t192 = "x" in let final core::double* #t193 = this.{self::Test7::[]}(#t192) in #t193.{core::num::==}(null) ?{core::num*} let final core::int* #t194 = self::getInt() in let final void #t195 = this.{self::Test7::[]=}(#t192, #t194) in #t194 : #t193;
+    core::num* v5 = let final core::String* #t196 = "x" in let final core::double* #t197 = this.{self::Test7::[]}(#t196) in #t197.{core::num::==}(null) ?{core::num*} let final core::num* #t198 = self::getNum() as{TypeError} core::int* in let final void #t199 = this.{self::Test7::[]=}(#t196, #t198) in #t198 : #t197;
     core::double* v7 = let final core::String* #t200 = "x" in let final core::double* #t201 = let final Never* #t202 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:264:30: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
         /*@target=double.+*/ += getInt();
-                             ^" in this.{self::Test7::[]}(#t200){(core::String*) →* core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} as{TypeError} core::int* in let final void #t203 = this.{self::Test7::[]=}(#t200, #t201){(core::String*, core::int*) →* void} in #t201;
+                             ^" in this.{self::Test7::[]}(#t200).{core::double::+}(self::getInt()) as{TypeError} core::int* in let final void #t203 = this.{self::Test7::[]=}(#t200, #t201) in #t201;
     core::double* v8 = let final core::String* #t204 = "x" in let final core::double* #t205 = let final Never* #t206 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:268:30: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
         /*@target=double.+*/ += getNum();
-                             ^" in this.{self::Test7::[]}(#t204){(core::String*) →* core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} as{TypeError} core::int* in let final void #t207 = this.{self::Test7::[]=}(#t204, #t205){(core::String*, core::int*) →* void} in #t205;
+                             ^" in this.{self::Test7::[]}(#t204).{core::double::+}(self::getNum()) as{TypeError} core::int* in let final void #t207 = this.{self::Test7::[]=}(#t204, #t205) in #t205;
     core::double* v10 = let final core::String* #t208 = "x" in let final core::double* #t209 = let final Never* #t210 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:270:56: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
     var /*@ type=double* */ v10 = /*@target=double.+*/ ++this
-                                                       ^" in this.{self::Test7::[]}(#t208){(core::String*) →* core::double*}.{core::double::+}(1){(core::num*) →* core::double*} as{TypeError} core::int* in let final void #t211 = this.{self::Test7::[]=}(#t208, #t209){(core::String*, core::int*) →* void} in #t209;
-    core::double* v11 = let final core::String* #t212 = "x" in let final core::double* #t213 = this.{self::Test7::[]}(#t212){(core::String*) →* core::double*} in let final void #t214 = this.{self::Test7::[]=}(#t212, let final Never* #t215 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:275:30: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+                                                       ^" in this.{self::Test7::[]}(#t208).{core::double::+}(1) as{TypeError} core::int* in let final void #t211 = this.{self::Test7::[]=}(#t208, #t209) in #t209;
+    core::double* v11 = let final core::String* #t212 = "x" in let final core::double* #t213 = this.{self::Test7::[]}(#t212) in let final void #t214 = this.{self::Test7::[]=}(#t212, let final Never* #t215 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:275:30: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
         /*@target=double.+*/ ++;
-                             ^" in #t213.{core::double::+}(1){(core::num*) →* core::double*} as{TypeError} core::int*){(core::String*, core::int*) →* void} in #t213;
+                             ^" in #t213.{core::double::+}(1) as{TypeError} core::int*) in #t213;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -251,17 +251,17 @@
   abstract operator [](core::String* s) → core::double*;
   abstract operator []=(core::String* s, core::num* v) → void;
   method test() → void {
-    core::int* v1 = let final core::String* #t216 = "x" in let final core::int* #t217 = self::getInt() in let final void #t218 = this.{self::Test8::[]=}(#t216, #t217){(core::String*, core::num*) →* void} in #t217;
-    core::num* v2 = let final core::String* #t219 = "x" in let final core::num* #t220 = self::getNum() in let final void #t221 = this.{self::Test8::[]=}(#t219, #t220){(core::String*, core::num*) →* void} in #t220;
-    core::double* v3 = let final core::String* #t222 = "x" in let final core::double* #t223 = self::getDouble() in let final void #t224 = this.{self::Test8::[]=}(#t222, #t223){(core::String*, core::num*) →* void} in #t223;
-    core::num* v4 = let final core::String* #t225 = "x" in let final core::double* #t226 = this.{self::Test8::[]}(#t225){(core::String*) →* core::double*} in #t226 == null ?{core::num*} let final core::int* #t227 = self::getInt() in let final void #t228 = this.{self::Test8::[]=}(#t225, #t227){(core::String*, core::num*) →* void} in #t227 : #t226;
-    core::num* v5 = let final core::String* #t229 = "x" in let final core::double* #t230 = this.{self::Test8::[]}(#t229){(core::String*) →* core::double*} in #t230 == null ?{core::num*} let final core::num* #t231 = self::getNum() in let final void #t232 = this.{self::Test8::[]=}(#t229, #t231){(core::String*, core::num*) →* void} in #t231 : #t230;
-    core::double* v6 = let final core::String* #t233 = "x" in let final core::double* #t234 = this.{self::Test8::[]}(#t233){(core::String*) →* core::double*} in #t234 == null ?{core::double*} let final core::double* #t235 = self::getDouble() in let final void #t236 = this.{self::Test8::[]=}(#t233, #t235){(core::String*, core::num*) →* void} in #t235 : #t234;
-    core::double* v7 = let final core::String* #t237 = "x" in let final core::double* #t238 = this.{self::Test8::[]}(#t237){(core::String*) →* core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} in let final void #t239 = this.{self::Test8::[]=}(#t237, #t238){(core::String*, core::num*) →* void} in #t238;
-    core::double* v8 = let final core::String* #t240 = "x" in let final core::double* #t241 = this.{self::Test8::[]}(#t240){(core::String*) →* core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} in let final void #t242 = this.{self::Test8::[]=}(#t240, #t241){(core::String*, core::num*) →* void} in #t241;
-    core::double* v9 = let final core::String* #t243 = "x" in let final core::double* #t244 = this.{self::Test8::[]}(#t243){(core::String*) →* core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t245 = this.{self::Test8::[]=}(#t243, #t244){(core::String*, core::num*) →* void} in #t244;
-    core::double* v10 = let final core::String* #t246 = "x" in let final core::double* #t247 = this.{self::Test8::[]}(#t246){(core::String*) →* core::double*}.{core::double::+}(1){(core::num*) →* core::double*} in let final void #t248 = this.{self::Test8::[]=}(#t246, #t247){(core::String*, core::num*) →* void} in #t247;
-    core::double* v11 = let final core::String* #t249 = "x" in let final core::double* #t250 = this.{self::Test8::[]}(#t249){(core::String*) →* core::double*} in let final void #t251 = this.{self::Test8::[]=}(#t249, #t250.{core::double::+}(1){(core::num*) →* core::double*}){(core::String*, core::num*) →* void} in #t250;
+    core::int* v1 = let final core::String* #t216 = "x" in let final core::int* #t217 = self::getInt() in let final void #t218 = this.{self::Test8::[]=}(#t216, #t217) in #t217;
+    core::num* v2 = let final core::String* #t219 = "x" in let final core::num* #t220 = self::getNum() in let final void #t221 = this.{self::Test8::[]=}(#t219, #t220) in #t220;
+    core::double* v3 = let final core::String* #t222 = "x" in let final core::double* #t223 = self::getDouble() in let final void #t224 = this.{self::Test8::[]=}(#t222, #t223) in #t223;
+    core::num* v4 = let final core::String* #t225 = "x" in let final core::double* #t226 = this.{self::Test8::[]}(#t225) in #t226.{core::num::==}(null) ?{core::num*} let final core::int* #t227 = self::getInt() in let final void #t228 = this.{self::Test8::[]=}(#t225, #t227) in #t227 : #t226;
+    core::num* v5 = let final core::String* #t229 = "x" in let final core::double* #t230 = this.{self::Test8::[]}(#t229) in #t230.{core::num::==}(null) ?{core::num*} let final core::num* #t231 = self::getNum() in let final void #t232 = this.{self::Test8::[]=}(#t229, #t231) in #t231 : #t230;
+    core::double* v6 = let final core::String* #t233 = "x" in let final core::double* #t234 = this.{self::Test8::[]}(#t233) in #t234.{core::num::==}(null) ?{core::double*} let final core::double* #t235 = self::getDouble() in let final void #t236 = this.{self::Test8::[]=}(#t233, #t235) in #t235 : #t234;
+    core::double* v7 = let final core::String* #t237 = "x" in let final core::double* #t238 = this.{self::Test8::[]}(#t237).{core::double::+}(self::getInt()) in let final void #t239 = this.{self::Test8::[]=}(#t237, #t238) in #t238;
+    core::double* v8 = let final core::String* #t240 = "x" in let final core::double* #t241 = this.{self::Test8::[]}(#t240).{core::double::+}(self::getNum()) in let final void #t242 = this.{self::Test8::[]=}(#t240, #t241) in #t241;
+    core::double* v9 = let final core::String* #t243 = "x" in let final core::double* #t244 = this.{self::Test8::[]}(#t243).{core::double::+}(self::getDouble()) in let final void #t245 = this.{self::Test8::[]=}(#t243, #t244) in #t244;
+    core::double* v10 = let final core::String* #t246 = "x" in let final core::double* #t247 = this.{self::Test8::[]}(#t246).{core::double::+}(1) in let final void #t248 = this.{self::Test8::[]=}(#t246, #t247) in #t247;
+    core::double* v11 = let final core::String* #t249 = "x" in let final core::double* #t250 = this.{self::Test8::[]}(#t249) in let final void #t251 = this.{self::Test8::[]=}(#t249, #t250.{core::double::+}(1)) in #t250;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -281,15 +281,15 @@
   abstract operator [](core::String* s) → core::double*;
   abstract operator []=(core::String* s, core::double* v) → void;
   method test() → void {
-    core::num* v2 = let final core::String* #t252 = "x" in let final core::num* #t253 = self::getNum() as{TypeError} core::double* in let final void #t254 = this.{self::Test9::[]=}(#t252, #t253){(core::String*, core::double*) →* void} in #t253;
-    core::double* v3 = let final core::String* #t255 = "x" in let final core::double* #t256 = self::getDouble() in let final void #t257 = this.{self::Test9::[]=}(#t255, #t256){(core::String*, core::double*) →* void} in #t256;
-    core::num* v5 = let final core::String* #t258 = "x" in let final core::double* #t259 = this.{self::Test9::[]}(#t258){(core::String*) →* core::double*} in #t259 == null ?{core::num*} let final core::num* #t260 = self::getNum() as{TypeError} core::double* in let final void #t261 = this.{self::Test9::[]=}(#t258, #t260){(core::String*, core::double*) →* void} in #t260 : #t259;
-    core::double* v6 = let final core::String* #t262 = "x" in let final core::double* #t263 = this.{self::Test9::[]}(#t262){(core::String*) →* core::double*} in #t263 == null ?{core::double*} let final core::double* #t264 = self::getDouble() in let final void #t265 = this.{self::Test9::[]=}(#t262, #t264){(core::String*, core::double*) →* void} in #t264 : #t263;
-    core::double* v7 = let final core::String* #t266 = "x" in let final core::double* #t267 = this.{self::Test9::[]}(#t266){(core::String*) →* core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} in let final void #t268 = this.{self::Test9::[]=}(#t266, #t267){(core::String*, core::double*) →* void} in #t267;
-    core::double* v8 = let final core::String* #t269 = "x" in let final core::double* #t270 = this.{self::Test9::[]}(#t269){(core::String*) →* core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} in let final void #t271 = this.{self::Test9::[]=}(#t269, #t270){(core::String*, core::double*) →* void} in #t270;
-    core::double* v9 = let final core::String* #t272 = "x" in let final core::double* #t273 = this.{self::Test9::[]}(#t272){(core::String*) →* core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t274 = this.{self::Test9::[]=}(#t272, #t273){(core::String*, core::double*) →* void} in #t273;
-    core::double* v10 = let final core::String* #t275 = "x" in let final core::double* #t276 = this.{self::Test9::[]}(#t275){(core::String*) →* core::double*}.{core::double::+}(1){(core::num*) →* core::double*} in let final void #t277 = this.{self::Test9::[]=}(#t275, #t276){(core::String*, core::double*) →* void} in #t276;
-    core::double* v11 = let final core::String* #t278 = "x" in let final core::double* #t279 = this.{self::Test9::[]}(#t278){(core::String*) →* core::double*} in let final void #t280 = this.{self::Test9::[]=}(#t278, #t279.{core::double::+}(1){(core::num*) →* core::double*}){(core::String*, core::double*) →* void} in #t279;
+    core::num* v2 = let final core::String* #t252 = "x" in let final core::num* #t253 = self::getNum() as{TypeError} core::double* in let final void #t254 = this.{self::Test9::[]=}(#t252, #t253) in #t253;
+    core::double* v3 = let final core::String* #t255 = "x" in let final core::double* #t256 = self::getDouble() in let final void #t257 = this.{self::Test9::[]=}(#t255, #t256) in #t256;
+    core::num* v5 = let final core::String* #t258 = "x" in let final core::double* #t259 = this.{self::Test9::[]}(#t258) in #t259.{core::num::==}(null) ?{core::num*} let final core::num* #t260 = self::getNum() as{TypeError} core::double* in let final void #t261 = this.{self::Test9::[]=}(#t258, #t260) in #t260 : #t259;
+    core::double* v6 = let final core::String* #t262 = "x" in let final core::double* #t263 = this.{self::Test9::[]}(#t262) in #t263.{core::num::==}(null) ?{core::double*} let final core::double* #t264 = self::getDouble() in let final void #t265 = this.{self::Test9::[]=}(#t262, #t264) in #t264 : #t263;
+    core::double* v7 = let final core::String* #t266 = "x" in let final core::double* #t267 = this.{self::Test9::[]}(#t266).{core::double::+}(self::getInt()) in let final void #t268 = this.{self::Test9::[]=}(#t266, #t267) in #t267;
+    core::double* v8 = let final core::String* #t269 = "x" in let final core::double* #t270 = this.{self::Test9::[]}(#t269).{core::double::+}(self::getNum()) in let final void #t271 = this.{self::Test9::[]=}(#t269, #t270) in #t270;
+    core::double* v9 = let final core::String* #t272 = "x" in let final core::double* #t273 = this.{self::Test9::[]}(#t272).{core::double::+}(self::getDouble()) in let final void #t274 = this.{self::Test9::[]=}(#t272, #t273) in #t273;
+    core::double* v10 = let final core::String* #t275 = "x" in let final core::double* #t276 = this.{self::Test9::[]}(#t275).{core::double::+}(1) in let final void #t277 = this.{self::Test9::[]=}(#t275, #t276) in #t276;
+    core::double* v11 = let final core::String* #t278 = "x" in let final core::double* #t279 = this.{self::Test9::[]}(#t278) in let final void #t280 = this.{self::Test9::[]=}(#t278, #t279.{core::double::+}(1)) in #t279;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.weak.expect
index fcc9cd1..1b6692bb 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.weak.expect
@@ -57,119 +57,119 @@
 static method getDouble() → core::double*
   return 0.0;
 static method test1(self::Test<core::int*, core::int*>* t) → void {
-  core::int* v1 = let final self::Test<core::int*, core::int*>* #t1 = t in let final core::String* #t2 = "x" in let final core::int* #t3 = self::getInt() in let final void #t4 = #t1.{self::Test::[]=}(#t2, #t3){(core::String*, core::int*) →* void} in #t3;
-  core::num* v2 = let final self::Test<core::int*, core::int*>* #t5 = t in let final core::String* #t6 = "x" in let final core::num* #t7 = self::getNum() as{TypeError} core::int* in let final void #t8 = #t5.{self::Test::[]=}(#t6, #t7){(core::String*, core::int*) →* void} in #t7;
-  core::int* v4 = let final self::Test<core::int*, core::int*>* #t9 = t in let final core::String* #t10 = "x" in let final core::int* #t11 = #t9.{self::Test::[]}(#t10){(core::String*) →* core::int*} in #t11 == null ?{core::int*} let final core::int* #t12 = self::getInt() in let final void #t13 = #t9.{self::Test::[]=}(#t10, #t12){(core::String*, core::int*) →* void} in #t12 : #t11;
-  core::num* v5 = let final self::Test<core::int*, core::int*>* #t14 = t in let final core::String* #t15 = "x" in let final core::int* #t16 = #t14.{self::Test::[]}(#t15){(core::String*) →* core::int*} in #t16 == null ?{core::num*} let final core::num* #t17 = self::getNum() as{TypeError} core::int* in let final void #t18 = #t14.{self::Test::[]=}(#t15, #t17){(core::String*, core::int*) →* void} in #t17 : #t16;
-  core::int* v7 = let final self::Test<core::int*, core::int*>* #t19 = t in let final core::String* #t20 = "x" in let final core::int* #t21 = #t19.{self::Test::[]}(#t20){(core::String*) →* core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} in let final void #t22 = #t19.{self::Test::[]=}(#t20, #t21){(core::String*, core::int*) →* void} in #t21;
-  core::num* v8 = let final self::Test<core::int*, core::int*>* #t23 = t in let final core::String* #t24 = "x" in let final core::num* #t25 = #t23.{self::Test::[]}(#t24){(core::String*) →* core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t26 = #t23.{self::Test::[]=}(#t24, #t25){(core::String*, core::int*) →* void} in #t25;
-  core::int* v10 = let final self::Test<core::int*, core::int*>* #t27 = t in let final core::String* #t28 = "x" in let final core::int* #t29 = #t27.{self::Test::[]}(#t28){(core::String*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t30 = #t27.{self::Test::[]=}(#t28, #t29){(core::String*, core::int*) →* void} in #t29;
-  core::int* v11 = let final self::Test<core::int*, core::int*>* #t31 = t in let final core::String* #t32 = "x" in let final core::int* #t33 = #t31.{self::Test::[]}(#t32){(core::String*) →* core::int*} in let final void #t34 = #t31.{self::Test::[]=}(#t32, #t33.{core::num::+}(1){(core::num*) →* core::int*}){(core::String*, core::int*) →* void} in #t33;
+  core::int* v1 = let final self::Test<core::int*, core::int*>* #t1 = t in let final core::String* #t2 = "x" in let final core::int* #t3 = self::getInt() in let final void #t4 = #t1.{self::Test::[]=}(#t2, #t3) in #t3;
+  core::num* v2 = let final self::Test<core::int*, core::int*>* #t5 = t in let final core::String* #t6 = "x" in let final core::num* #t7 = self::getNum() as{TypeError} core::int* in let final void #t8 = #t5.{self::Test::[]=}(#t6, #t7) in #t7;
+  core::int* v4 = let final self::Test<core::int*, core::int*>* #t9 = t in let final core::String* #t10 = "x" in let final core::int* #t11 = #t9.{self::Test::[]}(#t10) in #t11.{core::num::==}(null) ?{core::int*} let final core::int* #t12 = self::getInt() in let final void #t13 = #t9.{self::Test::[]=}(#t10, #t12) in #t12 : #t11;
+  core::num* v5 = let final self::Test<core::int*, core::int*>* #t14 = t in let final core::String* #t15 = "x" in let final core::int* #t16 = #t14.{self::Test::[]}(#t15) in #t16.{core::num::==}(null) ?{core::num*} let final core::num* #t17 = self::getNum() as{TypeError} core::int* in let final void #t18 = #t14.{self::Test::[]=}(#t15, #t17) in #t17 : #t16;
+  core::int* v7 = let final self::Test<core::int*, core::int*>* #t19 = t in let final core::String* #t20 = "x" in let final core::int* #t21 = #t19.{self::Test::[]}(#t20).{core::num::+}(self::getInt()) in let final void #t22 = #t19.{self::Test::[]=}(#t20, #t21) in #t21;
+  core::num* v8 = let final self::Test<core::int*, core::int*>* #t23 = t in let final core::String* #t24 = "x" in let final core::num* #t25 = #t23.{self::Test::[]}(#t24).{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t26 = #t23.{self::Test::[]=}(#t24, #t25) in #t25;
+  core::int* v10 = let final self::Test<core::int*, core::int*>* #t27 = t in let final core::String* #t28 = "x" in let final core::int* #t29 = #t27.{self::Test::[]}(#t28).{core::num::+}(1) in let final void #t30 = #t27.{self::Test::[]=}(#t28, #t29) in #t29;
+  core::int* v11 = let final self::Test<core::int*, core::int*>* #t31 = t in let final core::String* #t32 = "x" in let final core::int* #t33 = #t31.{self::Test::[]}(#t32) in let final void #t34 = #t31.{self::Test::[]=}(#t32, #t33.{core::num::+}(1)) in #t33;
 }
 static method test2(self::Test<core::int*, core::num*>* t) → void {
-  core::int* v1 = let final self::Test<core::int*, core::num*>* #t35 = t in let final core::String* #t36 = "x" in let final core::int* #t37 = self::getInt() in let final void #t38 = #t35.{self::Test::[]=}(#t36, #t37){(core::String*, core::num*) →* void} in #t37;
-  core::num* v2 = let final self::Test<core::int*, core::num*>* #t39 = t in let final core::String* #t40 = "x" in let final core::num* #t41 = self::getNum() in let final void #t42 = #t39.{self::Test::[]=}(#t40, #t41){(core::String*, core::num*) →* void} in #t41;
-  core::double* v3 = let final self::Test<core::int*, core::num*>* #t43 = t in let final core::String* #t44 = "x" in let final core::double* #t45 = self::getDouble() in let final void #t46 = #t43.{self::Test::[]=}(#t44, #t45){(core::String*, core::num*) →* void} in #t45;
-  core::int* v4 = let final self::Test<core::int*, core::num*>* #t47 = t in let final core::String* #t48 = "x" in let final core::int* #t49 = #t47.{self::Test::[]}(#t48){(core::String*) →* core::int*} in #t49 == null ?{core::int*} let final core::int* #t50 = self::getInt() in let final void #t51 = #t47.{self::Test::[]=}(#t48, #t50){(core::String*, core::num*) →* void} in #t50 : #t49;
-  core::num* v5 = let final self::Test<core::int*, core::num*>* #t52 = t in let final core::String* #t53 = "x" in let final core::int* #t54 = #t52.{self::Test::[]}(#t53){(core::String*) →* core::int*} in #t54 == null ?{core::num*} let final core::num* #t55 = self::getNum() in let final void #t56 = #t52.{self::Test::[]=}(#t53, #t55){(core::String*, core::num*) →* void} in #t55 : #t54;
-  core::num* v6 = let final self::Test<core::int*, core::num*>* #t57 = t in let final core::String* #t58 = "x" in let final core::int* #t59 = #t57.{self::Test::[]}(#t58){(core::String*) →* core::int*} in #t59 == null ?{core::num*} let final core::double* #t60 = self::getDouble() in let final void #t61 = #t57.{self::Test::[]=}(#t58, #t60){(core::String*, core::num*) →* void} in #t60 : #t59;
-  core::int* v7 = let final self::Test<core::int*, core::num*>* #t62 = t in let final core::String* #t63 = "x" in let final core::int* #t64 = #t62.{self::Test::[]}(#t63){(core::String*) →* core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} in let final void #t65 = #t62.{self::Test::[]=}(#t63, #t64){(core::String*, core::num*) →* void} in #t64;
-  core::num* v8 = let final self::Test<core::int*, core::num*>* #t66 = t in let final core::String* #t67 = "x" in let final core::num* #t68 = #t66.{self::Test::[]}(#t67){(core::String*) →* core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} in let final void #t69 = #t66.{self::Test::[]=}(#t67, #t68){(core::String*, core::num*) →* void} in #t68;
-  core::double* v9 = let final self::Test<core::int*, core::num*>* #t70 = t in let final core::String* #t71 = "x" in let final core::double* #t72 = #t70.{self::Test::[]}(#t71){(core::String*) →* core::int*}.{core::num::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t73 = #t70.{self::Test::[]=}(#t71, #t72){(core::String*, core::num*) →* void} in #t72;
-  core::int* v10 = let final self::Test<core::int*, core::num*>* #t74 = t in let final core::String* #t75 = "x" in let final core::int* #t76 = #t74.{self::Test::[]}(#t75){(core::String*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t77 = #t74.{self::Test::[]=}(#t75, #t76){(core::String*, core::num*) →* void} in #t76;
-  core::int* v11 = let final self::Test<core::int*, core::num*>* #t78 = t in let final core::String* #t79 = "x" in let final core::int* #t80 = #t78.{self::Test::[]}(#t79){(core::String*) →* core::int*} in let final void #t81 = #t78.{self::Test::[]=}(#t79, #t80.{core::num::+}(1){(core::num*) →* core::int*}){(core::String*, core::num*) →* void} in #t80;
+  core::int* v1 = let final self::Test<core::int*, core::num*>* #t35 = t in let final core::String* #t36 = "x" in let final core::int* #t37 = self::getInt() in let final void #t38 = #t35.{self::Test::[]=}(#t36, #t37) in #t37;
+  core::num* v2 = let final self::Test<core::int*, core::num*>* #t39 = t in let final core::String* #t40 = "x" in let final core::num* #t41 = self::getNum() in let final void #t42 = #t39.{self::Test::[]=}(#t40, #t41) in #t41;
+  core::double* v3 = let final self::Test<core::int*, core::num*>* #t43 = t in let final core::String* #t44 = "x" in let final core::double* #t45 = self::getDouble() in let final void #t46 = #t43.{self::Test::[]=}(#t44, #t45) in #t45;
+  core::int* v4 = let final self::Test<core::int*, core::num*>* #t47 = t in let final core::String* #t48 = "x" in let final core::int* #t49 = #t47.{self::Test::[]}(#t48) in #t49.{core::num::==}(null) ?{core::int*} let final core::int* #t50 = self::getInt() in let final void #t51 = #t47.{self::Test::[]=}(#t48, #t50) in #t50 : #t49;
+  core::num* v5 = let final self::Test<core::int*, core::num*>* #t52 = t in let final core::String* #t53 = "x" in let final core::int* #t54 = #t52.{self::Test::[]}(#t53) in #t54.{core::num::==}(null) ?{core::num*} let final core::num* #t55 = self::getNum() in let final void #t56 = #t52.{self::Test::[]=}(#t53, #t55) in #t55 : #t54;
+  core::num* v6 = let final self::Test<core::int*, core::num*>* #t57 = t in let final core::String* #t58 = "x" in let final core::int* #t59 = #t57.{self::Test::[]}(#t58) in #t59.{core::num::==}(null) ?{core::num*} let final core::double* #t60 = self::getDouble() in let final void #t61 = #t57.{self::Test::[]=}(#t58, #t60) in #t60 : #t59;
+  core::int* v7 = let final self::Test<core::int*, core::num*>* #t62 = t in let final core::String* #t63 = "x" in let final core::int* #t64 = #t62.{self::Test::[]}(#t63).{core::num::+}(self::getInt()) in let final void #t65 = #t62.{self::Test::[]=}(#t63, #t64) in #t64;
+  core::num* v8 = let final self::Test<core::int*, core::num*>* #t66 = t in let final core::String* #t67 = "x" in let final core::num* #t68 = #t66.{self::Test::[]}(#t67).{core::num::+}(self::getNum()) in let final void #t69 = #t66.{self::Test::[]=}(#t67, #t68) in #t68;
+  core::double* v9 = let final self::Test<core::int*, core::num*>* #t70 = t in let final core::String* #t71 = "x" in let final core::double* #t72 = #t70.{self::Test::[]}(#t71).{core::num::+}(self::getDouble()) in let final void #t73 = #t70.{self::Test::[]=}(#t71, #t72) in #t72;
+  core::int* v10 = let final self::Test<core::int*, core::num*>* #t74 = t in let final core::String* #t75 = "x" in let final core::int* #t76 = #t74.{self::Test::[]}(#t75).{core::num::+}(1) in let final void #t77 = #t74.{self::Test::[]=}(#t75, #t76) in #t76;
+  core::int* v11 = let final self::Test<core::int*, core::num*>* #t78 = t in let final core::String* #t79 = "x" in let final core::int* #t80 = #t78.{self::Test::[]}(#t79) in let final void #t81 = #t78.{self::Test::[]=}(#t79, #t80.{core::num::+}(1)) in #t80;
 }
 static method test3(self::Test<core::int*, core::double*>* t) → void {
-  core::num* v2 = let final self::Test<core::int*, core::double*>* #t82 = t in let final core::String* #t83 = "x" in let final core::num* #t84 = self::getNum() as{TypeError} core::double* in let final void #t85 = #t82.{self::Test::[]=}(#t83, #t84){(core::String*, core::double*) →* void} in #t84;
-  core::double* v3 = let final self::Test<core::int*, core::double*>* #t86 = t in let final core::String* #t87 = "x" in let final core::double* #t88 = self::getDouble() in let final void #t89 = #t86.{self::Test::[]=}(#t87, #t88){(core::String*, core::double*) →* void} in #t88;
-  core::num* v5 = let final self::Test<core::int*, core::double*>* #t90 = t in let final core::String* #t91 = "x" in let final core::int* #t92 = #t90.{self::Test::[]}(#t91){(core::String*) →* core::int*} in #t92 == null ?{core::num*} let final core::num* #t93 = self::getNum() as{TypeError} core::double* in let final void #t94 = #t90.{self::Test::[]=}(#t91, #t93){(core::String*, core::double*) →* void} in #t93 : #t92;
-  core::num* v6 = let final self::Test<core::int*, core::double*>* #t95 = t in let final core::String* #t96 = "x" in let final core::int* #t97 = #t95.{self::Test::[]}(#t96){(core::String*) →* core::int*} in #t97 == null ?{core::num*} let final core::double* #t98 = self::getDouble() in let final void #t99 = #t95.{self::Test::[]=}(#t96, #t98){(core::String*, core::double*) →* void} in #t98 : #t97;
+  core::num* v2 = let final self::Test<core::int*, core::double*>* #t82 = t in let final core::String* #t83 = "x" in let final core::num* #t84 = self::getNum() as{TypeError} core::double* in let final void #t85 = #t82.{self::Test::[]=}(#t83, #t84) in #t84;
+  core::double* v3 = let final self::Test<core::int*, core::double*>* #t86 = t in let final core::String* #t87 = "x" in let final core::double* #t88 = self::getDouble() in let final void #t89 = #t86.{self::Test::[]=}(#t87, #t88) in #t88;
+  core::num* v5 = let final self::Test<core::int*, core::double*>* #t90 = t in let final core::String* #t91 = "x" in let final core::int* #t92 = #t90.{self::Test::[]}(#t91) in #t92.{core::num::==}(null) ?{core::num*} let final core::num* #t93 = self::getNum() as{TypeError} core::double* in let final void #t94 = #t90.{self::Test::[]=}(#t91, #t93) in #t93 : #t92;
+  core::num* v6 = let final self::Test<core::int*, core::double*>* #t95 = t in let final core::String* #t96 = "x" in let final core::int* #t97 = #t95.{self::Test::[]}(#t96) in #t97.{core::num::==}(null) ?{core::num*} let final core::double* #t98 = self::getDouble() in let final void #t99 = #t95.{self::Test::[]=}(#t96, #t98) in #t98 : #t97;
   core::int* v7 = let final self::Test<core::int*, core::double*>* #t100 = t in let final core::String* #t101 = "x" in let final core::int* #t102 = let final Never* #t103 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:90:74: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
       t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=num.+*/ +=
-                                                                         ^" in #t100.{self::Test::[]}(#t101){(core::String*) →* core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} as{TypeError} core::double* in let final void #t104 = #t100.{self::Test::[]=}(#t101, #t102){(core::String*, core::double*) →* void} in #t102;
-  core::num* v8 = let final self::Test<core::int*, core::double*>* #t105 = t in let final core::String* #t106 = "x" in let final core::num* #t107 = #t105.{self::Test::[]}(#t106){(core::String*) →* core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t108 = #t105.{self::Test::[]=}(#t106, #t107){(core::String*, core::double*) →* void} in #t107;
-  core::double* v9 = let final self::Test<core::int*, core::double*>* #t109 = t in let final core::String* #t110 = "x" in let final core::double* #t111 = #t109.{self::Test::[]}(#t110){(core::String*) →* core::int*}.{core::num::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t112 = #t109.{self::Test::[]=}(#t110, #t111){(core::String*, core::double*) →* void} in #t111;
+                                                                         ^" in #t100.{self::Test::[]}(#t101).{core::num::+}(self::getInt()) as{TypeError} core::double* in let final void #t104 = #t100.{self::Test::[]=}(#t101, #t102) in #t102;
+  core::num* v8 = let final self::Test<core::int*, core::double*>* #t105 = t in let final core::String* #t106 = "x" in let final core::num* #t107 = #t105.{self::Test::[]}(#t106).{core::num::+}(self::getNum()) as{TypeError} core::double* in let final void #t108 = #t105.{self::Test::[]=}(#t106, #t107) in #t107;
+  core::double* v9 = let final self::Test<core::int*, core::double*>* #t109 = t in let final core::String* #t110 = "x" in let final core::double* #t111 = #t109.{self::Test::[]}(#t110).{core::num::+}(self::getDouble()) in let final void #t112 = #t109.{self::Test::[]=}(#t110, #t111) in #t111;
   core::int* v10 = let final self::Test<core::int*, core::double*>* #t113 = t in let final core::String* #t114 = "x" in let final core::int* #t115 = let final Never* #t116 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:102:25: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
       /*@target=num.+*/ ++t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'];
-                        ^" in #t113.{self::Test::[]}(#t114){(core::String*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*} as{TypeError} core::double* in let final void #t117 = #t113.{self::Test::[]=}(#t114, #t115){(core::String*, core::double*) →* void} in #t115;
-  core::int* v11 = let final self::Test<core::int*, core::double*>* #t118 = t in let final core::String* #t119 = "x" in let final core::int* #t120 = #t118.{self::Test::[]}(#t119){(core::String*) →* core::int*} in let final void #t121 = #t118.{self::Test::[]=}(#t119, let final Never* #t122 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:105:74: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
+                        ^" in #t113.{self::Test::[]}(#t114).{core::num::+}(1) as{TypeError} core::double* in let final void #t117 = #t113.{self::Test::[]=}(#t114, #t115) in #t115;
+  core::int* v11 = let final self::Test<core::int*, core::double*>* #t118 = t in let final core::String* #t119 = "x" in let final core::int* #t120 = #t118.{self::Test::[]}(#t119) in let final void #t121 = #t118.{self::Test::[]=}(#t119, let final Never* #t122 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:105:74: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
       t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=num.+*/ ++;
-                                                                         ^" in #t120.{core::num::+}(1){(core::num*) →* core::int*} as{TypeError} core::double*){(core::String*, core::double*) →* void} in #t120;
+                                                                         ^" in #t120.{core::num::+}(1) as{TypeError} core::double*) in #t120;
 }
 static method test4(self::Test<core::num*, core::int*>* t) → void {
-  core::int* v1 = let final self::Test<core::num*, core::int*>* #t123 = t in let final core::String* #t124 = "x" in let final core::int* #t125 = self::getInt() in let final void #t126 = #t123.{self::Test::[]=}(#t124, #t125){(core::String*, core::int*) →* void} in #t125;
-  core::num* v2 = let final self::Test<core::num*, core::int*>* #t127 = t in let final core::String* #t128 = "x" in let final core::num* #t129 = self::getNum() as{TypeError} core::int* in let final void #t130 = #t127.{self::Test::[]=}(#t128, #t129){(core::String*, core::int*) →* void} in #t129;
-  core::num* v4 = let final self::Test<core::num*, core::int*>* #t131 = t in let final core::String* #t132 = "x" in let final core::num* #t133 = #t131.{self::Test::[]}(#t132){(core::String*) →* core::num*} in #t133 == null ?{core::num*} let final core::int* #t134 = self::getInt() in let final void #t135 = #t131.{self::Test::[]=}(#t132, #t134){(core::String*, core::int*) →* void} in #t134 : #t133;
-  core::num* v5 = let final self::Test<core::num*, core::int*>* #t136 = t in let final core::String* #t137 = "x" in let final core::num* #t138 = #t136.{self::Test::[]}(#t137){(core::String*) →* core::num*} in #t138 == null ?{core::num*} let final core::num* #t139 = self::getNum() as{TypeError} core::int* in let final void #t140 = #t136.{self::Test::[]=}(#t137, #t139){(core::String*, core::int*) →* void} in #t139 : #t138;
-  core::num* v7 = let final self::Test<core::num*, core::int*>* #t141 = t in let final core::String* #t142 = "x" in let final core::num* #t143 = #t141.{self::Test::[]}(#t142){(core::String*) →* core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t144 = #t141.{self::Test::[]=}(#t142, #t143){(core::String*, core::int*) →* void} in #t143;
-  core::num* v8 = let final self::Test<core::num*, core::int*>* #t145 = t in let final core::String* #t146 = "x" in let final core::num* #t147 = #t145.{self::Test::[]}(#t146){(core::String*) →* core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t148 = #t145.{self::Test::[]=}(#t146, #t147){(core::String*, core::int*) →* void} in #t147;
-  core::num* v10 = let final self::Test<core::num*, core::int*>* #t149 = t in let final core::String* #t150 = "x" in let final core::num* #t151 = #t149.{self::Test::[]}(#t150){(core::String*) →* core::num*}.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t152 = #t149.{self::Test::[]=}(#t150, #t151){(core::String*, core::int*) →* void} in #t151;
-  core::num* v11 = let final self::Test<core::num*, core::int*>* #t153 = t in let final core::String* #t154 = "x" in let final core::num* #t155 = #t153.{self::Test::[]}(#t154){(core::String*) →* core::num*} in let final void #t156 = #t153.{self::Test::[]=}(#t154, #t155.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::int*){(core::String*, core::int*) →* void} in #t155;
+  core::int* v1 = let final self::Test<core::num*, core::int*>* #t123 = t in let final core::String* #t124 = "x" in let final core::int* #t125 = self::getInt() in let final void #t126 = #t123.{self::Test::[]=}(#t124, #t125) in #t125;
+  core::num* v2 = let final self::Test<core::num*, core::int*>* #t127 = t in let final core::String* #t128 = "x" in let final core::num* #t129 = self::getNum() as{TypeError} core::int* in let final void #t130 = #t127.{self::Test::[]=}(#t128, #t129) in #t129;
+  core::num* v4 = let final self::Test<core::num*, core::int*>* #t131 = t in let final core::String* #t132 = "x" in let final core::num* #t133 = #t131.{self::Test::[]}(#t132) in #t133.{core::num::==}(null) ?{core::num*} let final core::int* #t134 = self::getInt() in let final void #t135 = #t131.{self::Test::[]=}(#t132, #t134) in #t134 : #t133;
+  core::num* v5 = let final self::Test<core::num*, core::int*>* #t136 = t in let final core::String* #t137 = "x" in let final core::num* #t138 = #t136.{self::Test::[]}(#t137) in #t138.{core::num::==}(null) ?{core::num*} let final core::num* #t139 = self::getNum() as{TypeError} core::int* in let final void #t140 = #t136.{self::Test::[]=}(#t137, #t139) in #t139 : #t138;
+  core::num* v7 = let final self::Test<core::num*, core::int*>* #t141 = t in let final core::String* #t142 = "x" in let final core::num* #t143 = #t141.{self::Test::[]}(#t142).{core::num::+}(self::getInt()) as{TypeError} core::int* in let final void #t144 = #t141.{self::Test::[]=}(#t142, #t143) in #t143;
+  core::num* v8 = let final self::Test<core::num*, core::int*>* #t145 = t in let final core::String* #t146 = "x" in let final core::num* #t147 = #t145.{self::Test::[]}(#t146).{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t148 = #t145.{self::Test::[]=}(#t146, #t147) in #t147;
+  core::num* v10 = let final self::Test<core::num*, core::int*>* #t149 = t in let final core::String* #t150 = "x" in let final core::num* #t151 = #t149.{self::Test::[]}(#t150).{core::num::+}(1) as{TypeError} core::int* in let final void #t152 = #t149.{self::Test::[]=}(#t150, #t151) in #t151;
+  core::num* v11 = let final self::Test<core::num*, core::int*>* #t153 = t in let final core::String* #t154 = "x" in let final core::num* #t155 = #t153.{self::Test::[]}(#t154) in let final void #t156 = #t153.{self::Test::[]=}(#t154, #t155.{core::num::+}(1) as{TypeError} core::int*) in #t155;
 }
 static method test5(self::Test<core::num*, core::num*>* t) → void {
-  core::int* v1 = let final self::Test<core::num*, core::num*>* #t157 = t in let final core::String* #t158 = "x" in let final core::int* #t159 = self::getInt() in let final void #t160 = #t157.{self::Test::[]=}(#t158, #t159){(core::String*, core::num*) →* void} in #t159;
-  core::num* v2 = let final self::Test<core::num*, core::num*>* #t161 = t in let final core::String* #t162 = "x" in let final core::num* #t163 = self::getNum() in let final void #t164 = #t161.{self::Test::[]=}(#t162, #t163){(core::String*, core::num*) →* void} in #t163;
-  core::double* v3 = let final self::Test<core::num*, core::num*>* #t165 = t in let final core::String* #t166 = "x" in let final core::double* #t167 = self::getDouble() in let final void #t168 = #t165.{self::Test::[]=}(#t166, #t167){(core::String*, core::num*) →* void} in #t167;
-  core::num* v4 = let final self::Test<core::num*, core::num*>* #t169 = t in let final core::String* #t170 = "x" in let final core::num* #t171 = #t169.{self::Test::[]}(#t170){(core::String*) →* core::num*} in #t171 == null ?{core::num*} let final core::int* #t172 = self::getInt() in let final void #t173 = #t169.{self::Test::[]=}(#t170, #t172){(core::String*, core::num*) →* void} in #t172 : #t171;
-  core::num* v5 = let final self::Test<core::num*, core::num*>* #t174 = t in let final core::String* #t175 = "x" in let final core::num* #t176 = #t174.{self::Test::[]}(#t175){(core::String*) →* core::num*} in #t176 == null ?{core::num*} let final core::num* #t177 = self::getNum() in let final void #t178 = #t174.{self::Test::[]=}(#t175, #t177){(core::String*, core::num*) →* void} in #t177 : #t176;
-  core::num* v6 = let final self::Test<core::num*, core::num*>* #t179 = t in let final core::String* #t180 = "x" in let final core::num* #t181 = #t179.{self::Test::[]}(#t180){(core::String*) →* core::num*} in #t181 == null ?{core::num*} let final core::double* #t182 = self::getDouble() in let final void #t183 = #t179.{self::Test::[]=}(#t180, #t182){(core::String*, core::num*) →* void} in #t182 : #t181;
-  core::num* v7 = let final self::Test<core::num*, core::num*>* #t184 = t in let final core::String* #t185 = "x" in let final core::num* #t186 = #t184.{self::Test::[]}(#t185){(core::String*) →* core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} in let final void #t187 = #t184.{self::Test::[]=}(#t185, #t186){(core::String*, core::num*) →* void} in #t186;
-  core::num* v8 = let final self::Test<core::num*, core::num*>* #t188 = t in let final core::String* #t189 = "x" in let final core::num* #t190 = #t188.{self::Test::[]}(#t189){(core::String*) →* core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} in let final void #t191 = #t188.{self::Test::[]=}(#t189, #t190){(core::String*, core::num*) →* void} in #t190;
-  core::num* v9 = let final self::Test<core::num*, core::num*>* #t192 = t in let final core::String* #t193 = "x" in let final core::num* #t194 = #t192.{self::Test::[]}(#t193){(core::String*) →* core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*} in let final void #t195 = #t192.{self::Test::[]=}(#t193, #t194){(core::String*, core::num*) →* void} in #t194;
-  core::num* v10 = let final self::Test<core::num*, core::num*>* #t196 = t in let final core::String* #t197 = "x" in let final core::num* #t198 = #t196.{self::Test::[]}(#t197){(core::String*) →* core::num*}.{core::num::+}(1){(core::num*) →* core::num*} in let final void #t199 = #t196.{self::Test::[]=}(#t197, #t198){(core::String*, core::num*) →* void} in #t198;
-  core::num* v11 = let final self::Test<core::num*, core::num*>* #t200 = t in let final core::String* #t201 = "x" in let final core::num* #t202 = #t200.{self::Test::[]}(#t201){(core::String*) →* core::num*} in let final void #t203 = #t200.{self::Test::[]=}(#t201, #t202.{core::num::+}(1){(core::num*) →* core::num*}){(core::String*, core::num*) →* void} in #t202;
+  core::int* v1 = let final self::Test<core::num*, core::num*>* #t157 = t in let final core::String* #t158 = "x" in let final core::int* #t159 = self::getInt() in let final void #t160 = #t157.{self::Test::[]=}(#t158, #t159) in #t159;
+  core::num* v2 = let final self::Test<core::num*, core::num*>* #t161 = t in let final core::String* #t162 = "x" in let final core::num* #t163 = self::getNum() in let final void #t164 = #t161.{self::Test::[]=}(#t162, #t163) in #t163;
+  core::double* v3 = let final self::Test<core::num*, core::num*>* #t165 = t in let final core::String* #t166 = "x" in let final core::double* #t167 = self::getDouble() in let final void #t168 = #t165.{self::Test::[]=}(#t166, #t167) in #t167;
+  core::num* v4 = let final self::Test<core::num*, core::num*>* #t169 = t in let final core::String* #t170 = "x" in let final core::num* #t171 = #t169.{self::Test::[]}(#t170) in #t171.{core::num::==}(null) ?{core::num*} let final core::int* #t172 = self::getInt() in let final void #t173 = #t169.{self::Test::[]=}(#t170, #t172) in #t172 : #t171;
+  core::num* v5 = let final self::Test<core::num*, core::num*>* #t174 = t in let final core::String* #t175 = "x" in let final core::num* #t176 = #t174.{self::Test::[]}(#t175) in #t176.{core::num::==}(null) ?{core::num*} let final core::num* #t177 = self::getNum() in let final void #t178 = #t174.{self::Test::[]=}(#t175, #t177) in #t177 : #t176;
+  core::num* v6 = let final self::Test<core::num*, core::num*>* #t179 = t in let final core::String* #t180 = "x" in let final core::num* #t181 = #t179.{self::Test::[]}(#t180) in #t181.{core::num::==}(null) ?{core::num*} let final core::double* #t182 = self::getDouble() in let final void #t183 = #t179.{self::Test::[]=}(#t180, #t182) in #t182 : #t181;
+  core::num* v7 = let final self::Test<core::num*, core::num*>* #t184 = t in let final core::String* #t185 = "x" in let final core::num* #t186 = #t184.{self::Test::[]}(#t185).{core::num::+}(self::getInt()) in let final void #t187 = #t184.{self::Test::[]=}(#t185, #t186) in #t186;
+  core::num* v8 = let final self::Test<core::num*, core::num*>* #t188 = t in let final core::String* #t189 = "x" in let final core::num* #t190 = #t188.{self::Test::[]}(#t189).{core::num::+}(self::getNum()) in let final void #t191 = #t188.{self::Test::[]=}(#t189, #t190) in #t190;
+  core::num* v9 = let final self::Test<core::num*, core::num*>* #t192 = t in let final core::String* #t193 = "x" in let final core::num* #t194 = #t192.{self::Test::[]}(#t193).{core::num::+}(self::getDouble()) in let final void #t195 = #t192.{self::Test::[]=}(#t193, #t194) in #t194;
+  core::num* v10 = let final self::Test<core::num*, core::num*>* #t196 = t in let final core::String* #t197 = "x" in let final core::num* #t198 = #t196.{self::Test::[]}(#t197).{core::num::+}(1) in let final void #t199 = #t196.{self::Test::[]=}(#t197, #t198) in #t198;
+  core::num* v11 = let final self::Test<core::num*, core::num*>* #t200 = t in let final core::String* #t201 = "x" in let final core::num* #t202 = #t200.{self::Test::[]}(#t201) in let final void #t203 = #t200.{self::Test::[]=}(#t201, #t202.{core::num::+}(1)) in #t202;
 }
 static method test6(self::Test<core::num*, core::double*>* t) → void {
-  core::num* v2 = let final self::Test<core::num*, core::double*>* #t204 = t in let final core::String* #t205 = "x" in let final core::num* #t206 = self::getNum() as{TypeError} core::double* in let final void #t207 = #t204.{self::Test::[]=}(#t205, #t206){(core::String*, core::double*) →* void} in #t206;
-  core::double* v3 = let final self::Test<core::num*, core::double*>* #t208 = t in let final core::String* #t209 = "x" in let final core::double* #t210 = self::getDouble() in let final void #t211 = #t208.{self::Test::[]=}(#t209, #t210){(core::String*, core::double*) →* void} in #t210;
-  core::num* v5 = let final self::Test<core::num*, core::double*>* #t212 = t in let final core::String* #t213 = "x" in let final core::num* #t214 = #t212.{self::Test::[]}(#t213){(core::String*) →* core::num*} in #t214 == null ?{core::num*} let final core::num* #t215 = self::getNum() as{TypeError} core::double* in let final void #t216 = #t212.{self::Test::[]=}(#t213, #t215){(core::String*, core::double*) →* void} in #t215 : #t214;
-  core::num* v6 = let final self::Test<core::num*, core::double*>* #t217 = t in let final core::String* #t218 = "x" in let final core::num* #t219 = #t217.{self::Test::[]}(#t218){(core::String*) →* core::num*} in #t219 == null ?{core::num*} let final core::double* #t220 = self::getDouble() in let final void #t221 = #t217.{self::Test::[]=}(#t218, #t220){(core::String*, core::double*) →* void} in #t220 : #t219;
-  core::num* v7 = let final self::Test<core::num*, core::double*>* #t222 = t in let final core::String* #t223 = "x" in let final core::num* #t224 = #t222.{self::Test::[]}(#t223){(core::String*) →* core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t225 = #t222.{self::Test::[]=}(#t223, #t224){(core::String*, core::double*) →* void} in #t224;
-  core::num* v8 = let final self::Test<core::num*, core::double*>* #t226 = t in let final core::String* #t227 = "x" in let final core::num* #t228 = #t226.{self::Test::[]}(#t227){(core::String*) →* core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t229 = #t226.{self::Test::[]=}(#t227, #t228){(core::String*, core::double*) →* void} in #t228;
-  core::num* v9 = let final self::Test<core::num*, core::double*>* #t230 = t in let final core::String* #t231 = "x" in let final core::num* #t232 = #t230.{self::Test::[]}(#t231){(core::String*) →* core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t233 = #t230.{self::Test::[]=}(#t231, #t232){(core::String*, core::double*) →* void} in #t232;
-  core::num* v10 = let final self::Test<core::num*, core::double*>* #t234 = t in let final core::String* #t235 = "x" in let final core::num* #t236 = #t234.{self::Test::[]}(#t235){(core::String*) →* core::num*}.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t237 = #t234.{self::Test::[]=}(#t235, #t236){(core::String*, core::double*) →* void} in #t236;
-  core::num* v11 = let final self::Test<core::num*, core::double*>* #t238 = t in let final core::String* #t239 = "x" in let final core::num* #t240 = #t238.{self::Test::[]}(#t239){(core::String*) →* core::num*} in let final void #t241 = #t238.{self::Test::[]=}(#t239, #t240.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::double*){(core::String*, core::double*) →* void} in #t240;
+  core::num* v2 = let final self::Test<core::num*, core::double*>* #t204 = t in let final core::String* #t205 = "x" in let final core::num* #t206 = self::getNum() as{TypeError} core::double* in let final void #t207 = #t204.{self::Test::[]=}(#t205, #t206) in #t206;
+  core::double* v3 = let final self::Test<core::num*, core::double*>* #t208 = t in let final core::String* #t209 = "x" in let final core::double* #t210 = self::getDouble() in let final void #t211 = #t208.{self::Test::[]=}(#t209, #t210) in #t210;
+  core::num* v5 = let final self::Test<core::num*, core::double*>* #t212 = t in let final core::String* #t213 = "x" in let final core::num* #t214 = #t212.{self::Test::[]}(#t213) in #t214.{core::num::==}(null) ?{core::num*} let final core::num* #t215 = self::getNum() as{TypeError} core::double* in let final void #t216 = #t212.{self::Test::[]=}(#t213, #t215) in #t215 : #t214;
+  core::num* v6 = let final self::Test<core::num*, core::double*>* #t217 = t in let final core::String* #t218 = "x" in let final core::num* #t219 = #t217.{self::Test::[]}(#t218) in #t219.{core::num::==}(null) ?{core::num*} let final core::double* #t220 = self::getDouble() in let final void #t221 = #t217.{self::Test::[]=}(#t218, #t220) in #t220 : #t219;
+  core::num* v7 = let final self::Test<core::num*, core::double*>* #t222 = t in let final core::String* #t223 = "x" in let final core::num* #t224 = #t222.{self::Test::[]}(#t223).{core::num::+}(self::getInt()) as{TypeError} core::double* in let final void #t225 = #t222.{self::Test::[]=}(#t223, #t224) in #t224;
+  core::num* v8 = let final self::Test<core::num*, core::double*>* #t226 = t in let final core::String* #t227 = "x" in let final core::num* #t228 = #t226.{self::Test::[]}(#t227).{core::num::+}(self::getNum()) as{TypeError} core::double* in let final void #t229 = #t226.{self::Test::[]=}(#t227, #t228) in #t228;
+  core::num* v9 = let final self::Test<core::num*, core::double*>* #t230 = t in let final core::String* #t231 = "x" in let final core::num* #t232 = #t230.{self::Test::[]}(#t231).{core::num::+}(self::getDouble()) as{TypeError} core::double* in let final void #t233 = #t230.{self::Test::[]=}(#t231, #t232) in #t232;
+  core::num* v10 = let final self::Test<core::num*, core::double*>* #t234 = t in let final core::String* #t235 = "x" in let final core::num* #t236 = #t234.{self::Test::[]}(#t235).{core::num::+}(1) as{TypeError} core::double* in let final void #t237 = #t234.{self::Test::[]=}(#t235, #t236) in #t236;
+  core::num* v11 = let final self::Test<core::num*, core::double*>* #t238 = t in let final core::String* #t239 = "x" in let final core::num* #t240 = #t238.{self::Test::[]}(#t239) in let final void #t241 = #t238.{self::Test::[]=}(#t239, #t240.{core::num::+}(1) as{TypeError} core::double*) in #t240;
 }
 static method test7(self::Test<core::double*, core::int*>* t) → void {
-  core::int* v1 = let final self::Test<core::double*, core::int*>* #t242 = t in let final core::String* #t243 = "x" in let final core::int* #t244 = self::getInt() in let final void #t245 = #t242.{self::Test::[]=}(#t243, #t244){(core::String*, core::int*) →* void} in #t244;
-  core::num* v2 = let final self::Test<core::double*, core::int*>* #t246 = t in let final core::String* #t247 = "x" in let final core::num* #t248 = self::getNum() as{TypeError} core::int* in let final void #t249 = #t246.{self::Test::[]=}(#t247, #t248){(core::String*, core::int*) →* void} in #t248;
-  core::num* v4 = let final self::Test<core::double*, core::int*>* #t250 = t in let final core::String* #t251 = "x" in let final core::double* #t252 = #t250.{self::Test::[]}(#t251){(core::String*) →* core::double*} in #t252 == null ?{core::num*} let final core::int* #t253 = self::getInt() in let final void #t254 = #t250.{self::Test::[]=}(#t251, #t253){(core::String*, core::int*) →* void} in #t253 : #t252;
-  core::num* v5 = let final self::Test<core::double*, core::int*>* #t255 = t in let final core::String* #t256 = "x" in let final core::double* #t257 = #t255.{self::Test::[]}(#t256){(core::String*) →* core::double*} in #t257 == null ?{core::num*} let final core::num* #t258 = self::getNum() as{TypeError} core::int* in let final void #t259 = #t255.{self::Test::[]=}(#t256, #t258){(core::String*, core::int*) →* void} in #t258 : #t257;
+  core::int* v1 = let final self::Test<core::double*, core::int*>* #t242 = t in let final core::String* #t243 = "x" in let final core::int* #t244 = self::getInt() in let final void #t245 = #t242.{self::Test::[]=}(#t243, #t244) in #t244;
+  core::num* v2 = let final self::Test<core::double*, core::int*>* #t246 = t in let final core::String* #t247 = "x" in let final core::num* #t248 = self::getNum() as{TypeError} core::int* in let final void #t249 = #t246.{self::Test::[]=}(#t247, #t248) in #t248;
+  core::num* v4 = let final self::Test<core::double*, core::int*>* #t250 = t in let final core::String* #t251 = "x" in let final core::double* #t252 = #t250.{self::Test::[]}(#t251) in #t252.{core::num::==}(null) ?{core::num*} let final core::int* #t253 = self::getInt() in let final void #t254 = #t250.{self::Test::[]=}(#t251, #t253) in #t253 : #t252;
+  core::num* v5 = let final self::Test<core::double*, core::int*>* #t255 = t in let final core::String* #t256 = "x" in let final core::double* #t257 = #t255.{self::Test::[]}(#t256) in #t257.{core::num::==}(null) ?{core::num*} let final core::num* #t258 = self::getNum() as{TypeError} core::int* in let final void #t259 = #t255.{self::Test::[]=}(#t256, #t258) in #t258 : #t257;
   core::double* v7 = let final self::Test<core::double*, core::int*>* #t260 = t in let final core::String* #t261 = "x" in let final core::double* #t262 = let final Never* #t263 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:211:77: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
       t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=double.+*/ +=
-                                                                            ^" in #t260.{self::Test::[]}(#t261){(core::String*) →* core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} as{TypeError} core::int* in let final void #t264 = #t260.{self::Test::[]=}(#t261, #t262){(core::String*, core::int*) →* void} in #t262;
+                                                                            ^" in #t260.{self::Test::[]}(#t261).{core::double::+}(self::getInt()) as{TypeError} core::int* in let final void #t264 = #t260.{self::Test::[]=}(#t261, #t262) in #t262;
   core::double* v8 = let final self::Test<core::double*, core::int*>* #t265 = t in let final core::String* #t266 = "x" in let final core::double* #t267 = let final Never* #t268 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:215:77: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
       t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=double.+*/ +=
-                                                                            ^" in #t265.{self::Test::[]}(#t266){(core::String*) →* core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} as{TypeError} core::int* in let final void #t269 = #t265.{self::Test::[]=}(#t266, #t267){(core::String*, core::int*) →* void} in #t267;
+                                                                            ^" in #t265.{self::Test::[]}(#t266).{core::double::+}(self::getNum()) as{TypeError} core::int* in let final void #t269 = #t265.{self::Test::[]=}(#t266, #t267) in #t267;
   core::double* v10 = let final self::Test<core::double*, core::int*>* #t270 = t in let final core::String* #t271 = "x" in let final core::double* #t272 = let final Never* #t273 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:219:28: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
       /*@target=double.+*/ ++t
-                           ^" in #t270.{self::Test::[]}(#t271){(core::String*) →* core::double*}.{core::double::+}(1){(core::num*) →* core::double*} as{TypeError} core::int* in let final void #t274 = #t270.{self::Test::[]=}(#t271, #t272){(core::String*, core::int*) →* void} in #t272;
-  core::double* v11 = let final self::Test<core::double*, core::int*>* #t275 = t in let final core::String* #t276 = "x" in let final core::double* #t277 = #t275.{self::Test::[]}(#t276){(core::String*) →* core::double*} in let final void #t278 = #t275.{self::Test::[]=}(#t276, let final Never* #t279 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:223:77: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+                           ^" in #t270.{self::Test::[]}(#t271).{core::double::+}(1) as{TypeError} core::int* in let final void #t274 = #t270.{self::Test::[]=}(#t271, #t272) in #t272;
+  core::double* v11 = let final self::Test<core::double*, core::int*>* #t275 = t in let final core::String* #t276 = "x" in let final core::double* #t277 = #t275.{self::Test::[]}(#t276) in let final void #t278 = #t275.{self::Test::[]=}(#t276, let final Never* #t279 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:223:77: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
       t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=double.+*/ ++;
-                                                                            ^" in #t277.{core::double::+}(1){(core::num*) →* core::double*} as{TypeError} core::int*){(core::String*, core::int*) →* void} in #t277;
+                                                                            ^" in #t277.{core::double::+}(1) as{TypeError} core::int*) in #t277;
 }
 static method test8(self::Test<core::double*, core::num*>* t) → void {
-  core::int* v1 = let final self::Test<core::double*, core::num*>* #t280 = t in let final core::String* #t281 = "x" in let final core::int* #t282 = self::getInt() in let final void #t283 = #t280.{self::Test::[]=}(#t281, #t282){(core::String*, core::num*) →* void} in #t282;
-  core::num* v2 = let final self::Test<core::double*, core::num*>* #t284 = t in let final core::String* #t285 = "x" in let final core::num* #t286 = self::getNum() in let final void #t287 = #t284.{self::Test::[]=}(#t285, #t286){(core::String*, core::num*) →* void} in #t286;
-  core::double* v3 = let final self::Test<core::double*, core::num*>* #t288 = t in let final core::String* #t289 = "x" in let final core::double* #t290 = self::getDouble() in let final void #t291 = #t288.{self::Test::[]=}(#t289, #t290){(core::String*, core::num*) →* void} in #t290;
-  core::num* v4 = let final self::Test<core::double*, core::num*>* #t292 = t in let final core::String* #t293 = "x" in let final core::double* #t294 = #t292.{self::Test::[]}(#t293){(core::String*) →* core::double*} in #t294 == null ?{core::num*} let final core::int* #t295 = self::getInt() in let final void #t296 = #t292.{self::Test::[]=}(#t293, #t295){(core::String*, core::num*) →* void} in #t295 : #t294;
-  core::num* v5 = let final self::Test<core::double*, core::num*>* #t297 = t in let final core::String* #t298 = "x" in let final core::double* #t299 = #t297.{self::Test::[]}(#t298){(core::String*) →* core::double*} in #t299 == null ?{core::num*} let final core::num* #t300 = self::getNum() in let final void #t301 = #t297.{self::Test::[]=}(#t298, #t300){(core::String*, core::num*) →* void} in #t300 : #t299;
-  core::double* v6 = let final self::Test<core::double*, core::num*>* #t302 = t in let final core::String* #t303 = "x" in let final core::double* #t304 = #t302.{self::Test::[]}(#t303){(core::String*) →* core::double*} in #t304 == null ?{core::double*} let final core::double* #t305 = self::getDouble() in let final void #t306 = #t302.{self::Test::[]=}(#t303, #t305){(core::String*, core::num*) →* void} in #t305 : #t304;
-  core::double* v7 = let final self::Test<core::double*, core::num*>* #t307 = t in let final core::String* #t308 = "x" in let final core::double* #t309 = #t307.{self::Test::[]}(#t308){(core::String*) →* core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} in let final void #t310 = #t307.{self::Test::[]=}(#t308, #t309){(core::String*, core::num*) →* void} in #t309;
-  core::double* v8 = let final self::Test<core::double*, core::num*>* #t311 = t in let final core::String* #t312 = "x" in let final core::double* #t313 = #t311.{self::Test::[]}(#t312){(core::String*) →* core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} in let final void #t314 = #t311.{self::Test::[]=}(#t312, #t313){(core::String*, core::num*) →* void} in #t313;
-  core::double* v9 = let final self::Test<core::double*, core::num*>* #t315 = t in let final core::String* #t316 = "x" in let final core::double* #t317 = #t315.{self::Test::[]}(#t316){(core::String*) →* core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t318 = #t315.{self::Test::[]=}(#t316, #t317){(core::String*, core::num*) →* void} in #t317;
-  core::double* v10 = let final self::Test<core::double*, core::num*>* #t319 = t in let final core::String* #t320 = "x" in let final core::double* #t321 = #t319.{self::Test::[]}(#t320){(core::String*) →* core::double*}.{core::double::+}(1){(core::num*) →* core::double*} in let final void #t322 = #t319.{self::Test::[]=}(#t320, #t321){(core::String*, core::num*) →* void} in #t321;
-  core::double* v11 = let final self::Test<core::double*, core::num*>* #t323 = t in let final core::String* #t324 = "x" in let final core::double* #t325 = #t323.{self::Test::[]}(#t324){(core::String*) →* core::double*} in let final void #t326 = #t323.{self::Test::[]=}(#t324, #t325.{core::double::+}(1){(core::num*) →* core::double*}){(core::String*, core::num*) →* void} in #t325;
+  core::int* v1 = let final self::Test<core::double*, core::num*>* #t280 = t in let final core::String* #t281 = "x" in let final core::int* #t282 = self::getInt() in let final void #t283 = #t280.{self::Test::[]=}(#t281, #t282) in #t282;
+  core::num* v2 = let final self::Test<core::double*, core::num*>* #t284 = t in let final core::String* #t285 = "x" in let final core::num* #t286 = self::getNum() in let final void #t287 = #t284.{self::Test::[]=}(#t285, #t286) in #t286;
+  core::double* v3 = let final self::Test<core::double*, core::num*>* #t288 = t in let final core::String* #t289 = "x" in let final core::double* #t290 = self::getDouble() in let final void #t291 = #t288.{self::Test::[]=}(#t289, #t290) in #t290;
+  core::num* v4 = let final self::Test<core::double*, core::num*>* #t292 = t in let final core::String* #t293 = "x" in let final core::double* #t294 = #t292.{self::Test::[]}(#t293) in #t294.{core::num::==}(null) ?{core::num*} let final core::int* #t295 = self::getInt() in let final void #t296 = #t292.{self::Test::[]=}(#t293, #t295) in #t295 : #t294;
+  core::num* v5 = let final self::Test<core::double*, core::num*>* #t297 = t in let final core::String* #t298 = "x" in let final core::double* #t299 = #t297.{self::Test::[]}(#t298) in #t299.{core::num::==}(null) ?{core::num*} let final core::num* #t300 = self::getNum() in let final void #t301 = #t297.{self::Test::[]=}(#t298, #t300) in #t300 : #t299;
+  core::double* v6 = let final self::Test<core::double*, core::num*>* #t302 = t in let final core::String* #t303 = "x" in let final core::double* #t304 = #t302.{self::Test::[]}(#t303) in #t304.{core::num::==}(null) ?{core::double*} let final core::double* #t305 = self::getDouble() in let final void #t306 = #t302.{self::Test::[]=}(#t303, #t305) in #t305 : #t304;
+  core::double* v7 = let final self::Test<core::double*, core::num*>* #t307 = t in let final core::String* #t308 = "x" in let final core::double* #t309 = #t307.{self::Test::[]}(#t308).{core::double::+}(self::getInt()) in let final void #t310 = #t307.{self::Test::[]=}(#t308, #t309) in #t309;
+  core::double* v8 = let final self::Test<core::double*, core::num*>* #t311 = t in let final core::String* #t312 = "x" in let final core::double* #t313 = #t311.{self::Test::[]}(#t312).{core::double::+}(self::getNum()) in let final void #t314 = #t311.{self::Test::[]=}(#t312, #t313) in #t313;
+  core::double* v9 = let final self::Test<core::double*, core::num*>* #t315 = t in let final core::String* #t316 = "x" in let final core::double* #t317 = #t315.{self::Test::[]}(#t316).{core::double::+}(self::getDouble()) in let final void #t318 = #t315.{self::Test::[]=}(#t316, #t317) in #t317;
+  core::double* v10 = let final self::Test<core::double*, core::num*>* #t319 = t in let final core::String* #t320 = "x" in let final core::double* #t321 = #t319.{self::Test::[]}(#t320).{core::double::+}(1) in let final void #t322 = #t319.{self::Test::[]=}(#t320, #t321) in #t321;
+  core::double* v11 = let final self::Test<core::double*, core::num*>* #t323 = t in let final core::String* #t324 = "x" in let final core::double* #t325 = #t323.{self::Test::[]}(#t324) in let final void #t326 = #t323.{self::Test::[]=}(#t324, #t325.{core::double::+}(1)) in #t325;
 }
 static method test9(self::Test<core::double*, core::double*>* t) → void {
-  core::num* v2 = let final self::Test<core::double*, core::double*>* #t327 = t in let final core::String* #t328 = "x" in let final core::num* #t329 = self::getNum() as{TypeError} core::double* in let final void #t330 = #t327.{self::Test::[]=}(#t328, #t329){(core::String*, core::double*) →* void} in #t329;
-  core::double* v3 = let final self::Test<core::double*, core::double*>* #t331 = t in let final core::String* #t332 = "x" in let final core::double* #t333 = self::getDouble() in let final void #t334 = #t331.{self::Test::[]=}(#t332, #t333){(core::String*, core::double*) →* void} in #t333;
-  core::num* v5 = let final self::Test<core::double*, core::double*>* #t335 = t in let final core::String* #t336 = "x" in let final core::double* #t337 = #t335.{self::Test::[]}(#t336){(core::String*) →* core::double*} in #t337 == null ?{core::num*} let final core::num* #t338 = self::getNum() as{TypeError} core::double* in let final void #t339 = #t335.{self::Test::[]=}(#t336, #t338){(core::String*, core::double*) →* void} in #t338 : #t337;
-  core::double* v6 = let final self::Test<core::double*, core::double*>* #t340 = t in let final core::String* #t341 = "x" in let final core::double* #t342 = #t340.{self::Test::[]}(#t341){(core::String*) →* core::double*} in #t342 == null ?{core::double*} let final core::double* #t343 = self::getDouble() in let final void #t344 = #t340.{self::Test::[]=}(#t341, #t343){(core::String*, core::double*) →* void} in #t343 : #t342;
-  core::double* v7 = let final self::Test<core::double*, core::double*>* #t345 = t in let final core::String* #t346 = "x" in let final core::double* #t347 = #t345.{self::Test::[]}(#t346){(core::String*) →* core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} in let final void #t348 = #t345.{self::Test::[]=}(#t346, #t347){(core::String*, core::double*) →* void} in #t347;
-  core::double* v8 = let final self::Test<core::double*, core::double*>* #t349 = t in let final core::String* #t350 = "x" in let final core::double* #t351 = #t349.{self::Test::[]}(#t350){(core::String*) →* core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} in let final void #t352 = #t349.{self::Test::[]=}(#t350, #t351){(core::String*, core::double*) →* void} in #t351;
-  core::double* v9 = let final self::Test<core::double*, core::double*>* #t353 = t in let final core::String* #t354 = "x" in let final core::double* #t355 = #t353.{self::Test::[]}(#t354){(core::String*) →* core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t356 = #t353.{self::Test::[]=}(#t354, #t355){(core::String*, core::double*) →* void} in #t355;
-  core::double* v10 = let final self::Test<core::double*, core::double*>* #t357 = t in let final core::String* #t358 = "x" in let final core::double* #t359 = #t357.{self::Test::[]}(#t358){(core::String*) →* core::double*}.{core::double::+}(1){(core::num*) →* core::double*} in let final void #t360 = #t357.{self::Test::[]=}(#t358, #t359){(core::String*, core::double*) →* void} in #t359;
-  core::double* v11 = let final self::Test<core::double*, core::double*>* #t361 = t in let final core::String* #t362 = "x" in let final core::double* #t363 = #t361.{self::Test::[]}(#t362){(core::String*) →* core::double*} in let final void #t364 = #t361.{self::Test::[]=}(#t362, #t363.{core::double::+}(1){(core::num*) →* core::double*}){(core::String*, core::double*) →* void} in #t363;
+  core::num* v2 = let final self::Test<core::double*, core::double*>* #t327 = t in let final core::String* #t328 = "x" in let final core::num* #t329 = self::getNum() as{TypeError} core::double* in let final void #t330 = #t327.{self::Test::[]=}(#t328, #t329) in #t329;
+  core::double* v3 = let final self::Test<core::double*, core::double*>* #t331 = t in let final core::String* #t332 = "x" in let final core::double* #t333 = self::getDouble() in let final void #t334 = #t331.{self::Test::[]=}(#t332, #t333) in #t333;
+  core::num* v5 = let final self::Test<core::double*, core::double*>* #t335 = t in let final core::String* #t336 = "x" in let final core::double* #t337 = #t335.{self::Test::[]}(#t336) in #t337.{core::num::==}(null) ?{core::num*} let final core::num* #t338 = self::getNum() as{TypeError} core::double* in let final void #t339 = #t335.{self::Test::[]=}(#t336, #t338) in #t338 : #t337;
+  core::double* v6 = let final self::Test<core::double*, core::double*>* #t340 = t in let final core::String* #t341 = "x" in let final core::double* #t342 = #t340.{self::Test::[]}(#t341) in #t342.{core::num::==}(null) ?{core::double*} let final core::double* #t343 = self::getDouble() in let final void #t344 = #t340.{self::Test::[]=}(#t341, #t343) in #t343 : #t342;
+  core::double* v7 = let final self::Test<core::double*, core::double*>* #t345 = t in let final core::String* #t346 = "x" in let final core::double* #t347 = #t345.{self::Test::[]}(#t346).{core::double::+}(self::getInt()) in let final void #t348 = #t345.{self::Test::[]=}(#t346, #t347) in #t347;
+  core::double* v8 = let final self::Test<core::double*, core::double*>* #t349 = t in let final core::String* #t350 = "x" in let final core::double* #t351 = #t349.{self::Test::[]}(#t350).{core::double::+}(self::getNum()) in let final void #t352 = #t349.{self::Test::[]=}(#t350, #t351) in #t351;
+  core::double* v9 = let final self::Test<core::double*, core::double*>* #t353 = t in let final core::String* #t354 = "x" in let final core::double* #t355 = #t353.{self::Test::[]}(#t354).{core::double::+}(self::getDouble()) in let final void #t356 = #t353.{self::Test::[]=}(#t354, #t355) in #t355;
+  core::double* v10 = let final self::Test<core::double*, core::double*>* #t357 = t in let final core::String* #t358 = "x" in let final core::double* #t359 = #t357.{self::Test::[]}(#t358).{core::double::+}(1) in let final void #t360 = #t357.{self::Test::[]=}(#t358, #t359) in #t359;
+  core::double* v11 = let final self::Test<core::double*, core::double*>* #t361 = t in let final core::String* #t362 = "x" in let final core::double* #t363 = #t361.{self::Test::[]}(#t362) in let final void #t364 = #t361.{self::Test::[]=}(#t362, #t363.{core::double::+}(1)) in #t363;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.weak.expect
index 5bdc052..cacec2e 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.weak.expect
@@ -40,18 +40,18 @@
 static method test() → void {
   self::B* local;
   local = self::f<self::B*>();
-  local == null ?{self::B*} local = self::f<self::B*>() : null;
-  local = local.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  local = local.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  local = local.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  local = local.{self::B::-}(1){(core::int*) →* self::B*};
-  local = local.{self::B::-}(1){(core::int*) →* self::B*};
+  local.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : null;
+  local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  local = local.{self::B::*}(self::f<self::B*>());
+  local = local.{self::B::&}(self::f<self::A*>());
+  local = local.{self::B::-}(1);
+  local = local.{self::B::-}(1);
   self::B* v1 = local = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = local in #t1 == null ?{self::B*} local = self::f<self::B*>() : #t1;
-  self::A* v3 = local = local.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B* v4 = local = local.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::C* v5 = local = local.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B* v6 = local = local.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B* v7 = let final self::B* #t2 = local in let final self::B* #t3 = local = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+  self::B* v2 = let final self::B* #t1 = local in #t1.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : #t1;
+  self::A* v3 = local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B* v4 = local = local.{self::B::*}(self::f<self::B*>());
+  self::C* v5 = local = local.{self::B::&}(self::f<self::A*>());
+  self::B* v6 = local = local.{self::B::-}(1);
+  self::B* v7 = let final self::B* #t2 = local in let final self::B* #t3 = local = #t2.{self::B::-}(1) in #t2;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.weak.transformed.expect
index 5bdc052..cacec2e 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.weak.transformed.expect
@@ -40,18 +40,18 @@
 static method test() → void {
   self::B* local;
   local = self::f<self::B*>();
-  local == null ?{self::B*} local = self::f<self::B*>() : null;
-  local = local.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  local = local.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  local = local.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  local = local.{self::B::-}(1){(core::int*) →* self::B*};
-  local = local.{self::B::-}(1){(core::int*) →* self::B*};
+  local.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : null;
+  local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  local = local.{self::B::*}(self::f<self::B*>());
+  local = local.{self::B::&}(self::f<self::A*>());
+  local = local.{self::B::-}(1);
+  local = local.{self::B::-}(1);
   self::B* v1 = local = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = local in #t1 == null ?{self::B*} local = self::f<self::B*>() : #t1;
-  self::A* v3 = local = local.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B* v4 = local = local.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::C* v5 = local = local.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B* v6 = local = local.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B* v7 = let final self::B* #t2 = local in let final self::B* #t3 = local = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+  self::B* v2 = let final self::B* #t1 = local in #t1.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : #t1;
+  self::A* v3 = local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B* v4 = local = local.{self::B::*}(self::f<self::B*>());
+  self::C* v5 = local = local.{self::B::&}(self::f<self::A*>());
+  self::B* v6 = local = local.{self::B::-}(1);
+  self::B* v7 = let final self::B* #t2 = local in let final self::B* #t3 = local = #t2.{self::B::-}(1) in #t2;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_local_upwards.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_local_upwards.dart.weak.expect
index 9e55829..a799b0f 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_local_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_local_upwards.dart.weak.expect
@@ -11,35 +11,35 @@
 static method test1(core::int* t) → void {
   core::int* v1 = t = self::getInt();
   core::num* v2 = t = self::getNum() as{TypeError} core::int*;
-  core::int* v4 = let final core::int* #t1 = t in #t1 == null ?{core::int*} t = self::getInt() : #t1;
-  core::num* v5 = let final core::int* #t2 = t in #t2 == null ?{core::num*} t = self::getNum() as{TypeError} core::int* : #t2;
-  core::int* v7 = t = t.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-  core::num* v8 = t = t.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int*;
-  core::int* v10 = t = t.{core::num::+}(1){(core::num*) →* core::int*};
-  core::int* v11 = let final core::int* #t3 = t in let final core::int* #t4 = t = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3;
+  core::int* v4 = let final core::int* #t1 = t in #t1.{core::num::==}(null) ?{core::int*} t = self::getInt() : #t1;
+  core::num* v5 = let final core::int* #t2 = t in #t2.{core::num::==}(null) ?{core::num*} t = self::getNum() as{TypeError} core::int* : #t2;
+  core::int* v7 = t = t.{core::num::+}(self::getInt());
+  core::num* v8 = t = t.{core::num::+}(self::getNum()) as{TypeError} core::int*;
+  core::int* v10 = t = t.{core::num::+}(1);
+  core::int* v11 = let final core::int* #t3 = t in let final core::int* #t4 = t = #t3.{core::num::+}(1) in #t3;
 }
 static method test2(core::num* t) → void {
   core::int* v1 = t = self::getInt();
   core::num* v2 = t = self::getNum();
   core::double* v3 = t = self::getDouble();
-  core::num* v4 = let final core::num* #t5 = t in #t5 == null ?{core::num*} t = self::getInt() : #t5;
-  core::num* v5 = let final core::num* #t6 = t in #t6 == null ?{core::num*} t = self::getNum() : #t6;
-  core::num* v6 = let final core::num* #t7 = t in #t7 == null ?{core::num*} t = self::getDouble() : #t7;
-  core::num* v7 = t = t.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-  core::num* v8 = t = t.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-  core::num* v9 = t = t.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-  core::num* v10 = t = t.{core::num::+}(1){(core::num*) →* core::num*};
-  core::num* v11 = let final core::num* #t8 = t in let final core::num* #t9 = t = #t8.{core::num::+}(1){(core::num*) →* core::num*} in #t8;
+  core::num* v4 = let final core::num* #t5 = t in #t5.{core::num::==}(null) ?{core::num*} t = self::getInt() : #t5;
+  core::num* v5 = let final core::num* #t6 = t in #t6.{core::num::==}(null) ?{core::num*} t = self::getNum() : #t6;
+  core::num* v6 = let final core::num* #t7 = t in #t7.{core::num::==}(null) ?{core::num*} t = self::getDouble() : #t7;
+  core::num* v7 = t = t.{core::num::+}(self::getInt());
+  core::num* v8 = t = t.{core::num::+}(self::getNum());
+  core::num* v9 = t = t.{core::num::+}(self::getDouble());
+  core::num* v10 = t = t.{core::num::+}(1);
+  core::num* v11 = let final core::num* #t8 = t in let final core::num* #t9 = t = #t8.{core::num::+}(1) in #t8;
 }
 static method test3(core::double* t) → void {
   core::num* v2 = t = self::getNum() as{TypeError} core::double*;
   core::double* v3 = t = self::getDouble();
-  core::num* v5 = let final core::double* #t10 = t in #t10 == null ?{core::num*} t = self::getNum() as{TypeError} core::double* : #t10;
-  core::double* v6 = let final core::double* #t11 = t in #t11 == null ?{core::double*} t = self::getDouble() : #t11;
-  core::double* v7 = t = t.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-  core::double* v8 = t = t.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-  core::double* v9 = t = t.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-  core::double* v10 = t = t.{core::double::+}(1){(core::num*) →* core::double*};
-  core::double* v11 = let final core::double* #t12 = t in let final core::double* #t13 = t = #t12.{core::double::+}(1){(core::num*) →* core::double*} in #t12;
+  core::num* v5 = let final core::double* #t10 = t in #t10.{core::num::==}(null) ?{core::num*} t = self::getNum() as{TypeError} core::double* : #t10;
+  core::double* v6 = let final core::double* #t11 = t in #t11.{core::num::==}(null) ?{core::double*} t = self::getDouble() : #t11;
+  core::double* v7 = t = t.{core::double::+}(self::getInt());
+  core::double* v8 = t = t.{core::double::+}(self::getNum());
+  core::double* v9 = t = t.{core::double::+}(self::getDouble());
+  core::double* v10 = t = t.{core::double::+}(1);
+  core::double* v11 = let final core::double* #t12 = t in let final core::double* #t13 = t = #t12.{core::double::+}(1) in #t12;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_local_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_local_upwards.dart.weak.transformed.expect
index 9e55829..a799b0f 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_local_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_local_upwards.dart.weak.transformed.expect
@@ -11,35 +11,35 @@
 static method test1(core::int* t) → void {
   core::int* v1 = t = self::getInt();
   core::num* v2 = t = self::getNum() as{TypeError} core::int*;
-  core::int* v4 = let final core::int* #t1 = t in #t1 == null ?{core::int*} t = self::getInt() : #t1;
-  core::num* v5 = let final core::int* #t2 = t in #t2 == null ?{core::num*} t = self::getNum() as{TypeError} core::int* : #t2;
-  core::int* v7 = t = t.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-  core::num* v8 = t = t.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int*;
-  core::int* v10 = t = t.{core::num::+}(1){(core::num*) →* core::int*};
-  core::int* v11 = let final core::int* #t3 = t in let final core::int* #t4 = t = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3;
+  core::int* v4 = let final core::int* #t1 = t in #t1.{core::num::==}(null) ?{core::int*} t = self::getInt() : #t1;
+  core::num* v5 = let final core::int* #t2 = t in #t2.{core::num::==}(null) ?{core::num*} t = self::getNum() as{TypeError} core::int* : #t2;
+  core::int* v7 = t = t.{core::num::+}(self::getInt());
+  core::num* v8 = t = t.{core::num::+}(self::getNum()) as{TypeError} core::int*;
+  core::int* v10 = t = t.{core::num::+}(1);
+  core::int* v11 = let final core::int* #t3 = t in let final core::int* #t4 = t = #t3.{core::num::+}(1) in #t3;
 }
 static method test2(core::num* t) → void {
   core::int* v1 = t = self::getInt();
   core::num* v2 = t = self::getNum();
   core::double* v3 = t = self::getDouble();
-  core::num* v4 = let final core::num* #t5 = t in #t5 == null ?{core::num*} t = self::getInt() : #t5;
-  core::num* v5 = let final core::num* #t6 = t in #t6 == null ?{core::num*} t = self::getNum() : #t6;
-  core::num* v6 = let final core::num* #t7 = t in #t7 == null ?{core::num*} t = self::getDouble() : #t7;
-  core::num* v7 = t = t.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-  core::num* v8 = t = t.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-  core::num* v9 = t = t.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-  core::num* v10 = t = t.{core::num::+}(1){(core::num*) →* core::num*};
-  core::num* v11 = let final core::num* #t8 = t in let final core::num* #t9 = t = #t8.{core::num::+}(1){(core::num*) →* core::num*} in #t8;
+  core::num* v4 = let final core::num* #t5 = t in #t5.{core::num::==}(null) ?{core::num*} t = self::getInt() : #t5;
+  core::num* v5 = let final core::num* #t6 = t in #t6.{core::num::==}(null) ?{core::num*} t = self::getNum() : #t6;
+  core::num* v6 = let final core::num* #t7 = t in #t7.{core::num::==}(null) ?{core::num*} t = self::getDouble() : #t7;
+  core::num* v7 = t = t.{core::num::+}(self::getInt());
+  core::num* v8 = t = t.{core::num::+}(self::getNum());
+  core::num* v9 = t = t.{core::num::+}(self::getDouble());
+  core::num* v10 = t = t.{core::num::+}(1);
+  core::num* v11 = let final core::num* #t8 = t in let final core::num* #t9 = t = #t8.{core::num::+}(1) in #t8;
 }
 static method test3(core::double* t) → void {
   core::num* v2 = t = self::getNum() as{TypeError} core::double*;
   core::double* v3 = t = self::getDouble();
-  core::num* v5 = let final core::double* #t10 = t in #t10 == null ?{core::num*} t = self::getNum() as{TypeError} core::double* : #t10;
-  core::double* v6 = let final core::double* #t11 = t in #t11 == null ?{core::double*} t = self::getDouble() : #t11;
-  core::double* v7 = t = t.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-  core::double* v8 = t = t.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-  core::double* v9 = t = t.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-  core::double* v10 = t = t.{core::double::+}(1){(core::num*) →* core::double*};
-  core::double* v11 = let final core::double* #t12 = t in let final core::double* #t13 = t = #t12.{core::double::+}(1){(core::num*) →* core::double*} in #t12;
+  core::num* v5 = let final core::double* #t10 = t in #t10.{core::num::==}(null) ?{core::num*} t = self::getNum() as{TypeError} core::double* : #t10;
+  core::double* v6 = let final core::double* #t11 = t in #t11.{core::num::==}(null) ?{core::double*} t = self::getDouble() : #t11;
+  core::double* v7 = t = t.{core::double::+}(self::getInt());
+  core::double* v8 = t = t.{core::double::+}(self::getNum());
+  core::double* v9 = t = t.{core::double::+}(self::getDouble());
+  core::double* v10 = t = t.{core::double::+}(1);
+  core::double* v11 = let final core::double* #t12 = t in let final core::double* #t13 = t = #t12.{core::double::+}(1) in #t12;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.weak.expect
index 6ae0089..b865421 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.weak.expect
@@ -19,11 +19,11 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field core::int* v_assign = new self::A::•().{self::A::f} = 1;
-static field core::int* v_plus = let final self::A* #t1 = new self::A::•() in #t1.{self::A::f} = #t1.{self::A::f}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-static field core::int* v_minus = let final self::A* #t2 = new self::A::•() in #t2.{self::A::f} = #t2.{self::A::f}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
-static field core::int* v_multiply = let final self::A* #t3 = new self::A::•() in #t3.{self::A::f} = #t3.{self::A::f}{core::int*}.{core::num::*}(1){(core::num*) →* core::int*};
-static field core::int* v_prefix_pp = let final self::A* #t4 = new self::A::•() in #t4.{self::A::f} = #t4.{self::A::f}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-static field core::int* v_prefix_mm = let final self::A* #t5 = new self::A::•() in #t5.{self::A::f} = #t5.{self::A::f}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
-static field core::int* v_postfix_pp = let final self::A* #t6 = new self::A::•() in let final core::int* #t7 = #t6.{self::A::f}{core::int*} in let final core::int* #t8 = #t6.{self::A::f} = #t7.{core::num::+}(1){(core::num*) →* core::int*} in #t7;
-static field core::int* v_postfix_mm = let final self::A* #t9 = new self::A::•() in let final core::int* #t10 = #t9.{self::A::f}{core::int*} in let final core::int* #t11 = #t9.{self::A::f} = #t10.{core::num::-}(1){(core::num*) →* core::int*} in #t10;
+static field core::int* v_plus = let final self::A* #t1 = new self::A::•() in #t1.{self::A::f} = #t1.{self::A::f}.{core::num::+}(1);
+static field core::int* v_minus = let final self::A* #t2 = new self::A::•() in #t2.{self::A::f} = #t2.{self::A::f}.{core::num::-}(1);
+static field core::int* v_multiply = let final self::A* #t3 = new self::A::•() in #t3.{self::A::f} = #t3.{self::A::f}.{core::num::*}(1);
+static field core::int* v_prefix_pp = let final self::A* #t4 = new self::A::•() in #t4.{self::A::f} = #t4.{self::A::f}.{core::num::+}(1);
+static field core::int* v_prefix_mm = let final self::A* #t5 = new self::A::•() in #t5.{self::A::f} = #t5.{self::A::f}.{core::num::-}(1);
+static field core::int* v_postfix_pp = let final self::A* #t6 = new self::A::•() in let final core::int* #t7 = #t6.{self::A::f} in let final core::int* #t8 = #t6.{self::A::f} = #t7.{core::num::+}(1) in #t7;
+static field core::int* v_postfix_mm = let final self::A* #t9 = new self::A::•() in let final core::int* #t10 = #t9.{self::A::f} in let final core::int* #t11 = #t9.{self::A::f} = #t10.{core::num::-}(1) in #t10;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.weak.transformed.expect
index 6ae0089..b865421 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.weak.transformed.expect
@@ -19,11 +19,11 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field core::int* v_assign = new self::A::•().{self::A::f} = 1;
-static field core::int* v_plus = let final self::A* #t1 = new self::A::•() in #t1.{self::A::f} = #t1.{self::A::f}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-static field core::int* v_minus = let final self::A* #t2 = new self::A::•() in #t2.{self::A::f} = #t2.{self::A::f}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
-static field core::int* v_multiply = let final self::A* #t3 = new self::A::•() in #t3.{self::A::f} = #t3.{self::A::f}{core::int*}.{core::num::*}(1){(core::num*) →* core::int*};
-static field core::int* v_prefix_pp = let final self::A* #t4 = new self::A::•() in #t4.{self::A::f} = #t4.{self::A::f}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-static field core::int* v_prefix_mm = let final self::A* #t5 = new self::A::•() in #t5.{self::A::f} = #t5.{self::A::f}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
-static field core::int* v_postfix_pp = let final self::A* #t6 = new self::A::•() in let final core::int* #t7 = #t6.{self::A::f}{core::int*} in let final core::int* #t8 = #t6.{self::A::f} = #t7.{core::num::+}(1){(core::num*) →* core::int*} in #t7;
-static field core::int* v_postfix_mm = let final self::A* #t9 = new self::A::•() in let final core::int* #t10 = #t9.{self::A::f}{core::int*} in let final core::int* #t11 = #t9.{self::A::f} = #t10.{core::num::-}(1){(core::num*) →* core::int*} in #t10;
+static field core::int* v_plus = let final self::A* #t1 = new self::A::•() in #t1.{self::A::f} = #t1.{self::A::f}.{core::num::+}(1);
+static field core::int* v_minus = let final self::A* #t2 = new self::A::•() in #t2.{self::A::f} = #t2.{self::A::f}.{core::num::-}(1);
+static field core::int* v_multiply = let final self::A* #t3 = new self::A::•() in #t3.{self::A::f} = #t3.{self::A::f}.{core::num::*}(1);
+static field core::int* v_prefix_pp = let final self::A* #t4 = new self::A::•() in #t4.{self::A::f} = #t4.{self::A::f}.{core::num::+}(1);
+static field core::int* v_prefix_mm = let final self::A* #t5 = new self::A::•() in #t5.{self::A::f} = #t5.{self::A::f}.{core::num::-}(1);
+static field core::int* v_postfix_pp = let final self::A* #t6 = new self::A::•() in let final core::int* #t7 = #t6.{self::A::f} in let final core::int* #t8 = #t6.{self::A::f} = #t7.{core::num::+}(1) in #t7;
+static field core::int* v_postfix_mm = let final self::A* #t9 = new self::A::•() in let final core::int* #t10 = #t9.{self::A::f} in let final core::int* #t11 = #t9.{self::A::f} = #t10.{core::num::-}(1) in #t10;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.weak.expect
index 2269e14..fbcfd30 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.weak.expect
@@ -63,17 +63,17 @@
 static field core::int* v_prefix_pp = let final self::B* #t1 = new self::B::•() in #t1.{self::B::a} = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:17:36: Error: A value of type 'int' can't be assigned to a variable of type 'A'.
  - 'A' is from 'pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart'.
 var v_prefix_pp = (/*@target=A.+*/ ++new /*@ type=B* */ B()
-                                   ^" in #t1.{self::B::a}{self::A*}.{self::A::+}(1){(dynamic) →* core::int*} as{TypeError} self::A*;
+                                   ^" in #t1.{self::B::a}.{self::A::+}(1) as{TypeError} self::A*;
 static field core::double* v_prefix_mm = let final self::B* #t3 = new self::B::•() in #t3.{self::B::a} = let final Never* #t4 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:19:36: Error: A value of type 'double' can't be assigned to a variable of type 'A'.
  - 'A' is from 'pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart'.
 var v_prefix_mm = (/*@target=A.-*/ --new /*@ type=B* */ B()
-                                   ^" in #t3.{self::B::a}{self::A*}.{self::A::-}(1){(dynamic) →* core::double*} as{TypeError} self::A*;
-static field self::A* v_postfix_pp = let final self::B* #t5 = new self::B::•() in let final self::A* #t6 = #t5.{self::B::a}{self::A*} in let final core::int* #t7 = #t5.{self::B::a} = let final Never* #t8 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:23:40: Error: A value of type 'int' can't be assigned to a variable of type 'A'.
+                                   ^" in #t3.{self::B::a}.{self::A::-}(1) as{TypeError} self::A*;
+static field self::A* v_postfix_pp = let final self::B* #t5 = new self::B::•() in let final self::A* #t6 = #t5.{self::B::a} in let final core::int* #t7 = #t5.{self::B::a} = let final Never* #t8 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:23:40: Error: A value of type 'int' can't be assigned to a variable of type 'A'.
  - 'A' is from 'pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart'.
     /*@ type=int* */ a /*@target=A.+*/ ++);
-                                       ^" in #t6.{self::A::+}(1){(dynamic) →* core::int*} as{TypeError} self::A* in #t6;
-static field self::A* v_postfix_mm = let final self::B* #t9 = new self::B::•() in let final self::A* #t10 = #t9.{self::B::a}{self::A*} in let final core::double* #t11 = #t9.{self::B::a} = let final Never* #t12 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:26:43: Error: A value of type 'double' can't be assigned to a variable of type 'A'.
+                                       ^" in #t6.{self::A::+}(1) as{TypeError} self::A* in #t6;
+static field self::A* v_postfix_mm = let final self::B* #t9 = new self::B::•() in let final self::A* #t10 = #t9.{self::B::a} in let final core::double* #t11 = #t9.{self::B::a} = let final Never* #t12 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:26:43: Error: A value of type 'double' can't be assigned to a variable of type 'A'.
  - 'A' is from 'pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart'.
     /*@ type=double* */ a /*@target=A.-*/ --);
-                                          ^" in #t10.{self::A::-}(1){(dynamic) →* core::double*} as{TypeError} self::A* in #t10;
+                                          ^" in #t10.{self::A::-}(1) as{TypeError} self::A* in #t10;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.weak.expect
index 2e41284..63ae5bb 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.weak.expect
@@ -42,19 +42,19 @@
     ;
   static method test(self::Test* t) → void {
     t.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t1 = t in #t1.{self::Test::member}{self::B*} == null ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
-    let final self::Test* #t2 = t in #t2.{self::Test::member} = #t2.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    let final self::Test* #t3 = t in #t3.{self::Test::member} = #t3.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    let final self::Test* #t4 = t in #t4.{self::Test::member} = #t4.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    let final self::Test* #t5 = t in #t5.{self::Test::member} = #t5.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    let final self::Test* #t6 = t in #t6.{self::Test::member} = #t6.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
+    let final self::Test* #t1 = t in #t1.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t2 = t in #t2.{self::Test::member} = #t2.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    let final self::Test* #t3 = t in #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    let final self::Test* #t4 = t in #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    let final self::Test* #t5 = t in #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::-}(1);
+    let final self::Test* #t6 = t in #t6.{self::Test::member} = #t6.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = t.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member}{self::B*} in #t8 == null ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
-    self::A* v3 = let final self::Test* #t9 = t in #t9.{self::Test::member} = #t9.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    self::B* v4 = let final self::Test* #t10 = t in #t10.{self::Test::member} = #t10.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    self::C* v5 = let final self::Test* #t11 = t in #t11.{self::Test::member} = #t11.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    self::B* v6 = let final self::Test* #t12 = t in #t12.{self::Test::member} = #t12.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v7 = let final self::Test* #t13 = t in let final self::B* #t14 = #t13.{self::Test::member}{self::B*} in let final self::B* #t15 = #t13.{self::Test::member} = #t14.{self::B::-}(1){(core::int*) →* self::B*} in #t14;
+    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member} in #t8.{self::A::==}(null) ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
+    self::A* v3 = let final self::Test* #t9 = t in #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    self::B* v4 = let final self::Test* #t10 = t in #t10.{self::Test::member} = #t10.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    self::C* v5 = let final self::Test* #t11 = t in #t11.{self::Test::member} = #t11.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    self::B* v6 = let final self::Test* #t12 = t in #t12.{self::Test::member} = #t12.{self::Test::member}.{self::B::-}(1);
+    self::B* v7 = let final self::Test* #t13 = t in let final self::B* #t14 = #t13.{self::Test::member} in let final self::B* #t15 = #t13.{self::Test::member} = #t14.{self::B::-}(1) in #t14;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.weak.transformed.expect
index 2e41284..63ae5bb 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.weak.transformed.expect
@@ -42,19 +42,19 @@
     ;
   static method test(self::Test* t) → void {
     t.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t1 = t in #t1.{self::Test::member}{self::B*} == null ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
-    let final self::Test* #t2 = t in #t2.{self::Test::member} = #t2.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    let final self::Test* #t3 = t in #t3.{self::Test::member} = #t3.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    let final self::Test* #t4 = t in #t4.{self::Test::member} = #t4.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    let final self::Test* #t5 = t in #t5.{self::Test::member} = #t5.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    let final self::Test* #t6 = t in #t6.{self::Test::member} = #t6.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
+    let final self::Test* #t1 = t in #t1.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t2 = t in #t2.{self::Test::member} = #t2.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    let final self::Test* #t3 = t in #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    let final self::Test* #t4 = t in #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    let final self::Test* #t5 = t in #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::-}(1);
+    let final self::Test* #t6 = t in #t6.{self::Test::member} = #t6.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = t.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member}{self::B*} in #t8 == null ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
-    self::A* v3 = let final self::Test* #t9 = t in #t9.{self::Test::member} = #t9.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    self::B* v4 = let final self::Test* #t10 = t in #t10.{self::Test::member} = #t10.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    self::C* v5 = let final self::Test* #t11 = t in #t11.{self::Test::member} = #t11.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    self::B* v6 = let final self::Test* #t12 = t in #t12.{self::Test::member} = #t12.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v7 = let final self::Test* #t13 = t in let final self::B* #t14 = #t13.{self::Test::member}{self::B*} in let final self::B* #t15 = #t13.{self::Test::member} = #t14.{self::B::-}(1){(core::int*) →* self::B*} in #t14;
+    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member} in #t8.{self::A::==}(null) ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
+    self::A* v3 = let final self::Test* #t9 = t in #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    self::B* v4 = let final self::Test* #t10 = t in #t10.{self::Test::member} = #t10.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    self::C* v5 = let final self::Test* #t11 = t in #t11.{self::Test::member} = #t11.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    self::B* v6 = let final self::Test* #t12 = t in #t12.{self::Test::member} = #t12.{self::Test::member}.{self::B::-}(1);
+    self::B* v7 = let final self::Test* #t13 = t in let final self::B* #t14 = #t13.{self::Test::member} in let final self::B* #t15 = #t13.{self::Test::member} = #t14.{self::B::-}(1) in #t14;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.weak.expect
index 681f9aa..189fd9a 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.weak.expect
@@ -41,20 +41,20 @@
     : super core::Object::•()
     ;
   static method test(self::Test* t) → void {
-    let final self::Test* #t1 = t in #t1 == null ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t2 = t in #t2 == null ?{self::B*} null : #t2.{self::Test::member}{self::B*} == null ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
-    let final self::Test* #t3 = t in #t3 == null ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    let final self::Test* #t4 = t in #t4 == null ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    let final self::Test* #t5 = t in #t5 == null ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    let final self::Test* #t6 = t in #t6 == null ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
-    let final self::Test* #t9 = t in #t9 == null ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v1 = let final self::Test* #t10 = t in #t10 == null ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t11 = t in #t11 == null ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member}{self::B*} in #t12 == null ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
-    self::A* v3 = let final self::Test* #t13 = t in #t13 == null ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
-    self::B* v4 = let final self::Test* #t16 = t in #t16 == null ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
-    self::C* v5 = let final self::Test* #t19 = t in #t19 == null ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
-    self::B* v6 = let final self::Test* #t22 = t in #t22 == null ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
-    self::B* v7 = let final self::Test* #t25 = t in #t25 == null ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member}{self::B*} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1){(core::int*) →* self::B*} in #t26;
+    let final self::Test* #t1 = t in #t1.{self::Test::==}(null) ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
+    let final self::Test* #t2 = t in #t2.{self::Test::==}(null) ?{self::B*} null : #t2.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t3 = t in #t3.{self::Test::==}(null) ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    let final self::Test* #t4 = t in #t4.{self::Test::==}(null) ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    let final self::Test* #t5 = t in #t5.{self::Test::==}(null) ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    let final self::Test* #t6 = t in #t6.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}.{self::B::-}(1) in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
+    let final self::Test* #t9 = t in #t9.{self::Test::==}(null) ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::-}(1);
+    self::B* v1 = let final self::Test* #t10 = t in #t10.{self::Test::==}(null) ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
+    self::B* v2 = let final self::Test* #t11 = t in #t11.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member} in #t12.{self::A::==}(null) ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
+    self::A* v3 = let final self::Test* #t13 = t in #t13.{self::Test::==}(null) ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
+    self::B* v4 = let final self::Test* #t16 = t in #t16.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}.{self::B::*}(self::f<self::B*>()) in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
+    self::C* v5 = let final self::Test* #t19 = t in #t19.{self::Test::==}(null) ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}.{self::B::&}(self::f<self::A*>()) in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
+    self::B* v6 = let final self::Test* #t22 = t in #t22.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}.{self::B::-}(1) in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
+    self::B* v7 = let final self::Test* #t25 = t in #t25.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1) in #t26;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.weak.transformed.expect
index 681f9aa..189fd9a 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.weak.transformed.expect
@@ -41,20 +41,20 @@
     : super core::Object::•()
     ;
   static method test(self::Test* t) → void {
-    let final self::Test* #t1 = t in #t1 == null ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t2 = t in #t2 == null ?{self::B*} null : #t2.{self::Test::member}{self::B*} == null ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
-    let final self::Test* #t3 = t in #t3 == null ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    let final self::Test* #t4 = t in #t4 == null ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    let final self::Test* #t5 = t in #t5 == null ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    let final self::Test* #t6 = t in #t6 == null ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
-    let final self::Test* #t9 = t in #t9 == null ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v1 = let final self::Test* #t10 = t in #t10 == null ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t11 = t in #t11 == null ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member}{self::B*} in #t12 == null ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
-    self::A* v3 = let final self::Test* #t13 = t in #t13 == null ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}{self::B*}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
-    self::B* v4 = let final self::Test* #t16 = t in #t16 == null ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}{self::B*}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*} in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
-    self::C* v5 = let final self::Test* #t19 = t in #t19 == null ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}{self::B*}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*} in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
-    self::B* v6 = let final self::Test* #t22 = t in #t22 == null ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}{self::B*}.{self::B::-}(1){(core::int*) →* self::B*} in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
-    self::B* v7 = let final self::Test* #t25 = t in #t25 == null ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member}{self::B*} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1){(core::int*) →* self::B*} in #t26;
+    let final self::Test* #t1 = t in #t1.{self::Test::==}(null) ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
+    let final self::Test* #t2 = t in #t2.{self::Test::==}(null) ?{self::B*} null : #t2.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t3 = t in #t3.{self::Test::==}(null) ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    let final self::Test* #t4 = t in #t4.{self::Test::==}(null) ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    let final self::Test* #t5 = t in #t5.{self::Test::==}(null) ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    let final self::Test* #t6 = t in #t6.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}.{self::B::-}(1) in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
+    let final self::Test* #t9 = t in #t9.{self::Test::==}(null) ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::-}(1);
+    self::B* v1 = let final self::Test* #t10 = t in #t10.{self::Test::==}(null) ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
+    self::B* v2 = let final self::Test* #t11 = t in #t11.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member} in #t12.{self::A::==}(null) ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
+    self::A* v3 = let final self::Test* #t13 = t in #t13.{self::Test::==}(null) ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
+    self::B* v4 = let final self::Test* #t16 = t in #t16.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}.{self::B::*}(self::f<self::B*>()) in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
+    self::C* v5 = let final self::Test* #t19 = t in #t19.{self::Test::==}(null) ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}.{self::B::&}(self::f<self::A*>()) in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
+    self::B* v6 = let final self::Test* #t22 = t in #t22.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}.{self::B::-}(1) in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
+    self::B* v7 = let final self::Test* #t25 = t in #t25.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1) in #t26;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.weak.expect
index 1e360b8..810f1d5 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.weak.expect
@@ -8,14 +8,14 @@
     : super core::Object::•()
     ;
   static method test(self::Test1* t) → void {
-    core::int* v1 = let final self::Test1* #t1 = t in #t1 == null ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
-    core::num* v2 = let final self::Test1* #t2 = t in #t2 == null ?{core::num*} null : #t2.{self::Test1::prop} = self::getNum() as{TypeError} core::int*;
-    core::int* v4 = let final self::Test1* #t3 = t in #t3 == null ?{core::int*} null : let final core::int* #t4 = #t3.{self::Test1::prop}{core::int*} in #t4 == null ?{core::int*} #t3.{self::Test1::prop} = self::getInt() : #t4;
-    core::num* v5 = let final self::Test1* #t5 = t in #t5 == null ?{core::num*} null : let final core::int* #t6 = #t5.{self::Test1::prop}{core::int*} in #t6 == null ?{core::num*} #t5.{self::Test1::prop} = self::getNum() as{TypeError} core::int* : #t6;
-    core::int* v7 = let final self::Test1* #t7 = t in #t7 == null ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}{core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
-    core::num* v8 = let final self::Test1* #t10 = t in #t10 == null ?{core::num*} null : let final core::num* #t11 = #t10.{self::Test1::prop}{core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t12 = #t10.{self::Test1::prop} = #t11 in #t11;
-    core::int* v10 = let final self::Test1* #t13 = t in #t13 == null ?{core::int*} null : let final core::int* #t14 = #t13.{self::Test1::prop}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t15 = #t13.{self::Test1::prop} = #t14 in #t14;
-    core::int* v11 = let final self::Test1* #t16 = t in #t16 == null ?{core::int*} null : let final core::int* #t17 = #t16.{self::Test1::prop}{core::int*} in let final void #t18 = #t16.{self::Test1::prop} = #t17.{core::num::+}(1){(core::num*) →* core::int*} in #t17;
+    core::int* v1 = let final self::Test1* #t1 = t in #t1.{self::Test1::==}(null) ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
+    core::num* v2 = let final self::Test1* #t2 = t in #t2.{self::Test1::==}(null) ?{core::num*} null : #t2.{self::Test1::prop} = self::getNum() as{TypeError} core::int*;
+    core::int* v4 = let final self::Test1* #t3 = t in #t3.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t4 = #t3.{self::Test1::prop} in #t4.{core::num::==}(null) ?{core::int*} #t3.{self::Test1::prop} = self::getInt() : #t4;
+    core::num* v5 = let final self::Test1* #t5 = t in #t5.{self::Test1::==}(null) ?{core::num*} null : let final core::int* #t6 = #t5.{self::Test1::prop} in #t6.{core::num::==}(null) ?{core::num*} #t5.{self::Test1::prop} = self::getNum() as{TypeError} core::int* : #t6;
+    core::int* v7 = let final self::Test1* #t7 = t in #t7.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}.{core::num::+}(self::getInt()) in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
+    core::num* v8 = let final self::Test1* #t10 = t in #t10.{self::Test1::==}(null) ?{core::num*} null : let final core::num* #t11 = #t10.{self::Test1::prop}.{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t12 = #t10.{self::Test1::prop} = #t11 in #t11;
+    core::int* v10 = let final self::Test1* #t13 = t in #t13.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t14 = #t13.{self::Test1::prop}.{core::num::+}(1) in let final void #t15 = #t13.{self::Test1::prop} = #t14 in #t14;
+    core::int* v11 = let final self::Test1* #t16 = t in #t16.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t17 = #t16.{self::Test1::prop} in let final void #t18 = #t16.{self::Test1::prop} = #t17.{core::num::+}(1) in #t17;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -34,17 +34,17 @@
     : super core::Object::•()
     ;
   static method test(self::Test2* t) → void {
-    core::int* v1 = let final self::Test2* #t19 = t in #t19 == null ?{core::int*} null : #t19.{self::Test2::prop} = self::getInt();
-    core::num* v2 = let final self::Test2* #t20 = t in #t20 == null ?{core::num*} null : #t20.{self::Test2::prop} = self::getNum();
-    core::double* v3 = let final self::Test2* #t21 = t in #t21 == null ?{core::double*} null : #t21.{self::Test2::prop} = self::getDouble();
-    core::num* v4 = let final self::Test2* #t22 = t in #t22 == null ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop}{core::num*} in #t23 == null ?{core::num*} #t22.{self::Test2::prop} = self::getInt() : #t23;
-    core::num* v5 = let final self::Test2* #t24 = t in #t24 == null ?{core::num*} null : let final core::num* #t25 = #t24.{self::Test2::prop}{core::num*} in #t25 == null ?{core::num*} #t24.{self::Test2::prop} = self::getNum() : #t25;
-    core::num* v6 = let final self::Test2* #t26 = t in #t26 == null ?{core::num*} null : let final core::num* #t27 = #t26.{self::Test2::prop}{core::num*} in #t27 == null ?{core::num*} #t26.{self::Test2::prop} = self::getDouble() : #t27;
-    core::num* v7 = let final self::Test2* #t28 = t in #t28 == null ?{core::num*} null : let final core::num* #t29 = #t28.{self::Test2::prop}{core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
-    core::num* v8 = let final self::Test2* #t31 = t in #t31 == null ?{core::num*} null : let final core::num* #t32 = #t31.{self::Test2::prop}{core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
-    core::num* v9 = let final self::Test2* #t34 = t in #t34 == null ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop}{core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*} in let final void #t36 = #t34.{self::Test2::prop} = #t35 in #t35;
-    core::num* v10 = let final self::Test2* #t37 = t in #t37 == null ?{core::num*} null : let final core::num* #t38 = #t37.{self::Test2::prop}{core::num*}.{core::num::+}(1){(core::num*) →* core::num*} in let final void #t39 = #t37.{self::Test2::prop} = #t38 in #t38;
-    core::num* v11 = let final self::Test2* #t40 = t in #t40 == null ?{core::num*} null : let final core::num* #t41 = #t40.{self::Test2::prop}{core::num*} in let final void #t42 = #t40.{self::Test2::prop} = #t41.{core::num::+}(1){(core::num*) →* core::num*} in #t41;
+    core::int* v1 = let final self::Test2* #t19 = t in #t19.{self::Test2::==}(null) ?{core::int*} null : #t19.{self::Test2::prop} = self::getInt();
+    core::num* v2 = let final self::Test2* #t20 = t in #t20.{self::Test2::==}(null) ?{core::num*} null : #t20.{self::Test2::prop} = self::getNum();
+    core::double* v3 = let final self::Test2* #t21 = t in #t21.{self::Test2::==}(null) ?{core::double*} null : #t21.{self::Test2::prop} = self::getDouble();
+    core::num* v4 = let final self::Test2* #t22 = t in #t22.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop} in #t23.{core::num::==}(null) ?{core::num*} #t22.{self::Test2::prop} = self::getInt() : #t23;
+    core::num* v5 = let final self::Test2* #t24 = t in #t24.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t25 = #t24.{self::Test2::prop} in #t25.{core::num::==}(null) ?{core::num*} #t24.{self::Test2::prop} = self::getNum() : #t25;
+    core::num* v6 = let final self::Test2* #t26 = t in #t26.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t27 = #t26.{self::Test2::prop} in #t27.{core::num::==}(null) ?{core::num*} #t26.{self::Test2::prop} = self::getDouble() : #t27;
+    core::num* v7 = let final self::Test2* #t28 = t in #t28.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t29 = #t28.{self::Test2::prop}.{core::num::+}(self::getInt()) in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
+    core::num* v8 = let final self::Test2* #t31 = t in #t31.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t32 = #t31.{self::Test2::prop}.{core::num::+}(self::getNum()) in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
+    core::num* v9 = let final self::Test2* #t34 = t in #t34.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop}.{core::num::+}(self::getDouble()) in let final void #t36 = #t34.{self::Test2::prop} = #t35 in #t35;
+    core::num* v10 = let final self::Test2* #t37 = t in #t37.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t38 = #t37.{self::Test2::prop}.{core::num::+}(1) in let final void #t39 = #t37.{self::Test2::prop} = #t38 in #t38;
+    core::num* v11 = let final self::Test2* #t40 = t in #t40.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t41 = #t40.{self::Test2::prop} in let final void #t42 = #t40.{self::Test2::prop} = #t41.{core::num::+}(1) in #t41;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -63,15 +63,15 @@
     : super core::Object::•()
     ;
   static method test3(self::Test3* t) → void {
-    core::num* v2 = let final self::Test3* #t43 = t in #t43 == null ?{core::num*} null : #t43.{self::Test3::prop} = self::getNum() as{TypeError} core::double*;
-    core::double* v3 = let final self::Test3* #t44 = t in #t44 == null ?{core::double*} null : #t44.{self::Test3::prop} = self::getDouble();
-    core::num* v5 = let final self::Test3* #t45 = t in #t45 == null ?{core::num*} null : let final core::double* #t46 = #t45.{self::Test3::prop}{core::double*} in #t46 == null ?{core::num*} #t45.{self::Test3::prop} = self::getNum() as{TypeError} core::double* : #t46;
-    core::double* v6 = let final self::Test3* #t47 = t in #t47 == null ?{core::double*} null : let final core::double* #t48 = #t47.{self::Test3::prop}{core::double*} in #t48 == null ?{core::double*} #t47.{self::Test3::prop} = self::getDouble() : #t48;
-    core::double* v7 = let final self::Test3* #t49 = t in #t49 == null ?{core::double*} null : let final core::double* #t50 = #t49.{self::Test3::prop}{core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
-    core::double* v8 = let final self::Test3* #t52 = t in #t52 == null ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop}{core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} in let final void #t54 = #t52.{self::Test3::prop} = #t53 in #t53;
-    core::double* v9 = let final self::Test3* #t55 = t in #t55 == null ?{core::double*} null : let final core::double* #t56 = #t55.{self::Test3::prop}{core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t57 = #t55.{self::Test3::prop} = #t56 in #t56;
-    core::double* v10 = let final self::Test3* #t58 = t in #t58 == null ?{core::double*} null : let final core::double* #t59 = #t58.{self::Test3::prop}{core::double*}.{core::double::+}(1){(core::num*) →* core::double*} in let final void #t60 = #t58.{self::Test3::prop} = #t59 in #t59;
-    core::double* v11 = let final self::Test3* #t61 = t in #t61 == null ?{core::double*} null : let final core::double* #t62 = #t61.{self::Test3::prop}{core::double*} in let final void #t63 = #t61.{self::Test3::prop} = #t62.{core::double::+}(1){(core::num*) →* core::double*} in #t62;
+    core::num* v2 = let final self::Test3* #t43 = t in #t43.{self::Test3::==}(null) ?{core::num*} null : #t43.{self::Test3::prop} = self::getNum() as{TypeError} core::double*;
+    core::double* v3 = let final self::Test3* #t44 = t in #t44.{self::Test3::==}(null) ?{core::double*} null : #t44.{self::Test3::prop} = self::getDouble();
+    core::num* v5 = let final self::Test3* #t45 = t in #t45.{self::Test3::==}(null) ?{core::num*} null : let final core::double* #t46 = #t45.{self::Test3::prop} in #t46.{core::num::==}(null) ?{core::num*} #t45.{self::Test3::prop} = self::getNum() as{TypeError} core::double* : #t46;
+    core::double* v6 = let final self::Test3* #t47 = t in #t47.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t48 = #t47.{self::Test3::prop} in #t48.{core::num::==}(null) ?{core::double*} #t47.{self::Test3::prop} = self::getDouble() : #t48;
+    core::double* v7 = let final self::Test3* #t49 = t in #t49.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t50 = #t49.{self::Test3::prop}.{core::double::+}(self::getInt()) in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
+    core::double* v8 = let final self::Test3* #t52 = t in #t52.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop}.{core::double::+}(self::getNum()) in let final void #t54 = #t52.{self::Test3::prop} = #t53 in #t53;
+    core::double* v9 = let final self::Test3* #t55 = t in #t55.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t56 = #t55.{self::Test3::prop}.{core::double::+}(self::getDouble()) in let final void #t57 = #t55.{self::Test3::prop} = #t56 in #t56;
+    core::double* v10 = let final self::Test3* #t58 = t in #t58.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t59 = #t58.{self::Test3::prop}.{core::double::+}(1) in let final void #t60 = #t58.{self::Test3::prop} = #t59 in #t59;
+    core::double* v11 = let final self::Test3* #t61 = t in #t61.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t62 = #t61.{self::Test3::prop} in let final void #t63 = #t61.{self::Test3::prop} = #t62.{core::double::+}(1) in #t62;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.weak.transformed.expect
index 1e360b8..810f1d5 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.weak.transformed.expect
@@ -8,14 +8,14 @@
     : super core::Object::•()
     ;
   static method test(self::Test1* t) → void {
-    core::int* v1 = let final self::Test1* #t1 = t in #t1 == null ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
-    core::num* v2 = let final self::Test1* #t2 = t in #t2 == null ?{core::num*} null : #t2.{self::Test1::prop} = self::getNum() as{TypeError} core::int*;
-    core::int* v4 = let final self::Test1* #t3 = t in #t3 == null ?{core::int*} null : let final core::int* #t4 = #t3.{self::Test1::prop}{core::int*} in #t4 == null ?{core::int*} #t3.{self::Test1::prop} = self::getInt() : #t4;
-    core::num* v5 = let final self::Test1* #t5 = t in #t5 == null ?{core::num*} null : let final core::int* #t6 = #t5.{self::Test1::prop}{core::int*} in #t6 == null ?{core::num*} #t5.{self::Test1::prop} = self::getNum() as{TypeError} core::int* : #t6;
-    core::int* v7 = let final self::Test1* #t7 = t in #t7 == null ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}{core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
-    core::num* v8 = let final self::Test1* #t10 = t in #t10 == null ?{core::num*} null : let final core::num* #t11 = #t10.{self::Test1::prop}{core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t12 = #t10.{self::Test1::prop} = #t11 in #t11;
-    core::int* v10 = let final self::Test1* #t13 = t in #t13 == null ?{core::int*} null : let final core::int* #t14 = #t13.{self::Test1::prop}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t15 = #t13.{self::Test1::prop} = #t14 in #t14;
-    core::int* v11 = let final self::Test1* #t16 = t in #t16 == null ?{core::int*} null : let final core::int* #t17 = #t16.{self::Test1::prop}{core::int*} in let final void #t18 = #t16.{self::Test1::prop} = #t17.{core::num::+}(1){(core::num*) →* core::int*} in #t17;
+    core::int* v1 = let final self::Test1* #t1 = t in #t1.{self::Test1::==}(null) ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
+    core::num* v2 = let final self::Test1* #t2 = t in #t2.{self::Test1::==}(null) ?{core::num*} null : #t2.{self::Test1::prop} = self::getNum() as{TypeError} core::int*;
+    core::int* v4 = let final self::Test1* #t3 = t in #t3.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t4 = #t3.{self::Test1::prop} in #t4.{core::num::==}(null) ?{core::int*} #t3.{self::Test1::prop} = self::getInt() : #t4;
+    core::num* v5 = let final self::Test1* #t5 = t in #t5.{self::Test1::==}(null) ?{core::num*} null : let final core::int* #t6 = #t5.{self::Test1::prop} in #t6.{core::num::==}(null) ?{core::num*} #t5.{self::Test1::prop} = self::getNum() as{TypeError} core::int* : #t6;
+    core::int* v7 = let final self::Test1* #t7 = t in #t7.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}.{core::num::+}(self::getInt()) in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
+    core::num* v8 = let final self::Test1* #t10 = t in #t10.{self::Test1::==}(null) ?{core::num*} null : let final core::num* #t11 = #t10.{self::Test1::prop}.{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t12 = #t10.{self::Test1::prop} = #t11 in #t11;
+    core::int* v10 = let final self::Test1* #t13 = t in #t13.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t14 = #t13.{self::Test1::prop}.{core::num::+}(1) in let final void #t15 = #t13.{self::Test1::prop} = #t14 in #t14;
+    core::int* v11 = let final self::Test1* #t16 = t in #t16.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t17 = #t16.{self::Test1::prop} in let final void #t18 = #t16.{self::Test1::prop} = #t17.{core::num::+}(1) in #t17;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -34,17 +34,17 @@
     : super core::Object::•()
     ;
   static method test(self::Test2* t) → void {
-    core::int* v1 = let final self::Test2* #t19 = t in #t19 == null ?{core::int*} null : #t19.{self::Test2::prop} = self::getInt();
-    core::num* v2 = let final self::Test2* #t20 = t in #t20 == null ?{core::num*} null : #t20.{self::Test2::prop} = self::getNum();
-    core::double* v3 = let final self::Test2* #t21 = t in #t21 == null ?{core::double*} null : #t21.{self::Test2::prop} = self::getDouble();
-    core::num* v4 = let final self::Test2* #t22 = t in #t22 == null ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop}{core::num*} in #t23 == null ?{core::num*} #t22.{self::Test2::prop} = self::getInt() : #t23;
-    core::num* v5 = let final self::Test2* #t24 = t in #t24 == null ?{core::num*} null : let final core::num* #t25 = #t24.{self::Test2::prop}{core::num*} in #t25 == null ?{core::num*} #t24.{self::Test2::prop} = self::getNum() : #t25;
-    core::num* v6 = let final self::Test2* #t26 = t in #t26 == null ?{core::num*} null : let final core::num* #t27 = #t26.{self::Test2::prop}{core::num*} in #t27 == null ?{core::num*} #t26.{self::Test2::prop} = self::getDouble() : #t27;
-    core::num* v7 = let final self::Test2* #t28 = t in #t28 == null ?{core::num*} null : let final core::num* #t29 = #t28.{self::Test2::prop}{core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
-    core::num* v8 = let final self::Test2* #t31 = t in #t31 == null ?{core::num*} null : let final core::num* #t32 = #t31.{self::Test2::prop}{core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
-    core::num* v9 = let final self::Test2* #t34 = t in #t34 == null ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop}{core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*} in let final void #t36 = #t34.{self::Test2::prop} = #t35 in #t35;
-    core::num* v10 = let final self::Test2* #t37 = t in #t37 == null ?{core::num*} null : let final core::num* #t38 = #t37.{self::Test2::prop}{core::num*}.{core::num::+}(1){(core::num*) →* core::num*} in let final void #t39 = #t37.{self::Test2::prop} = #t38 in #t38;
-    core::num* v11 = let final self::Test2* #t40 = t in #t40 == null ?{core::num*} null : let final core::num* #t41 = #t40.{self::Test2::prop}{core::num*} in let final void #t42 = #t40.{self::Test2::prop} = #t41.{core::num::+}(1){(core::num*) →* core::num*} in #t41;
+    core::int* v1 = let final self::Test2* #t19 = t in #t19.{self::Test2::==}(null) ?{core::int*} null : #t19.{self::Test2::prop} = self::getInt();
+    core::num* v2 = let final self::Test2* #t20 = t in #t20.{self::Test2::==}(null) ?{core::num*} null : #t20.{self::Test2::prop} = self::getNum();
+    core::double* v3 = let final self::Test2* #t21 = t in #t21.{self::Test2::==}(null) ?{core::double*} null : #t21.{self::Test2::prop} = self::getDouble();
+    core::num* v4 = let final self::Test2* #t22 = t in #t22.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop} in #t23.{core::num::==}(null) ?{core::num*} #t22.{self::Test2::prop} = self::getInt() : #t23;
+    core::num* v5 = let final self::Test2* #t24 = t in #t24.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t25 = #t24.{self::Test2::prop} in #t25.{core::num::==}(null) ?{core::num*} #t24.{self::Test2::prop} = self::getNum() : #t25;
+    core::num* v6 = let final self::Test2* #t26 = t in #t26.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t27 = #t26.{self::Test2::prop} in #t27.{core::num::==}(null) ?{core::num*} #t26.{self::Test2::prop} = self::getDouble() : #t27;
+    core::num* v7 = let final self::Test2* #t28 = t in #t28.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t29 = #t28.{self::Test2::prop}.{core::num::+}(self::getInt()) in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
+    core::num* v8 = let final self::Test2* #t31 = t in #t31.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t32 = #t31.{self::Test2::prop}.{core::num::+}(self::getNum()) in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
+    core::num* v9 = let final self::Test2* #t34 = t in #t34.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop}.{core::num::+}(self::getDouble()) in let final void #t36 = #t34.{self::Test2::prop} = #t35 in #t35;
+    core::num* v10 = let final self::Test2* #t37 = t in #t37.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t38 = #t37.{self::Test2::prop}.{core::num::+}(1) in let final void #t39 = #t37.{self::Test2::prop} = #t38 in #t38;
+    core::num* v11 = let final self::Test2* #t40 = t in #t40.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t41 = #t40.{self::Test2::prop} in let final void #t42 = #t40.{self::Test2::prop} = #t41.{core::num::+}(1) in #t41;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -63,15 +63,15 @@
     : super core::Object::•()
     ;
   static method test3(self::Test3* t) → void {
-    core::num* v2 = let final self::Test3* #t43 = t in #t43 == null ?{core::num*} null : #t43.{self::Test3::prop} = self::getNum() as{TypeError} core::double*;
-    core::double* v3 = let final self::Test3* #t44 = t in #t44 == null ?{core::double*} null : #t44.{self::Test3::prop} = self::getDouble();
-    core::num* v5 = let final self::Test3* #t45 = t in #t45 == null ?{core::num*} null : let final core::double* #t46 = #t45.{self::Test3::prop}{core::double*} in #t46 == null ?{core::num*} #t45.{self::Test3::prop} = self::getNum() as{TypeError} core::double* : #t46;
-    core::double* v6 = let final self::Test3* #t47 = t in #t47 == null ?{core::double*} null : let final core::double* #t48 = #t47.{self::Test3::prop}{core::double*} in #t48 == null ?{core::double*} #t47.{self::Test3::prop} = self::getDouble() : #t48;
-    core::double* v7 = let final self::Test3* #t49 = t in #t49 == null ?{core::double*} null : let final core::double* #t50 = #t49.{self::Test3::prop}{core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
-    core::double* v8 = let final self::Test3* #t52 = t in #t52 == null ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop}{core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} in let final void #t54 = #t52.{self::Test3::prop} = #t53 in #t53;
-    core::double* v9 = let final self::Test3* #t55 = t in #t55 == null ?{core::double*} null : let final core::double* #t56 = #t55.{self::Test3::prop}{core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t57 = #t55.{self::Test3::prop} = #t56 in #t56;
-    core::double* v10 = let final self::Test3* #t58 = t in #t58 == null ?{core::double*} null : let final core::double* #t59 = #t58.{self::Test3::prop}{core::double*}.{core::double::+}(1){(core::num*) →* core::double*} in let final void #t60 = #t58.{self::Test3::prop} = #t59 in #t59;
-    core::double* v11 = let final self::Test3* #t61 = t in #t61 == null ?{core::double*} null : let final core::double* #t62 = #t61.{self::Test3::prop}{core::double*} in let final void #t63 = #t61.{self::Test3::prop} = #t62.{core::double::+}(1){(core::num*) →* core::double*} in #t62;
+    core::num* v2 = let final self::Test3* #t43 = t in #t43.{self::Test3::==}(null) ?{core::num*} null : #t43.{self::Test3::prop} = self::getNum() as{TypeError} core::double*;
+    core::double* v3 = let final self::Test3* #t44 = t in #t44.{self::Test3::==}(null) ?{core::double*} null : #t44.{self::Test3::prop} = self::getDouble();
+    core::num* v5 = let final self::Test3* #t45 = t in #t45.{self::Test3::==}(null) ?{core::num*} null : let final core::double* #t46 = #t45.{self::Test3::prop} in #t46.{core::num::==}(null) ?{core::num*} #t45.{self::Test3::prop} = self::getNum() as{TypeError} core::double* : #t46;
+    core::double* v6 = let final self::Test3* #t47 = t in #t47.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t48 = #t47.{self::Test3::prop} in #t48.{core::num::==}(null) ?{core::double*} #t47.{self::Test3::prop} = self::getDouble() : #t48;
+    core::double* v7 = let final self::Test3* #t49 = t in #t49.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t50 = #t49.{self::Test3::prop}.{core::double::+}(self::getInt()) in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
+    core::double* v8 = let final self::Test3* #t52 = t in #t52.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop}.{core::double::+}(self::getNum()) in let final void #t54 = #t52.{self::Test3::prop} = #t53 in #t53;
+    core::double* v9 = let final self::Test3* #t55 = t in #t55.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t56 = #t55.{self::Test3::prop}.{core::double::+}(self::getDouble()) in let final void #t57 = #t55.{self::Test3::prop} = #t56 in #t56;
+    core::double* v10 = let final self::Test3* #t58 = t in #t58.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t59 = #t58.{self::Test3::prop}.{core::double::+}(1) in let final void #t60 = #t58.{self::Test3::prop} = #t59 in #t59;
+    core::double* v11 = let final self::Test3* #t61 = t in #t61.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t62 = #t61.{self::Test3::prop} in let final void #t63 = #t61.{self::Test3::prop} = #t62.{core::double::+}(1) in #t62;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.weak.expect
index 28b3433..fe71ec5 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.weak.expect
@@ -57,19 +57,19 @@
     ;
   method test() → void {
     super.{self::Base::member} = self::f<self::B*>();
-    super.{self::Base::member} == null ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1){(core::int*) →* self::B*};
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1){(core::int*) →* self::B*};
+    super.{self::Base::member}.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
     self::B* v1 = super.{self::Base::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1 == null ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
-    self::A* v3 = super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    self::B* v4 = super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    self::C* v5 = super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    self::B* v6 = super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v7 = let final self::B* #t2 = super.{self::Base::member} in let final self::B* #t3 = super.{self::Base::member} = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
+    self::A* v3 = super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    self::B* v4 = super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
+    self::C* v5 = super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
+    self::B* v6 = super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
+    self::B* v7 = let final self::B* #t2 = super.{self::Base::member} in let final self::B* #t3 = super.{self::Base::member} = #t2.{self::B::-}(1) in #t2;
   }
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.weak.transformed.expect
index 28b3433..fe71ec5 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.weak.transformed.expect
@@ -57,19 +57,19 @@
     ;
   method test() → void {
     super.{self::Base::member} = self::f<self::B*>();
-    super.{self::Base::member} == null ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1){(core::int*) →* self::B*};
-    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1){(core::int*) →* self::B*};
+    super.{self::Base::member}.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
+    super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
     self::B* v1 = super.{self::Base::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1 == null ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
-    self::A* v3 = super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-    self::B* v4 = super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-    self::C* v5 = super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-    self::B* v6 = super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1){(core::int*) →* self::B*};
-    self::B* v7 = let final self::B* #t2 = super.{self::Base::member} in let final self::B* #t3 = super.{self::Base::member} = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
+    self::A* v3 = super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    self::B* v4 = super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
+    self::C* v5 = super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
+    self::B* v6 = super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
+    self::B* v7 = let final self::B* #t2 = super.{self::Base::member} in let final self::B* #t3 = super.{self::Base::member} = #t2.{self::B::-}(1) in #t2;
   }
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.weak.expect
index 4dec3f9..38215e0 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.weak.expect
@@ -27,12 +27,12 @@
   method test() → void {
     core::int* v1 = super.{self::Base::intProp} = self::getInt();
     core::num* v2 = super.{self::Base::intProp} = self::getNum() as{TypeError} core::int*;
-    core::int* v4 = let final core::int* #t1 = super.{self::Base::intProp} in #t1 == null ?{core::int*} super.{self::Base::intProp} = self::getInt() : #t1;
-    core::num* v5 = let final core::int* #t2 = super.{self::Base::intProp} in #t2 == null ?{core::num*} super.{self::Base::intProp} = self::getNum() as{TypeError} core::int* : #t2;
-    core::int* v7 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-    core::num* v8 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int*;
-    core::int* v10 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(1){(core::num*) →* core::int*};
-    core::int* v11 = let final core::int* #t3 = super.{self::Base::intProp} in let final core::int* #t4 = super.{self::Base::intProp} = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3;
+    core::int* v4 = let final core::int* #t1 = super.{self::Base::intProp} in #t1.{core::num::==}(null) ?{core::int*} super.{self::Base::intProp} = self::getInt() : #t1;
+    core::num* v5 = let final core::int* #t2 = super.{self::Base::intProp} in #t2.{core::num::==}(null) ?{core::num*} super.{self::Base::intProp} = self::getNum() as{TypeError} core::int* : #t2;
+    core::int* v7 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(self::getInt());
+    core::num* v8 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(self::getNum()) as{TypeError} core::int*;
+    core::int* v10 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(1);
+    core::int* v11 = let final core::int* #t3 = super.{self::Base::intProp} in let final core::int* #t4 = super.{self::Base::intProp} = #t3.{core::num::+}(1) in #t3;
   }
 }
 class Test2 extends self::Base {
@@ -43,14 +43,14 @@
     core::int* v1 = super.{self::Base::numProp} = self::getInt();
     core::num* v2 = super.{self::Base::numProp} = self::getNum();
     core::double* v3 = super.{self::Base::numProp} = self::getDouble();
-    core::num* v4 = let final core::num* #t5 = super.{self::Base::numProp} in #t5 == null ?{core::num*} super.{self::Base::numProp} = self::getInt() : #t5;
-    core::num* v5 = let final core::num* #t6 = super.{self::Base::numProp} in #t6 == null ?{core::num*} super.{self::Base::numProp} = self::getNum() : #t6;
-    core::num* v6 = let final core::num* #t7 = super.{self::Base::numProp} in #t7 == null ?{core::num*} super.{self::Base::numProp} = self::getDouble() : #t7;
-    core::num* v7 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-    core::num* v8 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-    core::num* v9 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-    core::num* v10 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(1){(core::num*) →* core::num*};
-    core::num* v11 = let final core::num* #t8 = super.{self::Base::numProp} in let final core::num* #t9 = super.{self::Base::numProp} = #t8.{core::num::+}(1){(core::num*) →* core::num*} in #t8;
+    core::num* v4 = let final core::num* #t5 = super.{self::Base::numProp} in #t5.{core::num::==}(null) ?{core::num*} super.{self::Base::numProp} = self::getInt() : #t5;
+    core::num* v5 = let final core::num* #t6 = super.{self::Base::numProp} in #t6.{core::num::==}(null) ?{core::num*} super.{self::Base::numProp} = self::getNum() : #t6;
+    core::num* v6 = let final core::num* #t7 = super.{self::Base::numProp} in #t7.{core::num::==}(null) ?{core::num*} super.{self::Base::numProp} = self::getDouble() : #t7;
+    core::num* v7 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getInt());
+    core::num* v8 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getNum());
+    core::num* v9 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getDouble());
+    core::num* v10 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(1);
+    core::num* v11 = let final core::num* #t8 = super.{self::Base::numProp} in let final core::num* #t9 = super.{self::Base::numProp} = #t8.{core::num::+}(1) in #t8;
   }
 }
 class Test3 extends self::Base {
@@ -60,13 +60,13 @@
   method test3() → void {
     core::num* v2 = super.{self::Base::doubleProp} = self::getNum() as{TypeError} core::double*;
     core::double* v3 = super.{self::Base::doubleProp} = self::getDouble();
-    core::num* v5 = let final core::double* #t10 = super.{self::Base::doubleProp} in #t10 == null ?{core::num*} super.{self::Base::doubleProp} = self::getNum() as{TypeError} core::double* : #t10;
-    core::double* v6 = let final core::double* #t11 = super.{self::Base::doubleProp} in #t11 == null ?{core::double*} super.{self::Base::doubleProp} = self::getDouble() : #t11;
-    core::double* v7 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-    core::double* v8 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-    core::double* v9 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-    core::double* v10 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(1){(core::num*) →* core::double*};
-    core::double* v11 = let final core::double* #t12 = super.{self::Base::doubleProp} in let final core::double* #t13 = super.{self::Base::doubleProp} = #t12.{core::double::+}(1){(core::num*) →* core::double*} in #t12;
+    core::num* v5 = let final core::double* #t10 = super.{self::Base::doubleProp} in #t10.{core::num::==}(null) ?{core::num*} super.{self::Base::doubleProp} = self::getNum() as{TypeError} core::double* : #t10;
+    core::double* v6 = let final core::double* #t11 = super.{self::Base::doubleProp} in #t11.{core::num::==}(null) ?{core::double*} super.{self::Base::doubleProp} = self::getDouble() : #t11;
+    core::double* v7 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getInt());
+    core::double* v8 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getNum());
+    core::double* v9 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getDouble());
+    core::double* v10 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(1);
+    core::double* v11 = let final core::double* #t12 = super.{self::Base::doubleProp} in let final core::double* #t13 = super.{self::Base::doubleProp} = #t12.{core::double::+}(1) in #t12;
   }
 }
 static method getInt() → core::int*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.weak.transformed.expect
index 4dec3f9..38215e0 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.weak.transformed.expect
@@ -27,12 +27,12 @@
   method test() → void {
     core::int* v1 = super.{self::Base::intProp} = self::getInt();
     core::num* v2 = super.{self::Base::intProp} = self::getNum() as{TypeError} core::int*;
-    core::int* v4 = let final core::int* #t1 = super.{self::Base::intProp} in #t1 == null ?{core::int*} super.{self::Base::intProp} = self::getInt() : #t1;
-    core::num* v5 = let final core::int* #t2 = super.{self::Base::intProp} in #t2 == null ?{core::num*} super.{self::Base::intProp} = self::getNum() as{TypeError} core::int* : #t2;
-    core::int* v7 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-    core::num* v8 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int*;
-    core::int* v10 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(1){(core::num*) →* core::int*};
-    core::int* v11 = let final core::int* #t3 = super.{self::Base::intProp} in let final core::int* #t4 = super.{self::Base::intProp} = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3;
+    core::int* v4 = let final core::int* #t1 = super.{self::Base::intProp} in #t1.{core::num::==}(null) ?{core::int*} super.{self::Base::intProp} = self::getInt() : #t1;
+    core::num* v5 = let final core::int* #t2 = super.{self::Base::intProp} in #t2.{core::num::==}(null) ?{core::num*} super.{self::Base::intProp} = self::getNum() as{TypeError} core::int* : #t2;
+    core::int* v7 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(self::getInt());
+    core::num* v8 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(self::getNum()) as{TypeError} core::int*;
+    core::int* v10 = super.{self::Base::intProp} = super.{self::Base::intProp}.{core::num::+}(1);
+    core::int* v11 = let final core::int* #t3 = super.{self::Base::intProp} in let final core::int* #t4 = super.{self::Base::intProp} = #t3.{core::num::+}(1) in #t3;
   }
 }
 class Test2 extends self::Base {
@@ -43,14 +43,14 @@
     core::int* v1 = super.{self::Base::numProp} = self::getInt();
     core::num* v2 = super.{self::Base::numProp} = self::getNum();
     core::double* v3 = super.{self::Base::numProp} = self::getDouble();
-    core::num* v4 = let final core::num* #t5 = super.{self::Base::numProp} in #t5 == null ?{core::num*} super.{self::Base::numProp} = self::getInt() : #t5;
-    core::num* v5 = let final core::num* #t6 = super.{self::Base::numProp} in #t6 == null ?{core::num*} super.{self::Base::numProp} = self::getNum() : #t6;
-    core::num* v6 = let final core::num* #t7 = super.{self::Base::numProp} in #t7 == null ?{core::num*} super.{self::Base::numProp} = self::getDouble() : #t7;
-    core::num* v7 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-    core::num* v8 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-    core::num* v9 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-    core::num* v10 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(1){(core::num*) →* core::num*};
-    core::num* v11 = let final core::num* #t8 = super.{self::Base::numProp} in let final core::num* #t9 = super.{self::Base::numProp} = #t8.{core::num::+}(1){(core::num*) →* core::num*} in #t8;
+    core::num* v4 = let final core::num* #t5 = super.{self::Base::numProp} in #t5.{core::num::==}(null) ?{core::num*} super.{self::Base::numProp} = self::getInt() : #t5;
+    core::num* v5 = let final core::num* #t6 = super.{self::Base::numProp} in #t6.{core::num::==}(null) ?{core::num*} super.{self::Base::numProp} = self::getNum() : #t6;
+    core::num* v6 = let final core::num* #t7 = super.{self::Base::numProp} in #t7.{core::num::==}(null) ?{core::num*} super.{self::Base::numProp} = self::getDouble() : #t7;
+    core::num* v7 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getInt());
+    core::num* v8 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getNum());
+    core::num* v9 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(self::getDouble());
+    core::num* v10 = super.{self::Base::numProp} = super.{self::Base::numProp}.{core::num::+}(1);
+    core::num* v11 = let final core::num* #t8 = super.{self::Base::numProp} in let final core::num* #t9 = super.{self::Base::numProp} = #t8.{core::num::+}(1) in #t8;
   }
 }
 class Test3 extends self::Base {
@@ -60,13 +60,13 @@
   method test3() → void {
     core::num* v2 = super.{self::Base::doubleProp} = self::getNum() as{TypeError} core::double*;
     core::double* v3 = super.{self::Base::doubleProp} = self::getDouble();
-    core::num* v5 = let final core::double* #t10 = super.{self::Base::doubleProp} in #t10 == null ?{core::num*} super.{self::Base::doubleProp} = self::getNum() as{TypeError} core::double* : #t10;
-    core::double* v6 = let final core::double* #t11 = super.{self::Base::doubleProp} in #t11 == null ?{core::double*} super.{self::Base::doubleProp} = self::getDouble() : #t11;
-    core::double* v7 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-    core::double* v8 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-    core::double* v9 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-    core::double* v10 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(1){(core::num*) →* core::double*};
-    core::double* v11 = let final core::double* #t12 = super.{self::Base::doubleProp} in let final core::double* #t13 = super.{self::Base::doubleProp} = #t12.{core::double::+}(1){(core::num*) →* core::double*} in #t12;
+    core::num* v5 = let final core::double* #t10 = super.{self::Base::doubleProp} in #t10.{core::num::==}(null) ?{core::num*} super.{self::Base::doubleProp} = self::getNum() as{TypeError} core::double* : #t10;
+    core::double* v6 = let final core::double* #t11 = super.{self::Base::doubleProp} in #t11.{core::num::==}(null) ?{core::double*} super.{self::Base::doubleProp} = self::getDouble() : #t11;
+    core::double* v7 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getInt());
+    core::double* v8 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getNum());
+    core::double* v9 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(self::getDouble());
+    core::double* v10 = super.{self::Base::doubleProp} = super.{self::Base::doubleProp}.{core::double::+}(1);
+    core::double* v11 = let final core::double* #t12 = super.{self::Base::doubleProp} in let final core::double* #t13 = super.{self::Base::doubleProp} = #t12.{core::double::+}(1) in #t12;
   }
 }
 static method getInt() → core::int*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.weak.expect
index f994d28..36077e1 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.weak.expect
@@ -10,12 +10,12 @@
   static method test(self::Test1* t) → void {
     core::int* v1 = t.{self::Test1::prop} = self::getInt();
     core::num* v2 = t.{self::Test1::prop} = self::getNum() as{TypeError} core::int*;
-    core::int* v4 = let final self::Test1* #t1 = t in let final core::int* #t2 = #t1.{self::Test1::prop}{core::int*} in #t2 == null ?{core::int*} #t1.{self::Test1::prop} = self::getInt() : #t2;
-    core::num* v5 = let final self::Test1* #t3 = t in let final core::int* #t4 = #t3.{self::Test1::prop}{core::int*} in #t4 == null ?{core::num*} #t3.{self::Test1::prop} = self::getNum() as{TypeError} core::int* : #t4;
-    core::int* v7 = let final self::Test1* #t5 = t in #t5.{self::Test1::prop} = #t5.{self::Test1::prop}{core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-    core::num* v8 = let final self::Test1* #t6 = t in #t6.{self::Test1::prop} = #t6.{self::Test1::prop}{core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int*;
-    core::int* v10 = let final self::Test1* #t7 = t in #t7.{self::Test1::prop} = #t7.{self::Test1::prop}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-    core::int* v11 = let final self::Test1* #t8 = t in let final core::int* #t9 = #t8.{self::Test1::prop}{core::int*} in let final core::int* #t10 = #t8.{self::Test1::prop} = #t9.{core::num::+}(1){(core::num*) →* core::int*} in #t9;
+    core::int* v4 = let final self::Test1* #t1 = t in let final core::int* #t2 = #t1.{self::Test1::prop} in #t2.{core::num::==}(null) ?{core::int*} #t1.{self::Test1::prop} = self::getInt() : #t2;
+    core::num* v5 = let final self::Test1* #t3 = t in let final core::int* #t4 = #t3.{self::Test1::prop} in #t4.{core::num::==}(null) ?{core::num*} #t3.{self::Test1::prop} = self::getNum() as{TypeError} core::int* : #t4;
+    core::int* v7 = let final self::Test1* #t5 = t in #t5.{self::Test1::prop} = #t5.{self::Test1::prop}.{core::num::+}(self::getInt());
+    core::num* v8 = let final self::Test1* #t6 = t in #t6.{self::Test1::prop} = #t6.{self::Test1::prop}.{core::num::+}(self::getNum()) as{TypeError} core::int*;
+    core::int* v10 = let final self::Test1* #t7 = t in #t7.{self::Test1::prop} = #t7.{self::Test1::prop}.{core::num::+}(1);
+    core::int* v11 = let final self::Test1* #t8 = t in let final core::int* #t9 = #t8.{self::Test1::prop} in let final core::int* #t10 = #t8.{self::Test1::prop} = #t9.{core::num::+}(1) in #t9;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -37,14 +37,14 @@
     core::int* v1 = t.{self::Test2::prop} = self::getInt();
     core::num* v2 = t.{self::Test2::prop} = self::getNum();
     core::double* v3 = t.{self::Test2::prop} = self::getDouble();
-    core::num* v4 = let final self::Test2* #t11 = t in let final core::num* #t12 = #t11.{self::Test2::prop}{core::num*} in #t12 == null ?{core::num*} #t11.{self::Test2::prop} = self::getInt() : #t12;
-    core::num* v5 = let final self::Test2* #t13 = t in let final core::num* #t14 = #t13.{self::Test2::prop}{core::num*} in #t14 == null ?{core::num*} #t13.{self::Test2::prop} = self::getNum() : #t14;
-    core::num* v6 = let final self::Test2* #t15 = t in let final core::num* #t16 = #t15.{self::Test2::prop}{core::num*} in #t16 == null ?{core::num*} #t15.{self::Test2::prop} = self::getDouble() : #t16;
-    core::num* v7 = let final self::Test2* #t17 = t in #t17.{self::Test2::prop} = #t17.{self::Test2::prop}{core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-    core::num* v8 = let final self::Test2* #t18 = t in #t18.{self::Test2::prop} = #t18.{self::Test2::prop}{core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-    core::num* v9 = let final self::Test2* #t19 = t in #t19.{self::Test2::prop} = #t19.{self::Test2::prop}{core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-    core::num* v10 = let final self::Test2* #t20 = t in #t20.{self::Test2::prop} = #t20.{self::Test2::prop}{core::num*}.{core::num::+}(1){(core::num*) →* core::num*};
-    core::num* v11 = let final self::Test2* #t21 = t in let final core::num* #t22 = #t21.{self::Test2::prop}{core::num*} in let final core::num* #t23 = #t21.{self::Test2::prop} = #t22.{core::num::+}(1){(core::num*) →* core::num*} in #t22;
+    core::num* v4 = let final self::Test2* #t11 = t in let final core::num* #t12 = #t11.{self::Test2::prop} in #t12.{core::num::==}(null) ?{core::num*} #t11.{self::Test2::prop} = self::getInt() : #t12;
+    core::num* v5 = let final self::Test2* #t13 = t in let final core::num* #t14 = #t13.{self::Test2::prop} in #t14.{core::num::==}(null) ?{core::num*} #t13.{self::Test2::prop} = self::getNum() : #t14;
+    core::num* v6 = let final self::Test2* #t15 = t in let final core::num* #t16 = #t15.{self::Test2::prop} in #t16.{core::num::==}(null) ?{core::num*} #t15.{self::Test2::prop} = self::getDouble() : #t16;
+    core::num* v7 = let final self::Test2* #t17 = t in #t17.{self::Test2::prop} = #t17.{self::Test2::prop}.{core::num::+}(self::getInt());
+    core::num* v8 = let final self::Test2* #t18 = t in #t18.{self::Test2::prop} = #t18.{self::Test2::prop}.{core::num::+}(self::getNum());
+    core::num* v9 = let final self::Test2* #t19 = t in #t19.{self::Test2::prop} = #t19.{self::Test2::prop}.{core::num::+}(self::getDouble());
+    core::num* v10 = let final self::Test2* #t20 = t in #t20.{self::Test2::prop} = #t20.{self::Test2::prop}.{core::num::+}(1);
+    core::num* v11 = let final self::Test2* #t21 = t in let final core::num* #t22 = #t21.{self::Test2::prop} in let final core::num* #t23 = #t21.{self::Test2::prop} = #t22.{core::num::+}(1) in #t22;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -65,13 +65,13 @@
   static method test3(self::Test3* t) → void {
     core::num* v2 = t.{self::Test3::prop} = self::getNum() as{TypeError} core::double*;
     core::double* v3 = t.{self::Test3::prop} = self::getDouble();
-    core::num* v5 = let final self::Test3* #t24 = t in let final core::double* #t25 = #t24.{self::Test3::prop}{core::double*} in #t25 == null ?{core::num*} #t24.{self::Test3::prop} = self::getNum() as{TypeError} core::double* : #t25;
-    core::double* v6 = let final self::Test3* #t26 = t in let final core::double* #t27 = #t26.{self::Test3::prop}{core::double*} in #t27 == null ?{core::double*} #t26.{self::Test3::prop} = self::getDouble() : #t27;
-    core::double* v7 = let final self::Test3* #t28 = t in #t28.{self::Test3::prop} = #t28.{self::Test3::prop}{core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-    core::double* v8 = let final self::Test3* #t29 = t in #t29.{self::Test3::prop} = #t29.{self::Test3::prop}{core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-    core::double* v9 = let final self::Test3* #t30 = t in #t30.{self::Test3::prop} = #t30.{self::Test3::prop}{core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-    core::double* v10 = let final self::Test3* #t31 = t in #t31.{self::Test3::prop} = #t31.{self::Test3::prop}{core::double*}.{core::double::+}(1){(core::num*) →* core::double*};
-    core::double* v11 = let final self::Test3* #t32 = t in let final core::double* #t33 = #t32.{self::Test3::prop}{core::double*} in let final core::double* #t34 = #t32.{self::Test3::prop} = #t33.{core::double::+}(1){(core::num*) →* core::double*} in #t33;
+    core::num* v5 = let final self::Test3* #t24 = t in let final core::double* #t25 = #t24.{self::Test3::prop} in #t25.{core::num::==}(null) ?{core::num*} #t24.{self::Test3::prop} = self::getNum() as{TypeError} core::double* : #t25;
+    core::double* v6 = let final self::Test3* #t26 = t in let final core::double* #t27 = #t26.{self::Test3::prop} in #t27.{core::num::==}(null) ?{core::double*} #t26.{self::Test3::prop} = self::getDouble() : #t27;
+    core::double* v7 = let final self::Test3* #t28 = t in #t28.{self::Test3::prop} = #t28.{self::Test3::prop}.{core::double::+}(self::getInt());
+    core::double* v8 = let final self::Test3* #t29 = t in #t29.{self::Test3::prop} = #t29.{self::Test3::prop}.{core::double::+}(self::getNum());
+    core::double* v9 = let final self::Test3* #t30 = t in #t30.{self::Test3::prop} = #t30.{self::Test3::prop}.{core::double::+}(self::getDouble());
+    core::double* v10 = let final self::Test3* #t31 = t in #t31.{self::Test3::prop} = #t31.{self::Test3::prop}.{core::double::+}(1);
+    core::double* v11 = let final self::Test3* #t32 = t in let final core::double* #t33 = #t32.{self::Test3::prop} in let final core::double* #t34 = #t32.{self::Test3::prop} = #t33.{core::double::+}(1) in #t33;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.weak.transformed.expect
index f994d28..36077e1 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.weak.transformed.expect
@@ -10,12 +10,12 @@
   static method test(self::Test1* t) → void {
     core::int* v1 = t.{self::Test1::prop} = self::getInt();
     core::num* v2 = t.{self::Test1::prop} = self::getNum() as{TypeError} core::int*;
-    core::int* v4 = let final self::Test1* #t1 = t in let final core::int* #t2 = #t1.{self::Test1::prop}{core::int*} in #t2 == null ?{core::int*} #t1.{self::Test1::prop} = self::getInt() : #t2;
-    core::num* v5 = let final self::Test1* #t3 = t in let final core::int* #t4 = #t3.{self::Test1::prop}{core::int*} in #t4 == null ?{core::num*} #t3.{self::Test1::prop} = self::getNum() as{TypeError} core::int* : #t4;
-    core::int* v7 = let final self::Test1* #t5 = t in #t5.{self::Test1::prop} = #t5.{self::Test1::prop}{core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-    core::num* v8 = let final self::Test1* #t6 = t in #t6.{self::Test1::prop} = #t6.{self::Test1::prop}{core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int*;
-    core::int* v10 = let final self::Test1* #t7 = t in #t7.{self::Test1::prop} = #t7.{self::Test1::prop}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
-    core::int* v11 = let final self::Test1* #t8 = t in let final core::int* #t9 = #t8.{self::Test1::prop}{core::int*} in let final core::int* #t10 = #t8.{self::Test1::prop} = #t9.{core::num::+}(1){(core::num*) →* core::int*} in #t9;
+    core::int* v4 = let final self::Test1* #t1 = t in let final core::int* #t2 = #t1.{self::Test1::prop} in #t2.{core::num::==}(null) ?{core::int*} #t1.{self::Test1::prop} = self::getInt() : #t2;
+    core::num* v5 = let final self::Test1* #t3 = t in let final core::int* #t4 = #t3.{self::Test1::prop} in #t4.{core::num::==}(null) ?{core::num*} #t3.{self::Test1::prop} = self::getNum() as{TypeError} core::int* : #t4;
+    core::int* v7 = let final self::Test1* #t5 = t in #t5.{self::Test1::prop} = #t5.{self::Test1::prop}.{core::num::+}(self::getInt());
+    core::num* v8 = let final self::Test1* #t6 = t in #t6.{self::Test1::prop} = #t6.{self::Test1::prop}.{core::num::+}(self::getNum()) as{TypeError} core::int*;
+    core::int* v10 = let final self::Test1* #t7 = t in #t7.{self::Test1::prop} = #t7.{self::Test1::prop}.{core::num::+}(1);
+    core::int* v11 = let final self::Test1* #t8 = t in let final core::int* #t9 = #t8.{self::Test1::prop} in let final core::int* #t10 = #t8.{self::Test1::prop} = #t9.{core::num::+}(1) in #t9;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -37,14 +37,14 @@
     core::int* v1 = t.{self::Test2::prop} = self::getInt();
     core::num* v2 = t.{self::Test2::prop} = self::getNum();
     core::double* v3 = t.{self::Test2::prop} = self::getDouble();
-    core::num* v4 = let final self::Test2* #t11 = t in let final core::num* #t12 = #t11.{self::Test2::prop}{core::num*} in #t12 == null ?{core::num*} #t11.{self::Test2::prop} = self::getInt() : #t12;
-    core::num* v5 = let final self::Test2* #t13 = t in let final core::num* #t14 = #t13.{self::Test2::prop}{core::num*} in #t14 == null ?{core::num*} #t13.{self::Test2::prop} = self::getNum() : #t14;
-    core::num* v6 = let final self::Test2* #t15 = t in let final core::num* #t16 = #t15.{self::Test2::prop}{core::num*} in #t16 == null ?{core::num*} #t15.{self::Test2::prop} = self::getDouble() : #t16;
-    core::num* v7 = let final self::Test2* #t17 = t in #t17.{self::Test2::prop} = #t17.{self::Test2::prop}{core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-    core::num* v8 = let final self::Test2* #t18 = t in #t18.{self::Test2::prop} = #t18.{self::Test2::prop}{core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-    core::num* v9 = let final self::Test2* #t19 = t in #t19.{self::Test2::prop} = #t19.{self::Test2::prop}{core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-    core::num* v10 = let final self::Test2* #t20 = t in #t20.{self::Test2::prop} = #t20.{self::Test2::prop}{core::num*}.{core::num::+}(1){(core::num*) →* core::num*};
-    core::num* v11 = let final self::Test2* #t21 = t in let final core::num* #t22 = #t21.{self::Test2::prop}{core::num*} in let final core::num* #t23 = #t21.{self::Test2::prop} = #t22.{core::num::+}(1){(core::num*) →* core::num*} in #t22;
+    core::num* v4 = let final self::Test2* #t11 = t in let final core::num* #t12 = #t11.{self::Test2::prop} in #t12.{core::num::==}(null) ?{core::num*} #t11.{self::Test2::prop} = self::getInt() : #t12;
+    core::num* v5 = let final self::Test2* #t13 = t in let final core::num* #t14 = #t13.{self::Test2::prop} in #t14.{core::num::==}(null) ?{core::num*} #t13.{self::Test2::prop} = self::getNum() : #t14;
+    core::num* v6 = let final self::Test2* #t15 = t in let final core::num* #t16 = #t15.{self::Test2::prop} in #t16.{core::num::==}(null) ?{core::num*} #t15.{self::Test2::prop} = self::getDouble() : #t16;
+    core::num* v7 = let final self::Test2* #t17 = t in #t17.{self::Test2::prop} = #t17.{self::Test2::prop}.{core::num::+}(self::getInt());
+    core::num* v8 = let final self::Test2* #t18 = t in #t18.{self::Test2::prop} = #t18.{self::Test2::prop}.{core::num::+}(self::getNum());
+    core::num* v9 = let final self::Test2* #t19 = t in #t19.{self::Test2::prop} = #t19.{self::Test2::prop}.{core::num::+}(self::getDouble());
+    core::num* v10 = let final self::Test2* #t20 = t in #t20.{self::Test2::prop} = #t20.{self::Test2::prop}.{core::num::+}(1);
+    core::num* v11 = let final self::Test2* #t21 = t in let final core::num* #t22 = #t21.{self::Test2::prop} in let final core::num* #t23 = #t21.{self::Test2::prop} = #t22.{core::num::+}(1) in #t22;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -65,13 +65,13 @@
   static method test3(self::Test3* t) → void {
     core::num* v2 = t.{self::Test3::prop} = self::getNum() as{TypeError} core::double*;
     core::double* v3 = t.{self::Test3::prop} = self::getDouble();
-    core::num* v5 = let final self::Test3* #t24 = t in let final core::double* #t25 = #t24.{self::Test3::prop}{core::double*} in #t25 == null ?{core::num*} #t24.{self::Test3::prop} = self::getNum() as{TypeError} core::double* : #t25;
-    core::double* v6 = let final self::Test3* #t26 = t in let final core::double* #t27 = #t26.{self::Test3::prop}{core::double*} in #t27 == null ?{core::double*} #t26.{self::Test3::prop} = self::getDouble() : #t27;
-    core::double* v7 = let final self::Test3* #t28 = t in #t28.{self::Test3::prop} = #t28.{self::Test3::prop}{core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-    core::double* v8 = let final self::Test3* #t29 = t in #t29.{self::Test3::prop} = #t29.{self::Test3::prop}{core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-    core::double* v9 = let final self::Test3* #t30 = t in #t30.{self::Test3::prop} = #t30.{self::Test3::prop}{core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-    core::double* v10 = let final self::Test3* #t31 = t in #t31.{self::Test3::prop} = #t31.{self::Test3::prop}{core::double*}.{core::double::+}(1){(core::num*) →* core::double*};
-    core::double* v11 = let final self::Test3* #t32 = t in let final core::double* #t33 = #t32.{self::Test3::prop}{core::double*} in let final core::double* #t34 = #t32.{self::Test3::prop} = #t33.{core::double::+}(1){(core::num*) →* core::double*} in #t33;
+    core::num* v5 = let final self::Test3* #t24 = t in let final core::double* #t25 = #t24.{self::Test3::prop} in #t25.{core::num::==}(null) ?{core::num*} #t24.{self::Test3::prop} = self::getNum() as{TypeError} core::double* : #t25;
+    core::double* v6 = let final self::Test3* #t26 = t in let final core::double* #t27 = #t26.{self::Test3::prop} in #t27.{core::num::==}(null) ?{core::double*} #t26.{self::Test3::prop} = self::getDouble() : #t27;
+    core::double* v7 = let final self::Test3* #t28 = t in #t28.{self::Test3::prop} = #t28.{self::Test3::prop}.{core::double::+}(self::getInt());
+    core::double* v8 = let final self::Test3* #t29 = t in #t29.{self::Test3::prop} = #t29.{self::Test3::prop}.{core::double::+}(self::getNum());
+    core::double* v9 = let final self::Test3* #t30 = t in #t30.{self::Test3::prop} = #t30.{self::Test3::prop}.{core::double::+}(self::getDouble());
+    core::double* v10 = let final self::Test3* #t31 = t in #t31.{self::Test3::prop} = #t31.{self::Test3::prop}.{core::double::+}(1);
+    core::double* v11 = let final self::Test3* #t32 = t in let final core::double* #t33 = #t32.{self::Test3::prop} in let final core::double* #t34 = #t32.{self::Test3::prop} = #t33.{core::double::+}(1) in #t33;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.weak.expect
index 090413f..cd7e710 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.weak.expect
@@ -41,34 +41,34 @@
   return null;
 static method test_topLevelVariable() → void {
   self::topLevelVariable = self::f<self::B*>();
-  self::topLevelVariable == null ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
-  self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1){(core::int*) →* self::B*};
+  self::topLevelVariable.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
+  self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
+  self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
+  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
+  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
   self::B* v1 = self::topLevelVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1 == null ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
-  self::A* v3 = self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B* v4 = self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::C* v5 = self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B* v6 = self::topLevelVariable = self::topLevelVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B* v7 = let final self::B* #t2 = self::topLevelVariable in let final self::B* #t3 = self::topLevelVariable = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
+  self::A* v3 = self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B* v4 = self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
+  self::C* v5 = self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
+  self::B* v6 = self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
+  self::B* v7 = let final self::B* #t2 = self::topLevelVariable in let final self::B* #t3 = self::topLevelVariable = #t2.{self::B::-}(1) in #t2;
 }
 static method test_staticVariable() → void {
   self::B::staticVariable = self::f<self::B*>();
-  self::B::staticVariable == null ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
-  self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1){(core::int*) →* self::B*};
+  self::B::staticVariable.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
+  self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
+  self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
+  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
+  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
   self::B* v1 = self::B::staticVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4 == null ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
-  self::A* v3 = self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B* v4 = self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::C* v5 = self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B* v6 = self::B::staticVariable = self::B::staticVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B* v7 = let final self::B* #t5 = self::B::staticVariable in let final self::B* #t6 = self::B::staticVariable = #t5.{self::B::-}(1){(core::int*) →* self::B*} in #t5;
+  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
+  self::A* v3 = self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B* v4 = self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
+  self::C* v5 = self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
+  self::B* v6 = self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
+  self::B* v7 = let final self::B* #t5 = self::B::staticVariable in let final self::B* #t6 = self::B::staticVariable = #t5.{self::B::-}(1) in #t5;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.weak.transformed.expect
index 090413f..cd7e710 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.weak.transformed.expect
@@ -41,34 +41,34 @@
   return null;
 static method test_topLevelVariable() → void {
   self::topLevelVariable = self::f<self::B*>();
-  self::topLevelVariable == null ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
-  self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1){(core::int*) →* self::B*};
+  self::topLevelVariable.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
+  self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
+  self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
+  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
+  self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
   self::B* v1 = self::topLevelVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1 == null ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
-  self::A* v3 = self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B* v4 = self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::C* v5 = self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B* v6 = self::topLevelVariable = self::topLevelVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B* v7 = let final self::B* #t2 = self::topLevelVariable in let final self::B* #t3 = self::topLevelVariable = #t2.{self::B::-}(1){(core::int*) →* self::B*} in #t2;
+  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
+  self::A* v3 = self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B* v4 = self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
+  self::C* v5 = self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
+  self::B* v6 = self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
+  self::B* v7 = let final self::B* #t2 = self::topLevelVariable in let final self::B* #t3 = self::topLevelVariable = #t2.{self::B::-}(1) in #t2;
 }
 static method test_staticVariable() → void {
   self::B::staticVariable = self::f<self::B*>();
-  self::B::staticVariable == null ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
-  self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1){(core::int*) →* self::B*};
+  self::B::staticVariable.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
+  self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
+  self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
+  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
+  self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
   self::B* v1 = self::B::staticVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4 == null ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
-  self::A* v3 = self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()){(self::C*) →* self::A*} as{TypeError} self::B*;
-  self::B* v4 = self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>()){(self::B*) →* self::B*};
-  self::C* v5 = self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>()){(self::A*) →* self::C*};
-  self::B* v6 = self::B::staticVariable = self::B::staticVariable.{self::B::-}(1){(core::int*) →* self::B*};
-  self::B* v7 = let final self::B* #t5 = self::B::staticVariable in let final self::B* #t6 = self::B::staticVariable = #t5.{self::B::-}(1){(core::int*) →* self::B*} in #t5;
+  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
+  self::A* v3 = self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+  self::B* v4 = self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
+  self::C* v5 = self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
+  self::B* v6 = self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
+  self::B* v7 = let final self::B* #t5 = self::B::staticVariable in let final self::B* #t6 = self::B::staticVariable = #t5.{self::B::-}(1) in #t5;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_static_upwards.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_static_upwards.dart.weak.expect
index ae43fd0..b9a69ea 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_static_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_static_upwards.dart.weak.expect
@@ -14,35 +14,35 @@
 static method test1() → void {
   core::int* v1 = self::topLevelInt = self::getInt();
   core::num* v2 = self::topLevelInt = self::getNum() as{TypeError} core::int*;
-  core::int* v4 = let final core::int* #t1 = self::topLevelInt in #t1 == null ?{core::int*} self::topLevelInt = self::getInt() : #t1;
-  core::num* v5 = let final core::int* #t2 = self::topLevelInt in #t2 == null ?{core::num*} self::topLevelInt = self::getNum() as{TypeError} core::int* : #t2;
-  core::int* v7 = self::topLevelInt = self::topLevelInt.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-  core::num* v8 = self::topLevelInt = self::topLevelInt.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int*;
-  core::int* v10 = self::topLevelInt = self::topLevelInt.{core::num::+}(1){(core::num*) →* core::int*};
-  core::int* v11 = let final core::int* #t3 = self::topLevelInt in let final core::int* #t4 = self::topLevelInt = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3;
+  core::int* v4 = let final core::int* #t1 = self::topLevelInt in #t1.{core::num::==}(null) ?{core::int*} self::topLevelInt = self::getInt() : #t1;
+  core::num* v5 = let final core::int* #t2 = self::topLevelInt in #t2.{core::num::==}(null) ?{core::num*} self::topLevelInt = self::getNum() as{TypeError} core::int* : #t2;
+  core::int* v7 = self::topLevelInt = self::topLevelInt.{core::num::+}(self::getInt());
+  core::num* v8 = self::topLevelInt = self::topLevelInt.{core::num::+}(self::getNum()) as{TypeError} core::int*;
+  core::int* v10 = self::topLevelInt = self::topLevelInt.{core::num::+}(1);
+  core::int* v11 = let final core::int* #t3 = self::topLevelInt in let final core::int* #t4 = self::topLevelInt = #t3.{core::num::+}(1) in #t3;
 }
 static method test2() → void {
   core::int* v1 = self::topLevelNum = self::getInt();
   core::num* v2 = self::topLevelNum = self::getNum();
   core::double* v3 = self::topLevelNum = self::getDouble();
-  core::num* v4 = let final core::num* #t5 = self::topLevelNum in #t5 == null ?{core::num*} self::topLevelNum = self::getInt() : #t5;
-  core::num* v5 = let final core::num* #t6 = self::topLevelNum in #t6 == null ?{core::num*} self::topLevelNum = self::getNum() : #t6;
-  core::num* v6 = let final core::num* #t7 = self::topLevelNum in #t7 == null ?{core::num*} self::topLevelNum = self::getDouble() : #t7;
-  core::num* v7 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-  core::num* v8 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-  core::num* v9 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-  core::num* v10 = self::topLevelNum = self::topLevelNum.{core::num::+}(1){(core::num*) →* core::num*};
-  core::num* v11 = let final core::num* #t8 = self::topLevelNum in let final core::num* #t9 = self::topLevelNum = #t8.{core::num::+}(1){(core::num*) →* core::num*} in #t8;
+  core::num* v4 = let final core::num* #t5 = self::topLevelNum in #t5.{core::num::==}(null) ?{core::num*} self::topLevelNum = self::getInt() : #t5;
+  core::num* v5 = let final core::num* #t6 = self::topLevelNum in #t6.{core::num::==}(null) ?{core::num*} self::topLevelNum = self::getNum() : #t6;
+  core::num* v6 = let final core::num* #t7 = self::topLevelNum in #t7.{core::num::==}(null) ?{core::num*} self::topLevelNum = self::getDouble() : #t7;
+  core::num* v7 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getInt());
+  core::num* v8 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getNum());
+  core::num* v9 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getDouble());
+  core::num* v10 = self::topLevelNum = self::topLevelNum.{core::num::+}(1);
+  core::num* v11 = let final core::num* #t8 = self::topLevelNum in let final core::num* #t9 = self::topLevelNum = #t8.{core::num::+}(1) in #t8;
 }
 static method test3() → void {
   core::num* v2 = self::topLevelDouble = self::getNum() as{TypeError} core::double*;
   core::double* v3 = self::topLevelDouble = self::getDouble();
-  core::num* v5 = let final core::double* #t10 = self::topLevelDouble in #t10 == null ?{core::num*} self::topLevelDouble = self::getNum() as{TypeError} core::double* : #t10;
-  core::double* v6 = let final core::double* #t11 = self::topLevelDouble in #t11 == null ?{core::double*} self::topLevelDouble = self::getDouble() : #t11;
-  core::double* v7 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-  core::double* v8 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-  core::double* v9 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-  core::double* v10 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(1){(core::num*) →* core::double*};
-  core::double* v11 = let final core::double* #t12 = self::topLevelDouble in let final core::double* #t13 = self::topLevelDouble = #t12.{core::double::+}(1){(core::num*) →* core::double*} in #t12;
+  core::num* v5 = let final core::double* #t10 = self::topLevelDouble in #t10.{core::num::==}(null) ?{core::num*} self::topLevelDouble = self::getNum() as{TypeError} core::double* : #t10;
+  core::double* v6 = let final core::double* #t11 = self::topLevelDouble in #t11.{core::num::==}(null) ?{core::double*} self::topLevelDouble = self::getDouble() : #t11;
+  core::double* v7 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getInt());
+  core::double* v8 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getNum());
+  core::double* v9 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getDouble());
+  core::double* v10 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(1);
+  core::double* v11 = let final core::double* #t12 = self::topLevelDouble in let final core::double* #t13 = self::topLevelDouble = #t12.{core::double::+}(1) in #t12;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_static_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_static_upwards.dart.weak.transformed.expect
index ae43fd0..b9a69ea 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_static_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_static_upwards.dart.weak.transformed.expect
@@ -14,35 +14,35 @@
 static method test1() → void {
   core::int* v1 = self::topLevelInt = self::getInt();
   core::num* v2 = self::topLevelInt = self::getNum() as{TypeError} core::int*;
-  core::int* v4 = let final core::int* #t1 = self::topLevelInt in #t1 == null ?{core::int*} self::topLevelInt = self::getInt() : #t1;
-  core::num* v5 = let final core::int* #t2 = self::topLevelInt in #t2 == null ?{core::num*} self::topLevelInt = self::getNum() as{TypeError} core::int* : #t2;
-  core::int* v7 = self::topLevelInt = self::topLevelInt.{core::num::+}(self::getInt()){(core::num*) →* core::int*};
-  core::num* v8 = self::topLevelInt = self::topLevelInt.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int*;
-  core::int* v10 = self::topLevelInt = self::topLevelInt.{core::num::+}(1){(core::num*) →* core::int*};
-  core::int* v11 = let final core::int* #t3 = self::topLevelInt in let final core::int* #t4 = self::topLevelInt = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3;
+  core::int* v4 = let final core::int* #t1 = self::topLevelInt in #t1.{core::num::==}(null) ?{core::int*} self::topLevelInt = self::getInt() : #t1;
+  core::num* v5 = let final core::int* #t2 = self::topLevelInt in #t2.{core::num::==}(null) ?{core::num*} self::topLevelInt = self::getNum() as{TypeError} core::int* : #t2;
+  core::int* v7 = self::topLevelInt = self::topLevelInt.{core::num::+}(self::getInt());
+  core::num* v8 = self::topLevelInt = self::topLevelInt.{core::num::+}(self::getNum()) as{TypeError} core::int*;
+  core::int* v10 = self::topLevelInt = self::topLevelInt.{core::num::+}(1);
+  core::int* v11 = let final core::int* #t3 = self::topLevelInt in let final core::int* #t4 = self::topLevelInt = #t3.{core::num::+}(1) in #t3;
 }
 static method test2() → void {
   core::int* v1 = self::topLevelNum = self::getInt();
   core::num* v2 = self::topLevelNum = self::getNum();
   core::double* v3 = self::topLevelNum = self::getDouble();
-  core::num* v4 = let final core::num* #t5 = self::topLevelNum in #t5 == null ?{core::num*} self::topLevelNum = self::getInt() : #t5;
-  core::num* v5 = let final core::num* #t6 = self::topLevelNum in #t6 == null ?{core::num*} self::topLevelNum = self::getNum() : #t6;
-  core::num* v6 = let final core::num* #t7 = self::topLevelNum in #t7 == null ?{core::num*} self::topLevelNum = self::getDouble() : #t7;
-  core::num* v7 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getInt()){(core::num*) →* core::num*};
-  core::num* v8 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getNum()){(core::num*) →* core::num*};
-  core::num* v9 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getDouble()){(core::num*) →* core::num*};
-  core::num* v10 = self::topLevelNum = self::topLevelNum.{core::num::+}(1){(core::num*) →* core::num*};
-  core::num* v11 = let final core::num* #t8 = self::topLevelNum in let final core::num* #t9 = self::topLevelNum = #t8.{core::num::+}(1){(core::num*) →* core::num*} in #t8;
+  core::num* v4 = let final core::num* #t5 = self::topLevelNum in #t5.{core::num::==}(null) ?{core::num*} self::topLevelNum = self::getInt() : #t5;
+  core::num* v5 = let final core::num* #t6 = self::topLevelNum in #t6.{core::num::==}(null) ?{core::num*} self::topLevelNum = self::getNum() : #t6;
+  core::num* v6 = let final core::num* #t7 = self::topLevelNum in #t7.{core::num::==}(null) ?{core::num*} self::topLevelNum = self::getDouble() : #t7;
+  core::num* v7 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getInt());
+  core::num* v8 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getNum());
+  core::num* v9 = self::topLevelNum = self::topLevelNum.{core::num::+}(self::getDouble());
+  core::num* v10 = self::topLevelNum = self::topLevelNum.{core::num::+}(1);
+  core::num* v11 = let final core::num* #t8 = self::topLevelNum in let final core::num* #t9 = self::topLevelNum = #t8.{core::num::+}(1) in #t8;
 }
 static method test3() → void {
   core::num* v2 = self::topLevelDouble = self::getNum() as{TypeError} core::double*;
   core::double* v3 = self::topLevelDouble = self::getDouble();
-  core::num* v5 = let final core::double* #t10 = self::topLevelDouble in #t10 == null ?{core::num*} self::topLevelDouble = self::getNum() as{TypeError} core::double* : #t10;
-  core::double* v6 = let final core::double* #t11 = self::topLevelDouble in #t11 == null ?{core::double*} self::topLevelDouble = self::getDouble() : #t11;
-  core::double* v7 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getInt()){(core::num*) →* core::double*};
-  core::double* v8 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getNum()){(core::num*) →* core::double*};
-  core::double* v9 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getDouble()){(core::num*) →* core::double*};
-  core::double* v10 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(1){(core::num*) →* core::double*};
-  core::double* v11 = let final core::double* #t12 = self::topLevelDouble in let final core::double* #t13 = self::topLevelDouble = #t12.{core::double::+}(1){(core::num*) →* core::double*} in #t12;
+  core::num* v5 = let final core::double* #t10 = self::topLevelDouble in #t10.{core::num::==}(null) ?{core::num*} self::topLevelDouble = self::getNum() as{TypeError} core::double* : #t10;
+  core::double* v6 = let final core::double* #t11 = self::topLevelDouble in #t11.{core::num::==}(null) ?{core::double*} self::topLevelDouble = self::getDouble() : #t11;
+  core::double* v7 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getInt());
+  core::double* v8 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getNum());
+  core::double* v9 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(self::getDouble());
+  core::double* v10 = self::topLevelDouble = self::topLevelDouble.{core::double::+}(1);
+  core::double* v11 = let final core::double* #t12 = self::topLevelDouble in let final core::double* #t13 = self::topLevelDouble = #t12.{core::double::+}(1) in #t12;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.weak.expect
index 7934529..7527873 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.weak.expect
@@ -57,6 +57,6 @@
     ;
 }
 static field self::A* a = new self::A::•();
-static field self::C* x = self::a.{self::A::b}{self::B*}.{self::B::c}{self::C*};
-static field self::C* y = let final self::B* #t1 = self::a.{self::A::b}{self::B*} in let final self::C* #t2 = #t1.{self::B::c}{self::C*} in #t2 == null ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
+static field self::C* x = self::a.{self::A::b}.{self::B::c};
+static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{self::C::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.weak.transformed.expect
index 7934529..7527873 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.weak.transformed.expect
@@ -57,6 +57,6 @@
     ;
 }
 static field self::A* a = new self::A::•();
-static field self::C* x = self::a.{self::A::b}{self::B*}.{self::B::c}{self::C*};
-static field self::C* y = let final self::B* #t1 = self::a.{self::A::b}{self::B*} in let final self::C* #t2 = #t1.{self::B::c}{self::C*} in #t2 == null ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
+static field self::C* x = self::a.{self::A::b}.{self::B::c};
+static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{self::C::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.weak.expect
index 07d3dfd..05c93c1 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.weak.expect
@@ -55,6 +55,6 @@
     ;
 }
 static field self::A* a = new self::A::•();
-static field self::C* x = self::a.{self::A::b}{self::B*}.{self::B::c}{self::C*};
-static field self::C* y = let final self::B* #t1 = self::a.{self::A::b}{self::B*} in let final self::C* #t2 = #t1.{self::B::c}{self::C*} in #t2 == null ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
+static field self::C* x = self::a.{self::A::b}.{self::B::c};
+static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{self::C::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.weak.transformed.expect
index 07d3dfd..05c93c1 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.weak.transformed.expect
@@ -55,6 +55,6 @@
     ;
 }
 static field self::A* a = new self::A::•();
-static field self::C* x = self::a.{self::A::b}{self::B*}.{self::B::c}{self::C*};
-static field self::C* y = let final self::B* #t1 = self::a.{self::A::b}{self::B*} in let final self::C* #t2 = #t1.{self::B::c}{self::C*} in #t2 == null ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
+static field self::C* x = self::a.{self::A::b}.{self::B::c};
+static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{self::C::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.weak.expect
index 21df0fc..a842dc0 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.weak.expect
@@ -28,6 +28,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::A* a = new self::A::•();
-static field () →* invalid-type x = () → invalid-type => self::a.{self::A::b}{invalid-type};
-static field () →* () →* () →* invalid-type y = () → () →* () →* invalid-type => self::a.{self::A::c}{() →* () →* invalid-type};
+static field () →* invalid-type x = () → invalid-type => self::a.{self::A::b};
+static field () →* () →* () →* invalid-type y = () → () →* () →* invalid-type => self::a.{self::A::c};
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.weak.transformed.expect
index 21df0fc..a842dc0 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.weak.transformed.expect
@@ -28,6 +28,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::A* a = new self::A::•();
-static field () →* invalid-type x = () → invalid-type => self::a.{self::A::b}{invalid-type};
-static field () →* () →* () →* invalid-type y = () → () →* () →* invalid-type => self::a.{self::A::c}{() →* () →* invalid-type};
+static field () →* invalid-type x = () → invalid-type => self::a.{self::A::b};
+static field () →* () →* () →* invalid-type y = () → () →* () →* invalid-type => self::a.{self::A::c};
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.weak.expect b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.weak.expect
index 18cf625..08191b9 100644
--- a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.weak.expect
@@ -24,7 +24,7 @@
     ;
   method f() → void {}
 }
-static field void x = new self::C::•().{self::C::f}(){() →* void};
+static field void x = new self::C::•().{self::C::f}();
 static method main() → dynamic {
   self::x;
 }
diff --git a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.weak.transformed.expect
index 18cf625..08191b9 100644
--- a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
     ;
   method f() → void {}
 }
-static field void x = new self::C::•().{self::C::f}(){() →* void};
+static field void x = new self::C::•().{self::C::f}();
 static method main() → dynamic {
   self::x;
 }
diff --git a/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.weak.expect b/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.weak.expect
index 35f8118..fa1ffe6 100644
--- a/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.weak.expect
@@ -78,10 +78,10 @@
   method f(core::Object* o) → void {}
 }
 static method g1(self::C* c) → void {
-  c.{self::C::f}("hi"){(core::Object*) →* void};
+  c.{self::C::f}("hi");
 }
 static method g2(self::E* e) → void {
-  e.{self::I2::f}("hi"){(core::Object*) →* void};
+  e.{self::I2::f}("hi");
 }
 static method main() → dynamic {
   self::g1(new self::D::•());
diff --git a/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.weak.transformed.expect
index 35f8118..fa1ffe6 100644
--- a/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.weak.transformed.expect
@@ -78,10 +78,10 @@
   method f(core::Object* o) → void {}
 }
 static method g1(self::C* c) → void {
-  c.{self::C::f}("hi"){(core::Object*) →* void};
+  c.{self::C::f}("hi");
 }
 static method g2(self::E* e) → void {
-  e.{self::I2::f}("hi"){(core::Object*) →* void};
+  e.{self::I2::f}("hi");
 }
 static method main() → dynamic {
   self::g1(new self::D::•());
diff --git a/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.weak.expect b/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.weak.expect
index fa63c03..0683b1f 100644
--- a/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.weak.expect
@@ -21,5 +21,5 @@
 }
 static method main() → dynamic {
   self::Class* c;
-  () →* core::num* f = let final self::Class* #t1 = c in #t1 == null ?{() →* core::num*} null : #t1.{self::Class::method}{<T extends core::Object* = dynamic>() →* T*}<core::num*>;
+  () →* core::num* f = let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{() →* core::num*} null : #t1.{self::Class::method}<core::num*>;
 }
diff --git a/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.weak.transformed.expect
index fa63c03..0683b1f 100644
--- a/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.weak.transformed.expect
@@ -21,5 +21,5 @@
 }
 static method main() → dynamic {
   self::Class* c;
-  () →* core::num* f = let final self::Class* #t1 = c in #t1 == null ?{() →* core::num*} null : #t1.{self::Class::method}{<T extends core::Object* = dynamic>() →* T*}<core::num*>;
+  () →* core::num* f = let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{() →* core::num*} null : #t1.{self::Class::method}<core::num*>;
 }
diff --git a/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.weak.expect b/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.weak.expect
index facdace..b551bed 100644
--- a/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.weak.expect
@@ -123,15 +123,15 @@
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
 static method test1(self::G* g) → void {
-  let final self::G* #t1 = g in #t1.{self::G::target} = #t1.{self::G::target}{self::A*}.{self::A::*}(self::f<self::D*>()){(self::D*) →* self::C*};
-  self::C* x = let final self::G* #t2 = g in #t2.{self::G::target} = #t2.{self::G::target}{self::A*}.{self::A::*}(self::f<self::D*>()){(self::D*) →* self::C*};
+  let final self::G* #t1 = g in #t1.{self::G::target} = #t1.{self::G::target}.{self::A::*}(self::f<self::D*>());
+  self::C* x = let final self::G* #t2 = g in #t2.{self::G::target} = #t2.{self::G::target}.{self::A::*}(self::f<self::D*>());
 }
 static method test2(self::G* g) → void {
-  let final self::G* #t3 = g in #t3.{self::G::target} = #t3.{self::G::target}{self::A*}.{self::A::+}(1){(core::int*) →* self::C*};
-  self::C* x = let final self::G* #t4 = g in #t4.{self::G::target} = #t4.{self::G::target}{self::A*}.{self::A::+}(1){(core::int*) →* self::C*};
+  let final self::G* #t3 = g in #t3.{self::G::target} = #t3.{self::G::target}.{self::A::+}(1);
+  self::C* x = let final self::G* #t4 = g in #t4.{self::G::target} = #t4.{self::G::target}.{self::A::+}(1);
 }
 static method test3(self::G* g) → void {
-  let final self::G* #t5 = g in #t5.{self::G::target} = #t5.{self::G::target}{self::A*}.{self::A::+}(1){(core::int*) →* self::C*};
-  self::A* x = let final self::G* #t6 = g in let final self::A* #t7 = #t6.{self::G::target}{self::A*} in let final self::C* #t8 = #t6.{self::G::target} = #t7.{self::A::+}(1){(core::int*) →* self::C*} in #t7;
+  let final self::G* #t5 = g in #t5.{self::G::target} = #t5.{self::G::target}.{self::A::+}(1);
+  self::A* x = let final self::G* #t6 = g in let final self::A* #t7 = #t6.{self::G::target} in let final self::C* #t8 = #t6.{self::G::target} = #t7.{self::A::+}(1) in #t7;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.weak.transformed.expect
index facdace..b551bed 100644
--- a/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.weak.transformed.expect
@@ -123,15 +123,15 @@
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
 static method test1(self::G* g) → void {
-  let final self::G* #t1 = g in #t1.{self::G::target} = #t1.{self::G::target}{self::A*}.{self::A::*}(self::f<self::D*>()){(self::D*) →* self::C*};
-  self::C* x = let final self::G* #t2 = g in #t2.{self::G::target} = #t2.{self::G::target}{self::A*}.{self::A::*}(self::f<self::D*>()){(self::D*) →* self::C*};
+  let final self::G* #t1 = g in #t1.{self::G::target} = #t1.{self::G::target}.{self::A::*}(self::f<self::D*>());
+  self::C* x = let final self::G* #t2 = g in #t2.{self::G::target} = #t2.{self::G::target}.{self::A::*}(self::f<self::D*>());
 }
 static method test2(self::G* g) → void {
-  let final self::G* #t3 = g in #t3.{self::G::target} = #t3.{self::G::target}{self::A*}.{self::A::+}(1){(core::int*) →* self::C*};
-  self::C* x = let final self::G* #t4 = g in #t4.{self::G::target} = #t4.{self::G::target}{self::A*}.{self::A::+}(1){(core::int*) →* self::C*};
+  let final self::G* #t3 = g in #t3.{self::G::target} = #t3.{self::G::target}.{self::A::+}(1);
+  self::C* x = let final self::G* #t4 = g in #t4.{self::G::target} = #t4.{self::G::target}.{self::A::+}(1);
 }
 static method test3(self::G* g) → void {
-  let final self::G* #t5 = g in #t5.{self::G::target} = #t5.{self::G::target}{self::A*}.{self::A::+}(1){(core::int*) →* self::C*};
-  self::A* x = let final self::G* #t6 = g in let final self::A* #t7 = #t6.{self::G::target}{self::A*} in let final self::C* #t8 = #t6.{self::G::target} = #t7.{self::A::+}(1){(core::int*) →* self::C*} in #t7;
+  let final self::G* #t5 = g in #t5.{self::G::target} = #t5.{self::G::target}.{self::A::+}(1);
+  self::A* x = let final self::G* #t6 = g in let final self::A* #t7 = #t6.{self::G::target} in let final self::C* #t8 = #t6.{self::G::target} = #t7.{self::A::+}(1) in #t7;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.weak.expect b/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.weak.expect
index d52af61..4151ea0 100644
--- a/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.weak.expect
@@ -23,10 +23,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c = new self::C::•();
-static field core::int* field_ref = self::c.{self::C::field}{core::int*};
-static field core::int* getter_ref = self::c.{self::C::getter}{core::int*};
-static field () →* core::int* function_ref = self::c.{self::C::function}{() →* core::int*};
-static field core::List<core::int*>* field_ref_list = <core::int*>[self::c.{self::C::field}{core::int*}];
-static field core::List<core::int*>* getter_ref_list = <core::int*>[self::c.{self::C::getter}{core::int*}];
-static field core::List<() →* core::int*>* function_ref_list = <() →* core::int*>[self::c.{self::C::function}{() →* core::int*}];
+static field core::int* field_ref = self::c.{self::C::field};
+static field core::int* getter_ref = self::c.{self::C::getter};
+static field () →* core::int* function_ref = self::c.{self::C::function};
+static field core::List<core::int*>* field_ref_list = <core::int*>[self::c.{self::C::field}];
+static field core::List<core::int*>* getter_ref_list = <core::int*>[self::c.{self::C::getter}];
+static field core::List<() →* core::int*>* function_ref_list = <() →* core::int*>[self::c.{self::C::function}];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.weak.transformed.expect
index 6c6d71c..c23ee62 100644
--- a/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.weak.transformed.expect
@@ -23,10 +23,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field self::C* c = new self::C::•();
-static field core::int* field_ref = self::c.{self::C::field}{core::int*};
-static field core::int* getter_ref = self::c.{self::C::getter}{core::int*};
-static field () →* core::int* function_ref = self::c.{self::C::function}{() →* core::int*};
-static field core::List<core::int*>* field_ref_list = core::_GrowableList::_literal1<core::int*>(self::c.{self::C::field}{core::int*});
-static field core::List<core::int*>* getter_ref_list = core::_GrowableList::_literal1<core::int*>(self::c.{self::C::getter}{core::int*});
-static field core::List<() →* core::int*>* function_ref_list = core::_GrowableList::_literal1<() →* core::int*>(self::c.{self::C::function}{() →* core::int*});
+static field core::int* field_ref = self::c.{self::C::field};
+static field core::int* getter_ref = self::c.{self::C::getter};
+static field () →* core::int* function_ref = self::c.{self::C::function};
+static field core::List<core::int*>* field_ref_list = core::_GrowableList::_literal1<core::int*>(self::c.{self::C::field});
+static field core::List<core::int*>* getter_ref_list = core::_GrowableList::_literal1<core::int*>(self::c.{self::C::getter});
+static field core::List<() →* core::int*>* function_ref_list = core::_GrowableList::_literal1<() →* core::int*>(self::c.{self::C::function});
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.weak.expect b/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.weak.expect
index 0c920ee..a2976ca 100644
--- a/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.weak.expect
@@ -108,15 +108,15 @@
   return null;
 static set target(self::B* value) → void {}
 static method test1() → void {
-  self::target = self::target.{self::A::*}(self::f<self::D*>()){(self::D*) →* self::C*};
-  self::C* x = self::target = self::target.{self::A::*}(self::f<self::D*>()){(self::D*) →* self::C*};
+  self::target = self::target.{self::A::*}(self::f<self::D*>());
+  self::C* x = self::target = self::target.{self::A::*}(self::f<self::D*>());
 }
 static method test2() → void {
-  self::target = self::target.{self::A::+}(1){(core::int*) →* self::C*};
-  self::C* x = self::target = self::target.{self::A::+}(1){(core::int*) →* self::C*};
+  self::target = self::target.{self::A::+}(1);
+  self::C* x = self::target = self::target.{self::A::+}(1);
 }
 static method test3() → void {
-  self::target = self::target.{self::A::+}(1){(core::int*) →* self::C*};
-  self::A* x = let final self::A* #t1 = self::target in let final self::C* #t2 = self::target = #t1.{self::A::+}(1){(core::int*) →* self::C*} in #t1;
+  self::target = self::target.{self::A::+}(1);
+  self::A* x = let final self::A* #t1 = self::target in let final self::C* #t2 = self::target = #t1.{self::A::+}(1) in #t1;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.weak.transformed.expect
index 0c920ee..a2976ca 100644
--- a/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.weak.transformed.expect
@@ -108,15 +108,15 @@
   return null;
 static set target(self::B* value) → void {}
 static method test1() → void {
-  self::target = self::target.{self::A::*}(self::f<self::D*>()){(self::D*) →* self::C*};
-  self::C* x = self::target = self::target.{self::A::*}(self::f<self::D*>()){(self::D*) →* self::C*};
+  self::target = self::target.{self::A::*}(self::f<self::D*>());
+  self::C* x = self::target = self::target.{self::A::*}(self::f<self::D*>());
 }
 static method test2() → void {
-  self::target = self::target.{self::A::+}(1){(core::int*) →* self::C*};
-  self::C* x = self::target = self::target.{self::A::+}(1){(core::int*) →* self::C*};
+  self::target = self::target.{self::A::+}(1);
+  self::C* x = self::target = self::target.{self::A::+}(1);
 }
 static method test3() → void {
-  self::target = self::target.{self::A::+}(1){(core::int*) →* self::C*};
-  self::A* x = let final self::A* #t1 = self::target in let final self::C* #t2 = self::target = #t1.{self::A::+}(1){(core::int*) →* self::C*} in #t1;
+  self::target = self::target.{self::A::+}(1);
+  self::A* x = let final self::A* #t1 = self::target in let final self::C* #t2 = self::target = #t1.{self::A::+}(1) in #t1;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.weak.expect b/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.weak.expect
index 69cac39..8be3350 100644
--- a/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.weak.expect
@@ -98,7 +98,7 @@
   method foo() → self::C*
     return new self::C::•();
 }
-static field self::B* x = self::bar().{self::G::foo}(){() →* self::B*};
+static field self::B* x = self::bar().{self::G::foo}();
 static method bar() → self::G*
   return new self::H::•();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.weak.transformed.expect
index 69cac39..8be3350 100644
--- a/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.weak.transformed.expect
@@ -98,7 +98,7 @@
   method foo() → self::C*
     return new self::C::•();
 }
-static field self::B* x = self::bar().{self::G::foo}(){() →* self::B*};
+static field self::B* x = self::bar().{self::G::foo}();
 static method bar() → self::G*
   return new self::H::•();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.expect b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.expect
index 169486b..129610f 100644
--- a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.expect
@@ -2,11 +2,11 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<core::int*>* v = (#C1)<core::int*>(() → core::int* {
+static field core::List<core::int*>* v = (#C1).call<core::int*>(() → core::int* {
   return 1;
-}){(() →* core::int*) →* core::List<core::int*>*};
+});
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return <self::f::T*>[g(){() →* self::f::T*}];
+  return <self::f::T*>[g.call()];
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.transformed.expect
index 633c890..cf09c4f 100644
--- a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.weak.transformed.expect
@@ -2,11 +2,11 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<core::int*>* v = (#C1)<core::int*>(() → core::int* {
+static field core::List<core::int*>* v = (#C1).call<core::int*>(() → core::int* {
   return 1;
-}){(() →* core::int*) →* core::List<core::int*>*};
+});
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return core::_GrowableList::_literal1<self::f::T*>(g(){() →* self::f::T*});
+  return core::_GrowableList::_literal1<self::f::T*>(g.call());
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.expect b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.expect
index 169486b..129610f 100644
--- a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.expect
@@ -2,11 +2,11 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<core::int*>* v = (#C1)<core::int*>(() → core::int* {
+static field core::List<core::int*>* v = (#C1).call<core::int*>(() → core::int* {
   return 1;
-}){(() →* core::int*) →* core::List<core::int*>*};
+});
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return <self::f::T*>[g(){() →* self::f::T*}];
+  return <self::f::T*>[g.call()];
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.transformed.expect
index 633c890..cf09c4f 100644
--- a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.weak.transformed.expect
@@ -2,11 +2,11 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<core::int*>* v = (#C1)<core::int*>(() → core::int* {
+static field core::List<core::int*>* v = (#C1).call<core::int*>(() → core::int* {
   return 1;
-}){(() →* core::int*) →* core::List<core::int*>*};
+});
 static method f<T extends core::Object* = dynamic>(() →* self::f::T* g) → core::List<self::f::T*>*
-  return core::_GrowableList::_literal1<self::f::T*>(g(){() →* self::f::T*});
+  return core::_GrowableList::_literal1<self::f::T*>(g.call());
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.weak.expect b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.weak.expect
index 7e0013f..42f01d5 100644
--- a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.weak.expect
@@ -5,7 +5,7 @@
 static field void y = self::run<void>(#C1);
 static method run<T extends core::Object* = dynamic>(() →* self::run::T* f) → self::run::T* {
   core::print("running");
-  self::run::T* t = f(){() →* self::run::T*};
+  self::run::T* t = f.call();
   core::print("done running");
   return t;
 }
diff --git a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.weak.transformed.expect
index 7e0013f..42f01d5 100644
--- a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
 static field void y = self::run<void>(#C1);
 static method run<T extends core::Object* = dynamic>(() →* self::run::T* f) → self::run::T* {
   core::print("running");
-  self::run::T* t = f(){() →* self::run::T*};
+  self::run::T* t = f.call();
   core::print("done running");
   return t;
 }
diff --git a/pkg/front_end/testcases/late_lowering/compound.dart.strong.expect b/pkg/front_end/testcases/late_lowering/compound.dart.strong.expect
index 72b278b..7d24707 100644
--- a/pkg/front_end/testcases/late_lowering/compound.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/compound.dart.strong.expect
@@ -13,36 +13,36 @@
 static method main() → dynamic {
   lowered core::int? #local1;
   function #local1#get() → core::int
-    return let final core::int? #t1 = #local1 in #t1 == null ?{core::int} throw new _in::LateError::localNI("local1") : #t1{core::int};
+    return let final core::int? #t1 = #local1 in #t1.==(null) ?{core::int} throw new _in::LateError::localNI("local1") : #t1{core::int};
   function #local1#set(core::int #t2) → dynamic
     return #local1 = #t2;
-  #local1#set(0){(core::int) → dynamic};
-  self::expect(0, #local1#get(){() → core::int});
-  #local1#set(#local1#get(){() → core::int}.{core::num::+}(2){(core::num) → core::int}){(core::int) → dynamic};
-  self::expect(2, #local1#get(){() → core::int});
+  #local1#set.call(0);
+  self::expect(0, #local1#get.call());
+  #local1#set.call(#local1#get.call().{core::num::+}(2));
+  self::expect(2, #local1#get.call());
   lowered core::int? #local2;
   function #local2#get() → core::int
-    return let final core::int? #t3 = #local2 in #t3 == null ?{core::int} #local2 = 1 : #t3{core::int};
+    return let final core::int? #t3 = #local2 in #t3.==(null) ?{core::int} #local2 = 1 : #t3{core::int};
   function #local2#set(core::int #t4) → dynamic
     return #local2 = #t4;
-  self::expect(1, #local2#get(){() → core::int});
-  #local2#set(#local2#get(){() → core::int}.{core::num::+}(2){(core::num) → core::int}){(core::int) → dynamic};
-  self::expect(3, #local2#get(){() → core::int});
+  self::expect(1, #local2#get.call());
+  #local2#set.call(#local2#get.call().{core::num::+}(2));
+  self::expect(3, #local2#get.call());
 }
 static method error() → dynamic {
   lowered final core::int? #local;
   function #local#get() → core::int
-    return let final core::int? #t5 = #local in #t5 == null ?{core::int} throw new _in::LateError::localNI("local") : #t5{core::int};
+    return let final core::int? #t5 = #local in #t5.==(null) ?{core::int} throw new _in::LateError::localNI("local") : #t5{core::int};
   function #local#set(core::int #t6) → dynamic
-    if(#local == null)
+    if(#local.==(null))
       return #local = #t6;
     else
       throw new _in::LateError::localAI("local");
-  #local#set((let final Never #t7 = invalid-expression "pkg/front_end/testcases/late_lowering/compound.dart:20:3: Error: Late variable 'local' without initializer is definitely unassigned.
+  #local#set.call((let final Never #t7 = invalid-expression "pkg/front_end/testcases/late_lowering/compound.dart:20:3: Error: Late variable 'local' without initializer is definitely unassigned.
   local += 0;
-  ^^^^^" in #local#get(){() → core::int}).{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^" in #local#get.call()).{core::num::+}(0));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/compound.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/compound.dart.strong.transformed.expect
index 72b278b..7d24707 100644
--- a/pkg/front_end/testcases/late_lowering/compound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/compound.dart.strong.transformed.expect
@@ -13,36 +13,36 @@
 static method main() → dynamic {
   lowered core::int? #local1;
   function #local1#get() → core::int
-    return let final core::int? #t1 = #local1 in #t1 == null ?{core::int} throw new _in::LateError::localNI("local1") : #t1{core::int};
+    return let final core::int? #t1 = #local1 in #t1.==(null) ?{core::int} throw new _in::LateError::localNI("local1") : #t1{core::int};
   function #local1#set(core::int #t2) → dynamic
     return #local1 = #t2;
-  #local1#set(0){(core::int) → dynamic};
-  self::expect(0, #local1#get(){() → core::int});
-  #local1#set(#local1#get(){() → core::int}.{core::num::+}(2){(core::num) → core::int}){(core::int) → dynamic};
-  self::expect(2, #local1#get(){() → core::int});
+  #local1#set.call(0);
+  self::expect(0, #local1#get.call());
+  #local1#set.call(#local1#get.call().{core::num::+}(2));
+  self::expect(2, #local1#get.call());
   lowered core::int? #local2;
   function #local2#get() → core::int
-    return let final core::int? #t3 = #local2 in #t3 == null ?{core::int} #local2 = 1 : #t3{core::int};
+    return let final core::int? #t3 = #local2 in #t3.==(null) ?{core::int} #local2 = 1 : #t3{core::int};
   function #local2#set(core::int #t4) → dynamic
     return #local2 = #t4;
-  self::expect(1, #local2#get(){() → core::int});
-  #local2#set(#local2#get(){() → core::int}.{core::num::+}(2){(core::num) → core::int}){(core::int) → dynamic};
-  self::expect(3, #local2#get(){() → core::int});
+  self::expect(1, #local2#get.call());
+  #local2#set.call(#local2#get.call().{core::num::+}(2));
+  self::expect(3, #local2#get.call());
 }
 static method error() → dynamic {
   lowered final core::int? #local;
   function #local#get() → core::int
-    return let final core::int? #t5 = #local in #t5 == null ?{core::int} throw new _in::LateError::localNI("local") : #t5{core::int};
+    return let final core::int? #t5 = #local in #t5.==(null) ?{core::int} throw new _in::LateError::localNI("local") : #t5{core::int};
   function #local#set(core::int #t6) → dynamic
-    if(#local == null)
+    if(#local.==(null))
       return #local = #t6;
     else
       throw new _in::LateError::localAI("local");
-  #local#set((let final Never #t7 = invalid-expression "pkg/front_end/testcases/late_lowering/compound.dart:20:3: Error: Late variable 'local' without initializer is definitely unassigned.
+  #local#set.call((let final Never #t7 = invalid-expression "pkg/front_end/testcases/late_lowering/compound.dart:20:3: Error: Late variable 'local' without initializer is definitely unassigned.
   local += 0;
-  ^^^^^" in #local#get(){() → core::int}).{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^" in #local#get.call()).{core::num::+}(0));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/compound.dart.weak.expect b/pkg/front_end/testcases/late_lowering/compound.dart.weak.expect
index 918a8c7..4433e65 100644
--- a/pkg/front_end/testcases/late_lowering/compound.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/compound.dart.weak.expect
@@ -19,10 +19,10 @@
     #local1#isSet = true;
     return #local1 = #t1;
   }
-  #local1#set(0){(core::int) → dynamic};
-  self::expect(0, #local1#get(){() → core::int});
-  #local1#set(#local1#get(){() → core::int}.{core::num::+}(2){(core::num) → core::int}){(core::int) → dynamic};
-  self::expect(2, #local1#get(){() → core::int});
+  #local1#set.call(0);
+  self::expect(0, #local1#get.call());
+  #local1#set.call(#local1#get.call().{core::num::+}(2));
+  self::expect(2, #local1#get.call());
   lowered core::int? #local2;
   lowered core::bool #local2#isSet = false;
   function #local2#get() → core::int {
@@ -36,9 +36,9 @@
     #local2#isSet = true;
     return #local2 = #t2;
   }
-  self::expect(1, #local2#get(){() → core::int});
-  #local2#set(#local2#get(){() → core::int}.{core::num::+}(2){(core::num) → core::int}){(core::int) → dynamic};
-  self::expect(3, #local2#get(){() → core::int});
+  self::expect(1, #local2#get.call());
+  #local2#set.call(#local2#get.call().{core::num::+}(2));
+  self::expect(3, #local2#get.call());
 }
 static method error() → dynamic {
   lowered final core::int? #local;
@@ -52,11 +52,11 @@
       #local#isSet = true;
       return #local = #t3;
     }
-  #local#set((let final Never #t4 = invalid-expression "pkg/front_end/testcases/late_lowering/compound.dart:20:3: Error: Late variable 'local' without initializer is definitely unassigned.
+  #local#set.call((let final Never #t4 = invalid-expression "pkg/front_end/testcases/late_lowering/compound.dart:20:3: Error: Late variable 'local' without initializer is definitely unassigned.
   local += 0;
-  ^^^^^" in #local#get(){() → core::int}).{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^" in #local#get.call()).{core::num::+}(0));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/compound.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/compound.dart.weak.transformed.expect
index 918a8c7..4433e65 100644
--- a/pkg/front_end/testcases/late_lowering/compound.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/compound.dart.weak.transformed.expect
@@ -19,10 +19,10 @@
     #local1#isSet = true;
     return #local1 = #t1;
   }
-  #local1#set(0){(core::int) → dynamic};
-  self::expect(0, #local1#get(){() → core::int});
-  #local1#set(#local1#get(){() → core::int}.{core::num::+}(2){(core::num) → core::int}){(core::int) → dynamic};
-  self::expect(2, #local1#get(){() → core::int});
+  #local1#set.call(0);
+  self::expect(0, #local1#get.call());
+  #local1#set.call(#local1#get.call().{core::num::+}(2));
+  self::expect(2, #local1#get.call());
   lowered core::int? #local2;
   lowered core::bool #local2#isSet = false;
   function #local2#get() → core::int {
@@ -36,9 +36,9 @@
     #local2#isSet = true;
     return #local2 = #t2;
   }
-  self::expect(1, #local2#get(){() → core::int});
-  #local2#set(#local2#get(){() → core::int}.{core::num::+}(2){(core::num) → core::int}){(core::int) → dynamic};
-  self::expect(3, #local2#get(){() → core::int});
+  self::expect(1, #local2#get.call());
+  #local2#set.call(#local2#get.call().{core::num::+}(2));
+  self::expect(3, #local2#get.call());
 }
 static method error() → dynamic {
   lowered final core::int? #local;
@@ -52,11 +52,11 @@
       #local#isSet = true;
       return #local = #t3;
     }
-  #local#set((let final Never #t4 = invalid-expression "pkg/front_end/testcases/late_lowering/compound.dart:20:3: Error: Late variable 'local' without initializer is definitely unassigned.
+  #local#set.call((let final Never #t4 = invalid-expression "pkg/front_end/testcases/late_lowering/compound.dart:20:3: Error: Late variable 'local' without initializer is definitely unassigned.
   local += 0;
-  ^^^^^" in #local#get(){() → core::int}).{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^" in #local#get.call()).{core::num::+}(0));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.strong.expect b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.strong.expect
index 4427289..4a03bd6 100644
--- a/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.strong.expect
@@ -21,11 +21,11 @@
     : super core::Object::•()
     ;
   get invariantField() → core::num
-    return let final core::num? #t1 = this.{self::A::_#A#invariantField} in #t1 == null ?{core::num} throw new _in::LateError::fieldNI("invariantField") : #t1{core::num};
+    return let final core::num? #t1 = this.{self::A::_#A#invariantField} in #t1.==(null) ?{core::num} throw new _in::LateError::fieldNI("invariantField") : #t1{core::num};
   set invariantField(core::num #t2) → void
     this.{self::A::_#A#invariantField} = #t2;
   get covariantField() → core::num
-    return let final core::num? #t3 = this.{self::A::_#A#covariantField} in #t3 == null ?{core::num} throw new _in::LateError::fieldNI("covariantField") : #t3{core::num};
+    return let final core::num? #t3 = this.{self::A::_#A#covariantField} in #t3.==(null) ?{core::num} throw new _in::LateError::fieldNI("covariantField") : #t3{core::num};
   set covariantField(covariant core::num #t4) → void
     this.{self::A::_#A#covariantField} = #t4;
 }
diff --git a/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.strong.expect b/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.strong.expect
index d7714fc..d679533 100644
--- a/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.strong.expect
@@ -78,32 +78,32 @@
     }
   lowered final core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t2 = #local4 in #t2 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t2{core::int};
+    return let final core::int? #t2 = #local4 in #t2.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t2{core::int};
   function #local4#set(core::int #t3) → dynamic
-    if(#local4 == null)
+    if(#local4.==(null))
       return #local4 = #t3;
     else
       throw new _in::LateError::localAI("local4");
   lowered final FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t4 = #local6 in #t4 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t4{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t4 = #local6 in #t4.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t4{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t5) → dynamic
-    if(#local6 == null)
+    if(#local6.==(null))
       return #local6 = #t5;
     else
       throw new _in::LateError::localAI("local6");
-  #local2#set(value){(T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t6 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:30:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t7 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:31:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t8 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:32:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 };
 static field <T extends core::Object? = dynamic>(core::bool, T%) → Null fieldConditional = <T extends core::Object? = dynamic>(core::bool b, T% value) → Null {
   lowered final T? #local2;
@@ -119,51 +119,51 @@
     }
   lowered final core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t10 = #local4 in #t10 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t10{core::int};
+    return let final core::int? #t10 = #local4 in #t10.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t10{core::int};
   function #local4#set(core::int #t11) → dynamic
-    if(#local4 == null)
+    if(#local4.==(null))
       return #local4 = #t11;
     else
       throw new _in::LateError::localAI("local4");
   lowered final FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t12 = #local6 in #t12 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t12{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t12 = #local6 in #t12.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t12{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t13) → dynamic
-    if(#local6 == null)
+    if(#local6.==(null))
       return #local6 = #t13;
     else
       throw new _in::LateError::localAI("local6");
   if(b) {
-    #local2#set(value){(T%) → dynamic};
-    #local4#set(0){(core::int) → dynamic};
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
+    #local2#set.call(value);
+    #local4#set.call(0);
+    #local6#set.call(0);
   }
-  #local2#set(value){(T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t14 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:70:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t15 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:71:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t16 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:72:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 };
 static field () → Null fieldCompound = () → Null {
   lowered final core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t17 = #local4 in #t17 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t17{core::int};
+    return let final core::int? #t17 = #local4 in #t17.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t17{core::int};
   function #local4#set(core::int #t18) → dynamic
-    if(#local4 == null)
+    if(#local4.==(null))
       return #local4 = #t18;
     else
       throw new _in::LateError::localAI("local4");
-  #local4#set(0){(core::int) → dynamic};
+  #local4#set.call(0);
   let final Never #t19 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:88:3: Error: Late final variable '#local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^^" in #local4#set(#local4#get(){() → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(#local4#get.call().{core::num::+}(0));
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   lowered final self::methodDirect::T? #local2;
@@ -179,32 +179,32 @@
     }
   lowered final core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t21 = #local4 in #t21 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t21{core::int};
+    return let final core::int? #t21 = #local4 in #t21.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t21{core::int};
   function #local4#set(core::int #t22) → dynamic
-    if(#local4 == null)
+    if(#local4.==(null))
       return #local4 = #t22;
     else
       throw new _in::LateError::localAI("local4");
   lowered final FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t23 = #local6 in #t23 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t23{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t23 = #local6 in #t23.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t23{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t24) → dynamic
-    if(#local6 == null)
+    if(#local6.==(null))
       return #local6 = #t24;
     else
       throw new _in::LateError::localAI("local6");
-  #local2#set(value){(self::methodDirect::T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t25 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:16:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(self::methodDirect::T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t26 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:17:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t27 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:18:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 }
 static method methodConditional<T extends core::Object? = dynamic>(core::bool b, self::methodConditional::T% value) → dynamic {
   lowered final self::methodConditional::T? #local2;
@@ -220,50 +220,50 @@
     }
   lowered final core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t29 = #local4 in #t29 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t29{core::int};
+    return let final core::int? #t29 = #local4 in #t29.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t29{core::int};
   function #local4#set(core::int #t30) → dynamic
-    if(#local4 == null)
+    if(#local4.==(null))
       return #local4 = #t30;
     else
       throw new _in::LateError::localAI("local4");
   lowered final FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t31 = #local6 in #t31 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t31{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t31 = #local6 in #t31.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t31{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t32) → dynamic
-    if(#local6 == null)
+    if(#local6.==(null))
       return #local6 = #t32;
     else
       throw new _in::LateError::localAI("local6");
   if(b) {
-    #local2#set(value){(self::methodConditional::T%) → dynamic};
-    #local4#set(0){(core::int) → dynamic};
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
+    #local2#set.call(value);
+    #local4#set.call(0);
+    #local6#set.call(0);
   }
-  #local2#set(value){(self::methodConditional::T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t33 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:50:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(self::methodConditional::T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t34 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:51:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t35 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:52:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 }
 static method methodCompound() → dynamic {
   lowered final core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t36 = #local4 in #t36 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t36{core::int};
+    return let final core::int? #t36 = #local4 in #t36.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t36{core::int};
   function #local4#set(core::int #t37) → dynamic
-    if(#local4 == null)
+    if(#local4.==(null))
       return #local4 = #t37;
     else
       throw new _in::LateError::localAI("local4");
-  #local4#set(0){(core::int) → dynamic};
+  #local4#set.call(0);
   let final Never #t38 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:80:3: Error: Late final variable '#local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^^" in #local4#set(#local4#get(){() → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(#local4#get.call().{core::num::+}(0));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.strong.transformed.expect
index d7714fc..d679533 100644
--- a/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.strong.transformed.expect
@@ -78,32 +78,32 @@
     }
   lowered final core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t2 = #local4 in #t2 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t2{core::int};
+    return let final core::int? #t2 = #local4 in #t2.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t2{core::int};
   function #local4#set(core::int #t3) → dynamic
-    if(#local4 == null)
+    if(#local4.==(null))
       return #local4 = #t3;
     else
       throw new _in::LateError::localAI("local4");
   lowered final FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t4 = #local6 in #t4 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t4{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t4 = #local6 in #t4.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t4{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t5) → dynamic
-    if(#local6 == null)
+    if(#local6.==(null))
       return #local6 = #t5;
     else
       throw new _in::LateError::localAI("local6");
-  #local2#set(value){(T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t6 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:30:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t7 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:31:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t8 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:32:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 };
 static field <T extends core::Object? = dynamic>(core::bool, T%) → Null fieldConditional = <T extends core::Object? = dynamic>(core::bool b, T% value) → Null {
   lowered final T? #local2;
@@ -119,51 +119,51 @@
     }
   lowered final core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t10 = #local4 in #t10 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t10{core::int};
+    return let final core::int? #t10 = #local4 in #t10.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t10{core::int};
   function #local4#set(core::int #t11) → dynamic
-    if(#local4 == null)
+    if(#local4.==(null))
       return #local4 = #t11;
     else
       throw new _in::LateError::localAI("local4");
   lowered final FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t12 = #local6 in #t12 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t12{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t12 = #local6 in #t12.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t12{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t13) → dynamic
-    if(#local6 == null)
+    if(#local6.==(null))
       return #local6 = #t13;
     else
       throw new _in::LateError::localAI("local6");
   if(b) {
-    #local2#set(value){(T%) → dynamic};
-    #local4#set(0){(core::int) → dynamic};
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
+    #local2#set.call(value);
+    #local4#set.call(0);
+    #local6#set.call(0);
   }
-  #local2#set(value){(T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t14 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:70:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t15 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:71:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t16 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:72:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 };
 static field () → Null fieldCompound = () → Null {
   lowered final core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t17 = #local4 in #t17 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t17{core::int};
+    return let final core::int? #t17 = #local4 in #t17.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t17{core::int};
   function #local4#set(core::int #t18) → dynamic
-    if(#local4 == null)
+    if(#local4.==(null))
       return #local4 = #t18;
     else
       throw new _in::LateError::localAI("local4");
-  #local4#set(0){(core::int) → dynamic};
+  #local4#set.call(0);
   let final Never #t19 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:88:3: Error: Late final variable '#local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^^" in #local4#set(#local4#get(){() → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(#local4#get.call().{core::num::+}(0));
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   lowered final self::methodDirect::T? #local2;
@@ -179,32 +179,32 @@
     }
   lowered final core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t21 = #local4 in #t21 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t21{core::int};
+    return let final core::int? #t21 = #local4 in #t21.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t21{core::int};
   function #local4#set(core::int #t22) → dynamic
-    if(#local4 == null)
+    if(#local4.==(null))
       return #local4 = #t22;
     else
       throw new _in::LateError::localAI("local4");
   lowered final FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t23 = #local6 in #t23 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t23{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t23 = #local6 in #t23.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t23{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t24) → dynamic
-    if(#local6 == null)
+    if(#local6.==(null))
       return #local6 = #t24;
     else
       throw new _in::LateError::localAI("local6");
-  #local2#set(value){(self::methodDirect::T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t25 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:16:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(self::methodDirect::T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t26 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:17:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t27 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:18:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 }
 static method methodConditional<T extends core::Object? = dynamic>(core::bool b, self::methodConditional::T% value) → dynamic {
   lowered final self::methodConditional::T? #local2;
@@ -220,50 +220,50 @@
     }
   lowered final core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t29 = #local4 in #t29 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t29{core::int};
+    return let final core::int? #t29 = #local4 in #t29.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t29{core::int};
   function #local4#set(core::int #t30) → dynamic
-    if(#local4 == null)
+    if(#local4.==(null))
       return #local4 = #t30;
     else
       throw new _in::LateError::localAI("local4");
   lowered final FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t31 = #local6 in #t31 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t31{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t31 = #local6 in #t31.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t31{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t32) → dynamic
-    if(#local6 == null)
+    if(#local6.==(null))
       return #local6 = #t32;
     else
       throw new _in::LateError::localAI("local6");
   if(b) {
-    #local2#set(value){(self::methodConditional::T%) → dynamic};
-    #local4#set(0){(core::int) → dynamic};
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
+    #local2#set.call(value);
+    #local4#set.call(0);
+    #local6#set.call(0);
   }
-  #local2#set(value){(self::methodConditional::T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t33 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:50:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(self::methodConditional::T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t34 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:51:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t35 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:52:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 }
 static method methodCompound() → dynamic {
   lowered final core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t36 = #local4 in #t36 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t36{core::int};
+    return let final core::int? #t36 = #local4 in #t36.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t36{core::int};
   function #local4#set(core::int #t37) → dynamic
-    if(#local4 == null)
+    if(#local4.==(null))
       return #local4 = #t37;
     else
       throw new _in::LateError::localAI("local4");
-  #local4#set(0){(core::int) → dynamic};
+  #local4#set.call(0);
   let final Never #t38 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:80:3: Error: Late final variable '#local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^^" in #local4#set(#local4#get(){() → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(#local4#get.call().{core::num::+}(0));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.weak.expect b/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.weak.expect
index 62841e6a..5f281d8 100644
--- a/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.weak.expect
@@ -98,18 +98,18 @@
       #local6#isSet = true;
       return #local6 = #t3;
     }
-  #local2#set(value){(T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t4 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:30:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t5 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:31:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t6 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:32:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 };
 static field <T extends core::Object? = dynamic>(core::bool, T%) → Null fieldConditional = <T extends core::Object? = dynamic>(core::bool b, T% value) → Null {
   lowered final T? #local2;
@@ -146,22 +146,22 @@
       return #local6 = #t9;
     }
   if(b) {
-    #local2#set(value){(T%) → dynamic};
-    #local4#set(0){(core::int) → dynamic};
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
+    #local2#set.call(value);
+    #local4#set.call(0);
+    #local6#set.call(0);
   }
-  #local2#set(value){(T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t10 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:70:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t11 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:71:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t12 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:72:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 };
 static field () → Null fieldCompound = () → Null {
   lowered final core::int? #local4;
@@ -175,10 +175,10 @@
       #local4#isSet = true;
       return #local4 = #t13;
     }
-  #local4#set(0){(core::int) → dynamic};
+  #local4#set.call(0);
   let final Never #t14 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:88:3: Error: Late final variable '#local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^^" in #local4#set(#local4#get(){() → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(#local4#get.call().{core::num::+}(0));
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   lowered final self::methodDirect::T? #local2;
@@ -214,18 +214,18 @@
       #local6#isSet = true;
       return #local6 = #t17;
     }
-  #local2#set(value){(self::methodDirect::T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t18 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:16:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(self::methodDirect::T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t19 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:17:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t20 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:18:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 }
 static method methodConditional<T extends core::Object? = dynamic>(core::bool b, self::methodConditional::T% value) → dynamic {
   lowered final self::methodConditional::T? #local2;
@@ -262,22 +262,22 @@
       return #local6 = #t23;
     }
   if(b) {
-    #local2#set(value){(self::methodConditional::T%) → dynamic};
-    #local4#set(0){(core::int) → dynamic};
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
+    #local2#set.call(value);
+    #local4#set.call(0);
+    #local6#set.call(0);
   }
-  #local2#set(value){(self::methodConditional::T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t24 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:50:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(self::methodConditional::T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t25 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:51:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t26 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:52:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 }
 static method methodCompound() → dynamic {
   lowered final core::int? #local4;
@@ -291,9 +291,9 @@
       #local4#isSet = true;
       return #local4 = #t27;
     }
-  #local4#set(0){(core::int) → dynamic};
+  #local4#set.call(0);
   let final Never #t28 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:80:3: Error: Late final variable '#local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^^" in #local4#set(#local4#get(){() → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(#local4#get.call().{core::num::+}(0));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.weak.transformed.expect
index 62841e6a..5f281d8 100644
--- a/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/definitely_assigned.dart.weak.transformed.expect
@@ -98,18 +98,18 @@
       #local6#isSet = true;
       return #local6 = #t3;
     }
-  #local2#set(value){(T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t4 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:30:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t5 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:31:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t6 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:32:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 };
 static field <T extends core::Object? = dynamic>(core::bool, T%) → Null fieldConditional = <T extends core::Object? = dynamic>(core::bool b, T% value) → Null {
   lowered final T? #local2;
@@ -146,22 +146,22 @@
       return #local6 = #t9;
     }
   if(b) {
-    #local2#set(value){(T%) → dynamic};
-    #local4#set(0){(core::int) → dynamic};
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
+    #local2#set.call(value);
+    #local4#set.call(0);
+    #local6#set.call(0);
   }
-  #local2#set(value){(T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t10 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:70:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t11 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:71:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t12 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:72:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 };
 static field () → Null fieldCompound = () → Null {
   lowered final core::int? #local4;
@@ -175,10 +175,10 @@
       #local4#isSet = true;
       return #local4 = #t13;
     }
-  #local4#set(0){(core::int) → dynamic};
+  #local4#set.call(0);
   let final Never #t14 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:88:3: Error: Late final variable '#local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^^" in #local4#set(#local4#get(){() → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(#local4#get.call().{core::num::+}(0));
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   lowered final self::methodDirect::T? #local2;
@@ -214,18 +214,18 @@
       #local6#isSet = true;
       return #local6 = #t17;
     }
-  #local2#set(value){(self::methodDirect::T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t18 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:16:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(self::methodDirect::T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t19 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:17:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t20 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:18:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 }
 static method methodConditional<T extends core::Object? = dynamic>(core::bool b, self::methodConditional::T% value) → dynamic {
   lowered final self::methodConditional::T? #local2;
@@ -262,22 +262,22 @@
       return #local6 = #t23;
     }
   if(b) {
-    #local2#set(value){(self::methodConditional::T%) → dynamic};
-    #local4#set(0){(core::int) → dynamic};
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
+    #local2#set.call(value);
+    #local4#set.call(0);
+    #local6#set.call(0);
   }
-  #local2#set(value){(self::methodConditional::T%) → dynamic};
-  #local4#set(0){(core::int) → dynamic};
-  #local6#set(0){(FutureOr<core::int>) → dynamic};
+  #local2#set.call(value);
+  #local4#set.call(0);
+  #local6#set.call(0);
   let final Never #t24 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:50:3: Error: Late final variable '#local2' definitely assigned.
   local2 = value; // error
-  ^^^^^^^" in #local2#set(value){(self::methodConditional::T%) → dynamic};
+  ^^^^^^^" in #local2#set.call(value);
   let final Never #t25 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:51:3: Error: Late final variable '#local4' definitely assigned.
   local4 = 0; // error
-  ^^^^^^^" in #local4#set(0){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(0);
   let final Never #t26 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:52:3: Error: Late final variable '#local6' definitely assigned.
   local6 = 0; // error
-  ^^^^^^^" in #local6#set(0){(FutureOr<core::int>) → dynamic};
+  ^^^^^^^" in #local6#set.call(0);
 }
 static method methodCompound() → dynamic {
   lowered final core::int? #local4;
@@ -291,9 +291,9 @@
       #local4#isSet = true;
       return #local4 = #t27;
     }
-  #local4#set(0){(core::int) → dynamic};
+  #local4#set.call(0);
   let final Never #t28 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_assigned.dart:80:3: Error: Late final variable '#local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^^" in #local4#set(#local4#get(){() → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^^" in #local4#set.call(#local4#get.call().{core::num::+}(0));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.strong.expect b/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.strong.expect
index 0b556b4..ca083c7 100644
--- a/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.strong.expect
@@ -109,13 +109,13 @@
   core::int local3;
   lowered core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t2 = #local4 in #t2 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t2{core::int};
+    return let final core::int? #t2 = #local4 in #t2.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t2{core::int};
   function #local4#set(core::int #t3) → dynamic
     return #local4 = #t3;
   FutureOr<core::int>local5;
   lowered FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t4 = #local6 in #t4 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t4{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t4 = #local6 in #t4.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t4{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t5) → dynamic
     return #local6 = #t5;
   lowered T? #local7;
@@ -136,20 +136,20 @@
   ^^^^^^" in local1;
   let final Never #t8 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:35:3: Error: Late variable 'local2' without initializer is definitely unassigned.
   local2; // error
-  ^^^^^^" in #local2#get(){() → T%};
+  ^^^^^^" in #local2#get.call();
   let final Never #t9 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:36:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
   let final Never #t10 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:37:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4; // error
-  ^^^^^^" in #local4#get(){() → core::int};
+  ^^^^^^" in #local4#get.call();
   let final Never #t11 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:38:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
   let final Never #t12 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:39:3: Error: Late variable 'local6' without initializer is definitely unassigned.
   local6; // error
-  ^^^^^^" in #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → T%};
+  ^^^^^^" in #local6#get.call();
+  #local7#get.call();
 };
 static field <T extends core::Object? = dynamic>(core::bool, T%) → Null fieldConditional = <T extends core::Object? = dynamic>(core::bool b, T% value) → Null {
   T% local1;
@@ -164,13 +164,13 @@
   core::int local3;
   lowered core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t14 = #local4 in #t14 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t14{core::int};
+    return let final core::int? #t14 = #local4 in #t14.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t14{core::int};
   function #local4#set(core::int #t15) → dynamic
     return #local4 = #t15;
   FutureOr<core::int>local5;
   lowered FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t16 = #local6 in #t16 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t16{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t16 = #local6 in #t16.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t16{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t17) → dynamic
     return #local6 = #t17;
   lowered T? #local7;
@@ -188,40 +188,40 @@
   }
   if(b) {
     local1 = value;
-    #local2#set(value){(T%) → dynamic};
+    #local2#set.call(value);
     local3 = 0;
-    #local4#set(0){(core::int) → dynamic};
+    #local4#set.call(0);
     local5 = 0;
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
-    #local7#get(){() → T%};
+    #local6#set.call(0);
+    #local7#get.call();
   }
   let final Never #t19 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:90:3: Error: Non-nullable variable 'local1' must be assigned before it can be used.
   local1; // error
   ^^^^^^" in local1;
-  #local2#get(){() → T%};
+  #local2#get.call();
   let final Never #t20 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:92:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
-  #local4#get(){() → core::int};
+  #local4#get.call();
   let final Never #t21 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:94:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
-  #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → T%};
+  #local6#get.call();
+  #local7#get.call();
 };
 static field () → Null fieldCompound = () → Null {
   core::int local3;
   lowered core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t22 = #local4 in #t22 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t22{core::int};
+    return let final core::int? #t22 = #local4 in #t22.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t22{core::int};
   function #local4#set(core::int #t23) → dynamic
     return #local4 = #t23;
   local3 = (let final Never #t24 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:111:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
-  #local4#set((let final Never #t25 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:112:3: Error: Late variable 'local4' without initializer is definitely unassigned.
+  ^^^^^^" in local3).{core::num::+}(0);
+  #local4#set.call((let final Never #t25 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:112:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in #local4#get(){() → core::int}).{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^" in #local4#get.call()).{core::num::+}(0));
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   self::methodDirect::T% local1;
@@ -236,13 +236,13 @@
   core::int local3;
   lowered core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t27 = #local4 in #t27 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t27{core::int};
+    return let final core::int? #t27 = #local4 in #t27.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t27{core::int};
   function #local4#set(core::int #t28) → dynamic
     return #local4 = #t28;
   FutureOr<core::int>local5;
   lowered FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t29 = #local6 in #t29 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t29{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t29 = #local6 in #t29.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t29{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t30) → dynamic
     return #local6 = #t30;
   lowered self::methodDirect::T? #local7;
@@ -263,20 +263,20 @@
   ^^^^^^" in local1;
   let final Never #t33 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:17:3: Error: Late variable 'local2' without initializer is definitely unassigned.
   local2; // error
-  ^^^^^^" in #local2#get(){() → self::methodDirect::T%};
+  ^^^^^^" in #local2#get.call();
   let final Never #t34 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:18:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
   let final Never #t35 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:19:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4; // error
-  ^^^^^^" in #local4#get(){() → core::int};
+  ^^^^^^" in #local4#get.call();
   let final Never #t36 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:20:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
   let final Never #t37 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:21:3: Error: Late variable 'local6' without initializer is definitely unassigned.
   local6; // error
-  ^^^^^^" in #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → self::methodDirect::T%};
+  ^^^^^^" in #local6#get.call();
+  #local7#get.call();
 }
 static method methodConditional<T extends core::Object? = dynamic>(core::bool b, self::methodConditional::T% value) → dynamic {
   self::methodConditional::T% local1;
@@ -291,13 +291,13 @@
   core::int local3;
   lowered core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t39 = #local4 in #t39 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t39{core::int};
+    return let final core::int? #t39 = #local4 in #t39.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t39{core::int};
   function #local4#set(core::int #t40) → dynamic
     return #local4 = #t40;
   FutureOr<core::int>local5;
   lowered FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t41 = #local6 in #t41 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t41{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t41 = #local6 in #t41.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t41{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t42) → dynamic
     return #local6 = #t42;
   lowered self::methodConditional::T? #local7;
@@ -315,39 +315,39 @@
   }
   if(b) {
     local1 = value;
-    #local2#set(value){(self::methodConditional::T%) → dynamic};
+    #local2#set.call(value);
     local3 = 0;
-    #local4#set(0){(core::int) → dynamic};
+    #local4#set.call(0);
     local5 = 0;
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
-    #local7#set(value){(self::methodConditional::T%) → dynamic};
+    #local6#set.call(0);
+    #local7#set.call(value);
   }
   let final Never #t44 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:62:3: Error: Non-nullable variable 'local1' must be assigned before it can be used.
   local1; // error
   ^^^^^^" in local1;
-  #local2#get(){() → self::methodConditional::T%};
+  #local2#get.call();
   let final Never #t45 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:64:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
-  #local4#get(){() → core::int};
+  #local4#get.call();
   let final Never #t46 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:66:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
-  #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → self::methodConditional::T%};
+  #local6#get.call();
+  #local7#get.call();
 }
 static method methodCompound() → dynamic {
   core::int local3;
   lowered core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t47 = #local4 in #t47 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t47{core::int};
+    return let final core::int? #t47 = #local4 in #t47.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t47{core::int};
   function #local4#set(core::int #t48) → dynamic
     return #local4 = #t48;
   local3 = (let final Never #t49 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:103:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
-  #local4#set((let final Never #t50 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:104:3: Error: Late variable 'local4' without initializer is definitely unassigned.
+  ^^^^^^" in local3).{core::num::+}(0);
+  #local4#set.call((let final Never #t50 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:104:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in #local4#get(){() → core::int}).{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^" in #local4#get.call()).{core::num::+}(0));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.strong.transformed.expect
index 0b556b4..ca083c7 100644
--- a/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.strong.transformed.expect
@@ -109,13 +109,13 @@
   core::int local3;
   lowered core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t2 = #local4 in #t2 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t2{core::int};
+    return let final core::int? #t2 = #local4 in #t2.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t2{core::int};
   function #local4#set(core::int #t3) → dynamic
     return #local4 = #t3;
   FutureOr<core::int>local5;
   lowered FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t4 = #local6 in #t4 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t4{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t4 = #local6 in #t4.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t4{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t5) → dynamic
     return #local6 = #t5;
   lowered T? #local7;
@@ -136,20 +136,20 @@
   ^^^^^^" in local1;
   let final Never #t8 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:35:3: Error: Late variable 'local2' without initializer is definitely unassigned.
   local2; // error
-  ^^^^^^" in #local2#get(){() → T%};
+  ^^^^^^" in #local2#get.call();
   let final Never #t9 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:36:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
   let final Never #t10 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:37:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4; // error
-  ^^^^^^" in #local4#get(){() → core::int};
+  ^^^^^^" in #local4#get.call();
   let final Never #t11 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:38:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
   let final Never #t12 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:39:3: Error: Late variable 'local6' without initializer is definitely unassigned.
   local6; // error
-  ^^^^^^" in #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → T%};
+  ^^^^^^" in #local6#get.call();
+  #local7#get.call();
 };
 static field <T extends core::Object? = dynamic>(core::bool, T%) → Null fieldConditional = <T extends core::Object? = dynamic>(core::bool b, T% value) → Null {
   T% local1;
@@ -164,13 +164,13 @@
   core::int local3;
   lowered core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t14 = #local4 in #t14 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t14{core::int};
+    return let final core::int? #t14 = #local4 in #t14.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t14{core::int};
   function #local4#set(core::int #t15) → dynamic
     return #local4 = #t15;
   FutureOr<core::int>local5;
   lowered FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t16 = #local6 in #t16 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t16{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t16 = #local6 in #t16.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t16{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t17) → dynamic
     return #local6 = #t17;
   lowered T? #local7;
@@ -188,40 +188,40 @@
   }
   if(b) {
     local1 = value;
-    #local2#set(value){(T%) → dynamic};
+    #local2#set.call(value);
     local3 = 0;
-    #local4#set(0){(core::int) → dynamic};
+    #local4#set.call(0);
     local5 = 0;
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
-    #local7#get(){() → T%};
+    #local6#set.call(0);
+    #local7#get.call();
   }
   let final Never #t19 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:90:3: Error: Non-nullable variable 'local1' must be assigned before it can be used.
   local1; // error
   ^^^^^^" in local1;
-  #local2#get(){() → T%};
+  #local2#get.call();
   let final Never #t20 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:92:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
-  #local4#get(){() → core::int};
+  #local4#get.call();
   let final Never #t21 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:94:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
-  #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → T%};
+  #local6#get.call();
+  #local7#get.call();
 };
 static field () → Null fieldCompound = () → Null {
   core::int local3;
   lowered core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t22 = #local4 in #t22 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t22{core::int};
+    return let final core::int? #t22 = #local4 in #t22.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t22{core::int};
   function #local4#set(core::int #t23) → dynamic
     return #local4 = #t23;
   local3 = (let final Never #t24 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:111:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
-  #local4#set((let final Never #t25 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:112:3: Error: Late variable 'local4' without initializer is definitely unassigned.
+  ^^^^^^" in local3).{core::num::+}(0);
+  #local4#set.call((let final Never #t25 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:112:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in #local4#get(){() → core::int}).{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^" in #local4#get.call()).{core::num::+}(0));
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   self::methodDirect::T% local1;
@@ -236,13 +236,13 @@
   core::int local3;
   lowered core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t27 = #local4 in #t27 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t27{core::int};
+    return let final core::int? #t27 = #local4 in #t27.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t27{core::int};
   function #local4#set(core::int #t28) → dynamic
     return #local4 = #t28;
   FutureOr<core::int>local5;
   lowered FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t29 = #local6 in #t29 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t29{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t29 = #local6 in #t29.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t29{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t30) → dynamic
     return #local6 = #t30;
   lowered self::methodDirect::T? #local7;
@@ -263,20 +263,20 @@
   ^^^^^^" in local1;
   let final Never #t33 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:17:3: Error: Late variable 'local2' without initializer is definitely unassigned.
   local2; // error
-  ^^^^^^" in #local2#get(){() → self::methodDirect::T%};
+  ^^^^^^" in #local2#get.call();
   let final Never #t34 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:18:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
   let final Never #t35 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:19:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4; // error
-  ^^^^^^" in #local4#get(){() → core::int};
+  ^^^^^^" in #local4#get.call();
   let final Never #t36 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:20:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
   let final Never #t37 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:21:3: Error: Late variable 'local6' without initializer is definitely unassigned.
   local6; // error
-  ^^^^^^" in #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → self::methodDirect::T%};
+  ^^^^^^" in #local6#get.call();
+  #local7#get.call();
 }
 static method methodConditional<T extends core::Object? = dynamic>(core::bool b, self::methodConditional::T% value) → dynamic {
   self::methodConditional::T% local1;
@@ -291,13 +291,13 @@
   core::int local3;
   lowered core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t39 = #local4 in #t39 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t39{core::int};
+    return let final core::int? #t39 = #local4 in #t39.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t39{core::int};
   function #local4#set(core::int #t40) → dynamic
     return #local4 = #t40;
   FutureOr<core::int>local5;
   lowered FutureOr<core::int>? #local6;
   function #local6#get() → FutureOr<core::int>
-    return let final FutureOr<core::int>? #t41 = #local6 in #t41 == null ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t41{FutureOr<core::int>};
+    return let final FutureOr<core::int>? #t41 = #local6 in #t41.==(null) ?{FutureOr<core::int>} throw new _in::LateError::localNI("local6") : #t41{FutureOr<core::int>};
   function #local6#set(FutureOr<core::int>#t42) → dynamic
     return #local6 = #t42;
   lowered self::methodConditional::T? #local7;
@@ -315,39 +315,39 @@
   }
   if(b) {
     local1 = value;
-    #local2#set(value){(self::methodConditional::T%) → dynamic};
+    #local2#set.call(value);
     local3 = 0;
-    #local4#set(0){(core::int) → dynamic};
+    #local4#set.call(0);
     local5 = 0;
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
-    #local7#set(value){(self::methodConditional::T%) → dynamic};
+    #local6#set.call(0);
+    #local7#set.call(value);
   }
   let final Never #t44 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:62:3: Error: Non-nullable variable 'local1' must be assigned before it can be used.
   local1; // error
   ^^^^^^" in local1;
-  #local2#get(){() → self::methodConditional::T%};
+  #local2#get.call();
   let final Never #t45 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:64:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
-  #local4#get(){() → core::int};
+  #local4#get.call();
   let final Never #t46 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:66:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
-  #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → self::methodConditional::T%};
+  #local6#get.call();
+  #local7#get.call();
 }
 static method methodCompound() → dynamic {
   core::int local3;
   lowered core::int? #local4;
   function #local4#get() → core::int
-    return let final core::int? #t47 = #local4 in #t47 == null ?{core::int} throw new _in::LateError::localNI("local4") : #t47{core::int};
+    return let final core::int? #t47 = #local4 in #t47.==(null) ?{core::int} throw new _in::LateError::localNI("local4") : #t47{core::int};
   function #local4#set(core::int #t48) → dynamic
     return #local4 = #t48;
   local3 = (let final Never #t49 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:103:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
-  #local4#set((let final Never #t50 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:104:3: Error: Late variable 'local4' without initializer is definitely unassigned.
+  ^^^^^^" in local3).{core::num::+}(0);
+  #local4#set.call((let final Never #t50 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:104:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in #local4#get(){() → core::int}).{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^" in #local4#get.call()).{core::num::+}(0));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.weak.expect b/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.weak.expect
index 2c9947c..da7e307 100644
--- a/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.weak.expect
@@ -142,20 +142,20 @@
   ^^^^^^" in local1;
   let final Never #t6 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:35:3: Error: Late variable 'local2' without initializer is definitely unassigned.
   local2; // error
-  ^^^^^^" in #local2#get(){() → T%};
+  ^^^^^^" in #local2#get.call();
   let final Never #t7 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:36:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
   let final Never #t8 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:37:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4; // error
-  ^^^^^^" in #local4#get(){() → core::int};
+  ^^^^^^" in #local4#get.call();
   let final Never #t9 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:38:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
   let final Never #t10 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:39:3: Error: Late variable 'local6' without initializer is definitely unassigned.
   local6; // error
-  ^^^^^^" in #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → T%};
+  ^^^^^^" in #local6#get.call();
+  #local7#get.call();
 };
 static field <T extends core::Object? = dynamic>(core::bool, T%) → Null fieldConditional = <T extends core::Object? = dynamic>(core::bool b, T% value) → Null {
   T% local1;
@@ -200,26 +200,26 @@
   }
   if(b) {
     local1 = value;
-    #local2#set(value){(T%) → dynamic};
+    #local2#set.call(value);
     local3 = 0;
-    #local4#set(0){(core::int) → dynamic};
+    #local4#set.call(0);
     local5 = 0;
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
-    #local7#get(){() → T%};
+    #local6#set.call(0);
+    #local7#get.call();
   }
   let final Never #t15 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:90:3: Error: Non-nullable variable 'local1' must be assigned before it can be used.
   local1; // error
   ^^^^^^" in local1;
-  #local2#get(){() → T%};
+  #local2#get.call();
   let final Never #t16 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:92:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
-  #local4#get(){() → core::int};
+  #local4#get.call();
   let final Never #t17 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:94:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
-  #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → T%};
+  #local6#get.call();
+  #local7#get.call();
 };
 static field () → Null fieldCompound = () → Null {
   core::int local3;
@@ -233,10 +233,10 @@
   }
   local3 = (let final Never #t19 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:111:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
-  #local4#set((let final Never #t20 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:112:3: Error: Late variable 'local4' without initializer is definitely unassigned.
+  ^^^^^^" in local3).{core::num::+}(0);
+  #local4#set.call((let final Never #t20 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:112:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in #local4#get(){() → core::int}).{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^" in #local4#get.call()).{core::num::+}(0));
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   self::methodDirect::T% local1;
@@ -284,20 +284,20 @@
   ^^^^^^" in local1;
   let final Never #t26 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:17:3: Error: Late variable 'local2' without initializer is definitely unassigned.
   local2; // error
-  ^^^^^^" in #local2#get(){() → self::methodDirect::T%};
+  ^^^^^^" in #local2#get.call();
   let final Never #t27 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:18:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
   let final Never #t28 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:19:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4; // error
-  ^^^^^^" in #local4#get(){() → core::int};
+  ^^^^^^" in #local4#get.call();
   let final Never #t29 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:20:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
   let final Never #t30 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:21:3: Error: Late variable 'local6' without initializer is definitely unassigned.
   local6; // error
-  ^^^^^^" in #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → self::methodDirect::T%};
+  ^^^^^^" in #local6#get.call();
+  #local7#get.call();
 }
 static method methodConditional<T extends core::Object? = dynamic>(core::bool b, self::methodConditional::T% value) → dynamic {
   self::methodConditional::T% local1;
@@ -342,26 +342,26 @@
   }
   if(b) {
     local1 = value;
-    #local2#set(value){(self::methodConditional::T%) → dynamic};
+    #local2#set.call(value);
     local3 = 0;
-    #local4#set(0){(core::int) → dynamic};
+    #local4#set.call(0);
     local5 = 0;
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
-    #local7#set(value){(self::methodConditional::T%) → dynamic};
+    #local6#set.call(0);
+    #local7#set.call(value);
   }
   let final Never #t35 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:62:3: Error: Non-nullable variable 'local1' must be assigned before it can be used.
   local1; // error
   ^^^^^^" in local1;
-  #local2#get(){() → self::methodConditional::T%};
+  #local2#get.call();
   let final Never #t36 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:64:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
-  #local4#get(){() → core::int};
+  #local4#get.call();
   let final Never #t37 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:66:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
-  #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → self::methodConditional::T%};
+  #local6#get.call();
+  #local7#get.call();
 }
 static method methodCompound() → dynamic {
   core::int local3;
@@ -375,9 +375,9 @@
   }
   local3 = (let final Never #t39 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:103:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
-  #local4#set((let final Never #t40 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:104:3: Error: Late variable 'local4' without initializer is definitely unassigned.
+  ^^^^^^" in local3).{core::num::+}(0);
+  #local4#set.call((let final Never #t40 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:104:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in #local4#get(){() → core::int}).{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^" in #local4#get.call()).{core::num::+}(0));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.weak.transformed.expect
index 2c9947c..da7e307 100644
--- a/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/definitely_unassigned.dart.weak.transformed.expect
@@ -142,20 +142,20 @@
   ^^^^^^" in local1;
   let final Never #t6 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:35:3: Error: Late variable 'local2' without initializer is definitely unassigned.
   local2; // error
-  ^^^^^^" in #local2#get(){() → T%};
+  ^^^^^^" in #local2#get.call();
   let final Never #t7 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:36:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
   let final Never #t8 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:37:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4; // error
-  ^^^^^^" in #local4#get(){() → core::int};
+  ^^^^^^" in #local4#get.call();
   let final Never #t9 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:38:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
   let final Never #t10 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:39:3: Error: Late variable 'local6' without initializer is definitely unassigned.
   local6; // error
-  ^^^^^^" in #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → T%};
+  ^^^^^^" in #local6#get.call();
+  #local7#get.call();
 };
 static field <T extends core::Object? = dynamic>(core::bool, T%) → Null fieldConditional = <T extends core::Object? = dynamic>(core::bool b, T% value) → Null {
   T% local1;
@@ -200,26 +200,26 @@
   }
   if(b) {
     local1 = value;
-    #local2#set(value){(T%) → dynamic};
+    #local2#set.call(value);
     local3 = 0;
-    #local4#set(0){(core::int) → dynamic};
+    #local4#set.call(0);
     local5 = 0;
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
-    #local7#get(){() → T%};
+    #local6#set.call(0);
+    #local7#get.call();
   }
   let final Never #t15 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:90:3: Error: Non-nullable variable 'local1' must be assigned before it can be used.
   local1; // error
   ^^^^^^" in local1;
-  #local2#get(){() → T%};
+  #local2#get.call();
   let final Never #t16 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:92:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
-  #local4#get(){() → core::int};
+  #local4#get.call();
   let final Never #t17 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:94:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
-  #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → T%};
+  #local6#get.call();
+  #local7#get.call();
 };
 static field () → Null fieldCompound = () → Null {
   core::int local3;
@@ -233,10 +233,10 @@
   }
   local3 = (let final Never #t19 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:111:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
-  #local4#set((let final Never #t20 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:112:3: Error: Late variable 'local4' without initializer is definitely unassigned.
+  ^^^^^^" in local3).{core::num::+}(0);
+  #local4#set.call((let final Never #t20 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:112:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in #local4#get(){() → core::int}).{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^" in #local4#get.call()).{core::num::+}(0));
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   self::methodDirect::T% local1;
@@ -284,20 +284,20 @@
   ^^^^^^" in local1;
   let final Never #t26 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:17:3: Error: Late variable 'local2' without initializer is definitely unassigned.
   local2; // error
-  ^^^^^^" in #local2#get(){() → self::methodDirect::T%};
+  ^^^^^^" in #local2#get.call();
   let final Never #t27 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:18:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
   let final Never #t28 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:19:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4; // error
-  ^^^^^^" in #local4#get(){() → core::int};
+  ^^^^^^" in #local4#get.call();
   let final Never #t29 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:20:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
   let final Never #t30 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:21:3: Error: Late variable 'local6' without initializer is definitely unassigned.
   local6; // error
-  ^^^^^^" in #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → self::methodDirect::T%};
+  ^^^^^^" in #local6#get.call();
+  #local7#get.call();
 }
 static method methodConditional<T extends core::Object? = dynamic>(core::bool b, self::methodConditional::T% value) → dynamic {
   self::methodConditional::T% local1;
@@ -342,26 +342,26 @@
   }
   if(b) {
     local1 = value;
-    #local2#set(value){(self::methodConditional::T%) → dynamic};
+    #local2#set.call(value);
     local3 = 0;
-    #local4#set(0){(core::int) → dynamic};
+    #local4#set.call(0);
     local5 = 0;
-    #local6#set(0){(FutureOr<core::int>) → dynamic};
-    #local7#set(value){(self::methodConditional::T%) → dynamic};
+    #local6#set.call(0);
+    #local7#set.call(value);
   }
   let final Never #t35 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:62:3: Error: Non-nullable variable 'local1' must be assigned before it can be used.
   local1; // error
   ^^^^^^" in local1;
-  #local2#get(){() → self::methodConditional::T%};
+  #local2#get.call();
   let final Never #t36 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:64:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3; // error
   ^^^^^^" in local3;
-  #local4#get(){() → core::int};
+  #local4#get.call();
   let final Never #t37 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:66:3: Error: Non-nullable variable 'local5' must be assigned before it can be used.
   local5; // error
   ^^^^^^" in local5;
-  #local6#get(){() → FutureOr<core::int>};
-  #local7#get(){() → self::methodConditional::T%};
+  #local6#get.call();
+  #local7#get.call();
 }
 static method methodCompound() → dynamic {
   core::int local3;
@@ -375,9 +375,9 @@
   }
   local3 = (let final Never #t39 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:103:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
-  #local4#set((let final Never #t40 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:104:3: Error: Late variable 'local4' without initializer is definitely unassigned.
+  ^^^^^^" in local3).{core::num::+}(0);
+  #local4#set.call((let final Never #t40 = invalid-expression "pkg/front_end/testcases/late_lowering/definitely_unassigned.dart:104:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in #local4#get(){() → core::int}).{core::num::+}(0){(core::num) → core::int}){(core::int) → dynamic};
+  ^^^^^^" in #local4#get.call()).{core::num::+}(0));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.strong.expect b/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.strong.expect
index d1f6fd6..f982c6a 100644
--- a/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.strong.expect
@@ -45,7 +45,7 @@
     : self::A::_#A#property4 = property4, self::A::_#A#property5#isSet = true, self::A::_#A#property5 = property5, self::A::_#A#property6 = property6, super core::Object::•()
     ;
   get property4() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#property4} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("property4") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#property4} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("property4") : #t1{core::int};
   set property4(core::int #t2) → void
     this.{self::A::_#A#property4} = #t2;
   get property5() → core::int?
@@ -55,7 +55,7 @@
     this.{self::A::_#A#property5} = #t3;
   }
   get property6() → core::int
-    return let final core::int? #t4 = this.{self::A::_#A#property6} in #t4 == null ?{core::int} throw new _in::LateError::fieldNI("property6") : #t4{core::int};
+    return let final core::int? #t4 = this.{self::A::_#A#property6} in #t4.==(null) ?{core::int} throw new _in::LateError::fieldNI("property6") : #t4{core::int};
   set property6(covariant core::int #t5) → void
     this.{self::A::_#A#property6} = #t5;
 }
@@ -68,16 +68,16 @@
     : self::B1::_#B1#property4 = property4, self::B1::_#B1#property5 = property5, self::B1::_#B1#property6#isSet = true, self::B1::_#B1#property6 = property6, super core::Object::•()
     ;
   get property4() → core::int
-    return let final core::int? #t6 = this.{self::B1::_#B1#property4} in #t6 == null ?{core::int} throw new _in::LateError::fieldNI("property4") : #t6{core::int};
+    return let final core::int? #t6 = this.{self::B1::_#B1#property4} in #t6.==(null) ?{core::int} throw new _in::LateError::fieldNI("property4") : #t6{core::int};
   set property4(core::int #t7) → void
-    if(this.{self::B1::_#B1#property4} == null)
+    if(this.{self::B1::_#B1#property4}.==(null))
       this.{self::B1::_#B1#property4} = #t7;
     else
       throw new _in::LateError::fieldAI("property4");
   get property5() → core::int
-    return let final core::int? #t8 = this.{self::B1::_#B1#property5} in #t8 == null ?{core::int} throw new _in::LateError::fieldNI("property5") : #t8{core::int};
+    return let final core::int? #t8 = this.{self::B1::_#B1#property5} in #t8.==(null) ?{core::int} throw new _in::LateError::fieldNI("property5") : #t8{core::int};
   set property5(core::int #t9) → void
-    if(this.{self::B1::_#B1#property5} == null)
+    if(this.{self::B1::_#B1#property5}.==(null))
       this.{self::B1::_#B1#property5} = #t9;
     else
       throw new _in::LateError::fieldAI("property5");
@@ -107,15 +107,15 @@
     : self::C1::_#C1#property4 = property4, self::C1::_#C1#property5 = property5, self::C1::_#C1#property6 = property6, super core::Object::•()
     ;
   get property4() → core::int
-    return let final core::int? #t11 = this.{self::C1::_#C1#property4} in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("property4") : #t11{core::int};
+    return let final core::int? #t11 = this.{self::C1::_#C1#property4} in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("property4") : #t11{core::int};
   set property4(core::int #t12) → void
     this.{self::C1::_#C1#property4} = #t12;
   get property5() → core::int
-    return let final core::int? #t13 = this.{self::C1::_#C1#property5} in #t13 == null ?{core::int} throw new _in::LateError::fieldNI("property5") : #t13{core::int};
+    return let final core::int? #t13 = this.{self::C1::_#C1#property5} in #t13.==(null) ?{core::int} throw new _in::LateError::fieldNI("property5") : #t13{core::int};
   set property5(core::int #t14) → void
     this.{self::C1::_#C1#property5} = #t14;
   get property6() → core::int
-    return let final core::int? #t15 = this.{self::C1::_#C1#property6} in #t15 == null ?{core::int} throw new _in::LateError::fieldNI("property6") : #t15{core::int};
+    return let final core::int? #t15 = this.{self::C1::_#C1#property6} in #t15.==(null) ?{core::int} throw new _in::LateError::fieldNI("property6") : #t15{core::int};
   set property6(core::int #t16) → void
     this.{self::C1::_#C1#property6} = #t16;
 }
diff --git a/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.strong.transformed.expect
index d1f6fd6..f982c6a 100644
--- a/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.strong.transformed.expect
@@ -45,7 +45,7 @@
     : self::A::_#A#property4 = property4, self::A::_#A#property5#isSet = true, self::A::_#A#property5 = property5, self::A::_#A#property6 = property6, super core::Object::•()
     ;
   get property4() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#property4} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("property4") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#property4} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("property4") : #t1{core::int};
   set property4(core::int #t2) → void
     this.{self::A::_#A#property4} = #t2;
   get property5() → core::int?
@@ -55,7 +55,7 @@
     this.{self::A::_#A#property5} = #t3;
   }
   get property6() → core::int
-    return let final core::int? #t4 = this.{self::A::_#A#property6} in #t4 == null ?{core::int} throw new _in::LateError::fieldNI("property6") : #t4{core::int};
+    return let final core::int? #t4 = this.{self::A::_#A#property6} in #t4.==(null) ?{core::int} throw new _in::LateError::fieldNI("property6") : #t4{core::int};
   set property6(covariant core::int #t5) → void
     this.{self::A::_#A#property6} = #t5;
 }
@@ -68,16 +68,16 @@
     : self::B1::_#B1#property4 = property4, self::B1::_#B1#property5 = property5, self::B1::_#B1#property6#isSet = true, self::B1::_#B1#property6 = property6, super core::Object::•()
     ;
   get property4() → core::int
-    return let final core::int? #t6 = this.{self::B1::_#B1#property4} in #t6 == null ?{core::int} throw new _in::LateError::fieldNI("property4") : #t6{core::int};
+    return let final core::int? #t6 = this.{self::B1::_#B1#property4} in #t6.==(null) ?{core::int} throw new _in::LateError::fieldNI("property4") : #t6{core::int};
   set property4(core::int #t7) → void
-    if(this.{self::B1::_#B1#property4} == null)
+    if(this.{self::B1::_#B1#property4}.==(null))
       this.{self::B1::_#B1#property4} = #t7;
     else
       throw new _in::LateError::fieldAI("property4");
   get property5() → core::int
-    return let final core::int? #t8 = this.{self::B1::_#B1#property5} in #t8 == null ?{core::int} throw new _in::LateError::fieldNI("property5") : #t8{core::int};
+    return let final core::int? #t8 = this.{self::B1::_#B1#property5} in #t8.==(null) ?{core::int} throw new _in::LateError::fieldNI("property5") : #t8{core::int};
   set property5(core::int #t9) → void
-    if(this.{self::B1::_#B1#property5} == null)
+    if(this.{self::B1::_#B1#property5}.==(null))
       this.{self::B1::_#B1#property5} = #t9;
     else
       throw new _in::LateError::fieldAI("property5");
@@ -107,15 +107,15 @@
     : self::C1::_#C1#property4 = property4, self::C1::_#C1#property5 = property5, self::C1::_#C1#property6 = property6, super core::Object::•()
     ;
   get property4() → core::int
-    return let final core::int? #t11 = this.{self::C1::_#C1#property4} in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("property4") : #t11{core::int};
+    return let final core::int? #t11 = this.{self::C1::_#C1#property4} in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("property4") : #t11{core::int};
   set property4(core::int #t12) → void
     this.{self::C1::_#C1#property4} = #t12;
   get property5() → core::int
-    return let final core::int? #t13 = this.{self::C1::_#C1#property5} in #t13 == null ?{core::int} throw new _in::LateError::fieldNI("property5") : #t13{core::int};
+    return let final core::int? #t13 = this.{self::C1::_#C1#property5} in #t13.==(null) ?{core::int} throw new _in::LateError::fieldNI("property5") : #t13{core::int};
   set property5(core::int #t14) → void
     this.{self::C1::_#C1#property5} = #t14;
   get property6() → core::int
-    return let final core::int? #t15 = this.{self::C1::_#C1#property6} in #t15 == null ?{core::int} throw new _in::LateError::fieldNI("property6") : #t15{core::int};
+    return let final core::int? #t15 = this.{self::C1::_#C1#property6} in #t15.==(null) ?{core::int} throw new _in::LateError::fieldNI("property6") : #t15{core::int};
   set property6(core::int #t16) → void
     this.{self::C1::_#C1#property6} = #t16;
 }
diff --git a/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.strong.expect b/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.strong.expect
index 5f86747..b34786e 100644
--- a/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.strong.expect
@@ -8,8 +8,8 @@
 static method main() → dynamic {
   lowered core::int? #local;
   function #local#get() → core::int
-    return let final core::int? #t1 = #local in #t1 == null ?{core::int} throw new _in::LateError::localNI("local") : #t1{core::int};
+    return let final core::int? #t1 = #local in #t1.==(null) ?{core::int} throw new _in::LateError::localNI("local") : #t1{core::int};
   function #local#set(core::int #t2) → dynamic
     return #local = #t2;
-  #local#set(self::f<core::int>(0)){(core::int) → dynamic};
+  #local#set.call(self::f<core::int>(0));
 }
diff --git a/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.strong.transformed.expect
index 5f86747..b34786e 100644
--- a/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.strong.transformed.expect
@@ -8,8 +8,8 @@
 static method main() → dynamic {
   lowered core::int? #local;
   function #local#get() → core::int
-    return let final core::int? #t1 = #local in #t1 == null ?{core::int} throw new _in::LateError::localNI("local") : #t1{core::int};
+    return let final core::int? #t1 = #local in #t1.==(null) ?{core::int} throw new _in::LateError::localNI("local") : #t1{core::int};
   function #local#set(core::int #t2) → dynamic
     return #local = #t2;
-  #local#set(self::f<core::int>(0)){(core::int) → dynamic};
+  #local#set.call(self::f<core::int>(0));
 }
diff --git a/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.weak.expect b/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.weak.expect
index 6d53db1..4a7ba84 100644
--- a/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.weak.expect
@@ -14,5 +14,5 @@
     #local#isSet = true;
     return #local = #t1;
   }
-  #local#set(self::f<core::int>(0)){(core::int) → dynamic};
+  #local#set.call(self::f<core::int>(0));
 }
diff --git a/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.weak.transformed.expect
index 6d53db1..4a7ba84 100644
--- a/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/infer_from_late_variable.dart.weak.transformed.expect
@@ -14,5 +14,5 @@
     #local#isSet = true;
     return #local = #t1;
   }
-  #local#set(self::f<core::int>(0)){(core::int) → dynamic};
+  #local#set.call(self::f<core::int>(0));
 }
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.expect
index d3abc93..477672b 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.expect
@@ -18,10 +18,10 @@
     : super core::Object::•()
     ;
   static get nonNullableStaticField() → core::int
-    return let final core::int? #t1 = self::Class::_#nonNullableStaticField in #t1 == null ?{core::int} let final core::int #t2 = (let final core::int #t3 = self::Class::nonNullableStaticFieldReads in let final core::int #t4 = self::Class::nonNullableStaticFieldReads = #t3.{core::num::+}(1){(core::num) → core::int} in #t3) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nonNullableStaticField.{core::num::+}(1){(core::num) → core::int} : 0 in self::Class::_#nonNullableStaticField == null ?{core::int} self::Class::_#nonNullableStaticField = #t2 : throw new _in::LateError::fieldADI("nonNullableStaticField") : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#nonNullableStaticField in #t1.==(null) ?{core::int} let final core::int #t2 = (let final core::int #t3 = self::Class::nonNullableStaticFieldReads in let final core::int #t4 = self::Class::nonNullableStaticFieldReads = #t3.{core::num::+}(1) in #t3).{core::num::==}(0) ?{core::int} self::Class::nonNullableStaticField.{core::num::+}(1) : 0 in self::Class::_#nonNullableStaticField.==(null) ?{core::int} self::Class::_#nonNullableStaticField = #t2 : throw new _in::LateError::fieldADI("nonNullableStaticField") : #t1{core::int};
   static get nullableStaticField() → core::int? {
     if(!self::Class::_#nullableStaticField#isSet) {
-      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1){(core::num) → core::int} in #t6) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nullableStaticField.{core::Object::hashCode}{core::int} : 0;
+      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int} self::Class::nullableStaticField.{core::Object::hashCode} : 0;
       if(self::Class::_#nullableStaticField#isSet)
         throw new _in::LateError::fieldADI("nullableStaticField");
       self::Class::_#nullableStaticField = #t5;
@@ -30,10 +30,10 @@
     return self::Class::_#nullableStaticField;
   }
   get nonNullableInstanceField() → core::int
-    return let final core::int? #t8 = this.{self::Class::_#Class#nonNullableInstanceField} in #t8 == null ?{core::int} let final core::int #t9 = (let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads}{core::int} in let final core::int #t11 = this.{self::Class::nonNullableInstanceFieldReads} = #t10.{core::num::+}(1){(core::num) → core::int} in #t10) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} this.{self::Class::nonNullableInstanceField}{core::int}.{core::num::+}(1){(core::num) → core::int} : 0 in this.{self::Class::_#Class#nonNullableInstanceField} == null ?{core::int} this.{self::Class::_#Class#nonNullableInstanceField} = #t9 : throw new _in::LateError::fieldADI("nonNullableInstanceField") : #t8{core::int};
+    return let final core::int? #t8 = this.{self::Class::_#Class#nonNullableInstanceField} in #t8.==(null) ?{core::int} let final core::int #t9 = (let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} in let final core::int #t11 = this.{self::Class::nonNullableInstanceFieldReads} = #t10.{core::num::+}(1) in #t10).{core::num::==}(0) ?{core::int} this.{self::Class::nonNullableInstanceField}.{core::num::+}(1) : 0 in this.{self::Class::_#Class#nonNullableInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#nonNullableInstanceField} = #t9 : throw new _in::LateError::fieldADI("nonNullableInstanceField") : #t8{core::int};
   get nullableInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#nullableInstanceField#isSet}) {
-      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads}{core::int} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1){(core::num) → core::int} in #t13) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} this.{self::Class::nullableInstanceField}{core::int?}.{core::Object::hashCode}{core::int} : 0;
+      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int} this.{self::Class::nullableInstanceField}.{core::Object::hashCode} : 0;
       if(this.{self::Class::_#Class#nullableInstanceField#isSet})
         throw new _in::LateError::fieldADI("nullableInstanceField");
       this.{self::Class::_#Class#nullableInstanceField} = #t12;
@@ -48,10 +48,10 @@
 static field core::int? _#nullableTopLevelField = null;
 static field core::bool _#nullableTopLevelField#isSet = false;
 static get nonNullableTopLevelField() → core::int
-  return let final core::int? #t15 = self::_#nonNullableTopLevelField in #t15 == null ?{core::int} let final core::int #t16 = (let final core::int #t17 = self::nonNullableTopLevelFieldReads in let final core::int #t18 = self::nonNullableTopLevelFieldReads = #t17.{core::num::+}(1){(core::num) → core::int} in #t17) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nonNullableTopLevelField.{core::num::+}(1){(core::num) → core::int} : 0 in self::_#nonNullableTopLevelField == null ?{core::int} self::_#nonNullableTopLevelField = #t16 : throw new _in::LateError::fieldADI("nonNullableTopLevelField") : #t15{core::int};
+  return let final core::int? #t15 = self::_#nonNullableTopLevelField in #t15.==(null) ?{core::int} let final core::int #t16 = (let final core::int #t17 = self::nonNullableTopLevelFieldReads in let final core::int #t18 = self::nonNullableTopLevelFieldReads = #t17.{core::num::+}(1) in #t17).{core::num::==}(0) ?{core::int} self::nonNullableTopLevelField.{core::num::+}(1) : 0 in self::_#nonNullableTopLevelField.==(null) ?{core::int} self::_#nonNullableTopLevelField = #t16 : throw new _in::LateError::fieldADI("nonNullableTopLevelField") : #t15{core::int};
 static get nullableTopLevelField() → core::int? {
   if(!self::_#nullableTopLevelField#isSet) {
-    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1){(core::num) → core::int} in #t20) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nullableTopLevelField.{core::Object::hashCode}{core::int} : 0;
+    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int} self::nullableTopLevelField.{core::Object::hashCode} : 0;
     if(self::_#nullableTopLevelField#isSet)
       throw new _in::LateError::fieldADI("nullableTopLevelField");
     self::_#nullableTopLevelField = #t19;
@@ -64,13 +64,13 @@
   self::throws(() → core::int? => self::nullableTopLevelField, "Read nullableTopLevelField");
   self::throws(() → core::int => self::Class::nonNullableStaticField, "Read nonNullableStaticField");
   self::throws(() → core::int? => self::Class::nullableStaticField, "Read nullableStaticField");
-  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}{core::int}, "Read nonNullableInstanceField");
-  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}{core::int?}, "Read nullableInstanceField");
+  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}, "Read nonNullableInstanceField");
+  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}, "Read nullableInstanceField");
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.transformed.expect
index d3abc93..477672b 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.transformed.expect
@@ -18,10 +18,10 @@
     : super core::Object::•()
     ;
   static get nonNullableStaticField() → core::int
-    return let final core::int? #t1 = self::Class::_#nonNullableStaticField in #t1 == null ?{core::int} let final core::int #t2 = (let final core::int #t3 = self::Class::nonNullableStaticFieldReads in let final core::int #t4 = self::Class::nonNullableStaticFieldReads = #t3.{core::num::+}(1){(core::num) → core::int} in #t3) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nonNullableStaticField.{core::num::+}(1){(core::num) → core::int} : 0 in self::Class::_#nonNullableStaticField == null ?{core::int} self::Class::_#nonNullableStaticField = #t2 : throw new _in::LateError::fieldADI("nonNullableStaticField") : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#nonNullableStaticField in #t1.==(null) ?{core::int} let final core::int #t2 = (let final core::int #t3 = self::Class::nonNullableStaticFieldReads in let final core::int #t4 = self::Class::nonNullableStaticFieldReads = #t3.{core::num::+}(1) in #t3).{core::num::==}(0) ?{core::int} self::Class::nonNullableStaticField.{core::num::+}(1) : 0 in self::Class::_#nonNullableStaticField.==(null) ?{core::int} self::Class::_#nonNullableStaticField = #t2 : throw new _in::LateError::fieldADI("nonNullableStaticField") : #t1{core::int};
   static get nullableStaticField() → core::int? {
     if(!self::Class::_#nullableStaticField#isSet) {
-      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1){(core::num) → core::int} in #t6) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nullableStaticField.{core::Object::hashCode}{core::int} : 0;
+      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int} self::Class::nullableStaticField.{core::Object::hashCode} : 0;
       if(self::Class::_#nullableStaticField#isSet)
         throw new _in::LateError::fieldADI("nullableStaticField");
       self::Class::_#nullableStaticField = #t5;
@@ -30,10 +30,10 @@
     return self::Class::_#nullableStaticField;
   }
   get nonNullableInstanceField() → core::int
-    return let final core::int? #t8 = this.{self::Class::_#Class#nonNullableInstanceField} in #t8 == null ?{core::int} let final core::int #t9 = (let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads}{core::int} in let final core::int #t11 = this.{self::Class::nonNullableInstanceFieldReads} = #t10.{core::num::+}(1){(core::num) → core::int} in #t10) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} this.{self::Class::nonNullableInstanceField}{core::int}.{core::num::+}(1){(core::num) → core::int} : 0 in this.{self::Class::_#Class#nonNullableInstanceField} == null ?{core::int} this.{self::Class::_#Class#nonNullableInstanceField} = #t9 : throw new _in::LateError::fieldADI("nonNullableInstanceField") : #t8{core::int};
+    return let final core::int? #t8 = this.{self::Class::_#Class#nonNullableInstanceField} in #t8.==(null) ?{core::int} let final core::int #t9 = (let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} in let final core::int #t11 = this.{self::Class::nonNullableInstanceFieldReads} = #t10.{core::num::+}(1) in #t10).{core::num::==}(0) ?{core::int} this.{self::Class::nonNullableInstanceField}.{core::num::+}(1) : 0 in this.{self::Class::_#Class#nonNullableInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#nonNullableInstanceField} = #t9 : throw new _in::LateError::fieldADI("nonNullableInstanceField") : #t8{core::int};
   get nullableInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#nullableInstanceField#isSet}) {
-      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads}{core::int} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1){(core::num) → core::int} in #t13) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} this.{self::Class::nullableInstanceField}{core::int?}.{core::Object::hashCode}{core::int} : 0;
+      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int} this.{self::Class::nullableInstanceField}.{core::Object::hashCode} : 0;
       if(this.{self::Class::_#Class#nullableInstanceField#isSet})
         throw new _in::LateError::fieldADI("nullableInstanceField");
       this.{self::Class::_#Class#nullableInstanceField} = #t12;
@@ -48,10 +48,10 @@
 static field core::int? _#nullableTopLevelField = null;
 static field core::bool _#nullableTopLevelField#isSet = false;
 static get nonNullableTopLevelField() → core::int
-  return let final core::int? #t15 = self::_#nonNullableTopLevelField in #t15 == null ?{core::int} let final core::int #t16 = (let final core::int #t17 = self::nonNullableTopLevelFieldReads in let final core::int #t18 = self::nonNullableTopLevelFieldReads = #t17.{core::num::+}(1){(core::num) → core::int} in #t17) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nonNullableTopLevelField.{core::num::+}(1){(core::num) → core::int} : 0 in self::_#nonNullableTopLevelField == null ?{core::int} self::_#nonNullableTopLevelField = #t16 : throw new _in::LateError::fieldADI("nonNullableTopLevelField") : #t15{core::int};
+  return let final core::int? #t15 = self::_#nonNullableTopLevelField in #t15.==(null) ?{core::int} let final core::int #t16 = (let final core::int #t17 = self::nonNullableTopLevelFieldReads in let final core::int #t18 = self::nonNullableTopLevelFieldReads = #t17.{core::num::+}(1) in #t17).{core::num::==}(0) ?{core::int} self::nonNullableTopLevelField.{core::num::+}(1) : 0 in self::_#nonNullableTopLevelField.==(null) ?{core::int} self::_#nonNullableTopLevelField = #t16 : throw new _in::LateError::fieldADI("nonNullableTopLevelField") : #t15{core::int};
 static get nullableTopLevelField() → core::int? {
   if(!self::_#nullableTopLevelField#isSet) {
-    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1){(core::num) → core::int} in #t20) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nullableTopLevelField.{core::Object::hashCode}{core::int} : 0;
+    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int} self::nullableTopLevelField.{core::Object::hashCode} : 0;
     if(self::_#nullableTopLevelField#isSet)
       throw new _in::LateError::fieldADI("nullableTopLevelField");
     self::_#nullableTopLevelField = #t19;
@@ -64,13 +64,13 @@
   self::throws(() → core::int? => self::nullableTopLevelField, "Read nullableTopLevelField");
   self::throws(() → core::int => self::Class::nonNullableStaticField, "Read nonNullableStaticField");
   self::throws(() → core::int? => self::Class::nullableStaticField, "Read nullableStaticField");
-  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}{core::int}, "Read nonNullableInstanceField");
-  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}{core::int?}, "Read nullableInstanceField");
+  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}, "Read nonNullableInstanceField");
+  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}, "Read nullableInstanceField");
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.expect
index f070b2f..f0df89a 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.expect
@@ -21,7 +21,7 @@
     ;
   static get nonNullableStaticField() → core::int {
     if(!self::Class::_#nonNullableStaticField#isSet) {
-      final core::int #t1 = (let final core::int #t2 = self::Class::nonNullableStaticFieldReads in let final core::int #t3 = self::Class::nonNullableStaticFieldReads = #t2.{core::num::+}(1){(core::num) → core::int} in #t2) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nonNullableStaticField.{core::num::+}(1){(core::num) → core::int} : 0;
+      final core::int #t1 = (let final core::int #t2 = self::Class::nonNullableStaticFieldReads in let final core::int #t3 = self::Class::nonNullableStaticFieldReads = #t2.{core::num::+}(1) in #t2).{core::num::==}(0) ?{core::int} self::Class::nonNullableStaticField.{core::num::+}(1) : 0;
       if(self::Class::_#nonNullableStaticField#isSet)
         throw new _in::LateError::fieldADI("nonNullableStaticField");
       self::Class::_#nonNullableStaticField = #t1;
@@ -31,7 +31,7 @@
   }
   static get nullableStaticField() → core::int? {
     if(!self::Class::_#nullableStaticField#isSet) {
-      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1){(core::num) → core::int} in #t6) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nullableStaticField.{core::Object::hashCode}{core::int} : 0;
+      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int} self::Class::nullableStaticField.{core::Object::hashCode} : 0;
       if(self::Class::_#nullableStaticField#isSet)
         throw new _in::LateError::fieldADI("nullableStaticField");
       self::Class::_#nullableStaticField = #t5;
@@ -41,7 +41,7 @@
   }
   get nonNullableInstanceField() → core::int {
     if(!this.{self::Class::_#Class#nonNullableInstanceField#isSet}) {
-      final core::int #t8 = (let final core::int #t9 = this.{self::Class::nonNullableInstanceFieldReads}{core::int} in let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} = #t9.{core::num::+}(1){(core::num) → core::int} in #t9) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} this.{self::Class::nonNullableInstanceField}{core::int}.{core::num::+}(1){(core::num) → core::int} : 0;
+      final core::int #t8 = (let final core::int #t9 = this.{self::Class::nonNullableInstanceFieldReads} in let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} = #t9.{core::num::+}(1) in #t9).{core::num::==}(0) ?{core::int} this.{self::Class::nonNullableInstanceField}.{core::num::+}(1) : 0;
       if(this.{self::Class::_#Class#nonNullableInstanceField#isSet})
         throw new _in::LateError::fieldADI("nonNullableInstanceField");
       this.{self::Class::_#Class#nonNullableInstanceField} = #t8;
@@ -51,7 +51,7 @@
   }
   get nullableInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#nullableInstanceField#isSet}) {
-      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads}{core::int} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1){(core::num) → core::int} in #t13) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} this.{self::Class::nullableInstanceField}{core::int?}.{core::Object::hashCode}{core::int} : 0;
+      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int} this.{self::Class::nullableInstanceField}.{core::Object::hashCode} : 0;
       if(this.{self::Class::_#Class#nullableInstanceField#isSet})
         throw new _in::LateError::fieldADI("nullableInstanceField");
       this.{self::Class::_#Class#nullableInstanceField} = #t12;
@@ -68,7 +68,7 @@
 static field core::bool _#nullableTopLevelField#isSet = false;
 static get nonNullableTopLevelField() → core::int {
   if(!self::_#nonNullableTopLevelField#isSet) {
-    final core::int #t15 = (let final core::int #t16 = self::nonNullableTopLevelFieldReads in let final core::int #t17 = self::nonNullableTopLevelFieldReads = #t16.{core::num::+}(1){(core::num) → core::int} in #t16) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nonNullableTopLevelField.{core::num::+}(1){(core::num) → core::int} : 0;
+    final core::int #t15 = (let final core::int #t16 = self::nonNullableTopLevelFieldReads in let final core::int #t17 = self::nonNullableTopLevelFieldReads = #t16.{core::num::+}(1) in #t16).{core::num::==}(0) ?{core::int} self::nonNullableTopLevelField.{core::num::+}(1) : 0;
     if(self::_#nonNullableTopLevelField#isSet)
       throw new _in::LateError::fieldADI("nonNullableTopLevelField");
     self::_#nonNullableTopLevelField = #t15;
@@ -78,7 +78,7 @@
 }
 static get nullableTopLevelField() → core::int? {
   if(!self::_#nullableTopLevelField#isSet) {
-    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1){(core::num) → core::int} in #t20) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nullableTopLevelField.{core::Object::hashCode}{core::int} : 0;
+    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int} self::nullableTopLevelField.{core::Object::hashCode} : 0;
     if(self::_#nullableTopLevelField#isSet)
       throw new _in::LateError::fieldADI("nullableTopLevelField");
     self::_#nullableTopLevelField = #t19;
@@ -91,13 +91,13 @@
   self::throws(() → core::int? => self::nullableTopLevelField, "Read nullableTopLevelField");
   self::throws(() → core::int => self::Class::nonNullableStaticField, "Read nonNullableStaticField");
   self::throws(() → core::int? => self::Class::nullableStaticField, "Read nullableStaticField");
-  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}{core::int}, "Read nonNullableInstanceField");
-  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}{core::int?}, "Read nullableInstanceField");
+  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}, "Read nonNullableInstanceField");
+  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}, "Read nullableInstanceField");
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.transformed.expect
index f070b2f..f0df89a 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.transformed.expect
@@ -21,7 +21,7 @@
     ;
   static get nonNullableStaticField() → core::int {
     if(!self::Class::_#nonNullableStaticField#isSet) {
-      final core::int #t1 = (let final core::int #t2 = self::Class::nonNullableStaticFieldReads in let final core::int #t3 = self::Class::nonNullableStaticFieldReads = #t2.{core::num::+}(1){(core::num) → core::int} in #t2) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nonNullableStaticField.{core::num::+}(1){(core::num) → core::int} : 0;
+      final core::int #t1 = (let final core::int #t2 = self::Class::nonNullableStaticFieldReads in let final core::int #t3 = self::Class::nonNullableStaticFieldReads = #t2.{core::num::+}(1) in #t2).{core::num::==}(0) ?{core::int} self::Class::nonNullableStaticField.{core::num::+}(1) : 0;
       if(self::Class::_#nonNullableStaticField#isSet)
         throw new _in::LateError::fieldADI("nonNullableStaticField");
       self::Class::_#nonNullableStaticField = #t1;
@@ -31,7 +31,7 @@
   }
   static get nullableStaticField() → core::int? {
     if(!self::Class::_#nullableStaticField#isSet) {
-      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1){(core::num) → core::int} in #t6) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nullableStaticField.{core::Object::hashCode}{core::int} : 0;
+      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int} self::Class::nullableStaticField.{core::Object::hashCode} : 0;
       if(self::Class::_#nullableStaticField#isSet)
         throw new _in::LateError::fieldADI("nullableStaticField");
       self::Class::_#nullableStaticField = #t5;
@@ -41,7 +41,7 @@
   }
   get nonNullableInstanceField() → core::int {
     if(!this.{self::Class::_#Class#nonNullableInstanceField#isSet}) {
-      final core::int #t8 = (let final core::int #t9 = this.{self::Class::nonNullableInstanceFieldReads}{core::int} in let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} = #t9.{core::num::+}(1){(core::num) → core::int} in #t9) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} this.{self::Class::nonNullableInstanceField}{core::int}.{core::num::+}(1){(core::num) → core::int} : 0;
+      final core::int #t8 = (let final core::int #t9 = this.{self::Class::nonNullableInstanceFieldReads} in let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} = #t9.{core::num::+}(1) in #t9).{core::num::==}(0) ?{core::int} this.{self::Class::nonNullableInstanceField}.{core::num::+}(1) : 0;
       if(this.{self::Class::_#Class#nonNullableInstanceField#isSet})
         throw new _in::LateError::fieldADI("nonNullableInstanceField");
       this.{self::Class::_#Class#nonNullableInstanceField} = #t8;
@@ -51,7 +51,7 @@
   }
   get nullableInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#nullableInstanceField#isSet}) {
-      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads}{core::int} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1){(core::num) → core::int} in #t13) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} this.{self::Class::nullableInstanceField}{core::int?}.{core::Object::hashCode}{core::int} : 0;
+      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int} this.{self::Class::nullableInstanceField}.{core::Object::hashCode} : 0;
       if(this.{self::Class::_#Class#nullableInstanceField#isSet})
         throw new _in::LateError::fieldADI("nullableInstanceField");
       this.{self::Class::_#Class#nullableInstanceField} = #t12;
@@ -68,7 +68,7 @@
 static field core::bool _#nullableTopLevelField#isSet = false;
 static get nonNullableTopLevelField() → core::int {
   if(!self::_#nonNullableTopLevelField#isSet) {
-    final core::int #t15 = (let final core::int #t16 = self::nonNullableTopLevelFieldReads in let final core::int #t17 = self::nonNullableTopLevelFieldReads = #t16.{core::num::+}(1){(core::num) → core::int} in #t16) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nonNullableTopLevelField.{core::num::+}(1){(core::num) → core::int} : 0;
+    final core::int #t15 = (let final core::int #t16 = self::nonNullableTopLevelFieldReads in let final core::int #t17 = self::nonNullableTopLevelFieldReads = #t16.{core::num::+}(1) in #t16).{core::num::==}(0) ?{core::int} self::nonNullableTopLevelField.{core::num::+}(1) : 0;
     if(self::_#nonNullableTopLevelField#isSet)
       throw new _in::LateError::fieldADI("nonNullableTopLevelField");
     self::_#nonNullableTopLevelField = #t15;
@@ -78,7 +78,7 @@
 }
 static get nullableTopLevelField() → core::int? {
   if(!self::_#nullableTopLevelField#isSet) {
-    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1){(core::num) → core::int} in #t20) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nullableTopLevelField.{core::Object::hashCode}{core::int} : 0;
+    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int} self::nullableTopLevelField.{core::Object::hashCode} : 0;
     if(self::_#nullableTopLevelField#isSet)
       throw new _in::LateError::fieldADI("nullableTopLevelField");
     self::_#nullableTopLevelField = #t19;
@@ -91,13 +91,13 @@
   self::throws(() → core::int? => self::nullableTopLevelField, "Read nullableTopLevelField");
   self::throws(() → core::int => self::Class::nonNullableStaticField, "Read nonNullableStaticField");
   self::throws(() → core::int? => self::Class::nullableStaticField, "Read nullableStaticField");
-  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}{core::int}, "Read nonNullableInstanceField");
-  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}{core::int?}, "Read nullableInstanceField");
+  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}, "Read nonNullableInstanceField");
+  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}, "Read nullableInstanceField");
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.expect
index db151cd..74f12ef 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.expect
@@ -21,10 +21,10 @@
     : super core::Object::•()
     ;
   static get nonNullableStaticField() → core::int
-    return let final core::int? #t1 = self::Class::_#nonNullableStaticField in #t1 == null ?{core::int} let final core::int #t2 = (let final core::int #t3 = self::Class::nonNullableStaticFieldReads in let final core::int #t4 = self::Class::nonNullableStaticFieldReads = #t3.{core::num::+}(1){(core::num) → core::int} in #t3) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int*} self::Class::nonNullableStaticField : ini::computeInitialValue() in self::Class::_#nonNullableStaticField == null ?{core::int} self::Class::_#nonNullableStaticField = #t2 : throw new _in::LateError::fieldADI("nonNullableStaticField") : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#nonNullableStaticField in #t1.==(null) ?{core::int} let final core::int #t2 = (let final core::int #t3 = self::Class::nonNullableStaticFieldReads in let final core::int #t4 = self::Class::nonNullableStaticFieldReads = #t3.{core::num::+}(1) in #t3).{core::num::==}(0) ?{core::int*} self::Class::nonNullableStaticField : ini::computeInitialValue() in self::Class::_#nonNullableStaticField.==(null) ?{core::int} self::Class::_#nonNullableStaticField = #t2 : throw new _in::LateError::fieldADI("nonNullableStaticField") : #t1{core::int};
   static get nullableStaticField() → core::int? {
     if(!self::Class::_#nullableStaticField#isSet) {
-      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1){(core::num) → core::int} in #t6) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int?} self::Class::nullableStaticField : ini::computeInitialValue();
+      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int?} self::Class::nullableStaticField : ini::computeInitialValue();
       if(self::Class::_#nullableStaticField#isSet)
         throw new _in::LateError::fieldADI("nullableStaticField");
       self::Class::_#nullableStaticField = #t5;
@@ -33,10 +33,10 @@
     return self::Class::_#nullableStaticField;
   }
   get nonNullableInstanceField() → core::int
-    return let final core::int? #t8 = this.{self::Class::_#Class#nonNullableInstanceField} in #t8 == null ?{core::int} let final core::int #t9 = (let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads}{core::int} in let final core::int #t11 = this.{self::Class::nonNullableInstanceFieldReads} = #t10.{core::num::+}(1){(core::num) → core::int} in #t10) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int*} this.{self::Class::nonNullableInstanceField}{core::int} : ini::computeInitialValue() in this.{self::Class::_#Class#nonNullableInstanceField} == null ?{core::int} this.{self::Class::_#Class#nonNullableInstanceField} = #t9 : throw new _in::LateError::fieldADI("nonNullableInstanceField") : #t8{core::int};
+    return let final core::int? #t8 = this.{self::Class::_#Class#nonNullableInstanceField} in #t8.==(null) ?{core::int} let final core::int #t9 = (let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} in let final core::int #t11 = this.{self::Class::nonNullableInstanceFieldReads} = #t10.{core::num::+}(1) in #t10).{core::num::==}(0) ?{core::int*} this.{self::Class::nonNullableInstanceField} : ini::computeInitialValue() in this.{self::Class::_#Class#nonNullableInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#nonNullableInstanceField} = #t9 : throw new _in::LateError::fieldADI("nonNullableInstanceField") : #t8{core::int};
   get nullableInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#nullableInstanceField#isSet}) {
-      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads}{core::int} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1){(core::num) → core::int} in #t13) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int?} this.{self::Class::nullableInstanceField}{core::int?} : ini::computeInitialValue();
+      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int?} this.{self::Class::nullableInstanceField} : ini::computeInitialValue();
       if(this.{self::Class::_#Class#nullableInstanceField#isSet})
         throw new _in::LateError::fieldADI("nullableInstanceField");
       this.{self::Class::_#Class#nullableInstanceField} = #t12;
@@ -51,10 +51,10 @@
 static field core::int? _#nullableTopLevelField = null;
 static field core::bool _#nullableTopLevelField#isSet = false;
 static get nonNullableTopLevelField() → core::int
-  return let final core::int? #t15 = self::_#nonNullableTopLevelField in #t15 == null ?{core::int} let final core::int #t16 = (let final core::int #t17 = self::nonNullableTopLevelFieldReads in let final core::int #t18 = self::nonNullableTopLevelFieldReads = #t17.{core::num::+}(1){(core::num) → core::int} in #t17) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int*} self::nonNullableTopLevelField : ini::computeInitialValue() in self::_#nonNullableTopLevelField == null ?{core::int} self::_#nonNullableTopLevelField = #t16 : throw new _in::LateError::fieldADI("nonNullableTopLevelField") : #t15{core::int};
+  return let final core::int? #t15 = self::_#nonNullableTopLevelField in #t15.==(null) ?{core::int} let final core::int #t16 = (let final core::int #t17 = self::nonNullableTopLevelFieldReads in let final core::int #t18 = self::nonNullableTopLevelFieldReads = #t17.{core::num::+}(1) in #t17).{core::num::==}(0) ?{core::int*} self::nonNullableTopLevelField : ini::computeInitialValue() in self::_#nonNullableTopLevelField.==(null) ?{core::int} self::_#nonNullableTopLevelField = #t16 : throw new _in::LateError::fieldADI("nonNullableTopLevelField") : #t15{core::int};
 static get nullableTopLevelField() → core::int? {
   if(!self::_#nullableTopLevelField#isSet) {
-    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1){(core::num) → core::int} in #t20) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int?} self::nullableTopLevelField : ini::computeInitialValue();
+    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int?} self::nullableTopLevelField : ini::computeInitialValue();
     if(self::_#nullableTopLevelField#isSet)
       throw new _in::LateError::fieldADI("nullableTopLevelField");
     self::_#nullableTopLevelField = #t19;
@@ -67,13 +67,13 @@
   self::throws(() → core::int? => self::nullableTopLevelField, "Read nullableTopLevelField");
   self::throws(() → core::int => self::Class::nonNullableStaticField, "Read nonNullableStaticField");
   self::throws(() → core::int? => self::Class::nullableStaticField, "Read nullableStaticField");
-  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}{core::int}, "Read nonNullableInstanceField");
-  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}{core::int?}, "Read nullableInstanceField");
+  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}, "Read nonNullableInstanceField");
+  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}, "Read nullableInstanceField");
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.transformed.expect
index db151cd..74f12ef 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.transformed.expect
@@ -21,10 +21,10 @@
     : super core::Object::•()
     ;
   static get nonNullableStaticField() → core::int
-    return let final core::int? #t1 = self::Class::_#nonNullableStaticField in #t1 == null ?{core::int} let final core::int #t2 = (let final core::int #t3 = self::Class::nonNullableStaticFieldReads in let final core::int #t4 = self::Class::nonNullableStaticFieldReads = #t3.{core::num::+}(1){(core::num) → core::int} in #t3) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int*} self::Class::nonNullableStaticField : ini::computeInitialValue() in self::Class::_#nonNullableStaticField == null ?{core::int} self::Class::_#nonNullableStaticField = #t2 : throw new _in::LateError::fieldADI("nonNullableStaticField") : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#nonNullableStaticField in #t1.==(null) ?{core::int} let final core::int #t2 = (let final core::int #t3 = self::Class::nonNullableStaticFieldReads in let final core::int #t4 = self::Class::nonNullableStaticFieldReads = #t3.{core::num::+}(1) in #t3).{core::num::==}(0) ?{core::int*} self::Class::nonNullableStaticField : ini::computeInitialValue() in self::Class::_#nonNullableStaticField.==(null) ?{core::int} self::Class::_#nonNullableStaticField = #t2 : throw new _in::LateError::fieldADI("nonNullableStaticField") : #t1{core::int};
   static get nullableStaticField() → core::int? {
     if(!self::Class::_#nullableStaticField#isSet) {
-      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1){(core::num) → core::int} in #t6) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int?} self::Class::nullableStaticField : ini::computeInitialValue();
+      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int?} self::Class::nullableStaticField : ini::computeInitialValue();
       if(self::Class::_#nullableStaticField#isSet)
         throw new _in::LateError::fieldADI("nullableStaticField");
       self::Class::_#nullableStaticField = #t5;
@@ -33,10 +33,10 @@
     return self::Class::_#nullableStaticField;
   }
   get nonNullableInstanceField() → core::int
-    return let final core::int? #t8 = this.{self::Class::_#Class#nonNullableInstanceField} in #t8 == null ?{core::int} let final core::int #t9 = (let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads}{core::int} in let final core::int #t11 = this.{self::Class::nonNullableInstanceFieldReads} = #t10.{core::num::+}(1){(core::num) → core::int} in #t10) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int*} this.{self::Class::nonNullableInstanceField}{core::int} : ini::computeInitialValue() in this.{self::Class::_#Class#nonNullableInstanceField} == null ?{core::int} this.{self::Class::_#Class#nonNullableInstanceField} = #t9 : throw new _in::LateError::fieldADI("nonNullableInstanceField") : #t8{core::int};
+    return let final core::int? #t8 = this.{self::Class::_#Class#nonNullableInstanceField} in #t8.==(null) ?{core::int} let final core::int #t9 = (let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} in let final core::int #t11 = this.{self::Class::nonNullableInstanceFieldReads} = #t10.{core::num::+}(1) in #t10).{core::num::==}(0) ?{core::int*} this.{self::Class::nonNullableInstanceField} : ini::computeInitialValue() in this.{self::Class::_#Class#nonNullableInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#nonNullableInstanceField} = #t9 : throw new _in::LateError::fieldADI("nonNullableInstanceField") : #t8{core::int};
   get nullableInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#nullableInstanceField#isSet}) {
-      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads}{core::int} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1){(core::num) → core::int} in #t13) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int?} this.{self::Class::nullableInstanceField}{core::int?} : ini::computeInitialValue();
+      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int?} this.{self::Class::nullableInstanceField} : ini::computeInitialValue();
       if(this.{self::Class::_#Class#nullableInstanceField#isSet})
         throw new _in::LateError::fieldADI("nullableInstanceField");
       this.{self::Class::_#Class#nullableInstanceField} = #t12;
@@ -51,10 +51,10 @@
 static field core::int? _#nullableTopLevelField = null;
 static field core::bool _#nullableTopLevelField#isSet = false;
 static get nonNullableTopLevelField() → core::int
-  return let final core::int? #t15 = self::_#nonNullableTopLevelField in #t15 == null ?{core::int} let final core::int #t16 = (let final core::int #t17 = self::nonNullableTopLevelFieldReads in let final core::int #t18 = self::nonNullableTopLevelFieldReads = #t17.{core::num::+}(1){(core::num) → core::int} in #t17) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int*} self::nonNullableTopLevelField : ini::computeInitialValue() in self::_#nonNullableTopLevelField == null ?{core::int} self::_#nonNullableTopLevelField = #t16 : throw new _in::LateError::fieldADI("nonNullableTopLevelField") : #t15{core::int};
+  return let final core::int? #t15 = self::_#nonNullableTopLevelField in #t15.==(null) ?{core::int} let final core::int #t16 = (let final core::int #t17 = self::nonNullableTopLevelFieldReads in let final core::int #t18 = self::nonNullableTopLevelFieldReads = #t17.{core::num::+}(1) in #t17).{core::num::==}(0) ?{core::int*} self::nonNullableTopLevelField : ini::computeInitialValue() in self::_#nonNullableTopLevelField.==(null) ?{core::int} self::_#nonNullableTopLevelField = #t16 : throw new _in::LateError::fieldADI("nonNullableTopLevelField") : #t15{core::int};
 static get nullableTopLevelField() → core::int? {
   if(!self::_#nullableTopLevelField#isSet) {
-    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1){(core::num) → core::int} in #t20) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int?} self::nullableTopLevelField : ini::computeInitialValue();
+    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int?} self::nullableTopLevelField : ini::computeInitialValue();
     if(self::_#nullableTopLevelField#isSet)
       throw new _in::LateError::fieldADI("nullableTopLevelField");
     self::_#nullableTopLevelField = #t19;
@@ -67,13 +67,13 @@
   self::throws(() → core::int? => self::nullableTopLevelField, "Read nullableTopLevelField");
   self::throws(() → core::int => self::Class::nonNullableStaticField, "Read nonNullableStaticField");
   self::throws(() → core::int? => self::Class::nullableStaticField, "Read nullableStaticField");
-  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}{core::int}, "Read nonNullableInstanceField");
-  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}{core::int?}, "Read nullableInstanceField");
+  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}, "Read nonNullableInstanceField");
+  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}, "Read nullableInstanceField");
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.expect
index 648d9da..c0f506a 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.expect
@@ -24,7 +24,7 @@
     ;
   static get nonNullableStaticField() → core::int {
     if(!self::Class::_#nonNullableStaticField#isSet) {
-      final core::int #t1 = (let final core::int #t2 = self::Class::nonNullableStaticFieldReads in let final core::int #t3 = self::Class::nonNullableStaticFieldReads = #t2.{core::num::+}(1){(core::num) → core::int} in #t2) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int*} self::Class::nonNullableStaticField : ini::computeInitialValue();
+      final core::int #t1 = (let final core::int #t2 = self::Class::nonNullableStaticFieldReads in let final core::int #t3 = self::Class::nonNullableStaticFieldReads = #t2.{core::num::+}(1) in #t2).{core::num::==}(0) ?{core::int*} self::Class::nonNullableStaticField : ini::computeInitialValue();
       if(self::Class::_#nonNullableStaticField#isSet)
         throw new _in::LateError::fieldADI("nonNullableStaticField");
       self::Class::_#nonNullableStaticField = #t1;
@@ -34,7 +34,7 @@
   }
   static get nullableStaticField() → core::int? {
     if(!self::Class::_#nullableStaticField#isSet) {
-      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1){(core::num) → core::int} in #t6) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int?} self::Class::nullableStaticField : ini::computeInitialValue();
+      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int?} self::Class::nullableStaticField : ini::computeInitialValue();
       if(self::Class::_#nullableStaticField#isSet)
         throw new _in::LateError::fieldADI("nullableStaticField");
       self::Class::_#nullableStaticField = #t5;
@@ -44,7 +44,7 @@
   }
   get nonNullableInstanceField() → core::int {
     if(!this.{self::Class::_#Class#nonNullableInstanceField#isSet}) {
-      final core::int #t8 = (let final core::int #t9 = this.{self::Class::nonNullableInstanceFieldReads}{core::int} in let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} = #t9.{core::num::+}(1){(core::num) → core::int} in #t9) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int*} this.{self::Class::nonNullableInstanceField}{core::int} : ini::computeInitialValue();
+      final core::int #t8 = (let final core::int #t9 = this.{self::Class::nonNullableInstanceFieldReads} in let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} = #t9.{core::num::+}(1) in #t9).{core::num::==}(0) ?{core::int*} this.{self::Class::nonNullableInstanceField} : ini::computeInitialValue();
       if(this.{self::Class::_#Class#nonNullableInstanceField#isSet})
         throw new _in::LateError::fieldADI("nonNullableInstanceField");
       this.{self::Class::_#Class#nonNullableInstanceField} = #t8;
@@ -54,7 +54,7 @@
   }
   get nullableInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#nullableInstanceField#isSet}) {
-      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads}{core::int} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1){(core::num) → core::int} in #t13) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int?} this.{self::Class::nullableInstanceField}{core::int?} : ini::computeInitialValue();
+      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int?} this.{self::Class::nullableInstanceField} : ini::computeInitialValue();
       if(this.{self::Class::_#Class#nullableInstanceField#isSet})
         throw new _in::LateError::fieldADI("nullableInstanceField");
       this.{self::Class::_#Class#nullableInstanceField} = #t12;
@@ -71,7 +71,7 @@
 static field core::bool _#nullableTopLevelField#isSet = false;
 static get nonNullableTopLevelField() → core::int {
   if(!self::_#nonNullableTopLevelField#isSet) {
-    final core::int #t15 = (let final core::int #t16 = self::nonNullableTopLevelFieldReads in let final core::int #t17 = self::nonNullableTopLevelFieldReads = #t16.{core::num::+}(1){(core::num) → core::int} in #t16) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int*} self::nonNullableTopLevelField : ini::computeInitialValue();
+    final core::int #t15 = (let final core::int #t16 = self::nonNullableTopLevelFieldReads in let final core::int #t17 = self::nonNullableTopLevelFieldReads = #t16.{core::num::+}(1) in #t16).{core::num::==}(0) ?{core::int*} self::nonNullableTopLevelField : ini::computeInitialValue();
     if(self::_#nonNullableTopLevelField#isSet)
       throw new _in::LateError::fieldADI("nonNullableTopLevelField");
     self::_#nonNullableTopLevelField = #t15;
@@ -81,7 +81,7 @@
 }
 static get nullableTopLevelField() → core::int? {
   if(!self::_#nullableTopLevelField#isSet) {
-    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1){(core::num) → core::int} in #t20) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int?} self::nullableTopLevelField : ini::computeInitialValue();
+    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int?} self::nullableTopLevelField : ini::computeInitialValue();
     if(self::_#nullableTopLevelField#isSet)
       throw new _in::LateError::fieldADI("nullableTopLevelField");
     self::_#nullableTopLevelField = #t19;
@@ -94,13 +94,13 @@
   self::throws(() → core::int? => self::nullableTopLevelField, "Read nullableTopLevelField");
   self::throws(() → core::int => self::Class::nonNullableStaticField, "Read nonNullableStaticField");
   self::throws(() → core::int? => self::Class::nullableStaticField, "Read nullableStaticField");
-  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}{core::int}, "Read nonNullableInstanceField");
-  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}{core::int?}, "Read nullableInstanceField");
+  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}, "Read nonNullableInstanceField");
+  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}, "Read nullableInstanceField");
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.transformed.expect
index 648d9da..c0f506a 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
     ;
   static get nonNullableStaticField() → core::int {
     if(!self::Class::_#nonNullableStaticField#isSet) {
-      final core::int #t1 = (let final core::int #t2 = self::Class::nonNullableStaticFieldReads in let final core::int #t3 = self::Class::nonNullableStaticFieldReads = #t2.{core::num::+}(1){(core::num) → core::int} in #t2) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int*} self::Class::nonNullableStaticField : ini::computeInitialValue();
+      final core::int #t1 = (let final core::int #t2 = self::Class::nonNullableStaticFieldReads in let final core::int #t3 = self::Class::nonNullableStaticFieldReads = #t2.{core::num::+}(1) in #t2).{core::num::==}(0) ?{core::int*} self::Class::nonNullableStaticField : ini::computeInitialValue();
       if(self::Class::_#nonNullableStaticField#isSet)
         throw new _in::LateError::fieldADI("nonNullableStaticField");
       self::Class::_#nonNullableStaticField = #t1;
@@ -34,7 +34,7 @@
   }
   static get nullableStaticField() → core::int? {
     if(!self::Class::_#nullableStaticField#isSet) {
-      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1){(core::num) → core::int} in #t6) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int?} self::Class::nullableStaticField : ini::computeInitialValue();
+      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int?} self::Class::nullableStaticField : ini::computeInitialValue();
       if(self::Class::_#nullableStaticField#isSet)
         throw new _in::LateError::fieldADI("nullableStaticField");
       self::Class::_#nullableStaticField = #t5;
@@ -44,7 +44,7 @@
   }
   get nonNullableInstanceField() → core::int {
     if(!this.{self::Class::_#Class#nonNullableInstanceField#isSet}) {
-      final core::int #t8 = (let final core::int #t9 = this.{self::Class::nonNullableInstanceFieldReads}{core::int} in let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} = #t9.{core::num::+}(1){(core::num) → core::int} in #t9) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int*} this.{self::Class::nonNullableInstanceField}{core::int} : ini::computeInitialValue();
+      final core::int #t8 = (let final core::int #t9 = this.{self::Class::nonNullableInstanceFieldReads} in let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} = #t9.{core::num::+}(1) in #t9).{core::num::==}(0) ?{core::int*} this.{self::Class::nonNullableInstanceField} : ini::computeInitialValue();
       if(this.{self::Class::_#Class#nonNullableInstanceField#isSet})
         throw new _in::LateError::fieldADI("nonNullableInstanceField");
       this.{self::Class::_#Class#nonNullableInstanceField} = #t8;
@@ -54,7 +54,7 @@
   }
   get nullableInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#nullableInstanceField#isSet}) {
-      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads}{core::int} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1){(core::num) → core::int} in #t13) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int?} this.{self::Class::nullableInstanceField}{core::int?} : ini::computeInitialValue();
+      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int?} this.{self::Class::nullableInstanceField} : ini::computeInitialValue();
       if(this.{self::Class::_#Class#nullableInstanceField#isSet})
         throw new _in::LateError::fieldADI("nullableInstanceField");
       this.{self::Class::_#Class#nullableInstanceField} = #t12;
@@ -71,7 +71,7 @@
 static field core::bool _#nullableTopLevelField#isSet = false;
 static get nonNullableTopLevelField() → core::int {
   if(!self::_#nonNullableTopLevelField#isSet) {
-    final core::int #t15 = (let final core::int #t16 = self::nonNullableTopLevelFieldReads in let final core::int #t17 = self::nonNullableTopLevelFieldReads = #t16.{core::num::+}(1){(core::num) → core::int} in #t16) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int*} self::nonNullableTopLevelField : ini::computeInitialValue();
+    final core::int #t15 = (let final core::int #t16 = self::nonNullableTopLevelFieldReads in let final core::int #t17 = self::nonNullableTopLevelFieldReads = #t16.{core::num::+}(1) in #t16).{core::num::==}(0) ?{core::int*} self::nonNullableTopLevelField : ini::computeInitialValue();
     if(self::_#nonNullableTopLevelField#isSet)
       throw new _in::LateError::fieldADI("nonNullableTopLevelField");
     self::_#nonNullableTopLevelField = #t15;
@@ -81,7 +81,7 @@
 }
 static get nullableTopLevelField() → core::int? {
   if(!self::_#nullableTopLevelField#isSet) {
-    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1){(core::num) → core::int} in #t20) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int?} self::nullableTopLevelField : ini::computeInitialValue();
+    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int?} self::nullableTopLevelField : ini::computeInitialValue();
     if(self::_#nullableTopLevelField#isSet)
       throw new _in::LateError::fieldADI("nullableTopLevelField");
     self::_#nullableTopLevelField = #t19;
@@ -94,13 +94,13 @@
   self::throws(() → core::int? => self::nullableTopLevelField, "Read nullableTopLevelField");
   self::throws(() → core::int => self::Class::nonNullableStaticField, "Read nonNullableStaticField");
   self::throws(() → core::int? => self::Class::nullableStaticField, "Read nullableStaticField");
-  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}{core::int}, "Read nonNullableInstanceField");
-  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}{core::int?}, "Read nullableInstanceField");
+  self::throws(() → core::int => new self::Class::•().{self::Class::nonNullableInstanceField}, "Read nonNullableInstanceField");
+  self::throws(() → core::int? => new self::Class::•().{self::Class::nullableInstanceField}, "Read nullableInstanceField");
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.strong.expect b/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.strong.expect
index 7fabb2c..3ed20f7 100644
--- a/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.strong.expect
@@ -22,7 +22,7 @@
     : self2::Class::_#Class#foo = foo, super core::Object::•()
     ;
   get /* from org-dartlang-testcase:///patch_lib.dart */ foo() → core::int
-    return let final core::int? #t1 = this.{self2::Class::_#Class#foo} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("foo") : #t1{core::int};
+    return let final core::int? #t1 = this.{self2::Class::_#Class#foo} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("foo") : #t1{core::int};
   set /* from org-dartlang-testcase:///patch_lib.dart */ foo(core::int #t2) → void
     this.{self2::Class::_#Class#foo} = #t2;
 }
diff --git a/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.strong.transformed.expect
index 7fabb2c..3ed20f7 100644
--- a/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/injected_late_field_checks/main.dart.strong.transformed.expect
@@ -22,7 +22,7 @@
     : self2::Class::_#Class#foo = foo, super core::Object::•()
     ;
   get /* from org-dartlang-testcase:///patch_lib.dart */ foo() → core::int
-    return let final core::int? #t1 = this.{self2::Class::_#Class#foo} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("foo") : #t1{core::int};
+    return let final core::int? #t1 = this.{self2::Class::_#Class#foo} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("foo") : #t1{core::int};
   set /* from org-dartlang-testcase:///patch_lib.dart */ foo(core::int #t2) → void
     this.{self2::Class::_#Class#foo} = #t2;
 }
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.strong.expect
index 28c123d..0cfc574 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.strong.expect
@@ -11,13 +11,13 @@
     : self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int field = #C1]) → self::Class
     : self::Class::_#Class#field = field, super core::Object::•()
     ;
   get field() → core::int
-    return let final core::int? #t1 = this.{self::Class::_#Class#field} in #t1 == null ?{core::int} this.{self::Class::_#Class#field} = 10 : #t1{core::int};
+    return let final core::int? #t1 = this.{self::Class::_#Class#field} in #t1.==(null) ?{core::int} this.{self::Class::_#Class#field} = 10 : #t1{core::int};
   set field(core::int #t2) → void
     this.{self::Class::_#Class#field} = #t2;
 }
@@ -37,54 +37,54 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.strong.transformed.expect
index 28c123d..0cfc574 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.strong.transformed.expect
@@ -11,13 +11,13 @@
     : self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int field = #C1]) → self::Class
     : self::Class::_#Class#field = field, super core::Object::•()
     ;
   get field() → core::int
-    return let final core::int? #t1 = this.{self::Class::_#Class#field} in #t1 == null ?{core::int} this.{self::Class::_#Class#field} = 10 : #t1{core::int};
+    return let final core::int? #t1 = this.{self::Class::_#Class#field} in #t1.==(null) ?{core::int} this.{self::Class::_#Class#field} = 10 : #t1{core::int};
   set field(core::int #t2) → void
     this.{self::Class::_#Class#field} = #t2;
 }
@@ -37,54 +37,54 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.weak.expect
index 2d027b7..9dc836f 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.weak.expect
@@ -12,7 +12,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -45,54 +45,54 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.weak.transformed.expect
index 2d027b7..9dc836f 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -45,54 +45,54 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.expect
index 000fb2c..6e465d7 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.expect
@@ -12,13 +12,13 @@
     : self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int field = #C1]) → self::Class
     : self::Class::_#Class#field = field, super core::Object::•()
     ;
   get field() → core::int
-    return let final core::int? #t1 = this.{self::Class::_#Class#field} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("field") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::Class::_#Class#field} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("field") : #t1{core::int};
   set field(core::int #t2) → void
     this.{self::Class::_#Class#field} = #t2;
 }
@@ -38,60 +38,60 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.transformed.expect
index 000fb2c..6e465d7 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.transformed.expect
@@ -12,13 +12,13 @@
     : self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int field = #C1]) → self::Class
     : self::Class::_#Class#field = field, super core::Object::•()
     ;
   get field() → core::int
-    return let final core::int? #t1 = this.{self::Class::_#Class#field} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("field") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::Class::_#Class#field} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("field") : #t1{core::int};
   set field(core::int #t2) → void
     this.{self::Class::_#Class#field} = #t2;
 }
@@ -38,60 +38,60 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.expect
index f5cd606..5c9ecce 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.expect
@@ -13,7 +13,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -41,60 +41,60 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.transformed.expect
index f5cd606..5c9ecce 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -41,60 +41,60 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.expect
index ce2bf76..c480ab9 100644
--- a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.expect
@@ -12,15 +12,15 @@
     : self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int field = #C1]) → self::Class
     : self::Class::_#Class#field = field, super core::Object::•()
     ;
   get field() → core::int
-    return let final core::int? #t1 = this.{self::Class::_#Class#field} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("field") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::Class::_#Class#field} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("field") : #t1{core::int};
   set field(core::int #t2) → void
-    if(this.{self::Class::_#Class#field} == null)
+    if(this.{self::Class::_#Class#field}.==(null))
       this.{self::Class::_#Class#field} = #t2;
     else
       throw new _in::LateError::fieldAI("field");
@@ -41,48 +41,48 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int});
+  self::expect(42, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Class c6 = new self::Class::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class1.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class1.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int});
+  self::expect(87, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 88, "Write value to initialized Class.field");
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Subclass c6 = new self::Subclass::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method main() → dynamic {
@@ -90,13 +90,13 @@
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.transformed.expect
index ce2bf76..c480ab9 100644
--- a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.transformed.expect
@@ -12,15 +12,15 @@
     : self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int field = #C1]) → self::Class
     : self::Class::_#Class#field = field, super core::Object::•()
     ;
   get field() → core::int
-    return let final core::int? #t1 = this.{self::Class::_#Class#field} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("field") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::Class::_#Class#field} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("field") : #t1{core::int};
   set field(core::int #t2) → void
-    if(this.{self::Class::_#Class#field} == null)
+    if(this.{self::Class::_#Class#field}.==(null))
       this.{self::Class::_#Class#field} = #t2;
     else
       throw new _in::LateError::fieldAI("field");
@@ -41,48 +41,48 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int});
+  self::expect(42, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Class c6 = new self::Class::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class1.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class1.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int});
+  self::expect(87, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 88, "Write value to initialized Class.field");
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Subclass c6 = new self::Subclass::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method main() → dynamic {
@@ -90,13 +90,13 @@
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.expect
index b126dde..2f21d23 100644
--- a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.expect
@@ -13,7 +13,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -44,48 +44,48 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int});
+  self::expect(42, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Class c6 = new self::Class::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class1.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class1.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int});
+  self::expect(87, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 88, "Write value to initialized Class.field");
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Subclass c6 = new self::Subclass::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method main() → dynamic {
@@ -93,13 +93,13 @@
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.transformed.expect
index b126dde..2f21d23 100644
--- a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -44,48 +44,48 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int});
+  self::expect(42, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Class c6 = new self::Class::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int => c1.{self::Class::field}{core::int}, "Read value from uninitialized Class1.field");
+  self::throws(() → core::int => c1.{self::Class::field}, "Read value from uninitialized Class1.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int});
+  self::expect(87, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 88, "Write value to initialized Class.field");
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Subclass c6 = new self::Subclass::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method main() → dynamic {
@@ -93,13 +93,13 @@
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.strong.expect
index 93b440f..7895ba5 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.strong.expect
@@ -12,7 +12,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int? field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -47,54 +47,54 @@
   return 10;
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int?});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int?});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int?});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int?});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int?});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int?});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.strong.transformed.expect
index 93b440f..7895ba5 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int? field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -47,54 +47,54 @@
   return 10;
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int?});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int?});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int?});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int?});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int?});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int?});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.weak.expect
index 93b440f..7895ba5 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.weak.expect
@@ -12,7 +12,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int? field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -47,54 +47,54 @@
   return 10;
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int?});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int?});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int?});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int?});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int?});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int?});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.weak.transformed.expect
index 93b440f..7895ba5 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int? field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -47,54 +47,54 @@
   return 10;
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int?});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int?});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int?});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::expect(10, c1.{self::Class::field}{core::int?});
+  self::expect(10, c1.{self::Class::field});
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int?});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int?});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.expect
index c80149e..1692057 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.expect
@@ -13,7 +13,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int? field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -41,60 +41,60 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int?});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int?});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int?});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int?});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.transformed.expect
index c80149e..1692057 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.transformed.expect
@@ -13,7 +13,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int? field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -41,60 +41,60 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int?});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int?});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int?});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int?});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.expect
index c80149e..1692057 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.expect
@@ -13,7 +13,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int? field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -41,60 +41,60 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int?});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int?});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int?});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int?});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.transformed.expect
index c80149e..1692057 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int? field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -41,60 +41,60 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int?});
+  self::expect(42, c4.{self::Class::field});
   c4.{self::Class::field} = 43;
-  self::expect(43, c4.{self::Class::field}{core::int?});
+  self::expect(43, c4.{self::Class::field});
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   c2.{self::Class::field} = 43;
-  self::expect(43, c2.{self::Class::field}{core::int?});
+  self::expect(43, c2.{self::Class::field});
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   c3.{self::Class::field} = 89;
-  self::expect(89, c3.{self::Class::field}{core::int?});
+  self::expect(89, c3.{self::Class::field});
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int?});
+  self::expect(87, c4.{self::Class::field});
   c4.{self::Class::field} = 88;
-  self::expect(88, c4.{self::Class::field}{core::int?});
+  self::expect(88, c4.{self::Class::field});
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   c5.{self::Class::field} = 124;
-  self::expect(124, c5.{self::Class::field}{core::int?});
+  self::expect(124, c5.{self::Class::field});
 }
 static method main() → dynamic {
   self::test1();
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.expect
index 19ea8be..e4e4f30 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.expect
@@ -13,7 +13,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int? field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -44,48 +44,48 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int?});
+  self::expect(42, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Class c6 = new self::Class::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int?});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class1.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class1.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int?});
+  self::expect(87, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 88, "Write value to initialized Class.field");
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Subclass c6 = new self::Subclass::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int?});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method main() → dynamic {
@@ -93,13 +93,13 @@
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.transformed.expect
index 19ea8be..e4e4f30 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.transformed.expect
@@ -13,7 +13,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int? field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -44,48 +44,48 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int?});
+  self::expect(42, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Class c6 = new self::Class::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int?});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class1.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class1.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int?});
+  self::expect(87, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 88, "Write value to initialized Class.field");
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Subclass c6 = new self::Subclass::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int?});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method main() → dynamic {
@@ -93,13 +93,13 @@
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.expect
index 19ea8be..e4e4f30 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.expect
@@ -13,7 +13,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int? field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -44,48 +44,48 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int?});
+  self::expect(42, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Class c6 = new self::Class::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int?});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class1.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class1.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int?});
+  self::expect(87, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 88, "Write value to initialized Class.field");
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Subclass c6 = new self::Subclass::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int?});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method main() → dynamic {
@@ -93,13 +93,13 @@
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.transformed.expect
index 19ea8be..e4e4f30 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
     ;
   constructor constructor3(core::int value) → self::Class
-    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•()
+    : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1), super core::Object::•()
     ;
   constructor constructor4([core::int? field = #C1]) → self::Class
     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•()
@@ -44,48 +44,48 @@
 }
 static method test1() → dynamic {
   self::Class c1 = new self::Class::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Class c2 = new self::Class::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c3 = new self::Class::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Class c4 = new self::Class::constructor4();
-  self::expect(42, c4.{self::Class::field}{core::int?});
+  self::expect(42, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Class c5 = new self::Class::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Class c6 = new self::Class::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int?});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method test2() → dynamic {
   self::Subclass c1 = new self::Subclass::constructor1();
-  self::throws(() → core::int? => c1.{self::Class::field}{core::int?}, "Read value from uninitialized Class1.field");
+  self::throws(() → core::int? => c1.{self::Class::field}, "Read value from uninitialized Class1.field");
   c1.{self::Class::field} = 16;
-  self::expect(16, c1.{self::Class::field}{core::int?});
+  self::expect(16, c1.{self::Class::field});
   self::throws(() → core::int => c1.{self::Class::field} = 17, "Write value to initialized Class.field");
   self::Subclass c2 = new self::Subclass::constructor2(42);
-  self::expect(42, c2.{self::Class::field}{core::int?});
+  self::expect(42, c2.{self::Class::field});
   self::throws(() → core::int => c2.{self::Class::field} = 43, "Write value to initialized Class.field");
   self::Subclass c3 = new self::Subclass::constructor3(87);
-  self::expect(88, c3.{self::Class::field}{core::int?});
+  self::expect(88, c3.{self::Class::field});
   self::throws(() → core::int => c3.{self::Class::field} = 89, "Write value to initialized Class.field");
   self::Subclass c4 = new self::Subclass::constructor4();
-  self::expect(87, c4.{self::Class::field}{core::int?});
+  self::expect(87, c4.{self::Class::field});
   self::throws(() → core::int => c4.{self::Class::field} = 88, "Write value to initialized Class.field");
   self::Subclass c5 = new self::Subclass::constructor4(123);
-  self::expect(123, c5.{self::Class::field}{core::int?});
+  self::expect(123, c5.{self::Class::field});
   self::throws(() → core::int => c5.{self::Class::field} = 124, "Write value to initialized Class.field");
   self::Subclass c6 = new self::Subclass::constructor1();
   c6.{self::Class::field} = 32;
-  self::expect(32, c6.{self::Class::field}{core::int?});
+  self::expect(32, c6.{self::Class::field});
   self::throws(() → core::int => c6.{self::Class::field} = 32, "Write value to initialized Class.field");
 }
 static method main() → dynamic {
@@ -93,13 +93,13 @@
   self::test2();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.expect
index fe10901..551b8f0 100644
--- a/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.expect
@@ -16,7 +16,7 @@
 import "dart:core" as core;
 
 static method error() → dynamic {
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print(i);
   }
   for (core::int i in <core::int>[]) {
diff --git a/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.transformed.expect
index 4aedf2e..9d0dbc9 100644
--- a/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.transformed.expect
@@ -16,7 +16,7 @@
 import "dart:core" as core;
 
 static method error() → dynamic {
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print(i);
   }
   {
diff --git a/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.expect b/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.expect
index fe10901..551b8f0 100644
--- a/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.expect
@@ -16,7 +16,7 @@
 import "dart:core" as core;
 
 static method error() → dynamic {
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print(i);
   }
   for (core::int i in <core::int>[]) {
diff --git a/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.transformed.expect
index 4aedf2e..9d0dbc9 100644
--- a/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
 import "dart:core" as core;
 
 static method error() → dynamic {
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print(i);
   }
   {
diff --git a/pkg/front_end/testcases/late_lowering/issue40373.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue40373.dart.strong.expect
index db187cb..b7c4bbf 100644
--- a/pkg/front_end/testcases/late_lowering/issue40373.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40373.dart.strong.expect
@@ -12,17 +12,17 @@
     : super core::Object::•()
     ;
   get p1() → core::num
-    return let final core::num? #t1 = this.{self::C::_#C#p1} in #t1 == null ?{core::num} this.{self::C::_#C#p1} = this.{self::C::pi}{core::num} : #t1{core::num};
+    return let final core::num? #t1 = this.{self::C::_#C#p1} in #t1.==(null) ?{core::num} this.{self::C::_#C#p1} = this.{self::C::pi} : #t1{core::num};
   set p1(core::num #t2) → void
     this.{self::C::_#C#p1} = #t2;
   get p2() → core::num
-    return let final core::num? #t3 = this.{self::C::_#C#p2} in #t3 == null ?{core::num} let final core::num #t4 = this.{self::C::pi}{core::num} in this.{self::C::_#C#p2} == null ?{core::num} this.{self::C::_#C#p2} = #t4 : throw new _in::LateError::fieldADI("p2") : #t3{core::num};
+    return let final core::num? #t3 = this.{self::C::_#C#p2} in #t3.==(null) ?{core::num} let final core::num #t4 = this.{self::C::pi} in this.{self::C::_#C#p2}.==(null) ?{core::num} this.{self::C::_#C#p2} = #t4 : throw new _in::LateError::fieldADI("p2") : #t3{core::num};
 }
 static method main() → dynamic {
-  self::expect(3.14, new self::C::•().{self::C::p1}{core::num});
-  self::expect(3.14, new self::C::•().{self::C::p2}{core::num});
+  self::expect(3.14, new self::C::•().{self::C::p1});
+  self::expect(3.14, new self::C::•().{self::C::p2});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40373.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40373.dart.strong.transformed.expect
index db187cb..b7c4bbf 100644
--- a/pkg/front_end/testcases/late_lowering/issue40373.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40373.dart.strong.transformed.expect
@@ -12,17 +12,17 @@
     : super core::Object::•()
     ;
   get p1() → core::num
-    return let final core::num? #t1 = this.{self::C::_#C#p1} in #t1 == null ?{core::num} this.{self::C::_#C#p1} = this.{self::C::pi}{core::num} : #t1{core::num};
+    return let final core::num? #t1 = this.{self::C::_#C#p1} in #t1.==(null) ?{core::num} this.{self::C::_#C#p1} = this.{self::C::pi} : #t1{core::num};
   set p1(core::num #t2) → void
     this.{self::C::_#C#p1} = #t2;
   get p2() → core::num
-    return let final core::num? #t3 = this.{self::C::_#C#p2} in #t3 == null ?{core::num} let final core::num #t4 = this.{self::C::pi}{core::num} in this.{self::C::_#C#p2} == null ?{core::num} this.{self::C::_#C#p2} = #t4 : throw new _in::LateError::fieldADI("p2") : #t3{core::num};
+    return let final core::num? #t3 = this.{self::C::_#C#p2} in #t3.==(null) ?{core::num} let final core::num #t4 = this.{self::C::pi} in this.{self::C::_#C#p2}.==(null) ?{core::num} this.{self::C::_#C#p2} = #t4 : throw new _in::LateError::fieldADI("p2") : #t3{core::num};
 }
 static method main() → dynamic {
-  self::expect(3.14, new self::C::•().{self::C::p1}{core::num});
-  self::expect(3.14, new self::C::•().{self::C::p2}{core::num});
+  self::expect(3.14, new self::C::•().{self::C::p1});
+  self::expect(3.14, new self::C::•().{self::C::p2});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40373.dart.weak.expect b/pkg/front_end/testcases/late_lowering/issue40373.dart.weak.expect
index 17f68d9..b9751eb 100644
--- a/pkg/front_end/testcases/late_lowering/issue40373.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40373.dart.weak.expect
@@ -14,7 +14,7 @@
     ;
   get p1() → core::num {
     if(!this.{self::C::_#C#p1#isSet}) {
-      this.{self::C::_#C#p1} = this.{self::C::pi}{core::num};
+      this.{self::C::_#C#p1} = this.{self::C::pi};
       this.{self::C::_#C#p1#isSet} = true;
     }
     return let final core::num? #t1 = this.{self::C::_#C#p1} in #t1{core::num};
@@ -25,7 +25,7 @@
   }
   get p2() → core::num {
     if(!this.{self::C::_#C#p2#isSet}) {
-      final core::num #t3 = this.{self::C::pi}{core::num};
+      final core::num #t3 = this.{self::C::pi};
       if(this.{self::C::_#C#p2#isSet})
         throw new _in::LateError::fieldADI("p2");
       this.{self::C::_#C#p2} = #t3;
@@ -35,10 +35,10 @@
   }
 }
 static method main() → dynamic {
-  self::expect(3.14, new self::C::•().{self::C::p1}{core::num});
-  self::expect(3.14, new self::C::•().{self::C::p2}{core::num});
+  self::expect(3.14, new self::C::•().{self::C::p1});
+  self::expect(3.14, new self::C::•().{self::C::p2});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40373.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40373.dart.weak.transformed.expect
index 17f68d9..b9751eb 100644
--- a/pkg/front_end/testcases/late_lowering/issue40373.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40373.dart.weak.transformed.expect
@@ -14,7 +14,7 @@
     ;
   get p1() → core::num {
     if(!this.{self::C::_#C#p1#isSet}) {
-      this.{self::C::_#C#p1} = this.{self::C::pi}{core::num};
+      this.{self::C::_#C#p1} = this.{self::C::pi};
       this.{self::C::_#C#p1#isSet} = true;
     }
     return let final core::num? #t1 = this.{self::C::_#C#p1} in #t1{core::num};
@@ -25,7 +25,7 @@
   }
   get p2() → core::num {
     if(!this.{self::C::_#C#p2#isSet}) {
-      final core::num #t3 = this.{self::C::pi}{core::num};
+      final core::num #t3 = this.{self::C::pi};
       if(this.{self::C::_#C#p2#isSet})
         throw new _in::LateError::fieldADI("p2");
       this.{self::C::_#C#p2} = #t3;
@@ -35,10 +35,10 @@
   }
 }
 static method main() → dynamic {
-  self::expect(3.14, new self::C::•().{self::C::p1}{core::num});
-  self::expect(3.14, new self::C::•().{self::C::p2}{core::num});
+  self::expect(3.14, new self::C::•().{self::C::p1});
+  self::expect(3.14, new self::C::•().{self::C::p2});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40373b.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue40373b.dart.strong.expect
index 747c21c..b788f31 100644
--- a/pkg/front_end/testcases/late_lowering/issue40373b.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40373b.dart.strong.expect
@@ -57,13 +57,13 @@
   self::C::s = "was";
   self::C c = new self::C::•();
   c.{self::C::v} = "here";
-  #l#set("Run, Forrest, run"){(dynamic) → dynamic};
+  #l#set.call("Run, Forrest, run");
   self::expect("Lily", self::g);
   self::expect("was", self::C::s);
-  self::expect("here", c.{self::C::v}{dynamic});
-  self::expect("Run, Forrest, run", #l#get(){() → dynamic});
+  self::expect("here", c.{self::C::v});
+  self::expect("Run, Forrest, run", #l#get.call());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40373b.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40373b.dart.strong.transformed.expect
index 747c21c..b788f31 100644
--- a/pkg/front_end/testcases/late_lowering/issue40373b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40373b.dart.strong.transformed.expect
@@ -57,13 +57,13 @@
   self::C::s = "was";
   self::C c = new self::C::•();
   c.{self::C::v} = "here";
-  #l#set("Run, Forrest, run"){(dynamic) → dynamic};
+  #l#set.call("Run, Forrest, run");
   self::expect("Lily", self::g);
   self::expect("was", self::C::s);
-  self::expect("here", c.{self::C::v}{dynamic});
-  self::expect("Run, Forrest, run", #l#get(){() → dynamic});
+  self::expect("here", c.{self::C::v});
+  self::expect("Run, Forrest, run", #l#get.call());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40373b.dart.weak.expect b/pkg/front_end/testcases/late_lowering/issue40373b.dart.weak.expect
index 747c21c..b788f31 100644
--- a/pkg/front_end/testcases/late_lowering/issue40373b.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40373b.dart.weak.expect
@@ -57,13 +57,13 @@
   self::C::s = "was";
   self::C c = new self::C::•();
   c.{self::C::v} = "here";
-  #l#set("Run, Forrest, run"){(dynamic) → dynamic};
+  #l#set.call("Run, Forrest, run");
   self::expect("Lily", self::g);
   self::expect("was", self::C::s);
-  self::expect("here", c.{self::C::v}{dynamic});
-  self::expect("Run, Forrest, run", #l#get(){() → dynamic});
+  self::expect("here", c.{self::C::v});
+  self::expect("Run, Forrest, run", #l#get.call());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40373b.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40373b.dart.weak.transformed.expect
index 747c21c..b788f31 100644
--- a/pkg/front_end/testcases/late_lowering/issue40373b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40373b.dart.weak.transformed.expect
@@ -57,13 +57,13 @@
   self::C::s = "was";
   self::C c = new self::C::•();
   c.{self::C::v} = "here";
-  #l#set("Run, Forrest, run"){(dynamic) → dynamic};
+  #l#set.call("Run, Forrest, run");
   self::expect("Lily", self::g);
   self::expect("was", self::C::s);
-  self::expect("here", c.{self::C::v}{dynamic});
-  self::expect("Run, Forrest, run", #l#get(){() → dynamic});
+  self::expect("here", c.{self::C::v});
+  self::expect("Run, Forrest, run", #l#get.call());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40601.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue40601.dart.strong.expect
index d676a26..6de62a5 100644
--- a/pkg/front_end/testcases/late_lowering/issue40601.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40601.dart.strong.expect
@@ -18,10 +18,10 @@
       #value#isSet = true;
       return #value = #t1;
     }
-    () → dynamic result = () → dynamic => this.{self::A::bar}(#value#get(){() → self::A::T%}){(self::A::T%) → dynamic};
+    () → dynamic result = () → dynamic => this.{self::A::bar}(#value#get.call());
     (() → Null {
-      #value#set(this.{self::A::baz}(){() → self::A::T%}){(self::A::T%) → dynamic};
-    })(){() → Null};
+      #value#set.call(this.{self::A::baz}());
+    }).call();
     return result;
   }
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40601.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40601.dart.strong.transformed.expect
index d676a26..6de62a5 100644
--- a/pkg/front_end/testcases/late_lowering/issue40601.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40601.dart.strong.transformed.expect
@@ -18,10 +18,10 @@
       #value#isSet = true;
       return #value = #t1;
     }
-    () → dynamic result = () → dynamic => this.{self::A::bar}(#value#get(){() → self::A::T%}){(self::A::T%) → dynamic};
+    () → dynamic result = () → dynamic => this.{self::A::bar}(#value#get.call());
     (() → Null {
-      #value#set(this.{self::A::baz}(){() → self::A::T%}){(self::A::T%) → dynamic};
-    })(){() → Null};
+      #value#set.call(this.{self::A::baz}());
+    }).call();
     return result;
   }
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40601.dart.weak.expect b/pkg/front_end/testcases/late_lowering/issue40601.dart.weak.expect
index d676a26..6de62a5 100644
--- a/pkg/front_end/testcases/late_lowering/issue40601.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40601.dart.weak.expect
@@ -18,10 +18,10 @@
       #value#isSet = true;
       return #value = #t1;
     }
-    () → dynamic result = () → dynamic => this.{self::A::bar}(#value#get(){() → self::A::T%}){(self::A::T%) → dynamic};
+    () → dynamic result = () → dynamic => this.{self::A::bar}(#value#get.call());
     (() → Null {
-      #value#set(this.{self::A::baz}(){() → self::A::T%}){(self::A::T%) → dynamic};
-    })(){() → Null};
+      #value#set.call(this.{self::A::baz}());
+    }).call();
     return result;
   }
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40601.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40601.dart.weak.transformed.expect
index d676a26..6de62a5 100644
--- a/pkg/front_end/testcases/late_lowering/issue40601.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40601.dart.weak.transformed.expect
@@ -18,10 +18,10 @@
       #value#isSet = true;
       return #value = #t1;
     }
-    () → dynamic result = () → dynamic => this.{self::A::bar}(#value#get(){() → self::A::T%}){(self::A::T%) → dynamic};
+    () → dynamic result = () → dynamic => this.{self::A::bar}(#value#get.call());
     (() → Null {
-      #value#set(this.{self::A::baz}(){() → self::A::T%}){(self::A::T%) → dynamic};
-    })(){() → Null};
+      #value#set.call(this.{self::A::baz}());
+    }).call();
     return result;
   }
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.expect
index a6b0c67..7df4dbc 100644
--- a/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.expect
@@ -9,9 +9,9 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t1 = this.{self::C::_#C#x} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::C::_#C#x} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
   set x(covariant core::int #t2) → void
-    if(this.{self::C::_#C#x} == null)
+    if(this.{self::C::_#C#x}.==(null))
       this.{self::C::_#C#x} = #t2;
     else
       throw new _in::LateError::fieldAI("x");
@@ -21,7 +21,7 @@
     : super self::C::•()
     ;
   set x(covariant core::num value) → void {
-    super.{self::C::x} = value.{core::num::toInt}(){() → core::int};
+    super.{self::C::x} = value.{core::num::toInt}();
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.transformed.expect
index a6b0c67..7df4dbc 100644
--- a/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.transformed.expect
@@ -9,9 +9,9 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t1 = this.{self::C::_#C#x} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::C::_#C#x} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
   set x(covariant core::int #t2) → void
-    if(this.{self::C::_#C#x} == null)
+    if(this.{self::C::_#C#x}.==(null))
       this.{self::C::_#C#x} = #t2;
     else
       throw new _in::LateError::fieldAI("x");
@@ -21,7 +21,7 @@
     : super self::C::•()
     ;
   set x(covariant core::num value) → void {
-    super.{self::C::x} = value.{core::num::toInt}(){() → core::int};
+    super.{self::C::x} = value.{core::num::toInt}();
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.expect b/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.expect
index d709dd3..d0b344e 100644
--- a/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.expect
@@ -24,7 +24,7 @@
     : super self::C::•()
     ;
   set x(covariant core::num value) → void {
-    super.{self::C::x} = value.{core::num::toInt}(){() → core::int};
+    super.{self::C::x} = value.{core::num::toInt}();
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.transformed.expect
index d709dd3..d0b344e 100644
--- a/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
     : super self::C::•()
     ;
   set x(covariant core::num value) → void {
-    super.{self::C::x} = value.{core::num::toInt}(){() → core::int};
+    super.{self::C::x} = value.{core::num::toInt}();
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/late_lowering/issue41436/issue41436.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue41436/issue41436.dart.strong.expect
index d0e94f3..3c27241 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436/issue41436.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436/issue41436.dart.strong.expect
@@ -19,7 +19,7 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t1 = this.{test::A::_#A#x} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
+    return let final core::int? #t1 = this.{test::A::_#A#x} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
   set x(core::int #t2) → void
     this.{test::A::_#A#x} = #t2;
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue41436/issue41436.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue41436/issue41436.dart.strong.transformed.expect
index d0e94f3..3c27241 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436/issue41436.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436/issue41436.dart.strong.transformed.expect
@@ -19,7 +19,7 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t1 = this.{test::A::_#A#x} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
+    return let final core::int? #t1 = this.{test::A::_#A#x} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
   set x(core::int #t2) → void
     this.{test::A::_#A#x} = #t2;
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue41436b.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue41436b.dart.strong.expect
index 1f95420..61f91a8 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436b.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436b.dart.strong.expect
@@ -9,7 +9,7 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#x} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#x} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
   set x(core::int #t2) → void
     this.{self::A::_#A#x} = #t2;
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue41436b.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue41436b.dart.strong.transformed.expect
index 1f95420..61f91a8 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436b.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#x} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#x} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
   set x(core::int #t2) → void
     this.{self::A::_#A#x} = #t2;
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.expect
index 3b1c7df..6e6d809 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.expect
@@ -10,9 +10,9 @@
     : super iss::B::•()
     ;
   no-such-method-forwarder get /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x() → core::int?
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
   no-such-method-forwarder set /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#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))){(core::Invocation) → dynamic};
+    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)));
 }
 static method main() → dynamic {
   new self::C::•();
@@ -29,7 +29,7 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t1 = this.{iss::A::_#A#x} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
+    return let final core::int? #t1 = this.{iss::A::_#A#x} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
   set x(core::int #t2) → void
     this.{iss::A::_#A#x} = #t2;
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.transformed.expect
index 4655921..6854c03 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.transformed.expect
@@ -10,9 +10,9 @@
     : super iss::B::•()
     ;
   no-such-method-forwarder get /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x() → core::int?
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
   no-such-method-forwarder set /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x(core::int? value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   new self::C::•();
@@ -29,7 +29,7 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t1 = this.{iss::A::_#A#x} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
+    return let final core::int? #t1 = this.{iss::A::_#A#x} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
   set x(core::int #t2) → void
     this.{iss::A::_#A#x} = #t2;
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.expect b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.expect
index 2434dbc..bf446b5 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.expect
@@ -10,13 +10,13 @@
     : super iss::B::•()
     ;
   no-such-method-forwarder get /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x#isSet() → core::bool
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
   no-such-method-forwarder get /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x() → core::int?
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
   no-such-method-forwarder set /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x#isSet(core::bool 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))){(core::Invocation) → dynamic};
+    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)));
   no-such-method-forwarder set /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x(core::int? value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.outline.expect b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.outline.expect
index 4f3a9d5..cea7ad0 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.outline.expect
@@ -9,13 +9,13 @@
   synthetic constructor •() → self::C
     ;
   no-such-method-forwarder get /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x#isSet() → core::bool
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_#A#x#isSet, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_#A#x#isSet, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
   no-such-method-forwarder get /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x() → core::int?
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_#A#x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_#A#x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
   no-such-method-forwarder set /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x#isSet(core::bool value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_#A#x#isSet=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_#A#x#isSet=, 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 /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x(core::int? value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_#A#x=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_#A#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
   ;
diff --git a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.transformed.expect
index 2919d71..8d7842a 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.transformed.expect
@@ -10,13 +10,13 @@
     : super iss::B::•()
     ;
   no-such-method-forwarder get /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x#isSet() → core::bool
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
   no-such-method-forwarder get /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x() → core::int?
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
   no-such-method-forwarder set /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x#isSet(core::bool value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder set /* from org-dartlang-testcase:///issue41436c_lib.dart */ _#A#x(core::int? value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/late_lowering/issue41922.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue41922.dart.strong.expect
index f4abe91..f550130 100644
--- a/pkg/front_end/testcases/late_lowering/issue41922.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41922.dart.strong.expect
@@ -35,12 +35,12 @@
   self::expect("lateValue", self::C::s);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/late_lowering/issue41922.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue41922.dart.strong.transformed.expect
index f4abe91..f550130 100644
--- a/pkg/front_end/testcases/late_lowering/issue41922.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41922.dart.strong.transformed.expect
@@ -35,12 +35,12 @@
   self::expect("lateValue", self::C::s);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/late_lowering/issue41922.dart.weak.expect b/pkg/front_end/testcases/late_lowering/issue41922.dart.weak.expect
index f4abe91..f550130 100644
--- a/pkg/front_end/testcases/late_lowering/issue41922.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41922.dart.weak.expect
@@ -35,12 +35,12 @@
   self::expect("lateValue", self::C::s);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/late_lowering/issue41922.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue41922.dart.weak.transformed.expect
index f4abe91..f550130 100644
--- a/pkg/front_end/testcases/late_lowering/issue41922.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41922.dart.weak.transformed.expect
@@ -35,12 +35,12 @@
   self::expect("lateValue", self::C::s);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/late_lowering/issue42407.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue42407.dart.strong.expect
index b441856..e2cc0e7 100644
--- a/pkg/front_end/testcases/late_lowering/issue42407.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue42407.dart.strong.expect
@@ -22,7 +22,7 @@
     : super core::Object::•()
     ;
   get y() → self::B::T?
-    return this.{self::B::_y}{self::B::T?};
+    return this.{self::B::_y};
   set y(generic-covariant-impl self::B::T? val) → void {
     this.{self::B::_y} = val;
   }
@@ -36,12 +36,12 @@
   self::throws(() → void => b.{self::B::y} = 0.5);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/late_lowering/issue42407.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue42407.dart.strong.transformed.expect
index b441856..e2cc0e7 100644
--- a/pkg/front_end/testcases/late_lowering/issue42407.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue42407.dart.strong.transformed.expect
@@ -22,7 +22,7 @@
     : super core::Object::•()
     ;
   get y() → self::B::T?
-    return this.{self::B::_y}{self::B::T?};
+    return this.{self::B::_y};
   set y(generic-covariant-impl self::B::T? val) → void {
     this.{self::B::_y} = val;
   }
@@ -36,12 +36,12 @@
   self::throws(() → void => b.{self::B::y} = 0.5);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/late_lowering/issue42407.dart.weak.expect b/pkg/front_end/testcases/late_lowering/issue42407.dart.weak.expect
index b441856..e2cc0e7 100644
--- a/pkg/front_end/testcases/late_lowering/issue42407.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/issue42407.dart.weak.expect
@@ -22,7 +22,7 @@
     : super core::Object::•()
     ;
   get y() → self::B::T?
-    return this.{self::B::_y}{self::B::T?};
+    return this.{self::B::_y};
   set y(generic-covariant-impl self::B::T? val) → void {
     this.{self::B::_y} = val;
   }
@@ -36,12 +36,12 @@
   self::throws(() → void => b.{self::B::y} = 0.5);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/late_lowering/issue42407.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue42407.dart.weak.transformed.expect
index b441856..e2cc0e7 100644
--- a/pkg/front_end/testcases/late_lowering/issue42407.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue42407.dart.weak.transformed.expect
@@ -22,7 +22,7 @@
     : super core::Object::•()
     ;
   get y() → self::B::T?
-    return this.{self::B::_y}{self::B::T?};
+    return this.{self::B::_y};
   set y(generic-covariant-impl self::B::T? val) → void {
     this.{self::B::_y} = val;
   }
@@ -36,12 +36,12 @@
   self::throws(() → void => b.{self::B::y} = 0.5);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.expect
index c104bcb..6d44223 100644
--- a/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.expect
@@ -6,39 +6,39 @@
 static method main(core::List<core::String> args) → dynamic {
   lowered () →? core::int #recursiveInitLocal;
   function #recursiveInitLocal#get() → () → core::int
-    return let final () →? core::int #t1 = #recursiveInitLocal in #t1 == null ?{() → core::int} throw new _in::LateError::localNI("recursiveInitLocal") : #t1{() → core::int};
+    return let final () →? core::int #t1 = #recursiveInitLocal in #t1.==(null) ?{() → core::int} throw new _in::LateError::localNI("recursiveInitLocal") : #t1{() → core::int};
   function #recursiveInitLocal#set(() → core::int #t2) → dynamic
     return #recursiveInitLocal = #t2;
   lowered final core::int? #local;
   function #local#get() → core::int
-    return let final core::int? #t3 = #local in #t3 == null ?{core::int} let final core::int #t4 = #recursiveInitLocal#get(){() → () → core::int}(){() → core::int} in #local == null ?{core::int} #local = #t4 : throw new _in::LateError::localADI("local") : #t3{core::int};
+    return let final core::int? #t3 = #local in #t3.==(null) ?{core::int} let final core::int #t4 = #recursiveInitLocal#get.call().call() in #local.==(null) ?{core::int} #local = #t4 : throw new _in::LateError::localADI("local") : #t3{core::int};
   core::bool doRecursiveInitLocal = true;
-  #recursiveInitLocal#set(() → core::int {
+  #recursiveInitLocal#set.call(() → core::int {
     core::print("Executing initializer");
     if(doRecursiveInitLocal) {
       doRecursiveInitLocal = false;
       core::print("Trigger recursive initialization");
-      core::int val = #local#get(){() → core::int};
+      core::int val = #local#get.call();
       core::print("Final local has value ${val}");
       core::print("Returning 4 from initializer");
       return 4;
     }
     core::print("Returning 3 from initializer");
     return 3;
-  }){(() → core::int) → dynamic};
+  });
   self::throws(() → Null {
-    core::int val = #local#get(){() → core::int};
+    core::int val = #local#get.call();
     core::print("Final local has value ${val}");
   }, "Read local");
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.transformed.expect
index c104bcb..6d44223 100644
--- a/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.transformed.expect
@@ -6,39 +6,39 @@
 static method main(core::List<core::String> args) → dynamic {
   lowered () →? core::int #recursiveInitLocal;
   function #recursiveInitLocal#get() → () → core::int
-    return let final () →? core::int #t1 = #recursiveInitLocal in #t1 == null ?{() → core::int} throw new _in::LateError::localNI("recursiveInitLocal") : #t1{() → core::int};
+    return let final () →? core::int #t1 = #recursiveInitLocal in #t1.==(null) ?{() → core::int} throw new _in::LateError::localNI("recursiveInitLocal") : #t1{() → core::int};
   function #recursiveInitLocal#set(() → core::int #t2) → dynamic
     return #recursiveInitLocal = #t2;
   lowered final core::int? #local;
   function #local#get() → core::int
-    return let final core::int? #t3 = #local in #t3 == null ?{core::int} let final core::int #t4 = #recursiveInitLocal#get(){() → () → core::int}(){() → core::int} in #local == null ?{core::int} #local = #t4 : throw new _in::LateError::localADI("local") : #t3{core::int};
+    return let final core::int? #t3 = #local in #t3.==(null) ?{core::int} let final core::int #t4 = #recursiveInitLocal#get.call().call() in #local.==(null) ?{core::int} #local = #t4 : throw new _in::LateError::localADI("local") : #t3{core::int};
   core::bool doRecursiveInitLocal = true;
-  #recursiveInitLocal#set(() → core::int {
+  #recursiveInitLocal#set.call(() → core::int {
     core::print("Executing initializer");
     if(doRecursiveInitLocal) {
       doRecursiveInitLocal = false;
       core::print("Trigger recursive initialization");
-      core::int val = #local#get(){() → core::int};
+      core::int val = #local#get.call();
       core::print("Final local has value ${val}");
       core::print("Returning 4 from initializer");
       return 4;
     }
     core::print("Returning 3 from initializer");
     return 3;
-  }){(() → core::int) → dynamic};
+  });
   self::throws(() → Null {
-    core::int val = #local#get(){() → core::int};
+    core::int val = #local#get.call();
     core::print("Final local has value ${val}");
   }, "Read local");
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.expect b/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.expect
index b70b183..bc6ab71 100644
--- a/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.expect
@@ -16,7 +16,7 @@
   lowered core::bool #local#isSet = false;
   function #local#get() → core::int {
     if(!#local#isSet) {
-      final core::int #t2 = #recursiveInitLocal#get(){() → () → core::int}(){() → core::int};
+      final core::int #t2 = #recursiveInitLocal#get.call().call();
       if(#local#isSet)
         throw new _in::LateError::localADI("local");
       #local = #t2;
@@ -25,32 +25,32 @@
     return #local{core::int};
   }
   core::bool doRecursiveInitLocal = true;
-  #recursiveInitLocal#set(() → core::int {
+  #recursiveInitLocal#set.call(() → core::int {
     core::print("Executing initializer");
     if(doRecursiveInitLocal) {
       doRecursiveInitLocal = false;
       core::print("Trigger recursive initialization");
-      core::int val = #local#get(){() → core::int};
+      core::int val = #local#get.call();
       core::print("Final local has value ${val}");
       core::print("Returning 4 from initializer");
       return 4;
     }
     core::print("Returning 3 from initializer");
     return 3;
-  }){(() → core::int) → dynamic};
+  });
   self::throws(() → Null {
-    core::int val = #local#get(){() → core::int};
+    core::int val = #local#get.call();
     core::print("Final local has value ${val}");
   }, "Read local");
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.transformed.expect
index b70b183..bc6ab71 100644
--- a/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
   lowered core::bool #local#isSet = false;
   function #local#get() → core::int {
     if(!#local#isSet) {
-      final core::int #t2 = #recursiveInitLocal#get(){() → () → core::int}(){() → core::int};
+      final core::int #t2 = #recursiveInitLocal#get.call().call();
       if(#local#isSet)
         throw new _in::LateError::localADI("local");
       #local = #t2;
@@ -25,32 +25,32 @@
     return #local{core::int};
   }
   core::bool doRecursiveInitLocal = true;
-  #recursiveInitLocal#set(() → core::int {
+  #recursiveInitLocal#set.call(() → core::int {
     core::print("Executing initializer");
     if(doRecursiveInitLocal) {
       doRecursiveInitLocal = false;
       core::print("Trigger recursive initialization");
-      core::int val = #local#get(){() → core::int};
+      core::int val = #local#get.call();
       core::print("Final local has value ${val}");
       core::print("Returning 4 from initializer");
       return 4;
     }
     core::print("Returning 3 from initializer");
     return 3;
-  }){(() → core::int) → dynamic};
+  });
   self::throws(() → Null {
-    core::int val = #local#get(){() → core::int};
+    core::int val = #local#get.call();
     core::print("Final local has value ${val}");
   }, "Read local");
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_annotations.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_annotations.dart.strong.expect
index 6d935a7..40eb00c 100644
--- a/pkg/front_end/testcases/late_lowering/late_annotations.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_annotations.dart.strong.expect
@@ -21,46 +21,46 @@
     ;
   @#C1
   get instanceField() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#instanceField} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("instanceField") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#instanceField} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("instanceField") : #t1{core::int};
   @#C1
   set instanceField(core::int #t2) → void
     this.{self::A::_#A#instanceField} = #t2;
   @#C1
   get finalInstanceField() → core::int
-    return let final core::int? #t3 = this.{self::A::_#A#finalInstanceField} in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("finalInstanceField") : #t3{core::int};
+    return let final core::int? #t3 = this.{self::A::_#A#finalInstanceField} in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("finalInstanceField") : #t3{core::int};
   @#C1
   set finalInstanceField(core::int #t4) → void
-    if(this.{self::A::_#A#finalInstanceField} == null)
+    if(this.{self::A::_#A#finalInstanceField}.==(null))
       this.{self::A::_#A#finalInstanceField} = #t4;
     else
       throw new _in::LateError::fieldAI("finalInstanceField");
   @#C1
   get finalInstanceFieldWithInitializer() → core::int
-    return let final core::int? #t5 = this.{self::A::_#A#finalInstanceFieldWithInitializer} in #t5 == null ?{core::int} let final core::int #t6 = 0 in this.{self::A::_#A#finalInstanceFieldWithInitializer} == null ?{core::int} this.{self::A::_#A#finalInstanceFieldWithInitializer} = #t6 : throw new _in::LateError::fieldADI("finalInstanceFieldWithInitializer") : #t5{core::int};
+    return let final core::int? #t5 = this.{self::A::_#A#finalInstanceFieldWithInitializer} in #t5.==(null) ?{core::int} let final core::int #t6 = 0 in this.{self::A::_#A#finalInstanceFieldWithInitializer}.==(null) ?{core::int} this.{self::A::_#A#finalInstanceFieldWithInitializer} = #t6 : throw new _in::LateError::fieldADI("finalInstanceFieldWithInitializer") : #t5{core::int};
   @#C1
   get covariantInstanceField() → core::num
-    return let final core::num? #t7 = this.{self::A::_#A#covariantInstanceField} in #t7 == null ?{core::num} throw new _in::LateError::fieldNI("covariantInstanceField") : #t7{core::num};
+    return let final core::num? #t7 = this.{self::A::_#A#covariantInstanceField} in #t7.==(null) ?{core::num} throw new _in::LateError::fieldNI("covariantInstanceField") : #t7{core::num};
   @#C1
   set covariantInstanceField(covariant core::num #t8) → void
     this.{self::A::_#A#covariantInstanceField} = #t8;
   @#C1
   static get staticField() → core::int
-    return let final core::int? #t9 = self::A::_#staticField in #t9 == null ?{core::int} throw new _in::LateError::fieldNI("staticField") : #t9{core::int};
+    return let final core::int? #t9 = self::A::_#staticField in #t9.==(null) ?{core::int} throw new _in::LateError::fieldNI("staticField") : #t9{core::int};
   @#C1
   static set staticField(core::int #t10) → void
     self::A::_#staticField = #t10;
   @#C1
   static get finalStaticField() → core::int
-    return let final core::int? #t11 = self::A::_#finalStaticField in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("finalStaticField") : #t11{core::int};
+    return let final core::int? #t11 = self::A::_#finalStaticField in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("finalStaticField") : #t11{core::int};
   @#C1
   static set finalStaticField(core::int #t12) → void
-    if(self::A::_#finalStaticField == null)
+    if(self::A::_#finalStaticField.==(null))
       self::A::_#finalStaticField = #t12;
     else
       throw new _in::LateError::fieldAI("finalStaticField");
   @#C1
   static get finalStaticFieldWithInitializer() → core::int
-    return let final core::int? #t13 = self::A::_#finalStaticFieldWithInitializer in #t13 == null ?{core::int} let final core::int #t14 = 0 in self::A::_#finalStaticFieldWithInitializer == null ?{core::int} self::A::_#finalStaticFieldWithInitializer = #t14 : throw new _in::LateError::fieldADI("finalStaticFieldWithInitializer") : #t13{core::int};
+    return let final core::int? #t13 = self::A::_#finalStaticFieldWithInitializer in #t13.==(null) ?{core::int} let final core::int #t14 = 0 in self::A::_#finalStaticFieldWithInitializer.==(null) ?{core::int} self::A::_#finalStaticFieldWithInitializer = #t14 : throw new _in::LateError::fieldADI("finalStaticFieldWithInitializer") : #t13{core::int};
 }
 abstract class B extends core::Object /*isMixinDeclaration*/  {
   field core::int? _#B#instanceField = null;
@@ -72,46 +72,46 @@
   static field core::int? _#finalStaticFieldWithInitializer = null;
   @#C1
   get instanceField() → core::int
-    return let final core::int? #t15 = this.{self::B::_#B#instanceField} in #t15 == null ?{core::int} throw new _in::LateError::fieldNI("instanceField") : #t15{core::int};
+    return let final core::int? #t15 = this.{self::B::_#B#instanceField} in #t15.==(null) ?{core::int} throw new _in::LateError::fieldNI("instanceField") : #t15{core::int};
   @#C1
   set instanceField(core::int #t16) → void
     this.{self::B::_#B#instanceField} = #t16;
   @#C1
   get finalInstanceField() → core::int
-    return let final core::int? #t17 = this.{self::B::_#B#finalInstanceField} in #t17 == null ?{core::int} throw new _in::LateError::fieldNI("finalInstanceField") : #t17{core::int};
+    return let final core::int? #t17 = this.{self::B::_#B#finalInstanceField} in #t17.==(null) ?{core::int} throw new _in::LateError::fieldNI("finalInstanceField") : #t17{core::int};
   @#C1
   set finalInstanceField(core::int #t18) → void
-    if(this.{self::B::_#B#finalInstanceField} == null)
+    if(this.{self::B::_#B#finalInstanceField}.==(null))
       this.{self::B::_#B#finalInstanceField} = #t18;
     else
       throw new _in::LateError::fieldAI("finalInstanceField");
   @#C1
   get finalInstanceFieldWithInitializer() → core::int
-    return let final core::int? #t19 = this.{self::B::_#B#finalInstanceFieldWithInitializer} in #t19 == null ?{core::int} let final core::int #t20 = 0 in this.{self::B::_#B#finalInstanceFieldWithInitializer} == null ?{core::int} this.{self::B::_#B#finalInstanceFieldWithInitializer} = #t20 : throw new _in::LateError::fieldADI("finalInstanceFieldWithInitializer") : #t19{core::int};
+    return let final core::int? #t19 = this.{self::B::_#B#finalInstanceFieldWithInitializer} in #t19.==(null) ?{core::int} let final core::int #t20 = 0 in this.{self::B::_#B#finalInstanceFieldWithInitializer}.==(null) ?{core::int} this.{self::B::_#B#finalInstanceFieldWithInitializer} = #t20 : throw new _in::LateError::fieldADI("finalInstanceFieldWithInitializer") : #t19{core::int};
   @#C1
   get covariantInstanceField() → core::num
-    return let final core::num? #t21 = this.{self::B::_#B#covariantInstanceField} in #t21 == null ?{core::num} throw new _in::LateError::fieldNI("covariantInstanceField") : #t21{core::num};
+    return let final core::num? #t21 = this.{self::B::_#B#covariantInstanceField} in #t21.==(null) ?{core::num} throw new _in::LateError::fieldNI("covariantInstanceField") : #t21{core::num};
   @#C1
   set covariantInstanceField(covariant core::num #t22) → void
     this.{self::B::_#B#covariantInstanceField} = #t22;
   @#C1
   static get staticField() → core::int
-    return let final core::int? #t23 = self::B::_#staticField in #t23 == null ?{core::int} throw new _in::LateError::fieldNI("staticField") : #t23{core::int};
+    return let final core::int? #t23 = self::B::_#staticField in #t23.==(null) ?{core::int} throw new _in::LateError::fieldNI("staticField") : #t23{core::int};
   @#C1
   static set staticField(core::int #t24) → void
     self::B::_#staticField = #t24;
   @#C1
   static get finalStaticField() → core::int
-    return let final core::int? #t25 = self::B::_#finalStaticField in #t25 == null ?{core::int} throw new _in::LateError::fieldNI("finalStaticField") : #t25{core::int};
+    return let final core::int? #t25 = self::B::_#finalStaticField in #t25.==(null) ?{core::int} throw new _in::LateError::fieldNI("finalStaticField") : #t25{core::int};
   @#C1
   static set finalStaticField(core::int #t26) → void
-    if(self::B::_#finalStaticField == null)
+    if(self::B::_#finalStaticField.==(null))
       self::B::_#finalStaticField = #t26;
     else
       throw new _in::LateError::fieldAI("finalStaticField");
   @#C1
   static get finalStaticFieldWithInitializer() → core::int
-    return let final core::int? #t27 = self::B::_#finalStaticFieldWithInitializer in #t27 == null ?{core::int} let final core::int #t28 = 0 in self::B::_#finalStaticFieldWithInitializer == null ?{core::int} self::B::_#finalStaticFieldWithInitializer = #t28 : throw new _in::LateError::fieldADI("finalStaticFieldWithInitializer") : #t27{core::int};
+    return let final core::int? #t27 = self::B::_#finalStaticFieldWithInitializer in #t27.==(null) ?{core::int} let final core::int #t28 = 0 in self::B::_#finalStaticFieldWithInitializer.==(null) ?{core::int} self::B::_#finalStaticFieldWithInitializer = #t28 : throw new _in::LateError::fieldADI("finalStaticFieldWithInitializer") : #t27{core::int};
 }
 extension Extension on self::A {
   static field extensionStaticField = self::_#Extension|extensionStaticField;
@@ -131,40 +131,40 @@
 static field core::int? _#Extension|finalExtensionStaticFieldWithInitializer = null;
 @#C1
 static get topLevelField() → core::int
-  return let final core::int? #t29 = self::_#topLevelField in #t29 == null ?{core::int} throw new _in::LateError::fieldNI("topLevelField") : #t29{core::int};
+  return let final core::int? #t29 = self::_#topLevelField in #t29.==(null) ?{core::int} throw new _in::LateError::fieldNI("topLevelField") : #t29{core::int};
 @#C1
 static set topLevelField(core::int #t30) → void
   self::_#topLevelField = #t30;
 @#C1
 static get finalTopLevelField() → core::int
-  return let final core::int? #t31 = self::_#finalTopLevelField in #t31 == null ?{core::int} throw new _in::LateError::fieldNI("finalTopLevelField") : #t31{core::int};
+  return let final core::int? #t31 = self::_#finalTopLevelField in #t31.==(null) ?{core::int} throw new _in::LateError::fieldNI("finalTopLevelField") : #t31{core::int};
 @#C1
 static set finalTopLevelField(core::int #t32) → void
-  if(self::_#finalTopLevelField == null)
+  if(self::_#finalTopLevelField.==(null))
     self::_#finalTopLevelField = #t32;
   else
     throw new _in::LateError::fieldAI("finalTopLevelField");
 @#C1
 static get finalTopLevelFieldWithInitializer() → core::int
-  return let final core::int? #t33 = self::_#finalTopLevelFieldWithInitializer in #t33 == null ?{core::int} let final core::int #t34 = 0 in self::_#finalTopLevelFieldWithInitializer == null ?{core::int} self::_#finalTopLevelFieldWithInitializer = #t34 : throw new _in::LateError::fieldADI("finalTopLevelFieldWithInitializer") : #t33{core::int};
+  return let final core::int? #t33 = self::_#finalTopLevelFieldWithInitializer in #t33.==(null) ?{core::int} let final core::int #t34 = 0 in self::_#finalTopLevelFieldWithInitializer.==(null) ?{core::int} self::_#finalTopLevelFieldWithInitializer = #t34 : throw new _in::LateError::fieldADI("finalTopLevelFieldWithInitializer") : #t33{core::int};
 @#C1
 static get Extension|extensionStaticField() → core::int
-  return let final core::int? #t35 = self::_#Extension|extensionStaticField in #t35 == null ?{core::int} throw new _in::LateError::fieldNI("extensionStaticField") : #t35{core::int};
+  return let final core::int? #t35 = self::_#Extension|extensionStaticField in #t35.==(null) ?{core::int} throw new _in::LateError::fieldNI("extensionStaticField") : #t35{core::int};
 @#C1
 static set Extension|extensionStaticField(core::int #t36) → void
   self::_#Extension|extensionStaticField = #t36;
 @#C1
 static get Extension|finalExtensionStaticField() → core::int
-  return let final core::int? #t37 = self::_#Extension|finalExtensionStaticField in #t37 == null ?{core::int} throw new _in::LateError::fieldNI("finalExtensionStaticField") : #t37{core::int};
+  return let final core::int? #t37 = self::_#Extension|finalExtensionStaticField in #t37.==(null) ?{core::int} throw new _in::LateError::fieldNI("finalExtensionStaticField") : #t37{core::int};
 @#C1
 static set Extension|finalExtensionStaticField(core::int #t38) → void
-  if(self::_#Extension|finalExtensionStaticField == null)
+  if(self::_#Extension|finalExtensionStaticField.==(null))
     self::_#Extension|finalExtensionStaticField = #t38;
   else
     throw new _in::LateError::fieldAI("finalExtensionStaticField");
 @#C1
 static get Extension|finalExtensionStaticFieldWithInitializer() → core::int
-  return let final core::int? #t39 = self::_#Extension|finalExtensionStaticFieldWithInitializer in #t39 == null ?{core::int} let final core::int #t40 = 0 in self::_#Extension|finalExtensionStaticFieldWithInitializer == null ?{core::int} self::_#Extension|finalExtensionStaticFieldWithInitializer = #t40 : throw new _in::LateError::fieldADI("finalExtensionStaticFieldWithInitializer") : #t39{core::int};
+  return let final core::int? #t39 = self::_#Extension|finalExtensionStaticFieldWithInitializer in #t39.==(null) ?{core::int} let final core::int #t40 = 0 in self::_#Extension|finalExtensionStaticFieldWithInitializer.==(null) ?{core::int} self::_#Extension|finalExtensionStaticFieldWithInitializer = #t40 : throw new _in::LateError::fieldADI("finalExtensionStaticFieldWithInitializer") : #t39{core::int};
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/late_lowering/late_annotations.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_annotations.dart.strong.transformed.expect
index 63b9c40..5f7ea3c 100644
--- a/pkg/front_end/testcases/late_lowering/late_annotations.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_annotations.dart.strong.transformed.expect
@@ -21,46 +21,46 @@
     ;
   @#C1
   get instanceField() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#instanceField} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("instanceField") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#instanceField} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("instanceField") : #t1{core::int};
   @#C1
   set instanceField(core::int #t2) → void
     this.{self::A::_#A#instanceField} = #t2;
   @#C1
   get finalInstanceField() → core::int
-    return let final core::int? #t3 = this.{self::A::_#A#finalInstanceField} in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("finalInstanceField") : #t3{core::int};
+    return let final core::int? #t3 = this.{self::A::_#A#finalInstanceField} in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("finalInstanceField") : #t3{core::int};
   @#C1
   set finalInstanceField(core::int #t4) → void
-    if(this.{self::A::_#A#finalInstanceField} == null)
+    if(this.{self::A::_#A#finalInstanceField}.==(null))
       this.{self::A::_#A#finalInstanceField} = #t4;
     else
       throw new _in::LateError::fieldAI("finalInstanceField");
   @#C1
   get finalInstanceFieldWithInitializer() → core::int
-    return let final core::int? #t5 = this.{self::A::_#A#finalInstanceFieldWithInitializer} in #t5 == null ?{core::int} let final core::int #t6 = 0 in this.{self::A::_#A#finalInstanceFieldWithInitializer} == null ?{core::int} this.{self::A::_#A#finalInstanceFieldWithInitializer} = #t6 : throw new _in::LateError::fieldADI("finalInstanceFieldWithInitializer") : #t5{core::int};
+    return let final core::int? #t5 = this.{self::A::_#A#finalInstanceFieldWithInitializer} in #t5.==(null) ?{core::int} let final core::int #t6 = 0 in this.{self::A::_#A#finalInstanceFieldWithInitializer}.==(null) ?{core::int} this.{self::A::_#A#finalInstanceFieldWithInitializer} = #t6 : throw new _in::LateError::fieldADI("finalInstanceFieldWithInitializer") : #t5{core::int};
   @#C1
   get covariantInstanceField() → core::num
-    return let final core::num? #t7 = this.{self::A::_#A#covariantInstanceField} in #t7 == null ?{core::num} throw new _in::LateError::fieldNI("covariantInstanceField") : #t7{core::num};
+    return let final core::num? #t7 = this.{self::A::_#A#covariantInstanceField} in #t7.==(null) ?{core::num} throw new _in::LateError::fieldNI("covariantInstanceField") : #t7{core::num};
   @#C1
   set covariantInstanceField(covariant core::num #t8) → void
     this.{self::A::_#A#covariantInstanceField} = #t8;
   @#C1
   static get staticField() → core::int
-    return let final core::int? #t9 = self::A::_#staticField in #t9 == null ?{core::int} throw new _in::LateError::fieldNI("staticField") : #t9{core::int};
+    return let final core::int? #t9 = self::A::_#staticField in #t9.==(null) ?{core::int} throw new _in::LateError::fieldNI("staticField") : #t9{core::int};
   @#C1
   static set staticField(core::int #t10) → void
     self::A::_#staticField = #t10;
   @#C1
   static get finalStaticField() → core::int
-    return let final core::int? #t11 = self::A::_#finalStaticField in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("finalStaticField") : #t11{core::int};
+    return let final core::int? #t11 = self::A::_#finalStaticField in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("finalStaticField") : #t11{core::int};
   @#C1
   static set finalStaticField(core::int #t12) → void
-    if(self::A::_#finalStaticField == null)
+    if(self::A::_#finalStaticField.==(null))
       self::A::_#finalStaticField = #t12;
     else
       throw new _in::LateError::fieldAI("finalStaticField");
   @#C1
   static get finalStaticFieldWithInitializer() → core::int
-    return let final core::int? #t13 = self::A::_#finalStaticFieldWithInitializer in #t13 == null ?{core::int} let final core::int #t14 = 0 in self::A::_#finalStaticFieldWithInitializer == null ?{core::int} self::A::_#finalStaticFieldWithInitializer = #t14 : throw new _in::LateError::fieldADI("finalStaticFieldWithInitializer") : #t13{core::int};
+    return let final core::int? #t13 = self::A::_#finalStaticFieldWithInitializer in #t13.==(null) ?{core::int} let final core::int #t14 = 0 in self::A::_#finalStaticFieldWithInitializer.==(null) ?{core::int} self::A::_#finalStaticFieldWithInitializer = #t14 : throw new _in::LateError::fieldADI("finalStaticFieldWithInitializer") : #t13{core::int};
 }
 abstract class B extends core::Object /*isMixinDeclaration*/  {
   field core::int? _#B#instanceField = null;
@@ -72,46 +72,46 @@
   static field core::int? _#finalStaticFieldWithInitializer = null;
   @#C1
   get instanceField() → core::int
-    return let final core::int? #t15 = this.{self::B::_#B#instanceField} in #t15 == null ?{core::int} throw new _in::LateError::fieldNI("instanceField") : #t15{core::int};
+    return let final core::int? #t15 = this.{self::B::_#B#instanceField} in #t15.==(null) ?{core::int} throw new _in::LateError::fieldNI("instanceField") : #t15{core::int};
   @#C1
   set instanceField(core::int #t16) → void
     this.{self::B::_#B#instanceField} = #t16;
   @#C1
   get finalInstanceField() → core::int
-    return let final core::int? #t17 = this.{self::B::_#B#finalInstanceField} in #t17 == null ?{core::int} throw new _in::LateError::fieldNI("finalInstanceField") : #t17{core::int};
+    return let final core::int? #t17 = this.{self::B::_#B#finalInstanceField} in #t17.==(null) ?{core::int} throw new _in::LateError::fieldNI("finalInstanceField") : #t17{core::int};
   @#C1
   set finalInstanceField(core::int #t18) → void
-    if(this.{self::B::_#B#finalInstanceField} == null)
+    if(this.{self::B::_#B#finalInstanceField}.==(null))
       this.{self::B::_#B#finalInstanceField} = #t18;
     else
       throw new _in::LateError::fieldAI("finalInstanceField");
   @#C1
   get finalInstanceFieldWithInitializer() → core::int
-    return let final core::int? #t19 = this.{self::B::_#B#finalInstanceFieldWithInitializer} in #t19 == null ?{core::int} let final core::int #t20 = 0 in this.{self::B::_#B#finalInstanceFieldWithInitializer} == null ?{core::int} this.{self::B::_#B#finalInstanceFieldWithInitializer} = #t20 : throw new _in::LateError::fieldADI("finalInstanceFieldWithInitializer") : #t19{core::int};
+    return let final core::int? #t19 = this.{self::B::_#B#finalInstanceFieldWithInitializer} in #t19.==(null) ?{core::int} let final core::int #t20 = 0 in this.{self::B::_#B#finalInstanceFieldWithInitializer}.==(null) ?{core::int} this.{self::B::_#B#finalInstanceFieldWithInitializer} = #t20 : throw new _in::LateError::fieldADI("finalInstanceFieldWithInitializer") : #t19{core::int};
   @#C1
   get covariantInstanceField() → core::num
-    return let final core::num? #t21 = this.{self::B::_#B#covariantInstanceField} in #t21 == null ?{core::num} throw new _in::LateError::fieldNI("covariantInstanceField") : #t21{core::num};
+    return let final core::num? #t21 = this.{self::B::_#B#covariantInstanceField} in #t21.==(null) ?{core::num} throw new _in::LateError::fieldNI("covariantInstanceField") : #t21{core::num};
   @#C1
   set covariantInstanceField(covariant core::num #t22) → void
     this.{self::B::_#B#covariantInstanceField} = #t22;
   @#C1
   static get staticField() → core::int
-    return let final core::int? #t23 = self::B::_#staticField in #t23 == null ?{core::int} throw new _in::LateError::fieldNI("staticField") : #t23{core::int};
+    return let final core::int? #t23 = self::B::_#staticField in #t23.==(null) ?{core::int} throw new _in::LateError::fieldNI("staticField") : #t23{core::int};
   @#C1
   static set staticField(core::int #t24) → void
     self::B::_#staticField = #t24;
   @#C1
   static get finalStaticField() → core::int
-    return let final core::int? #t25 = self::B::_#finalStaticField in #t25 == null ?{core::int} throw new _in::LateError::fieldNI("finalStaticField") : #t25{core::int};
+    return let final core::int? #t25 = self::B::_#finalStaticField in #t25.==(null) ?{core::int} throw new _in::LateError::fieldNI("finalStaticField") : #t25{core::int};
   @#C1
   static set finalStaticField(core::int #t26) → void
-    if(self::B::_#finalStaticField == null)
+    if(self::B::_#finalStaticField.==(null))
       self::B::_#finalStaticField = #t26;
     else
       throw new _in::LateError::fieldAI("finalStaticField");
   @#C1
   static get finalStaticFieldWithInitializer() → core::int
-    return let final core::int? #t27 = self::B::_#finalStaticFieldWithInitializer in #t27 == null ?{core::int} let final core::int #t28 = 0 in self::B::_#finalStaticFieldWithInitializer == null ?{core::int} self::B::_#finalStaticFieldWithInitializer = #t28 : throw new _in::LateError::fieldADI("finalStaticFieldWithInitializer") : #t27{core::int};
+    return let final core::int? #t27 = self::B::_#finalStaticFieldWithInitializer in #t27.==(null) ?{core::int} let final core::int #t28 = 0 in self::B::_#finalStaticFieldWithInitializer.==(null) ?{core::int} self::B::_#finalStaticFieldWithInitializer = #t28 : throw new _in::LateError::fieldADI("finalStaticFieldWithInitializer") : #t27{core::int};
 }
 extension Extension on self::A {
   static field extensionStaticField = self::_#Extension|extensionStaticField;
@@ -131,40 +131,40 @@
 static field core::int? _#Extension|finalExtensionStaticFieldWithInitializer = null;
 @#C1
 static get topLevelField() → core::int
-  return let final core::int? #t29 = self::_#topLevelField in #t29 == null ?{core::int} throw new _in::LateError::fieldNI("topLevelField") : #t29{core::int};
+  return let final core::int? #t29 = self::_#topLevelField in #t29.==(null) ?{core::int} throw new _in::LateError::fieldNI("topLevelField") : #t29{core::int};
 @#C1
 static set topLevelField(core::int #t30) → void
   self::_#topLevelField = #t30;
 @#C1
 static get finalTopLevelField() → core::int
-  return let final core::int? #t31 = self::_#finalTopLevelField in #t31 == null ?{core::int} throw new _in::LateError::fieldNI("finalTopLevelField") : #t31{core::int};
+  return let final core::int? #t31 = self::_#finalTopLevelField in #t31.==(null) ?{core::int} throw new _in::LateError::fieldNI("finalTopLevelField") : #t31{core::int};
 @#C1
 static set finalTopLevelField(core::int #t32) → void
-  if(self::_#finalTopLevelField == null)
+  if(self::_#finalTopLevelField.==(null))
     self::_#finalTopLevelField = #t32;
   else
     throw new _in::LateError::fieldAI("finalTopLevelField");
 @#C1
 static get finalTopLevelFieldWithInitializer() → core::int
-  return let final core::int? #t33 = self::_#finalTopLevelFieldWithInitializer in #t33 == null ?{core::int} let final core::int #t34 = 0 in self::_#finalTopLevelFieldWithInitializer == null ?{core::int} self::_#finalTopLevelFieldWithInitializer = #t34 : throw new _in::LateError::fieldADI("finalTopLevelFieldWithInitializer") : #t33{core::int};
+  return let final core::int? #t33 = self::_#finalTopLevelFieldWithInitializer in #t33.==(null) ?{core::int} let final core::int #t34 = 0 in self::_#finalTopLevelFieldWithInitializer.==(null) ?{core::int} self::_#finalTopLevelFieldWithInitializer = #t34 : throw new _in::LateError::fieldADI("finalTopLevelFieldWithInitializer") : #t33{core::int};
 @#C1
 static get Extension|extensionStaticField() → core::int
-  return let final core::int? #t35 = self::_#Extension|extensionStaticField in #t35 == null ?{core::int} throw new _in::LateError::fieldNI("extensionStaticField") : #t35{core::int};
+  return let final core::int? #t35 = self::_#Extension|extensionStaticField in #t35.==(null) ?{core::int} throw new _in::LateError::fieldNI("extensionStaticField") : #t35{core::int};
 @#C1
 static set Extension|extensionStaticField(core::int #t36) → void
   self::_#Extension|extensionStaticField = #t36;
 @#C1
 static get Extension|finalExtensionStaticField() → core::int
-  return let final core::int? #t37 = self::_#Extension|finalExtensionStaticField in #t37 == null ?{core::int} throw new _in::LateError::fieldNI("finalExtensionStaticField") : #t37{core::int};
+  return let final core::int? #t37 = self::_#Extension|finalExtensionStaticField in #t37.==(null) ?{core::int} throw new _in::LateError::fieldNI("finalExtensionStaticField") : #t37{core::int};
 @#C1
 static set Extension|finalExtensionStaticField(core::int #t38) → void
-  if(self::_#Extension|finalExtensionStaticField == null)
+  if(self::_#Extension|finalExtensionStaticField.==(null))
     self::_#Extension|finalExtensionStaticField = #t38;
   else
     throw new _in::LateError::fieldAI("finalExtensionStaticField");
 @#C1
 static get Extension|finalExtensionStaticFieldWithInitializer() → core::int
-  return let final core::int? #t39 = self::_#Extension|finalExtensionStaticFieldWithInitializer in #t39 == null ?{core::int} let final core::int #t40 = 0 in self::_#Extension|finalExtensionStaticFieldWithInitializer == null ?{core::int} self::_#Extension|finalExtensionStaticFieldWithInitializer = #t40 : throw new _in::LateError::fieldADI("finalExtensionStaticFieldWithInitializer") : #t39{core::int};
+  return let final core::int? #t39 = self::_#Extension|finalExtensionStaticFieldWithInitializer in #t39.==(null) ?{core::int} let final core::int #t40 = 0 in self::_#Extension|finalExtensionStaticFieldWithInitializer.==(null) ?{core::int} self::_#Extension|finalExtensionStaticFieldWithInitializer = #t40 : throw new _in::LateError::fieldADI("finalExtensionStaticFieldWithInitializer") : #t39{core::int};
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/late_lowering/late_field_inference.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_field_inference.dart.strong.expect
index 4a776ea..d9bfacd 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_inference.dart.strong.expect
@@ -15,7 +15,7 @@
     : super core::Object::•()
     ;
   get nonNullableInstanceField() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#nonNullableInstanceField} in #t1 == null ?{core::int} this.{self::A::_#A#nonNullableInstanceField} = 0 : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#nonNullableInstanceField} in #t1.==(null) ?{core::int} this.{self::A::_#A#nonNullableInstanceField} = 0 : #t1{core::int};
   set nonNullableInstanceField(core::int #t2) → void
     this.{self::A::_#A#nonNullableInstanceField} = #t2;
   get nullableInstanceField() → core::int? {
@@ -30,7 +30,7 @@
     this.{self::A::_#A#nullableInstanceField} = #t3;
   }
   static get nonNullableStaticField() → core::int
-    return let final core::int? #t4 = self::A::_#nonNullableStaticField in #t4 == null ?{core::int} self::A::_#nonNullableStaticField = 0 : #t4{core::int};
+    return let final core::int? #t4 = self::A::_#nonNullableStaticField in #t4.==(null) ?{core::int} self::A::_#nonNullableStaticField = 0 : #t4{core::int};
   static set nonNullableStaticField(core::int #t5) → void
     self::A::_#nonNullableStaticField = #t5;
   static get nullableStaticField() → core::int? {
@@ -63,7 +63,7 @@
 static method method() → core::int?
   return null;
 static get nonNullableTopLevelField() → core::int
-  return let final core::int? #t7 = self::_#nonNullableTopLevelField in #t7 == null ?{core::int} self::_#nonNullableTopLevelField = 0 : #t7{core::int};
+  return let final core::int? #t7 = self::_#nonNullableTopLevelField in #t7.==(null) ?{core::int} self::_#nonNullableTopLevelField = 0 : #t7{core::int};
 static set nonNullableTopLevelField(core::int #t8) → void
   self::_#nonNullableTopLevelField = #t8;
 static get nullableTopLevelField() → core::int? {
diff --git a/pkg/front_end/testcases/late_lowering/late_field_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_field_inference.dart.strong.transformed.expect
index 4a776ea..d9bfacd 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_inference.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
     : super core::Object::•()
     ;
   get nonNullableInstanceField() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#nonNullableInstanceField} in #t1 == null ?{core::int} this.{self::A::_#A#nonNullableInstanceField} = 0 : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#nonNullableInstanceField} in #t1.==(null) ?{core::int} this.{self::A::_#A#nonNullableInstanceField} = 0 : #t1{core::int};
   set nonNullableInstanceField(core::int #t2) → void
     this.{self::A::_#A#nonNullableInstanceField} = #t2;
   get nullableInstanceField() → core::int? {
@@ -30,7 +30,7 @@
     this.{self::A::_#A#nullableInstanceField} = #t3;
   }
   static get nonNullableStaticField() → core::int
-    return let final core::int? #t4 = self::A::_#nonNullableStaticField in #t4 == null ?{core::int} self::A::_#nonNullableStaticField = 0 : #t4{core::int};
+    return let final core::int? #t4 = self::A::_#nonNullableStaticField in #t4.==(null) ?{core::int} self::A::_#nonNullableStaticField = 0 : #t4{core::int};
   static set nonNullableStaticField(core::int #t5) → void
     self::A::_#nonNullableStaticField = #t5;
   static get nullableStaticField() → core::int? {
@@ -63,7 +63,7 @@
 static method method() → core::int?
   return null;
 static get nonNullableTopLevelField() → core::int
-  return let final core::int? #t7 = self::_#nonNullableTopLevelField in #t7 == null ?{core::int} self::_#nonNullableTopLevelField = 0 : #t7{core::int};
+  return let final core::int? #t7 = self::_#nonNullableTopLevelField in #t7.==(null) ?{core::int} self::_#nonNullableTopLevelField = 0 : #t7{core::int};
 static set nonNullableTopLevelField(core::int #t8) → void
   self::_#nonNullableTopLevelField = #t8;
 static get nullableTopLevelField() → core::int? {
diff --git a/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.strong.expect
index 887bd2f..4030034 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.strong.expect
@@ -15,11 +15,11 @@
     : self::Class::field = field, super core::Object::•()
     ;
   static get lateStaticField1() → core::int
-    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1 == null ?{core::int} self::Class::_#lateStaticField1 = 87 : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1.==(null) ?{core::int} self::Class::_#lateStaticField1 = 87 : #t1{core::int};
   static set lateStaticField1(core::int #t2) → void
     self::Class::_#lateStaticField1 = #t2;
   static get lateStaticField2() → core::int
-    return let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3 == null ?{core::int} self::Class::_#lateStaticField2 = 42 : #t3{core::int};
+    return let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3.==(null) ?{core::int} self::Class::_#lateStaticField2 = 42 : #t3{core::int};
   static set lateStaticField2(core::int #t4) → void
     self::Class::_#lateStaticField2 = #t4;
   static method staticMethod() → dynamic {
@@ -28,12 +28,12 @@
     self::expect(43, self::Class::lateStaticField2);
   }
   get lateInstanceField() → core::int
-    return let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5 == null ?{core::int} this.{self::Class::_#Class#lateInstanceField} = 16 : #t5{core::int};
+    return let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5.==(null) ?{core::int} this.{self::Class::_#Class#lateInstanceField} = 16 : #t5{core::int};
   set lateInstanceField(core::int #t6) → void
     this.{self::Class::_#Class#lateInstanceField} = #t6;
   get lateGenericField1() → self::Class::T% {
     if(!this.{self::Class::_#Class#lateGenericField1#isSet}) {
-      this.{self::Class::_#Class#lateGenericField1} = this.{self::Class::field}{self::Class::T%};
+      this.{self::Class::_#Class#lateGenericField1} = this.{self::Class::field};
       this.{self::Class::_#Class#lateGenericField1#isSet} = true;
     }
     return let final self::Class::T? #t7 = this.{self::Class::_#Class#lateGenericField1} in #t7{self::Class::T%};
@@ -44,7 +44,7 @@
   }
   get lateGenericField2() → self::Class::T% {
     if(!this.{self::Class::_#Class#lateGenericField2#isSet}) {
-      this.{self::Class::_#Class#lateGenericField2} = this.{self::Class::field}{self::Class::T%};
+      this.{self::Class::_#Class#lateGenericField2} = this.{self::Class::field};
       this.{self::Class::_#Class#lateGenericField2#isSet} = true;
     }
     return let final self::Class::T? #t9 = this.{self::Class::_#Class#lateGenericField2} in #t9{self::Class::T%};
@@ -54,14 +54,14 @@
     this.{self::Class::_#Class#lateGenericField2} = #t10;
   }
   method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic {
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
+    self::expect(16, this.{self::Class::lateInstanceField});
     this.{self::Class::lateInstanceField} = 17;
-    self::expect(17, this.{self::Class::lateInstanceField}{core::int});
-    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericField1}{self::Class::T%});
+    self::expect(17, this.{self::Class::lateInstanceField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericField1});
     this.{self::Class::lateGenericField1} = value;
-    self::expect(value, this.{self::Class::lateGenericField1}{self::Class::T%});
+    self::expect(value, this.{self::Class::lateGenericField1});
     this.{self::Class::lateGenericField2} = value;
-    self::expect(value, this.{self::Class::lateGenericField2}{self::Class::T%});
+    self::expect(value, this.{self::Class::lateGenericField2});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -77,15 +77,15 @@
 static field core::int? _#Extension|lateExtensionField1 = null;
 static field core::int? _#Extension|lateExtensionField2 = null;
 static get lateTopLevelField1() → core::int
-  return let final core::int? #t11 = self::_#lateTopLevelField1 in #t11 == null ?{core::int} self::_#lateTopLevelField1 = 123 : #t11{core::int};
+  return let final core::int? #t11 = self::_#lateTopLevelField1 in #t11.==(null) ?{core::int} self::_#lateTopLevelField1 = 123 : #t11{core::int};
 static set lateTopLevelField1(core::int #t12) → void
   self::_#lateTopLevelField1 = #t12;
 static get Extension|lateExtensionField1() → core::int
-  return let final core::int? #t13 = self::_#Extension|lateExtensionField1 in #t13 == null ?{core::int} self::_#Extension|lateExtensionField1 = 87 : #t13{core::int};
+  return let final core::int? #t13 = self::_#Extension|lateExtensionField1 in #t13.==(null) ?{core::int} self::_#Extension|lateExtensionField1 = 87 : #t13{core::int};
 static set Extension|lateExtensionField1(core::int #t14) → void
   self::_#Extension|lateExtensionField1 = #t14;
 static get Extension|lateExtensionField2() → core::int
-  return let final core::int? #t15 = self::_#Extension|lateExtensionField2 in #t15 == null ?{core::int} self::_#Extension|lateExtensionField2 = 42 : #t15{core::int};
+  return let final core::int? #t15 = self::_#Extension|lateExtensionField2 in #t15.==(null) ?{core::int} self::_#Extension|lateExtensionField2 = 42 : #t15{core::int};
 static set Extension|lateExtensionField2(core::int #t16) → void
   self::_#Extension|lateExtensionField2 = #t16;
 static method Extension|staticMethod() → dynamic {
@@ -101,13 +101,13 @@
   self::Class::lateStaticField1 = 88;
   self::expect(88, self::Class::lateStaticField1);
   self::Class::staticMethod();
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(42){(core::int) → dynamic};
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(42);
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|lateExtensionField1 = 88;
   self::expect(88, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.strong.transformed.expect
index 887bd2f..4030034 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.strong.transformed.expect
@@ -15,11 +15,11 @@
     : self::Class::field = field, super core::Object::•()
     ;
   static get lateStaticField1() → core::int
-    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1 == null ?{core::int} self::Class::_#lateStaticField1 = 87 : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1.==(null) ?{core::int} self::Class::_#lateStaticField1 = 87 : #t1{core::int};
   static set lateStaticField1(core::int #t2) → void
     self::Class::_#lateStaticField1 = #t2;
   static get lateStaticField2() → core::int
-    return let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3 == null ?{core::int} self::Class::_#lateStaticField2 = 42 : #t3{core::int};
+    return let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3.==(null) ?{core::int} self::Class::_#lateStaticField2 = 42 : #t3{core::int};
   static set lateStaticField2(core::int #t4) → void
     self::Class::_#lateStaticField2 = #t4;
   static method staticMethod() → dynamic {
@@ -28,12 +28,12 @@
     self::expect(43, self::Class::lateStaticField2);
   }
   get lateInstanceField() → core::int
-    return let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5 == null ?{core::int} this.{self::Class::_#Class#lateInstanceField} = 16 : #t5{core::int};
+    return let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5.==(null) ?{core::int} this.{self::Class::_#Class#lateInstanceField} = 16 : #t5{core::int};
   set lateInstanceField(core::int #t6) → void
     this.{self::Class::_#Class#lateInstanceField} = #t6;
   get lateGenericField1() → self::Class::T% {
     if(!this.{self::Class::_#Class#lateGenericField1#isSet}) {
-      this.{self::Class::_#Class#lateGenericField1} = this.{self::Class::field}{self::Class::T%};
+      this.{self::Class::_#Class#lateGenericField1} = this.{self::Class::field};
       this.{self::Class::_#Class#lateGenericField1#isSet} = true;
     }
     return let final self::Class::T? #t7 = this.{self::Class::_#Class#lateGenericField1} in #t7{self::Class::T%};
@@ -44,7 +44,7 @@
   }
   get lateGenericField2() → self::Class::T% {
     if(!this.{self::Class::_#Class#lateGenericField2#isSet}) {
-      this.{self::Class::_#Class#lateGenericField2} = this.{self::Class::field}{self::Class::T%};
+      this.{self::Class::_#Class#lateGenericField2} = this.{self::Class::field};
       this.{self::Class::_#Class#lateGenericField2#isSet} = true;
     }
     return let final self::Class::T? #t9 = this.{self::Class::_#Class#lateGenericField2} in #t9{self::Class::T%};
@@ -54,14 +54,14 @@
     this.{self::Class::_#Class#lateGenericField2} = #t10;
   }
   method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic {
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
+    self::expect(16, this.{self::Class::lateInstanceField});
     this.{self::Class::lateInstanceField} = 17;
-    self::expect(17, this.{self::Class::lateInstanceField}{core::int});
-    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericField1}{self::Class::T%});
+    self::expect(17, this.{self::Class::lateInstanceField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericField1});
     this.{self::Class::lateGenericField1} = value;
-    self::expect(value, this.{self::Class::lateGenericField1}{self::Class::T%});
+    self::expect(value, this.{self::Class::lateGenericField1});
     this.{self::Class::lateGenericField2} = value;
-    self::expect(value, this.{self::Class::lateGenericField2}{self::Class::T%});
+    self::expect(value, this.{self::Class::lateGenericField2});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -77,15 +77,15 @@
 static field core::int? _#Extension|lateExtensionField1 = null;
 static field core::int? _#Extension|lateExtensionField2 = null;
 static get lateTopLevelField1() → core::int
-  return let final core::int? #t11 = self::_#lateTopLevelField1 in #t11 == null ?{core::int} self::_#lateTopLevelField1 = 123 : #t11{core::int};
+  return let final core::int? #t11 = self::_#lateTopLevelField1 in #t11.==(null) ?{core::int} self::_#lateTopLevelField1 = 123 : #t11{core::int};
 static set lateTopLevelField1(core::int #t12) → void
   self::_#lateTopLevelField1 = #t12;
 static get Extension|lateExtensionField1() → core::int
-  return let final core::int? #t13 = self::_#Extension|lateExtensionField1 in #t13 == null ?{core::int} self::_#Extension|lateExtensionField1 = 87 : #t13{core::int};
+  return let final core::int? #t13 = self::_#Extension|lateExtensionField1 in #t13.==(null) ?{core::int} self::_#Extension|lateExtensionField1 = 87 : #t13{core::int};
 static set Extension|lateExtensionField1(core::int #t14) → void
   self::_#Extension|lateExtensionField1 = #t14;
 static get Extension|lateExtensionField2() → core::int
-  return let final core::int? #t15 = self::_#Extension|lateExtensionField2 in #t15 == null ?{core::int} self::_#Extension|lateExtensionField2 = 42 : #t15{core::int};
+  return let final core::int? #t15 = self::_#Extension|lateExtensionField2 in #t15.==(null) ?{core::int} self::_#Extension|lateExtensionField2 = 42 : #t15{core::int};
 static set Extension|lateExtensionField2(core::int #t16) → void
   self::_#Extension|lateExtensionField2 = #t16;
 static method Extension|staticMethod() → dynamic {
@@ -101,13 +101,13 @@
   self::Class::lateStaticField1 = 88;
   self::expect(88, self::Class::lateStaticField1);
   self::Class::staticMethod();
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(42){(core::int) → dynamic};
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(42);
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|lateExtensionField1 = 88;
   self::expect(88, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.weak.expect
index e6772f8..f6025fa 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.weak.expect
@@ -57,7 +57,7 @@
   }
   get lateGenericField1() → self::Class::T% {
     if(!this.{self::Class::_#Class#lateGenericField1#isSet}) {
-      this.{self::Class::_#Class#lateGenericField1} = this.{self::Class::field}{self::Class::T%};
+      this.{self::Class::_#Class#lateGenericField1} = this.{self::Class::field};
       this.{self::Class::_#Class#lateGenericField1#isSet} = true;
     }
     return let final self::Class::T? #t7 = this.{self::Class::_#Class#lateGenericField1} in #t7{self::Class::T%};
@@ -68,7 +68,7 @@
   }
   get lateGenericField2() → self::Class::T% {
     if(!this.{self::Class::_#Class#lateGenericField2#isSet}) {
-      this.{self::Class::_#Class#lateGenericField2} = this.{self::Class::field}{self::Class::T%};
+      this.{self::Class::_#Class#lateGenericField2} = this.{self::Class::field};
       this.{self::Class::_#Class#lateGenericField2#isSet} = true;
     }
     return let final self::Class::T? #t9 = this.{self::Class::_#Class#lateGenericField2} in #t9{self::Class::T%};
@@ -78,14 +78,14 @@
     this.{self::Class::_#Class#lateGenericField2} = #t10;
   }
   method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic {
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
+    self::expect(16, this.{self::Class::lateInstanceField});
     this.{self::Class::lateInstanceField} = 17;
-    self::expect(17, this.{self::Class::lateInstanceField}{core::int});
-    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericField1}{self::Class::T%});
+    self::expect(17, this.{self::Class::lateInstanceField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericField1});
     this.{self::Class::lateGenericField1} = value;
-    self::expect(value, this.{self::Class::lateGenericField1}{self::Class::T%});
+    self::expect(value, this.{self::Class::lateGenericField1});
     this.{self::Class::lateGenericField2} = value;
-    self::expect(value, this.{self::Class::lateGenericField2}{self::Class::T%});
+    self::expect(value, this.{self::Class::lateGenericField2});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -151,13 +151,13 @@
   self::Class::lateStaticField1 = 88;
   self::expect(88, self::Class::lateStaticField1);
   self::Class::staticMethod();
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(42){(core::int) → dynamic};
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(42);
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|lateExtensionField1 = 88;
   self::expect(88, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.weak.transformed.expect
index e6772f8..f6025fa 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.weak.transformed.expect
@@ -57,7 +57,7 @@
   }
   get lateGenericField1() → self::Class::T% {
     if(!this.{self::Class::_#Class#lateGenericField1#isSet}) {
-      this.{self::Class::_#Class#lateGenericField1} = this.{self::Class::field}{self::Class::T%};
+      this.{self::Class::_#Class#lateGenericField1} = this.{self::Class::field};
       this.{self::Class::_#Class#lateGenericField1#isSet} = true;
     }
     return let final self::Class::T? #t7 = this.{self::Class::_#Class#lateGenericField1} in #t7{self::Class::T%};
@@ -68,7 +68,7 @@
   }
   get lateGenericField2() → self::Class::T% {
     if(!this.{self::Class::_#Class#lateGenericField2#isSet}) {
-      this.{self::Class::_#Class#lateGenericField2} = this.{self::Class::field}{self::Class::T%};
+      this.{self::Class::_#Class#lateGenericField2} = this.{self::Class::field};
       this.{self::Class::_#Class#lateGenericField2#isSet} = true;
     }
     return let final self::Class::T? #t9 = this.{self::Class::_#Class#lateGenericField2} in #t9{self::Class::T%};
@@ -78,14 +78,14 @@
     this.{self::Class::_#Class#lateGenericField2} = #t10;
   }
   method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic {
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
+    self::expect(16, this.{self::Class::lateInstanceField});
     this.{self::Class::lateInstanceField} = 17;
-    self::expect(17, this.{self::Class::lateInstanceField}{core::int});
-    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericField1}{self::Class::T%});
+    self::expect(17, this.{self::Class::lateInstanceField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericField1});
     this.{self::Class::lateGenericField1} = value;
-    self::expect(value, this.{self::Class::lateGenericField1}{self::Class::T%});
+    self::expect(value, this.{self::Class::lateGenericField1});
     this.{self::Class::lateGenericField2} = value;
-    self::expect(value, this.{self::Class::lateGenericField2}{self::Class::T%});
+    self::expect(value, this.{self::Class::lateGenericField2});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -151,13 +151,13 @@
   self::Class::lateStaticField1 = 88;
   self::expect(88, self::Class::lateStaticField1);
   self::Class::staticMethod();
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(42){(core::int) → dynamic};
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(42);
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|lateExtensionField1 = 88;
   self::expect(88, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.expect
index c2b89ff..8bbf5d9 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.expect
@@ -13,11 +13,11 @@
     : super core::Object::•()
     ;
   static get lateStaticField1() → core::int
-    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("lateStaticField1") : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateStaticField1") : #t1{core::int};
   static set lateStaticField1(core::int #t2) → void
     self::Class::_#lateStaticField1 = #t2;
   static get lateStaticField2() → core::int
-    return let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("lateStaticField2") : #t3{core::int};
+    return let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateStaticField2") : #t3{core::int};
   static set lateStaticField2(core::int #t4) → void
     self::Class::_#lateStaticField2 = #t4;
   static method staticMethod() → dynamic {
@@ -26,7 +26,7 @@
     self::expect(42, self::Class::lateStaticField2);
   }
   get lateInstanceField() → core::int
-    return let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5 == null ?{core::int} throw new _in::LateError::fieldNI("lateInstanceField") : #t5{core::int};
+    return let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateInstanceField") : #t5{core::int};
   set lateInstanceField(core::int #t6) → void
     this.{self::Class::_#Class#lateInstanceField} = #t6;
   get lateGenericInstanceField() → self::Class::T%
@@ -36,12 +36,12 @@
     this.{self::Class::_#Class#lateGenericInstanceField} = #t8;
   }
   method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic {
-    self::throws(() → core::int => this.{self::Class::lateInstanceField}{core::int}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
-    self::throws(() → self::Class::T% => this.{self::Class::lateGenericInstanceField}{self::Class::T%}, "Read value from uninitialized Class.lateGenericInstanceField");
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::throws(() → self::Class::T% => this.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T%});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -57,15 +57,15 @@
 static field core::int? _#Extension|lateExtensionField1 = null;
 static field core::int? _#Extension|lateExtensionField2 = null;
 static get lateTopLevelField() → core::int
-  return let final core::int? #t9 = self::_#lateTopLevelField in #t9 == null ?{core::int} throw new _in::LateError::fieldNI("lateTopLevelField") : #t9{core::int};
+  return let final core::int? #t9 = self::_#lateTopLevelField in #t9.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateTopLevelField") : #t9{core::int};
 static set lateTopLevelField(core::int #t10) → void
   self::_#lateTopLevelField = #t10;
 static get Extension|lateExtensionField1() → core::int
-  return let final core::int? #t11 = self::_#Extension|lateExtensionField1 in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField1") : #t11{core::int};
+  return let final core::int? #t11 = self::_#Extension|lateExtensionField1 in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField1") : #t11{core::int};
 static set Extension|lateExtensionField1(core::int #t12) → void
   self::_#Extension|lateExtensionField1 = #t12;
 static get Extension|lateExtensionField2() → core::int
-  return let final core::int? #t13 = self::_#Extension|lateExtensionField2 in #t13 == null ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField2") : #t13{core::int};
+  return let final core::int? #t13 = self::_#Extension|lateExtensionField2 in #t13.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField2") : #t13{core::int};
 static set Extension|lateExtensionField2(core::int #t14) → void
   self::_#Extension|lateExtensionField2 = #t14;
 static method Extension|staticMethod() → dynamic {
@@ -81,27 +81,27 @@
   self::Class::lateStaticField1 = 87;
   self::expect(87, self::Class::lateStaticField1);
   self::Class::staticMethod();
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(0){(core::int) → dynamic};
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(0);
   self::Class<core::int> c = new self::Class::•<core::int>();
-  self::throws(() → core::int => c.{self::Class::lateInstanceField}{core::int}, "Read value from uninitialized Class.lateInstanceField");
+  self::throws(() → core::int => c.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
   c.{self::Class::lateInstanceField} = 16;
-  self::expect(16, c.{self::Class::lateInstanceField}{core::int});
-  self::throws(() → core::int => c.{self::Class::lateGenericInstanceField}{core::int}, "Read value from uninitialized Class.lateGenericInstanceField");
+  self::expect(16, c.{self::Class::lateInstanceField});
+  self::throws(() → core::int => c.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
   c.{self::Class::lateGenericInstanceField} = 0;
-  self::expect(0, c.{self::Class::lateGenericInstanceField}{core::int});
+  self::expect(0, c.{self::Class::lateGenericInstanceField});
   self::throws(() → core::int => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.transformed.expect
index c2b89ff..8bbf5d9 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.transformed.expect
@@ -13,11 +13,11 @@
     : super core::Object::•()
     ;
   static get lateStaticField1() → core::int
-    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("lateStaticField1") : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateStaticField1") : #t1{core::int};
   static set lateStaticField1(core::int #t2) → void
     self::Class::_#lateStaticField1 = #t2;
   static get lateStaticField2() → core::int
-    return let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("lateStaticField2") : #t3{core::int};
+    return let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateStaticField2") : #t3{core::int};
   static set lateStaticField2(core::int #t4) → void
     self::Class::_#lateStaticField2 = #t4;
   static method staticMethod() → dynamic {
@@ -26,7 +26,7 @@
     self::expect(42, self::Class::lateStaticField2);
   }
   get lateInstanceField() → core::int
-    return let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5 == null ?{core::int} throw new _in::LateError::fieldNI("lateInstanceField") : #t5{core::int};
+    return let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateInstanceField") : #t5{core::int};
   set lateInstanceField(core::int #t6) → void
     this.{self::Class::_#Class#lateInstanceField} = #t6;
   get lateGenericInstanceField() → self::Class::T%
@@ -36,12 +36,12 @@
     this.{self::Class::_#Class#lateGenericInstanceField} = #t8;
   }
   method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic {
-    self::throws(() → core::int => this.{self::Class::lateInstanceField}{core::int}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
-    self::throws(() → self::Class::T% => this.{self::Class::lateGenericInstanceField}{self::Class::T%}, "Read value from uninitialized Class.lateGenericInstanceField");
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::throws(() → self::Class::T% => this.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T%});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -57,15 +57,15 @@
 static field core::int? _#Extension|lateExtensionField1 = null;
 static field core::int? _#Extension|lateExtensionField2 = null;
 static get lateTopLevelField() → core::int
-  return let final core::int? #t9 = self::_#lateTopLevelField in #t9 == null ?{core::int} throw new _in::LateError::fieldNI("lateTopLevelField") : #t9{core::int};
+  return let final core::int? #t9 = self::_#lateTopLevelField in #t9.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateTopLevelField") : #t9{core::int};
 static set lateTopLevelField(core::int #t10) → void
   self::_#lateTopLevelField = #t10;
 static get Extension|lateExtensionField1() → core::int
-  return let final core::int? #t11 = self::_#Extension|lateExtensionField1 in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField1") : #t11{core::int};
+  return let final core::int? #t11 = self::_#Extension|lateExtensionField1 in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField1") : #t11{core::int};
 static set Extension|lateExtensionField1(core::int #t12) → void
   self::_#Extension|lateExtensionField1 = #t12;
 static get Extension|lateExtensionField2() → core::int
-  return let final core::int? #t13 = self::_#Extension|lateExtensionField2 in #t13 == null ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField2") : #t13{core::int};
+  return let final core::int? #t13 = self::_#Extension|lateExtensionField2 in #t13.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField2") : #t13{core::int};
 static set Extension|lateExtensionField2(core::int #t14) → void
   self::_#Extension|lateExtensionField2 = #t14;
 static method Extension|staticMethod() → dynamic {
@@ -81,27 +81,27 @@
   self::Class::lateStaticField1 = 87;
   self::expect(87, self::Class::lateStaticField1);
   self::Class::staticMethod();
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(0){(core::int) → dynamic};
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(0);
   self::Class<core::int> c = new self::Class::•<core::int>();
-  self::throws(() → core::int => c.{self::Class::lateInstanceField}{core::int}, "Read value from uninitialized Class.lateInstanceField");
+  self::throws(() → core::int => c.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
   c.{self::Class::lateInstanceField} = 16;
-  self::expect(16, c.{self::Class::lateInstanceField}{core::int});
-  self::throws(() → core::int => c.{self::Class::lateGenericInstanceField}{core::int}, "Read value from uninitialized Class.lateGenericInstanceField");
+  self::expect(16, c.{self::Class::lateInstanceField});
+  self::throws(() → core::int => c.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
   c.{self::Class::lateGenericInstanceField} = 0;
-  self::expect(0, c.{self::Class::lateGenericInstanceField}{core::int});
+  self::expect(0, c.{self::Class::lateGenericInstanceField});
   self::throws(() → core::int => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.expect
index a491c07..c20d687 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.expect
@@ -45,12 +45,12 @@
     this.{self::Class::_#Class#lateGenericInstanceField} = #t8;
   }
   method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic {
-    self::throws(() → core::int => this.{self::Class::lateInstanceField}{core::int}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
-    self::throws(() → self::Class::T% => this.{self::Class::lateGenericInstanceField}{self::Class::T%}, "Read value from uninitialized Class.lateGenericInstanceField");
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::throws(() → self::Class::T% => this.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T%});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -101,27 +101,27 @@
   self::Class::lateStaticField1 = 87;
   self::expect(87, self::Class::lateStaticField1);
   self::Class::staticMethod();
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(0){(core::int) → dynamic};
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(0);
   self::Class<core::int> c = new self::Class::•<core::int>();
-  self::throws(() → core::int => c.{self::Class::lateInstanceField}{core::int}, "Read value from uninitialized Class.lateInstanceField");
+  self::throws(() → core::int => c.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
   c.{self::Class::lateInstanceField} = 16;
-  self::expect(16, c.{self::Class::lateInstanceField}{core::int});
-  self::throws(() → core::int => c.{self::Class::lateGenericInstanceField}{core::int}, "Read value from uninitialized Class.lateGenericInstanceField");
+  self::expect(16, c.{self::Class::lateInstanceField});
+  self::throws(() → core::int => c.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
   c.{self::Class::lateGenericInstanceField} = 0;
-  self::expect(0, c.{self::Class::lateGenericInstanceField}{core::int});
+  self::expect(0, c.{self::Class::lateGenericInstanceField});
   self::throws(() → core::int => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.transformed.expect
index a491c07..c20d687 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.transformed.expect
@@ -45,12 +45,12 @@
     this.{self::Class::_#Class#lateGenericInstanceField} = #t8;
   }
   method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic {
-    self::throws(() → core::int => this.{self::Class::lateInstanceField}{core::int}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
-    self::throws(() → self::Class::T% => this.{self::Class::lateGenericInstanceField}{self::Class::T%}, "Read value from uninitialized Class.lateGenericInstanceField");
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::throws(() → self::Class::T% => this.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T%});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -101,27 +101,27 @@
   self::Class::lateStaticField1 = 87;
   self::expect(87, self::Class::lateStaticField1);
   self::Class::staticMethod();
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(0){(core::int) → dynamic};
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(0);
   self::Class<core::int> c = new self::Class::•<core::int>();
-  self::throws(() → core::int => c.{self::Class::lateInstanceField}{core::int}, "Read value from uninitialized Class.lateInstanceField");
+  self::throws(() → core::int => c.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
   c.{self::Class::lateInstanceField} = 16;
-  self::expect(16, c.{self::Class::lateInstanceField}{core::int});
-  self::throws(() → core::int => c.{self::Class::lateGenericInstanceField}{core::int}, "Read value from uninitialized Class.lateGenericInstanceField");
+  self::expect(16, c.{self::Class::lateInstanceField});
+  self::throws(() → core::int => c.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
   c.{self::Class::lateGenericInstanceField} = 0;
-  self::expect(0, c.{self::Class::lateGenericInstanceField}{core::int});
+  self::expect(0, c.{self::Class::lateGenericInstanceField});
   self::throws(() → core::int => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.strong.expect
index e811cfb..dc87dd2 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.strong.expect
@@ -16,9 +16,9 @@
     : super self::B::•(x)
     ;
   get y() → core::int
-    return let final core::int? #t1 = this.{self::C::_#C#y} in #t1 == null ?{core::int} let final core::int #t2 = this.{self::B::x}{core::int}.{core::num::+}(1){(core::num) → core::int} in this.{self::C::_#C#y} == null ?{core::int} this.{self::C::_#C#y} = #t2 : throw new _in::LateError::fieldADI("y") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::C::_#C#y} in #t1.==(null) ?{core::int} let final core::int #t2 = this.{self::B::x}.{core::num::+}(1) in this.{self::C::_#C#y}.==(null) ?{core::int} this.{self::C::_#C#y} = #t2 : throw new _in::LateError::fieldADI("y") : #t1{core::int};
   method method() → dynamic
-    return this.{self::B::x}{core::int};
+    return this.{self::B::x};
 }
 class Class<T extends core::Object? = dynamic> extends core::Object {
   static field core::int? lateStaticField1Init = null;
@@ -38,12 +38,12 @@
     return self::Class::lateStaticField1Init = value;
   }
   static get lateStaticField1() → core::int
-    return let final core::int? #t3 = self::Class::_#lateStaticField1 in #t3 == null ?{core::int} let final core::int #t4 = self::Class::initLateStaticField1(87) in self::Class::_#lateStaticField1 == null ?{core::int} self::Class::_#lateStaticField1 = #t4 : throw new _in::LateError::fieldADI("lateStaticField1") : #t3{core::int};
+    return let final core::int? #t3 = self::Class::_#lateStaticField1 in #t3.==(null) ?{core::int} let final core::int #t4 = self::Class::initLateStaticField1(87) in self::Class::_#lateStaticField1.==(null) ?{core::int} self::Class::_#lateStaticField1 = #t4 : throw new _in::LateError::fieldADI("lateStaticField1") : #t3{core::int};
   static method initLateStaticField2(core::int value) → core::int {
     return self::Class::lateStaticField2Init = value;
   }
   static get lateStaticField2() → core::int
-    return let final core::int? #t5 = self::Class::_#lateStaticField2 in #t5 == null ?{core::int} let final core::int #t6 = self::Class::initLateStaticField2(42) in self::Class::_#lateStaticField2 == null ?{core::int} self::Class::_#lateStaticField2 = #t6 : throw new _in::LateError::fieldADI("lateStaticField2") : #t5{core::int};
+    return let final core::int? #t5 = self::Class::_#lateStaticField2 in #t5.==(null) ?{core::int} let final core::int #t6 = self::Class::initLateStaticField2(42) in self::Class::_#lateStaticField2.==(null) ?{core::int} self::Class::_#lateStaticField2 = #t6 : throw new _in::LateError::fieldADI("lateStaticField2") : #t5{core::int};
   static method staticMethod() → dynamic {
     self::expect(null, self::Class::lateStaticField2Init);
     self::expect(42, self::Class::lateStaticField2);
@@ -53,13 +53,13 @@
     return this.{self::Class::lateInstanceFieldInit} = value;
   }
   get lateInstanceField() → core::int
-    return let final core::int? #t7 = this.{self::Class::_#Class#lateInstanceField} in #t7 == null ?{core::int} let final core::int #t8 = this.{self::Class::initLateInstanceField}(16){(core::int) → core::int} in this.{self::Class::_#Class#lateInstanceField} == null ?{core::int} this.{self::Class::_#Class#lateInstanceField} = #t8 : throw new _in::LateError::fieldADI("lateInstanceField") : #t7{core::int};
+    return let final core::int? #t7 = this.{self::Class::_#Class#lateInstanceField} in #t7.==(null) ?{core::int} let final core::int #t8 = this.{self::Class::initLateInstanceField}(16) in this.{self::Class::_#Class#lateInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#lateInstanceField} = #t8 : throw new _in::LateError::fieldADI("lateInstanceField") : #t7{core::int};
   method initLateGenericField(generic-covariant-impl self::Class::T% value) → self::Class::T% {
     return this.{self::Class::lateGenericFieldInit} = value;
   }
   get lateGenericField() → self::Class::T% {
     if(!this.{self::Class::_#Class#lateGenericField#isSet}) {
-      final self::Class::T% #t9 = this.{self::Class::initLateGenericField}(this.{self::Class::field}{self::Class::T%}){(self::Class::T%) → self::Class::T%};
+      final self::Class::T% #t9 = this.{self::Class::initLateGenericField}(this.{self::Class::field});
       if(this.{self::Class::_#Class#lateGenericField#isSet})
         throw new _in::LateError::fieldADI("lateGenericField");
       this.{self::Class::_#Class#lateGenericField} = #t9;
@@ -68,12 +68,12 @@
     return let final self::Class::T? #t10 = this.{self::Class::_#Class#lateGenericField} in #t10{self::Class::T%};
   }
   method instanceMethod() → dynamic {
-    self::expect(null, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
-    self::expect(16, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(null, this.{self::Class::lateGenericFieldInit}{self::Class::T?});
-    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericField}{self::Class::T%});
-    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericFieldInit}{self::Class::T?});
+    self::expect(null, this.{self::Class::lateInstanceFieldInit});
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::expect(16, this.{self::Class::lateInstanceFieldInit});
+    self::expect(null, this.{self::Class::lateGenericFieldInit});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericFieldInit});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -97,17 +97,17 @@
   return self::lateTopLevelField1Init = value;
 }
 static get lateTopLevelField1() → core::int
-  return let final core::int? #t11 = self::_#lateTopLevelField1 in #t11 == null ?{core::int} let final core::int #t12 = self::initLateTopLevelField1(123) in self::_#lateTopLevelField1 == null ?{core::int} self::_#lateTopLevelField1 = #t12 : throw new _in::LateError::fieldADI("lateTopLevelField1") : #t11{core::int};
+  return let final core::int? #t11 = self::_#lateTopLevelField1 in #t11.==(null) ?{core::int} let final core::int #t12 = self::initLateTopLevelField1(123) in self::_#lateTopLevelField1.==(null) ?{core::int} self::_#lateTopLevelField1 = #t12 : throw new _in::LateError::fieldADI("lateTopLevelField1") : #t11{core::int};
 static method Extension|initLateExtensionField1(core::int value) → core::int {
   return self::Extension|lateExtensionField1Init = value;
 }
 static get Extension|lateExtensionField1() → core::int
-  return let final core::int? #t13 = self::_#Extension|lateExtensionField1 in #t13 == null ?{core::int} let final core::int #t14 = self::Extension|initLateExtensionField1(87) in self::_#Extension|lateExtensionField1 == null ?{core::int} self::_#Extension|lateExtensionField1 = #t14 : throw new _in::LateError::fieldADI("lateExtensionField1") : #t13{core::int};
+  return let final core::int? #t13 = self::_#Extension|lateExtensionField1 in #t13.==(null) ?{core::int} let final core::int #t14 = self::Extension|initLateExtensionField1(87) in self::_#Extension|lateExtensionField1.==(null) ?{core::int} self::_#Extension|lateExtensionField1 = #t14 : throw new _in::LateError::fieldADI("lateExtensionField1") : #t13{core::int};
 static method Extension|initLateExtensionField2(core::int value) → core::int {
   return self::Extension|lateExtensionField2Init = value;
 }
 static get Extension|lateExtensionField2() → core::int
-  return let final core::int? #t15 = self::_#Extension|lateExtensionField2 in #t15 == null ?{core::int} let final core::int #t16 = self::Extension|initLateExtensionField2(42) in self::_#Extension|lateExtensionField2 == null ?{core::int} self::_#Extension|lateExtensionField2 = #t16 : throw new _in::LateError::fieldADI("lateExtensionField2") : #t15{core::int};
+  return let final core::int? #t15 = self::_#Extension|lateExtensionField2 in #t15.==(null) ?{core::int} let final core::int #t16 = self::Extension|initLateExtensionField2(42) in self::_#Extension|lateExtensionField2.==(null) ?{core::int} self::_#Extension|lateExtensionField2 = #t16 : throw new _in::LateError::fieldADI("lateExtensionField2") : #t15{core::int};
 static method Extension|staticMethod() → dynamic {
   self::expect(null, self::Extension|lateExtensionField2Init);
   self::expect(42, self::Extension|lateExtensionField2);
@@ -121,14 +121,14 @@
   self::expect(87, self::Class::lateStaticField1);
   self::expect(87, self::Class::lateStaticField1Init);
   self::Class::staticMethod();
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(){() → dynamic};
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}();
   self::expect(null, self::Extension|lateExtensionField1Init);
   self::expect(87, self::Extension|lateExtensionField1);
   self::expect(87, self::Extension|lateExtensionField1Init);
   self::Extension|staticMethod();
-  self::expect(2, new self::C::•(1).{self::C::y}{core::int});
+  self::expect(2, new self::C::•(1).{self::C::y});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.strong.transformed.expect
index e811cfb..dc87dd2 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.strong.transformed.expect
@@ -16,9 +16,9 @@
     : super self::B::•(x)
     ;
   get y() → core::int
-    return let final core::int? #t1 = this.{self::C::_#C#y} in #t1 == null ?{core::int} let final core::int #t2 = this.{self::B::x}{core::int}.{core::num::+}(1){(core::num) → core::int} in this.{self::C::_#C#y} == null ?{core::int} this.{self::C::_#C#y} = #t2 : throw new _in::LateError::fieldADI("y") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::C::_#C#y} in #t1.==(null) ?{core::int} let final core::int #t2 = this.{self::B::x}.{core::num::+}(1) in this.{self::C::_#C#y}.==(null) ?{core::int} this.{self::C::_#C#y} = #t2 : throw new _in::LateError::fieldADI("y") : #t1{core::int};
   method method() → dynamic
-    return this.{self::B::x}{core::int};
+    return this.{self::B::x};
 }
 class Class<T extends core::Object? = dynamic> extends core::Object {
   static field core::int? lateStaticField1Init = null;
@@ -38,12 +38,12 @@
     return self::Class::lateStaticField1Init = value;
   }
   static get lateStaticField1() → core::int
-    return let final core::int? #t3 = self::Class::_#lateStaticField1 in #t3 == null ?{core::int} let final core::int #t4 = self::Class::initLateStaticField1(87) in self::Class::_#lateStaticField1 == null ?{core::int} self::Class::_#lateStaticField1 = #t4 : throw new _in::LateError::fieldADI("lateStaticField1") : #t3{core::int};
+    return let final core::int? #t3 = self::Class::_#lateStaticField1 in #t3.==(null) ?{core::int} let final core::int #t4 = self::Class::initLateStaticField1(87) in self::Class::_#lateStaticField1.==(null) ?{core::int} self::Class::_#lateStaticField1 = #t4 : throw new _in::LateError::fieldADI("lateStaticField1") : #t3{core::int};
   static method initLateStaticField2(core::int value) → core::int {
     return self::Class::lateStaticField2Init = value;
   }
   static get lateStaticField2() → core::int
-    return let final core::int? #t5 = self::Class::_#lateStaticField2 in #t5 == null ?{core::int} let final core::int #t6 = self::Class::initLateStaticField2(42) in self::Class::_#lateStaticField2 == null ?{core::int} self::Class::_#lateStaticField2 = #t6 : throw new _in::LateError::fieldADI("lateStaticField2") : #t5{core::int};
+    return let final core::int? #t5 = self::Class::_#lateStaticField2 in #t5.==(null) ?{core::int} let final core::int #t6 = self::Class::initLateStaticField2(42) in self::Class::_#lateStaticField2.==(null) ?{core::int} self::Class::_#lateStaticField2 = #t6 : throw new _in::LateError::fieldADI("lateStaticField2") : #t5{core::int};
   static method staticMethod() → dynamic {
     self::expect(null, self::Class::lateStaticField2Init);
     self::expect(42, self::Class::lateStaticField2);
@@ -53,13 +53,13 @@
     return this.{self::Class::lateInstanceFieldInit} = value;
   }
   get lateInstanceField() → core::int
-    return let final core::int? #t7 = this.{self::Class::_#Class#lateInstanceField} in #t7 == null ?{core::int} let final core::int #t8 = this.{self::Class::initLateInstanceField}(16){(core::int) → core::int} in this.{self::Class::_#Class#lateInstanceField} == null ?{core::int} this.{self::Class::_#Class#lateInstanceField} = #t8 : throw new _in::LateError::fieldADI("lateInstanceField") : #t7{core::int};
+    return let final core::int? #t7 = this.{self::Class::_#Class#lateInstanceField} in #t7.==(null) ?{core::int} let final core::int #t8 = this.{self::Class::initLateInstanceField}(16) in this.{self::Class::_#Class#lateInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#lateInstanceField} = #t8 : throw new _in::LateError::fieldADI("lateInstanceField") : #t7{core::int};
   method initLateGenericField(generic-covariant-impl self::Class::T% value) → self::Class::T% {
     return this.{self::Class::lateGenericFieldInit} = value;
   }
   get lateGenericField() → self::Class::T% {
     if(!this.{self::Class::_#Class#lateGenericField#isSet}) {
-      final self::Class::T% #t9 = this.{self::Class::initLateGenericField}(this.{self::Class::field}{self::Class::T%}){(self::Class::T%) → self::Class::T%};
+      final self::Class::T% #t9 = this.{self::Class::initLateGenericField}(this.{self::Class::field});
       if(this.{self::Class::_#Class#lateGenericField#isSet})
         throw new _in::LateError::fieldADI("lateGenericField");
       this.{self::Class::_#Class#lateGenericField} = #t9;
@@ -68,12 +68,12 @@
     return let final self::Class::T? #t10 = this.{self::Class::_#Class#lateGenericField} in #t10{self::Class::T%};
   }
   method instanceMethod() → dynamic {
-    self::expect(null, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
-    self::expect(16, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(null, this.{self::Class::lateGenericFieldInit}{self::Class::T?});
-    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericField}{self::Class::T%});
-    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericFieldInit}{self::Class::T?});
+    self::expect(null, this.{self::Class::lateInstanceFieldInit});
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::expect(16, this.{self::Class::lateInstanceFieldInit});
+    self::expect(null, this.{self::Class::lateGenericFieldInit});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericFieldInit});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -97,17 +97,17 @@
   return self::lateTopLevelField1Init = value;
 }
 static get lateTopLevelField1() → core::int
-  return let final core::int? #t11 = self::_#lateTopLevelField1 in #t11 == null ?{core::int} let final core::int #t12 = self::initLateTopLevelField1(123) in self::_#lateTopLevelField1 == null ?{core::int} self::_#lateTopLevelField1 = #t12 : throw new _in::LateError::fieldADI("lateTopLevelField1") : #t11{core::int};
+  return let final core::int? #t11 = self::_#lateTopLevelField1 in #t11.==(null) ?{core::int} let final core::int #t12 = self::initLateTopLevelField1(123) in self::_#lateTopLevelField1.==(null) ?{core::int} self::_#lateTopLevelField1 = #t12 : throw new _in::LateError::fieldADI("lateTopLevelField1") : #t11{core::int};
 static method Extension|initLateExtensionField1(core::int value) → core::int {
   return self::Extension|lateExtensionField1Init = value;
 }
 static get Extension|lateExtensionField1() → core::int
-  return let final core::int? #t13 = self::_#Extension|lateExtensionField1 in #t13 == null ?{core::int} let final core::int #t14 = self::Extension|initLateExtensionField1(87) in self::_#Extension|lateExtensionField1 == null ?{core::int} self::_#Extension|lateExtensionField1 = #t14 : throw new _in::LateError::fieldADI("lateExtensionField1") : #t13{core::int};
+  return let final core::int? #t13 = self::_#Extension|lateExtensionField1 in #t13.==(null) ?{core::int} let final core::int #t14 = self::Extension|initLateExtensionField1(87) in self::_#Extension|lateExtensionField1.==(null) ?{core::int} self::_#Extension|lateExtensionField1 = #t14 : throw new _in::LateError::fieldADI("lateExtensionField1") : #t13{core::int};
 static method Extension|initLateExtensionField2(core::int value) → core::int {
   return self::Extension|lateExtensionField2Init = value;
 }
 static get Extension|lateExtensionField2() → core::int
-  return let final core::int? #t15 = self::_#Extension|lateExtensionField2 in #t15 == null ?{core::int} let final core::int #t16 = self::Extension|initLateExtensionField2(42) in self::_#Extension|lateExtensionField2 == null ?{core::int} self::_#Extension|lateExtensionField2 = #t16 : throw new _in::LateError::fieldADI("lateExtensionField2") : #t15{core::int};
+  return let final core::int? #t15 = self::_#Extension|lateExtensionField2 in #t15.==(null) ?{core::int} let final core::int #t16 = self::Extension|initLateExtensionField2(42) in self::_#Extension|lateExtensionField2.==(null) ?{core::int} self::_#Extension|lateExtensionField2 = #t16 : throw new _in::LateError::fieldADI("lateExtensionField2") : #t15{core::int};
 static method Extension|staticMethod() → dynamic {
   self::expect(null, self::Extension|lateExtensionField2Init);
   self::expect(42, self::Extension|lateExtensionField2);
@@ -121,14 +121,14 @@
   self::expect(87, self::Class::lateStaticField1);
   self::expect(87, self::Class::lateStaticField1Init);
   self::Class::staticMethod();
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(){() → dynamic};
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}();
   self::expect(null, self::Extension|lateExtensionField1Init);
   self::expect(87, self::Extension|lateExtensionField1);
   self::expect(87, self::Extension|lateExtensionField1Init);
   self::Extension|staticMethod();
-  self::expect(2, new self::C::•(1).{self::C::y}{core::int});
+  self::expect(2, new self::C::•(1).{self::C::y});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.weak.expect
index 1a1bda3..5d1075d 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.weak.expect
@@ -17,7 +17,7 @@
     ;
   get y() → core::int {
     if(!this.{self::C::_#C#y#isSet}) {
-      final core::int #t1 = this.{self::B::x}{core::int}.{core::num::+}(1){(core::num) → core::int};
+      final core::int #t1 = this.{self::B::x}.{core::num::+}(1);
       if(this.{self::C::_#C#y#isSet})
         throw new _in::LateError::fieldADI("y");
       this.{self::C::_#C#y} = #t1;
@@ -26,7 +26,7 @@
     return let final core::int? #t2 = this.{self::C::_#C#y} in #t2{core::int};
   }
   method method() → dynamic
-    return this.{self::B::x}{core::int};
+    return this.{self::B::x};
 }
 class Class<T extends core::Object? = dynamic> extends core::Object {
   static field core::int? lateStaticField1Init = null;
@@ -81,7 +81,7 @@
   }
   get lateInstanceField() → core::int {
     if(!this.{self::Class::_#Class#lateInstanceField#isSet}) {
-      final core::int #t7 = this.{self::Class::initLateInstanceField}(16){(core::int) → core::int};
+      final core::int #t7 = this.{self::Class::initLateInstanceField}(16);
       if(this.{self::Class::_#Class#lateInstanceField#isSet})
         throw new _in::LateError::fieldADI("lateInstanceField");
       this.{self::Class::_#Class#lateInstanceField} = #t7;
@@ -94,7 +94,7 @@
   }
   get lateGenericField() → self::Class::T% {
     if(!this.{self::Class::_#Class#lateGenericField#isSet}) {
-      final self::Class::T% #t9 = this.{self::Class::initLateGenericField}(this.{self::Class::field}{self::Class::T%}){(self::Class::T%) → self::Class::T%};
+      final self::Class::T% #t9 = this.{self::Class::initLateGenericField}(this.{self::Class::field});
       if(this.{self::Class::_#Class#lateGenericField#isSet})
         throw new _in::LateError::fieldADI("lateGenericField");
       this.{self::Class::_#Class#lateGenericField} = #t9;
@@ -103,12 +103,12 @@
     return let final self::Class::T? #t10 = this.{self::Class::_#Class#lateGenericField} in #t10{self::Class::T%};
   }
   method instanceMethod() → dynamic {
-    self::expect(null, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
-    self::expect(16, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(null, this.{self::Class::lateGenericFieldInit}{self::Class::T?});
-    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericField}{self::Class::T%});
-    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericFieldInit}{self::Class::T?});
+    self::expect(null, this.{self::Class::lateInstanceFieldInit});
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::expect(16, this.{self::Class::lateInstanceFieldInit});
+    self::expect(null, this.{self::Class::lateGenericFieldInit});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericFieldInit});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -185,14 +185,14 @@
   self::expect(87, self::Class::lateStaticField1);
   self::expect(87, self::Class::lateStaticField1Init);
   self::Class::staticMethod();
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(){() → dynamic};
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}();
   self::expect(null, self::Extension|lateExtensionField1Init);
   self::expect(87, self::Extension|lateExtensionField1);
   self::expect(87, self::Extension|lateExtensionField1Init);
   self::Extension|staticMethod();
-  self::expect(2, new self::C::•(1).{self::C::y}{core::int});
+  self::expect(2, new self::C::•(1).{self::C::y});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.weak.transformed.expect
index 1a1bda3..5d1075d 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.weak.transformed.expect
@@ -17,7 +17,7 @@
     ;
   get y() → core::int {
     if(!this.{self::C::_#C#y#isSet}) {
-      final core::int #t1 = this.{self::B::x}{core::int}.{core::num::+}(1){(core::num) → core::int};
+      final core::int #t1 = this.{self::B::x}.{core::num::+}(1);
       if(this.{self::C::_#C#y#isSet})
         throw new _in::LateError::fieldADI("y");
       this.{self::C::_#C#y} = #t1;
@@ -26,7 +26,7 @@
     return let final core::int? #t2 = this.{self::C::_#C#y} in #t2{core::int};
   }
   method method() → dynamic
-    return this.{self::B::x}{core::int};
+    return this.{self::B::x};
 }
 class Class<T extends core::Object? = dynamic> extends core::Object {
   static field core::int? lateStaticField1Init = null;
@@ -81,7 +81,7 @@
   }
   get lateInstanceField() → core::int {
     if(!this.{self::Class::_#Class#lateInstanceField#isSet}) {
-      final core::int #t7 = this.{self::Class::initLateInstanceField}(16){(core::int) → core::int};
+      final core::int #t7 = this.{self::Class::initLateInstanceField}(16);
       if(this.{self::Class::_#Class#lateInstanceField#isSet})
         throw new _in::LateError::fieldADI("lateInstanceField");
       this.{self::Class::_#Class#lateInstanceField} = #t7;
@@ -94,7 +94,7 @@
   }
   get lateGenericField() → self::Class::T% {
     if(!this.{self::Class::_#Class#lateGenericField#isSet}) {
-      final self::Class::T% #t9 = this.{self::Class::initLateGenericField}(this.{self::Class::field}{self::Class::T%}){(self::Class::T%) → self::Class::T%};
+      final self::Class::T% #t9 = this.{self::Class::initLateGenericField}(this.{self::Class::field});
       if(this.{self::Class::_#Class#lateGenericField#isSet})
         throw new _in::LateError::fieldADI("lateGenericField");
       this.{self::Class::_#Class#lateGenericField} = #t9;
@@ -103,12 +103,12 @@
     return let final self::Class::T? #t10 = this.{self::Class::_#Class#lateGenericField} in #t10{self::Class::T%};
   }
   method instanceMethod() → dynamic {
-    self::expect(null, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
-    self::expect(16, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(null, this.{self::Class::lateGenericFieldInit}{self::Class::T?});
-    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericField}{self::Class::T%});
-    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericFieldInit}{self::Class::T?});
+    self::expect(null, this.{self::Class::lateInstanceFieldInit});
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::expect(16, this.{self::Class::lateInstanceFieldInit});
+    self::expect(null, this.{self::Class::lateGenericFieldInit});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericFieldInit});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -185,14 +185,14 @@
   self::expect(87, self::Class::lateStaticField1);
   self::expect(87, self::Class::lateStaticField1Init);
   self::Class::staticMethod();
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(){() → dynamic};
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}();
   self::expect(null, self::Extension|lateExtensionField1Init);
   self::expect(87, self::Extension|lateExtensionField1);
   self::expect(87, self::Extension|lateExtensionField1Init);
   self::Extension|staticMethod();
-  self::expect(2, new self::C::•(1).{self::C::y}{core::int});
+  self::expect(2, new self::C::•(1).{self::C::y});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.expect
index 089ee2a..f425376 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.expect
@@ -11,16 +11,16 @@
     : super core::Object::•()
     ;
   static get lateStaticField1() → core::int
-    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("lateStaticField1") : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateStaticField1") : #t1{core::int};
   static set lateStaticField1(core::int #t2) → void
-    if(self::Class::_#lateStaticField1 == null)
+    if(self::Class::_#lateStaticField1.==(null))
       self::Class::_#lateStaticField1 = #t2;
     else
       throw new _in::LateError::fieldAI("lateStaticField1");
   static get lateStaticField2() → core::int
-    return let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("lateStaticField2") : #t3{core::int};
+    return let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateStaticField2") : #t3{core::int};
   static set lateStaticField2(core::int #t4) → void
-    if(self::Class::_#lateStaticField2 == null)
+    if(self::Class::_#lateStaticField2.==(null))
       self::Class::_#lateStaticField2 = #t4;
     else
       throw new _in::LateError::fieldAI("lateStaticField2");
@@ -31,16 +31,16 @@
     self::throws(() → core::int => self::Class::lateStaticField2 = 43, "Write value to initialized Class.lateStaticField2");
   }
   get lateInstanceField() → core::int
-    return let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5 == null ?{core::int} throw new _in::LateError::fieldNI("lateInstanceField") : #t5{core::int};
+    return let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateInstanceField") : #t5{core::int};
   set lateInstanceField(core::int #t6) → void
-    if(this.{self::Class::_#Class#lateInstanceField} == null)
+    if(this.{self::Class::_#Class#lateInstanceField}.==(null))
       this.{self::Class::_#Class#lateInstanceField} = #t6;
     else
       throw new _in::LateError::fieldAI("lateInstanceField");
   method instanceMethod() → dynamic {
-    self::throws(() → core::int => this.{self::Class::lateInstanceField}{core::int}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
+    self::expect(16, this.{self::Class::lateInstanceField});
     self::throws(() → core::int => this.{self::Class::lateInstanceField} = 17, "Write value to initialized Class.lateInstanceField");
   }
 }
@@ -57,23 +57,23 @@
 static field core::int? _#Extension|lateExtensionField1 = null;
 static field core::int? _#Extension|lateExtensionField2 = null;
 static get lateTopLevelField() → core::int
-  return let final core::int? #t7 = self::_#lateTopLevelField in #t7 == null ?{core::int} throw new _in::LateError::fieldNI("lateTopLevelField") : #t7{core::int};
+  return let final core::int? #t7 = self::_#lateTopLevelField in #t7.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateTopLevelField") : #t7{core::int};
 static set lateTopLevelField(core::int #t8) → void
-  if(self::_#lateTopLevelField == null)
+  if(self::_#lateTopLevelField.==(null))
     self::_#lateTopLevelField = #t8;
   else
     throw new _in::LateError::fieldAI("lateTopLevelField");
 static get Extension|lateExtensionField1() → core::int
-  return let final core::int? #t9 = self::_#Extension|lateExtensionField1 in #t9 == null ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField1") : #t9{core::int};
+  return let final core::int? #t9 = self::_#Extension|lateExtensionField1 in #t9.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField1") : #t9{core::int};
 static set Extension|lateExtensionField1(core::int #t10) → void
-  if(self::_#Extension|lateExtensionField1 == null)
+  if(self::_#Extension|lateExtensionField1.==(null))
     self::_#Extension|lateExtensionField1 = #t10;
   else
     throw new _in::LateError::fieldAI("lateExtensionField1");
 static get Extension|lateExtensionField2() → core::int
-  return let final core::int? #t11 = self::_#Extension|lateExtensionField2 in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField2") : #t11{core::int};
+  return let final core::int? #t11 = self::_#Extension|lateExtensionField2 in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField2") : #t11{core::int};
 static set Extension|lateExtensionField2(core::int #t12) → void
-  if(self::_#Extension|lateExtensionField2 == null)
+  if(self::_#Extension|lateExtensionField2.==(null))
     self::_#Extension|lateExtensionField2 = #t12;
   else
     throw new _in::LateError::fieldAI("lateExtensionField2");
@@ -93,7 +93,7 @@
   self::expect(87, self::Class::lateStaticField1);
   self::throws(() → core::int => self::Class::lateStaticField1 = 88, "Write value to initialized Class.lateStaticField1");
   self::Class::staticMethod();
-  new self::Class::•().{self::Class::instanceMethod}(){() → dynamic};
+  new self::Class::•().{self::Class::instanceMethod}();
   self::throws(() → core::int => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
@@ -101,13 +101,13 @@
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.transformed.expect
index 089ee2a..f425376 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.transformed.expect
@@ -11,16 +11,16 @@
     : super core::Object::•()
     ;
   static get lateStaticField1() → core::int
-    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("lateStaticField1") : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateStaticField1") : #t1{core::int};
   static set lateStaticField1(core::int #t2) → void
-    if(self::Class::_#lateStaticField1 == null)
+    if(self::Class::_#lateStaticField1.==(null))
       self::Class::_#lateStaticField1 = #t2;
     else
       throw new _in::LateError::fieldAI("lateStaticField1");
   static get lateStaticField2() → core::int
-    return let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("lateStaticField2") : #t3{core::int};
+    return let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateStaticField2") : #t3{core::int};
   static set lateStaticField2(core::int #t4) → void
-    if(self::Class::_#lateStaticField2 == null)
+    if(self::Class::_#lateStaticField2.==(null))
       self::Class::_#lateStaticField2 = #t4;
     else
       throw new _in::LateError::fieldAI("lateStaticField2");
@@ -31,16 +31,16 @@
     self::throws(() → core::int => self::Class::lateStaticField2 = 43, "Write value to initialized Class.lateStaticField2");
   }
   get lateInstanceField() → core::int
-    return let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5 == null ?{core::int} throw new _in::LateError::fieldNI("lateInstanceField") : #t5{core::int};
+    return let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateInstanceField") : #t5{core::int};
   set lateInstanceField(core::int #t6) → void
-    if(this.{self::Class::_#Class#lateInstanceField} == null)
+    if(this.{self::Class::_#Class#lateInstanceField}.==(null))
       this.{self::Class::_#Class#lateInstanceField} = #t6;
     else
       throw new _in::LateError::fieldAI("lateInstanceField");
   method instanceMethod() → dynamic {
-    self::throws(() → core::int => this.{self::Class::lateInstanceField}{core::int}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
+    self::expect(16, this.{self::Class::lateInstanceField});
     self::throws(() → core::int => this.{self::Class::lateInstanceField} = 17, "Write value to initialized Class.lateInstanceField");
   }
 }
@@ -57,23 +57,23 @@
 static field core::int? _#Extension|lateExtensionField1 = null;
 static field core::int? _#Extension|lateExtensionField2 = null;
 static get lateTopLevelField() → core::int
-  return let final core::int? #t7 = self::_#lateTopLevelField in #t7 == null ?{core::int} throw new _in::LateError::fieldNI("lateTopLevelField") : #t7{core::int};
+  return let final core::int? #t7 = self::_#lateTopLevelField in #t7.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateTopLevelField") : #t7{core::int};
 static set lateTopLevelField(core::int #t8) → void
-  if(self::_#lateTopLevelField == null)
+  if(self::_#lateTopLevelField.==(null))
     self::_#lateTopLevelField = #t8;
   else
     throw new _in::LateError::fieldAI("lateTopLevelField");
 static get Extension|lateExtensionField1() → core::int
-  return let final core::int? #t9 = self::_#Extension|lateExtensionField1 in #t9 == null ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField1") : #t9{core::int};
+  return let final core::int? #t9 = self::_#Extension|lateExtensionField1 in #t9.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField1") : #t9{core::int};
 static set Extension|lateExtensionField1(core::int #t10) → void
-  if(self::_#Extension|lateExtensionField1 == null)
+  if(self::_#Extension|lateExtensionField1.==(null))
     self::_#Extension|lateExtensionField1 = #t10;
   else
     throw new _in::LateError::fieldAI("lateExtensionField1");
 static get Extension|lateExtensionField2() → core::int
-  return let final core::int? #t11 = self::_#Extension|lateExtensionField2 in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField2") : #t11{core::int};
+  return let final core::int? #t11 = self::_#Extension|lateExtensionField2 in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("lateExtensionField2") : #t11{core::int};
 static set Extension|lateExtensionField2(core::int #t12) → void
-  if(self::_#Extension|lateExtensionField2 == null)
+  if(self::_#Extension|lateExtensionField2.==(null))
     self::_#Extension|lateExtensionField2 = #t12;
   else
     throw new _in::LateError::fieldAI("lateExtensionField2");
@@ -93,7 +93,7 @@
   self::expect(87, self::Class::lateStaticField1);
   self::throws(() → core::int => self::Class::lateStaticField1 = 88, "Write value to initialized Class.lateStaticField1");
   self::Class::staticMethod();
-  new self::Class::•().{self::Class::instanceMethod}(){() → dynamic};
+  new self::Class::•().{self::Class::instanceMethod}();
   self::throws(() → core::int => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
@@ -101,13 +101,13 @@
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.expect
index b24630c..e2db739 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.expect
@@ -47,9 +47,9 @@
       this.{self::Class::_#Class#lateInstanceField} = #t6;
     }
   method instanceMethod() → dynamic {
-    self::throws(() → core::int => this.{self::Class::lateInstanceField}{core::int}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
+    self::expect(16, this.{self::Class::lateInstanceField});
     self::throws(() → core::int => this.{self::Class::lateInstanceField} = 17, "Write value to initialized Class.lateInstanceField");
   }
 }
@@ -113,7 +113,7 @@
   self::expect(87, self::Class::lateStaticField1);
   self::throws(() → core::int => self::Class::lateStaticField1 = 88, "Write value to initialized Class.lateStaticField1");
   self::Class::staticMethod();
-  new self::Class::•().{self::Class::instanceMethod}(){() → dynamic};
+  new self::Class::•().{self::Class::instanceMethod}();
   self::throws(() → core::int => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
@@ -121,13 +121,13 @@
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.transformed.expect
index b24630c..e2db739 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.transformed.expect
@@ -47,9 +47,9 @@
       this.{self::Class::_#Class#lateInstanceField} = #t6;
     }
   method instanceMethod() → dynamic {
-    self::throws(() → core::int => this.{self::Class::lateInstanceField}{core::int}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
+    self::expect(16, this.{self::Class::lateInstanceField});
     self::throws(() → core::int => this.{self::Class::lateInstanceField} = 17, "Write value to initialized Class.lateInstanceField");
   }
 }
@@ -113,7 +113,7 @@
   self::expect(87, self::Class::lateStaticField1);
   self::throws(() → core::int => self::Class::lateStaticField1 = 88, "Write value to initialized Class.lateStaticField1");
   self::Class::staticMethod();
-  new self::Class::•().{self::Class::instanceMethod}(){() → dynamic};
+  new self::Class::•().{self::Class::instanceMethod}();
   self::throws(() → core::int => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
@@ -121,13 +121,13 @@
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.strong.expect
index 76b2806..b219a6f 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.strong.expect
@@ -10,9 +10,9 @@
   }
   lowered final core::int? #lateLocal;
   function #lateLocal#get() → core::int
-    return let final core::int? #t1 = #lateLocal in #t1 == null ?{core::int} let final core::int #t2 = initLateLocal(123){(core::int) → core::int} in #lateLocal == null ?{core::int} #lateLocal = #t2 : throw new _in::LateError::localADI("lateLocal") : #t1{core::int};
+    return let final core::int? #t1 = #lateLocal in #t1.==(null) ?{core::int} let final core::int #t2 = initLateLocal.call(123) in #lateLocal.==(null) ?{core::int} #lateLocal = #t2 : throw new _in::LateError::localADI("lateLocal") : #t1{core::int};
   self::expect(null, lateLocalInit);
-  self::expect(123, #lateLocal#get(){() → core::int});
+  self::expect(123, #lateLocal#get.call());
   self::expect(123, lateLocalInit);
   function local<T extends core::Object? = dynamic>(T% value) → Null {
     T? lateGenericLocalInit;
@@ -23,7 +23,7 @@
     lowered core::bool #lateGenericLocal#isSet = false;
     function #lateGenericLocal#get() → T% {
       if(!#lateGenericLocal#isSet) {
-        final T% #t3 = initLateGenericLocal(value){(T%) → T%};
+        final T% #t3 = initLateGenericLocal.call(value);
         if(#lateGenericLocal#isSet)
           throw new _in::LateError::localADI("lateGenericLocal");
         #lateGenericLocal = #t3;
@@ -32,14 +32,14 @@
       return #lateGenericLocal{T%};
     }
     self::expect(null, lateGenericLocalInit);
-    self::expect(value, #lateGenericLocal#get(){() → T%});
+    self::expect(value, #lateGenericLocal#get.call());
     self::expect(value, lateGenericLocalInit);
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(42){(core::int?) → Null};
-  local<core::int>(42){(core::int) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(42);
+  local.call<core::int>(42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.strong.transformed.expect
index 76b2806..b219a6f 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.strong.transformed.expect
@@ -10,9 +10,9 @@
   }
   lowered final core::int? #lateLocal;
   function #lateLocal#get() → core::int
-    return let final core::int? #t1 = #lateLocal in #t1 == null ?{core::int} let final core::int #t2 = initLateLocal(123){(core::int) → core::int} in #lateLocal == null ?{core::int} #lateLocal = #t2 : throw new _in::LateError::localADI("lateLocal") : #t1{core::int};
+    return let final core::int? #t1 = #lateLocal in #t1.==(null) ?{core::int} let final core::int #t2 = initLateLocal.call(123) in #lateLocal.==(null) ?{core::int} #lateLocal = #t2 : throw new _in::LateError::localADI("lateLocal") : #t1{core::int};
   self::expect(null, lateLocalInit);
-  self::expect(123, #lateLocal#get(){() → core::int});
+  self::expect(123, #lateLocal#get.call());
   self::expect(123, lateLocalInit);
   function local<T extends core::Object? = dynamic>(T% value) → Null {
     T? lateGenericLocalInit;
@@ -23,7 +23,7 @@
     lowered core::bool #lateGenericLocal#isSet = false;
     function #lateGenericLocal#get() → T% {
       if(!#lateGenericLocal#isSet) {
-        final T% #t3 = initLateGenericLocal(value){(T%) → T%};
+        final T% #t3 = initLateGenericLocal.call(value);
         if(#lateGenericLocal#isSet)
           throw new _in::LateError::localADI("lateGenericLocal");
         #lateGenericLocal = #t3;
@@ -32,14 +32,14 @@
       return #lateGenericLocal{T%};
     }
     self::expect(null, lateGenericLocalInit);
-    self::expect(value, #lateGenericLocal#get(){() → T%});
+    self::expect(value, #lateGenericLocal#get.call());
     self::expect(value, lateGenericLocalInit);
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(42){(core::int?) → Null};
-  local<core::int>(42){(core::int) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(42);
+  local.call<core::int>(42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.weak.expect
index 49e5b26..fd2146f 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.weak.expect
@@ -12,7 +12,7 @@
   lowered core::bool #lateLocal#isSet = false;
   function #lateLocal#get() → core::int {
     if(!#lateLocal#isSet) {
-      final core::int #t1 = initLateLocal(123){(core::int) → core::int};
+      final core::int #t1 = initLateLocal.call(123);
       if(#lateLocal#isSet)
         throw new _in::LateError::localADI("lateLocal");
       #lateLocal = #t1;
@@ -21,7 +21,7 @@
     return #lateLocal{core::int};
   }
   self::expect(null, lateLocalInit);
-  self::expect(123, #lateLocal#get(){() → core::int});
+  self::expect(123, #lateLocal#get.call());
   self::expect(123, lateLocalInit);
   function local<T extends core::Object? = dynamic>(T% value) → Null {
     T? lateGenericLocalInit;
@@ -32,7 +32,7 @@
     lowered core::bool #lateGenericLocal#isSet = false;
     function #lateGenericLocal#get() → T% {
       if(!#lateGenericLocal#isSet) {
-        final T% #t2 = initLateGenericLocal(value){(T%) → T%};
+        final T% #t2 = initLateGenericLocal.call(value);
         if(#lateGenericLocal#isSet)
           throw new _in::LateError::localADI("lateGenericLocal");
         #lateGenericLocal = #t2;
@@ -41,14 +41,14 @@
       return #lateGenericLocal{T%};
     }
     self::expect(null, lateGenericLocalInit);
-    self::expect(value, #lateGenericLocal#get(){() → T%});
+    self::expect(value, #lateGenericLocal#get.call());
     self::expect(value, lateGenericLocalInit);
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(42){(core::int?) → Null};
-  local<core::int>(42){(core::int) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(42);
+  local.call<core::int>(42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.weak.transformed.expect
index 49e5b26..fd2146f 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_with_initializer.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
   lowered core::bool #lateLocal#isSet = false;
   function #lateLocal#get() → core::int {
     if(!#lateLocal#isSet) {
-      final core::int #t1 = initLateLocal(123){(core::int) → core::int};
+      final core::int #t1 = initLateLocal.call(123);
       if(#lateLocal#isSet)
         throw new _in::LateError::localADI("lateLocal");
       #lateLocal = #t1;
@@ -21,7 +21,7 @@
     return #lateLocal{core::int};
   }
   self::expect(null, lateLocalInit);
-  self::expect(123, #lateLocal#get(){() → core::int});
+  self::expect(123, #lateLocal#get.call());
   self::expect(123, lateLocalInit);
   function local<T extends core::Object? = dynamic>(T% value) → Null {
     T? lateGenericLocalInit;
@@ -32,7 +32,7 @@
     lowered core::bool #lateGenericLocal#isSet = false;
     function #lateGenericLocal#get() → T% {
       if(!#lateGenericLocal#isSet) {
-        final T% #t2 = initLateGenericLocal(value){(T%) → T%};
+        final T% #t2 = initLateGenericLocal.call(value);
         if(#lateGenericLocal#isSet)
           throw new _in::LateError::localADI("lateGenericLocal");
         #lateGenericLocal = #t2;
@@ -41,14 +41,14 @@
       return #lateGenericLocal{T%};
     }
     self::expect(null, lateGenericLocalInit);
-    self::expect(value, #lateGenericLocal#get(){() → T%});
+    self::expect(value, #lateGenericLocal#get.call());
     self::expect(value, lateGenericLocalInit);
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(42){(core::int?) → Null};
-  local<core::int>(42){(core::int) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(42);
+  local.call<core::int>(42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.expect
index 39fa4f1..103a9f9 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.expect
@@ -4,24 +4,24 @@
 import "dart:_internal" as _in;
 
 static method main() → dynamic {
-  core::bool b = (() → core::bool => false)(){() → core::bool};
+  core::bool b = (() → core::bool => false).call();
   lowered final core::int? #lateLocal;
   function #lateLocal#get() → core::int
-    return let final core::int? #t1 = #lateLocal in #t1 == null ?{core::int} throw new _in::LateError::localNI("lateLocal") : #t1{core::int};
+    return let final core::int? #t1 = #lateLocal in #t1.==(null) ?{core::int} throw new _in::LateError::localNI("lateLocal") : #t1{core::int};
   function #lateLocal#set(core::int #t2) → dynamic
-    if(#lateLocal == null)
+    if(#lateLocal.==(null))
       return #lateLocal = #t2;
     else
       throw new _in::LateError::localAI("lateLocal");
   if(b) {
-    #lateLocal#set(123){(core::int) → dynamic};
+    #lateLocal#set.call(123);
   }
-  self::throws(() → core::int => #lateLocal#get(){() → core::int}, "Read value from uninitialized lateLocal");
+  self::throws(() → core::int => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
   if(!b) {
-    self::expect(123, #lateLocal#set(123){(core::int) → dynamic});
-    self::expect(123, #lateLocal#get(){() → core::int});
+    self::expect(123, #lateLocal#set.call(123));
+    self::expect(123, #lateLocal#get.call());
   }
-  self::throws(() → core::int => #lateLocal#set(124){(core::int) → dynamic}, "Write value to initialized lateLocal");
+  self::throws(() → core::int => #lateLocal#set.call(124), "Write value to initialized lateLocal");
   function local<T extends core::Object? = dynamic>(T% value) → Null {
     lowered final T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -35,27 +35,27 @@
         return #lateGenericLocal = #t3;
       }
     if(b) {
-      #lateGenericLocal#set(value){(T%) → dynamic};
+      #lateGenericLocal#set.call(value);
     }
-    self::throws(() → T% => #lateGenericLocal#get(){() → T%}, "Read value from uninitialized lateGenericLocal");
+    self::throws(() → T% => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
     if(!b) {
-      self::expect(value, #lateGenericLocal#set(value){(T%) → dynamic});
-      self::expect(value, #lateGenericLocal#get(){() → T%});
+      self::expect(value, #lateGenericLocal#set.call(value));
+      self::expect(value, #lateGenericLocal#get.call());
     }
-    self::throws(() → T% => #lateGenericLocal#set(value){(T%) → dynamic}, "Write value to initialized lateGenericLocal");
+    self::throws(() → T% => #lateGenericLocal#set.call(value), "Write value to initialized lateGenericLocal");
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(42){(core::int?) → Null};
-  local<core::int>(42){(core::int) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(42);
+  local.call<core::int>(42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.transformed.expect
index 39fa4f1..103a9f9 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.transformed.expect
@@ -4,24 +4,24 @@
 import "dart:_internal" as _in;
 
 static method main() → dynamic {
-  core::bool b = (() → core::bool => false)(){() → core::bool};
+  core::bool b = (() → core::bool => false).call();
   lowered final core::int? #lateLocal;
   function #lateLocal#get() → core::int
-    return let final core::int? #t1 = #lateLocal in #t1 == null ?{core::int} throw new _in::LateError::localNI("lateLocal") : #t1{core::int};
+    return let final core::int? #t1 = #lateLocal in #t1.==(null) ?{core::int} throw new _in::LateError::localNI("lateLocal") : #t1{core::int};
   function #lateLocal#set(core::int #t2) → dynamic
-    if(#lateLocal == null)
+    if(#lateLocal.==(null))
       return #lateLocal = #t2;
     else
       throw new _in::LateError::localAI("lateLocal");
   if(b) {
-    #lateLocal#set(123){(core::int) → dynamic};
+    #lateLocal#set.call(123);
   }
-  self::throws(() → core::int => #lateLocal#get(){() → core::int}, "Read value from uninitialized lateLocal");
+  self::throws(() → core::int => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
   if(!b) {
-    self::expect(123, #lateLocal#set(123){(core::int) → dynamic});
-    self::expect(123, #lateLocal#get(){() → core::int});
+    self::expect(123, #lateLocal#set.call(123));
+    self::expect(123, #lateLocal#get.call());
   }
-  self::throws(() → core::int => #lateLocal#set(124){(core::int) → dynamic}, "Write value to initialized lateLocal");
+  self::throws(() → core::int => #lateLocal#set.call(124), "Write value to initialized lateLocal");
   function local<T extends core::Object? = dynamic>(T% value) → Null {
     lowered final T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -35,27 +35,27 @@
         return #lateGenericLocal = #t3;
       }
     if(b) {
-      #lateGenericLocal#set(value){(T%) → dynamic};
+      #lateGenericLocal#set.call(value);
     }
-    self::throws(() → T% => #lateGenericLocal#get(){() → T%}, "Read value from uninitialized lateGenericLocal");
+    self::throws(() → T% => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
     if(!b) {
-      self::expect(value, #lateGenericLocal#set(value){(T%) → dynamic});
-      self::expect(value, #lateGenericLocal#get(){() → T%});
+      self::expect(value, #lateGenericLocal#set.call(value));
+      self::expect(value, #lateGenericLocal#get.call());
     }
-    self::throws(() → T% => #lateGenericLocal#set(value){(T%) → dynamic}, "Write value to initialized lateGenericLocal");
+    self::throws(() → T% => #lateGenericLocal#set.call(value), "Write value to initialized lateGenericLocal");
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(42){(core::int?) → Null};
-  local<core::int>(42){(core::int) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(42);
+  local.call<core::int>(42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.expect
index 996032d..4ed637a 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.expect
@@ -4,7 +4,7 @@
 import "dart:_internal" as _in;
 
 static method main() → dynamic {
-  core::bool b = (() → core::bool => false)(){() → core::bool};
+  core::bool b = (() → core::bool => false).call();
   lowered final core::int? #lateLocal;
   lowered core::bool #lateLocal#isSet = false;
   function #lateLocal#get() → core::int
@@ -17,14 +17,14 @@
       return #lateLocal = #t1;
     }
   if(b) {
-    #lateLocal#set(123){(core::int) → dynamic};
+    #lateLocal#set.call(123);
   }
-  self::throws(() → core::int => #lateLocal#get(){() → core::int}, "Read value from uninitialized lateLocal");
+  self::throws(() → core::int => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
   if(!b) {
-    self::expect(123, #lateLocal#set(123){(core::int) → dynamic});
-    self::expect(123, #lateLocal#get(){() → core::int});
+    self::expect(123, #lateLocal#set.call(123));
+    self::expect(123, #lateLocal#get.call());
   }
-  self::throws(() → core::int => #lateLocal#set(124){(core::int) → dynamic}, "Write value to initialized lateLocal");
+  self::throws(() → core::int => #lateLocal#set.call(124), "Write value to initialized lateLocal");
   function local<T extends core::Object? = dynamic>(T% value) → Null {
     lowered final T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -38,27 +38,27 @@
         return #lateGenericLocal = #t2;
       }
     if(b) {
-      #lateGenericLocal#set(value){(T%) → dynamic};
+      #lateGenericLocal#set.call(value);
     }
-    self::throws(() → T% => #lateGenericLocal#get(){() → T%}, "Read value from uninitialized lateGenericLocal");
+    self::throws(() → T% => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
     if(!b) {
-      self::expect(value, #lateGenericLocal#set(value){(T%) → dynamic});
-      self::expect(value, #lateGenericLocal#get(){() → T%});
+      self::expect(value, #lateGenericLocal#set.call(value));
+      self::expect(value, #lateGenericLocal#get.call());
     }
-    self::throws(() → T% => #lateGenericLocal#set(value){(T%) → dynamic}, "Write value to initialized lateGenericLocal");
+    self::throws(() → T% => #lateGenericLocal#set.call(value), "Write value to initialized lateGenericLocal");
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(42){(core::int?) → Null};
-  local<core::int>(42){(core::int) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(42);
+  local.call<core::int>(42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.transformed.expect
index 996032d..4ed637a 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 import "dart:_internal" as _in;
 
 static method main() → dynamic {
-  core::bool b = (() → core::bool => false)(){() → core::bool};
+  core::bool b = (() → core::bool => false).call();
   lowered final core::int? #lateLocal;
   lowered core::bool #lateLocal#isSet = false;
   function #lateLocal#get() → core::int
@@ -17,14 +17,14 @@
       return #lateLocal = #t1;
     }
   if(b) {
-    #lateLocal#set(123){(core::int) → dynamic};
+    #lateLocal#set.call(123);
   }
-  self::throws(() → core::int => #lateLocal#get(){() → core::int}, "Read value from uninitialized lateLocal");
+  self::throws(() → core::int => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
   if(!b) {
-    self::expect(123, #lateLocal#set(123){(core::int) → dynamic});
-    self::expect(123, #lateLocal#get(){() → core::int});
+    self::expect(123, #lateLocal#set.call(123));
+    self::expect(123, #lateLocal#get.call());
   }
-  self::throws(() → core::int => #lateLocal#set(124){(core::int) → dynamic}, "Write value to initialized lateLocal");
+  self::throws(() → core::int => #lateLocal#set.call(124), "Write value to initialized lateLocal");
   function local<T extends core::Object? = dynamic>(T% value) → Null {
     lowered final T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -38,27 +38,27 @@
         return #lateGenericLocal = #t2;
       }
     if(b) {
-      #lateGenericLocal#set(value){(T%) → dynamic};
+      #lateGenericLocal#set.call(value);
     }
-    self::throws(() → T% => #lateGenericLocal#get(){() → T%}, "Read value from uninitialized lateGenericLocal");
+    self::throws(() → T% => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
     if(!b) {
-      self::expect(value, #lateGenericLocal#set(value){(T%) → dynamic});
-      self::expect(value, #lateGenericLocal#get(){() → T%});
+      self::expect(value, #lateGenericLocal#set.call(value));
+      self::expect(value, #lateGenericLocal#get.call());
     }
-    self::throws(() → T% => #lateGenericLocal#set(value){(T%) → dynamic}, "Write value to initialized lateGenericLocal");
+    self::throws(() → T% => #lateGenericLocal#set.call(value), "Write value to initialized lateGenericLocal");
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(42){(core::int?) → Null};
-  local<core::int>(42){(core::int) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(42);
+  local.call<core::int>(42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.strong.expect
index f4ed7b4..705fc46 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.strong.expect
@@ -56,7 +56,7 @@
   }
   get lateInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#lateInstanceField#isSet}) {
-      final core::int? #t3 = this.{self::Class::initLateInstanceField}(16){(core::int) → core::int?};
+      final core::int? #t3 = this.{self::Class::initLateInstanceField}(16);
       if(this.{self::Class::_#Class#lateInstanceField#isSet})
         throw new _in::LateError::fieldADI("lateInstanceField");
       this.{self::Class::_#Class#lateInstanceField} = #t3;
@@ -69,7 +69,7 @@
   }
   get lateGenericInstanceField() → self::Class::T? {
     if(!this.{self::Class::_#Class#lateGenericInstanceField#isSet}) {
-      final self::Class::T? #t4 = this.{self::Class::initLateGenericInstanceField}(this.{self::Class::field}{self::Class::T?}){(self::Class::T?) → self::Class::T?};
+      final self::Class::T? #t4 = this.{self::Class::initLateGenericInstanceField}(this.{self::Class::field});
       if(this.{self::Class::_#Class#lateGenericInstanceField#isSet})
         throw new _in::LateError::fieldADI("lateGenericInstanceField");
       this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
@@ -78,12 +78,12 @@
     return this.{self::Class::_#Class#lateGenericInstanceField};
   }
   method instanceMethod() → dynamic {
-    self::expect(null, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
-    self::expect(16, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(null, this.{self::Class::lateGenericInstanceFieldInit}{self::Class::T?});
-    self::expect(this.{self::Class::field}{self::Class::T?}, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
-    self::expect(this.{self::Class::field}{self::Class::T?}, this.{self::Class::lateGenericInstanceFieldInit}{self::Class::T?});
+    self::expect(null, this.{self::Class::lateInstanceFieldInit});
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::expect(16, this.{self::Class::lateInstanceFieldInit});
+    self::expect(null, this.{self::Class::lateGenericInstanceFieldInit});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericInstanceField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericInstanceFieldInit});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -160,15 +160,15 @@
   self::expect(87, self::Class::lateStaticField1);
   self::expect(87, self::Class::lateStaticField1Init);
   self::Class::staticMethod();
-  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}(){() → dynamic};
-  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}(){() → dynamic};
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(){() → dynamic};
+  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}();
+  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}();
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}();
   self::expect(null, self::Extension|lateExtensionField1Init);
   self::expect(87, self::Extension|lateExtensionField1);
   self::expect(87, self::Extension|lateExtensionField1Init);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.strong.transformed.expect
index f4ed7b4..705fc46 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.strong.transformed.expect
@@ -56,7 +56,7 @@
   }
   get lateInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#lateInstanceField#isSet}) {
-      final core::int? #t3 = this.{self::Class::initLateInstanceField}(16){(core::int) → core::int?};
+      final core::int? #t3 = this.{self::Class::initLateInstanceField}(16);
       if(this.{self::Class::_#Class#lateInstanceField#isSet})
         throw new _in::LateError::fieldADI("lateInstanceField");
       this.{self::Class::_#Class#lateInstanceField} = #t3;
@@ -69,7 +69,7 @@
   }
   get lateGenericInstanceField() → self::Class::T? {
     if(!this.{self::Class::_#Class#lateGenericInstanceField#isSet}) {
-      final self::Class::T? #t4 = this.{self::Class::initLateGenericInstanceField}(this.{self::Class::field}{self::Class::T?}){(self::Class::T?) → self::Class::T?};
+      final self::Class::T? #t4 = this.{self::Class::initLateGenericInstanceField}(this.{self::Class::field});
       if(this.{self::Class::_#Class#lateGenericInstanceField#isSet})
         throw new _in::LateError::fieldADI("lateGenericInstanceField");
       this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
@@ -78,12 +78,12 @@
     return this.{self::Class::_#Class#lateGenericInstanceField};
   }
   method instanceMethod() → dynamic {
-    self::expect(null, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
-    self::expect(16, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(null, this.{self::Class::lateGenericInstanceFieldInit}{self::Class::T?});
-    self::expect(this.{self::Class::field}{self::Class::T?}, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
-    self::expect(this.{self::Class::field}{self::Class::T?}, this.{self::Class::lateGenericInstanceFieldInit}{self::Class::T?});
+    self::expect(null, this.{self::Class::lateInstanceFieldInit});
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::expect(16, this.{self::Class::lateInstanceFieldInit});
+    self::expect(null, this.{self::Class::lateGenericInstanceFieldInit});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericInstanceField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericInstanceFieldInit});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -160,15 +160,15 @@
   self::expect(87, self::Class::lateStaticField1);
   self::expect(87, self::Class::lateStaticField1Init);
   self::Class::staticMethod();
-  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}(){() → dynamic};
-  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}(){() → dynamic};
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(){() → dynamic};
+  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}();
+  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}();
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}();
   self::expect(null, self::Extension|lateExtensionField1Init);
   self::expect(87, self::Extension|lateExtensionField1);
   self::expect(87, self::Extension|lateExtensionField1Init);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.weak.expect
index f4ed7b4..705fc46 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.weak.expect
@@ -56,7 +56,7 @@
   }
   get lateInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#lateInstanceField#isSet}) {
-      final core::int? #t3 = this.{self::Class::initLateInstanceField}(16){(core::int) → core::int?};
+      final core::int? #t3 = this.{self::Class::initLateInstanceField}(16);
       if(this.{self::Class::_#Class#lateInstanceField#isSet})
         throw new _in::LateError::fieldADI("lateInstanceField");
       this.{self::Class::_#Class#lateInstanceField} = #t3;
@@ -69,7 +69,7 @@
   }
   get lateGenericInstanceField() → self::Class::T? {
     if(!this.{self::Class::_#Class#lateGenericInstanceField#isSet}) {
-      final self::Class::T? #t4 = this.{self::Class::initLateGenericInstanceField}(this.{self::Class::field}{self::Class::T?}){(self::Class::T?) → self::Class::T?};
+      final self::Class::T? #t4 = this.{self::Class::initLateGenericInstanceField}(this.{self::Class::field});
       if(this.{self::Class::_#Class#lateGenericInstanceField#isSet})
         throw new _in::LateError::fieldADI("lateGenericInstanceField");
       this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
@@ -78,12 +78,12 @@
     return this.{self::Class::_#Class#lateGenericInstanceField};
   }
   method instanceMethod() → dynamic {
-    self::expect(null, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
-    self::expect(16, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(null, this.{self::Class::lateGenericInstanceFieldInit}{self::Class::T?});
-    self::expect(this.{self::Class::field}{self::Class::T?}, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
-    self::expect(this.{self::Class::field}{self::Class::T?}, this.{self::Class::lateGenericInstanceFieldInit}{self::Class::T?});
+    self::expect(null, this.{self::Class::lateInstanceFieldInit});
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::expect(16, this.{self::Class::lateInstanceFieldInit});
+    self::expect(null, this.{self::Class::lateGenericInstanceFieldInit});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericInstanceField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericInstanceFieldInit});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -160,15 +160,15 @@
   self::expect(87, self::Class::lateStaticField1);
   self::expect(87, self::Class::lateStaticField1Init);
   self::Class::staticMethod();
-  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}(){() → dynamic};
-  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}(){() → dynamic};
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(){() → dynamic};
+  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}();
+  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}();
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}();
   self::expect(null, self::Extension|lateExtensionField1Init);
   self::expect(87, self::Extension|lateExtensionField1);
   self::expect(87, self::Extension|lateExtensionField1Init);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.weak.transformed.expect
index f4ed7b4..705fc46 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.weak.transformed.expect
@@ -56,7 +56,7 @@
   }
   get lateInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#lateInstanceField#isSet}) {
-      final core::int? #t3 = this.{self::Class::initLateInstanceField}(16){(core::int) → core::int?};
+      final core::int? #t3 = this.{self::Class::initLateInstanceField}(16);
       if(this.{self::Class::_#Class#lateInstanceField#isSet})
         throw new _in::LateError::fieldADI("lateInstanceField");
       this.{self::Class::_#Class#lateInstanceField} = #t3;
@@ -69,7 +69,7 @@
   }
   get lateGenericInstanceField() → self::Class::T? {
     if(!this.{self::Class::_#Class#lateGenericInstanceField#isSet}) {
-      final self::Class::T? #t4 = this.{self::Class::initLateGenericInstanceField}(this.{self::Class::field}{self::Class::T?}){(self::Class::T?) → self::Class::T?};
+      final self::Class::T? #t4 = this.{self::Class::initLateGenericInstanceField}(this.{self::Class::field});
       if(this.{self::Class::_#Class#lateGenericInstanceField#isSet})
         throw new _in::LateError::fieldADI("lateGenericInstanceField");
       this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
@@ -78,12 +78,12 @@
     return this.{self::Class::_#Class#lateGenericInstanceField};
   }
   method instanceMethod() → dynamic {
-    self::expect(null, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
-    self::expect(16, this.{self::Class::lateInstanceFieldInit}{core::int?});
-    self::expect(null, this.{self::Class::lateGenericInstanceFieldInit}{self::Class::T?});
-    self::expect(this.{self::Class::field}{self::Class::T?}, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
-    self::expect(this.{self::Class::field}{self::Class::T?}, this.{self::Class::lateGenericInstanceFieldInit}{self::Class::T?});
+    self::expect(null, this.{self::Class::lateInstanceFieldInit});
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::expect(16, this.{self::Class::lateInstanceFieldInit});
+    self::expect(null, this.{self::Class::lateGenericInstanceFieldInit});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericInstanceField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericInstanceFieldInit});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -160,15 +160,15 @@
   self::expect(87, self::Class::lateStaticField1);
   self::expect(87, self::Class::lateStaticField1Init);
   self::Class::staticMethod();
-  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}(){() → dynamic};
-  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}(){() → dynamic};
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(){() → dynamic};
+  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}();
+  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}();
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}();
   self::expect(null, self::Extension|lateExtensionField1Init);
   self::expect(87, self::Extension|lateExtensionField1);
   self::expect(87, self::Extension|lateExtensionField1Init);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.expect
index b47d0dd..b107b44 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.expect
@@ -58,13 +58,13 @@
       this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
     }
   method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic {
-    self::throws(() → core::int? => this.{self::Class::lateInstanceField}{core::int?}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int? => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
+    self::expect(16, this.{self::Class::lateInstanceField});
     self::throws(() → core::int => this.{self::Class::lateInstanceField} = 17, "Write value to initialized Class.lateInstanceField");
-    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}{self::Class::T?}, "Read value from uninitialized Class.lateGenericInstanceField");
+    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
     self::throws(() → self::Class::T% => this.{self::Class::lateGenericInstanceField} = value, "Write value to initialized Class.lateGenericInstanceField");
   }
 }
@@ -128,9 +128,9 @@
   self::expect(87, self::Class::lateStaticField1);
   self::throws(() → core::int => self::Class::lateStaticField1 = 88, "Write value to initialized Class.lateStaticField1");
   self::Class::staticMethod();
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(0){(core::int) → dynamic};
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(0);
   self::throws(() → core::int? => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
@@ -138,13 +138,13 @@
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.transformed.expect
index b47d0dd..b107b44 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.transformed.expect
@@ -58,13 +58,13 @@
       this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
     }
   method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic {
-    self::throws(() → core::int? => this.{self::Class::lateInstanceField}{core::int?}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int? => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
+    self::expect(16, this.{self::Class::lateInstanceField});
     self::throws(() → core::int => this.{self::Class::lateInstanceField} = 17, "Write value to initialized Class.lateInstanceField");
-    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}{self::Class::T?}, "Read value from uninitialized Class.lateGenericInstanceField");
+    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
     self::throws(() → self::Class::T% => this.{self::Class::lateGenericInstanceField} = value, "Write value to initialized Class.lateGenericInstanceField");
   }
 }
@@ -128,9 +128,9 @@
   self::expect(87, self::Class::lateStaticField1);
   self::throws(() → core::int => self::Class::lateStaticField1 = 88, "Write value to initialized Class.lateStaticField1");
   self::Class::staticMethod();
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(0){(core::int) → dynamic};
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(0);
   self::throws(() → core::int? => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
@@ -138,13 +138,13 @@
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.expect
index b47d0dd..b107b44 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.expect
@@ -58,13 +58,13 @@
       this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
     }
   method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic {
-    self::throws(() → core::int? => this.{self::Class::lateInstanceField}{core::int?}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int? => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
+    self::expect(16, this.{self::Class::lateInstanceField});
     self::throws(() → core::int => this.{self::Class::lateInstanceField} = 17, "Write value to initialized Class.lateInstanceField");
-    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}{self::Class::T?}, "Read value from uninitialized Class.lateGenericInstanceField");
+    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
     self::throws(() → self::Class::T% => this.{self::Class::lateGenericInstanceField} = value, "Write value to initialized Class.lateGenericInstanceField");
   }
 }
@@ -128,9 +128,9 @@
   self::expect(87, self::Class::lateStaticField1);
   self::throws(() → core::int => self::Class::lateStaticField1 = 88, "Write value to initialized Class.lateStaticField1");
   self::Class::staticMethod();
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(0){(core::int) → dynamic};
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(0);
   self::throws(() → core::int? => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
@@ -138,13 +138,13 @@
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.transformed.expect
index b47d0dd..b107b44 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.transformed.expect
@@ -58,13 +58,13 @@
       this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
     }
   method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic {
-    self::throws(() → core::int? => this.{self::Class::lateInstanceField}{core::int?}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int? => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
+    self::expect(16, this.{self::Class::lateInstanceField});
     self::throws(() → core::int => this.{self::Class::lateInstanceField} = 17, "Write value to initialized Class.lateInstanceField");
-    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}{self::Class::T?}, "Read value from uninitialized Class.lateGenericInstanceField");
+    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
     self::throws(() → self::Class::T% => this.{self::Class::lateGenericInstanceField} = value, "Write value to initialized Class.lateGenericInstanceField");
   }
 }
@@ -128,9 +128,9 @@
   self::expect(87, self::Class::lateStaticField1);
   self::throws(() → core::int => self::Class::lateStaticField1 = 88, "Write value to initialized Class.lateStaticField1");
   self::Class::staticMethod();
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(0){(core::int) → dynamic};
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(0);
   self::throws(() → core::int? => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
@@ -138,13 +138,13 @@
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.strong.expect
index 9d9501d..d2e95b9 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.strong.expect
@@ -12,7 +12,7 @@
   lowered core::bool #lateLocal#isSet = false;
   function #lateLocal#get() → core::int? {
     if(!#lateLocal#isSet) {
-      final core::int? #t1 = initLateLocal(123){(core::int?) → core::int?};
+      final core::int? #t1 = initLateLocal.call(123);
       if(#lateLocal#isSet)
         throw new _in::LateError::localADI("lateLocal");
       #lateLocal = #t1;
@@ -21,7 +21,7 @@
     return #lateLocal;
   }
   self::expect(null, lateLocalInit);
-  self::expect(123, #lateLocal#get(){() → core::int?});
+  self::expect(123, #lateLocal#get.call());
   self::expect(123, lateLocalInit);
   function local<T extends core::Object? = dynamic>(T? value) → Null {
     T? lateGenericLocalInit;
@@ -32,7 +32,7 @@
     lowered core::bool #lateGenericLocal#isSet = false;
     function #lateGenericLocal#get() → T? {
       if(!#lateGenericLocal#isSet) {
-        final T? #t2 = initLateGenericLocal(value){(T?) → T?};
+        final T? #t2 = initLateGenericLocal.call(value);
         if(#lateGenericLocal#isSet)
           throw new _in::LateError::localADI("lateGenericLocal");
         #lateGenericLocal = #t2;
@@ -41,14 +41,14 @@
       return #lateGenericLocal;
     }
     self::expect(null, lateGenericLocalInit);
-    self::expect(value, #lateGenericLocal#get(){() → T?});
+    self::expect(value, #lateGenericLocal#get.call());
     self::expect(value, lateGenericLocalInit);
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(42){(core::int?) → Null};
-  local<core::int>(42){(core::int?) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(42);
+  local.call<core::int>(42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.strong.transformed.expect
index 9d9501d..d2e95b9 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
   lowered core::bool #lateLocal#isSet = false;
   function #lateLocal#get() → core::int? {
     if(!#lateLocal#isSet) {
-      final core::int? #t1 = initLateLocal(123){(core::int?) → core::int?};
+      final core::int? #t1 = initLateLocal.call(123);
       if(#lateLocal#isSet)
         throw new _in::LateError::localADI("lateLocal");
       #lateLocal = #t1;
@@ -21,7 +21,7 @@
     return #lateLocal;
   }
   self::expect(null, lateLocalInit);
-  self::expect(123, #lateLocal#get(){() → core::int?});
+  self::expect(123, #lateLocal#get.call());
   self::expect(123, lateLocalInit);
   function local<T extends core::Object? = dynamic>(T? value) → Null {
     T? lateGenericLocalInit;
@@ -32,7 +32,7 @@
     lowered core::bool #lateGenericLocal#isSet = false;
     function #lateGenericLocal#get() → T? {
       if(!#lateGenericLocal#isSet) {
-        final T? #t2 = initLateGenericLocal(value){(T?) → T?};
+        final T? #t2 = initLateGenericLocal.call(value);
         if(#lateGenericLocal#isSet)
           throw new _in::LateError::localADI("lateGenericLocal");
         #lateGenericLocal = #t2;
@@ -41,14 +41,14 @@
       return #lateGenericLocal;
     }
     self::expect(null, lateGenericLocalInit);
-    self::expect(value, #lateGenericLocal#get(){() → T?});
+    self::expect(value, #lateGenericLocal#get.call());
     self::expect(value, lateGenericLocalInit);
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(42){(core::int?) → Null};
-  local<core::int>(42){(core::int?) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(42);
+  local.call<core::int>(42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.weak.expect
index 9d9501d..d2e95b9 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.weak.expect
@@ -12,7 +12,7 @@
   lowered core::bool #lateLocal#isSet = false;
   function #lateLocal#get() → core::int? {
     if(!#lateLocal#isSet) {
-      final core::int? #t1 = initLateLocal(123){(core::int?) → core::int?};
+      final core::int? #t1 = initLateLocal.call(123);
       if(#lateLocal#isSet)
         throw new _in::LateError::localADI("lateLocal");
       #lateLocal = #t1;
@@ -21,7 +21,7 @@
     return #lateLocal;
   }
   self::expect(null, lateLocalInit);
-  self::expect(123, #lateLocal#get(){() → core::int?});
+  self::expect(123, #lateLocal#get.call());
   self::expect(123, lateLocalInit);
   function local<T extends core::Object? = dynamic>(T? value) → Null {
     T? lateGenericLocalInit;
@@ -32,7 +32,7 @@
     lowered core::bool #lateGenericLocal#isSet = false;
     function #lateGenericLocal#get() → T? {
       if(!#lateGenericLocal#isSet) {
-        final T? #t2 = initLateGenericLocal(value){(T?) → T?};
+        final T? #t2 = initLateGenericLocal.call(value);
         if(#lateGenericLocal#isSet)
           throw new _in::LateError::localADI("lateGenericLocal");
         #lateGenericLocal = #t2;
@@ -41,14 +41,14 @@
       return #lateGenericLocal;
     }
     self::expect(null, lateGenericLocalInit);
-    self::expect(value, #lateGenericLocal#get(){() → T?});
+    self::expect(value, #lateGenericLocal#get.call());
     self::expect(value, lateGenericLocalInit);
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(42){(core::int?) → Null};
-  local<core::int>(42){(core::int?) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(42);
+  local.call<core::int>(42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.weak.transformed.expect
index 9d9501d..d2e95b9 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_with_initializer.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
   lowered core::bool #lateLocal#isSet = false;
   function #lateLocal#get() → core::int? {
     if(!#lateLocal#isSet) {
-      final core::int? #t1 = initLateLocal(123){(core::int?) → core::int?};
+      final core::int? #t1 = initLateLocal.call(123);
       if(#lateLocal#isSet)
         throw new _in::LateError::localADI("lateLocal");
       #lateLocal = #t1;
@@ -21,7 +21,7 @@
     return #lateLocal;
   }
   self::expect(null, lateLocalInit);
-  self::expect(123, #lateLocal#get(){() → core::int?});
+  self::expect(123, #lateLocal#get.call());
   self::expect(123, lateLocalInit);
   function local<T extends core::Object? = dynamic>(T? value) → Null {
     T? lateGenericLocalInit;
@@ -32,7 +32,7 @@
     lowered core::bool #lateGenericLocal#isSet = false;
     function #lateGenericLocal#get() → T? {
       if(!#lateGenericLocal#isSet) {
-        final T? #t2 = initLateGenericLocal(value){(T?) → T?};
+        final T? #t2 = initLateGenericLocal.call(value);
         if(#lateGenericLocal#isSet)
           throw new _in::LateError::localADI("lateGenericLocal");
         #lateGenericLocal = #t2;
@@ -41,14 +41,14 @@
       return #lateGenericLocal;
     }
     self::expect(null, lateGenericLocalInit);
-    self::expect(value, #lateGenericLocal#get(){() → T?});
+    self::expect(value, #lateGenericLocal#get.call());
     self::expect(value, lateGenericLocalInit);
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(42){(core::int?) → Null};
-  local<core::int>(42){(core::int?) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(42);
+  local.call<core::int>(42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.expect
index 23b5b00..9fa00df 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.expect
@@ -15,12 +15,12 @@
       #lateLocal#isSet = true;
       return #lateLocal = #t1;
     }
-  self::throws(() → core::int? => #lateLocal#get(){() → core::int?}, "Read value from uninitialized lateLocal");
-  if(1 =={core::num::==}{(core::Object) → core::bool} 1) {
-    self::expect(123, #lateLocal#set(123){(core::int?) → dynamic});
+  self::throws(() → core::int? => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
+  if(1.{core::num::==}(1)) {
+    self::expect(123, #lateLocal#set.call(123));
   }
-  self::expect(123, #lateLocal#get(){() → core::int?});
-  self::throws(() → core::int => #lateLocal#set(124){(core::int?) → dynamic}, "Write value to initialized lateLocal");
+  self::expect(123, #lateLocal#get.call());
+  self::throws(() → core::int => #lateLocal#set.call(124), "Write value to initialized lateLocal");
   function local<T extends core::Object? = dynamic>(T? value) → Null {
     lowered final T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -33,26 +33,26 @@
         #lateGenericLocal#isSet = true;
         return #lateGenericLocal = #t2;
       }
-    self::throws(() → T? => #lateGenericLocal#get(){() → T?}, "Read value from uninitialized lateGenericLocal");
-    if(1 =={core::num::==}{(core::Object) → core::bool} 1) {
-      self::expect(value, #lateGenericLocal#set(value){(T?) → dynamic});
+    self::throws(() → T? => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
+    if(1.{core::num::==}(1)) {
+      self::expect(value, #lateGenericLocal#set.call(value));
     }
-    self::expect(value, #lateGenericLocal#get(){() → T?});
-    self::throws(() → T? => #lateGenericLocal#set(value){(T?) → dynamic}, "Write value to initialized lateGenericLocal");
+    self::expect(value, #lateGenericLocal#get.call());
+    self::throws(() → T? => #lateGenericLocal#set.call(value), "Write value to initialized lateGenericLocal");
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(0){(core::int?) → Null};
-  local<core::int>(null){(core::int?) → Null};
-  local<core::int>(0){(core::int?) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(0);
+  local.call<core::int>(null);
+  local.call<core::int>(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.transformed.expect
index 024f237..b844175 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.transformed.expect
@@ -15,12 +15,12 @@
       #lateLocal#isSet = true;
       return #lateLocal = #t1;
     }
-  self::throws(() → core::int? => #lateLocal#get(){() → core::int?}, "Read value from uninitialized lateLocal");
-  if(1 =={core::num::==}{(core::Object) → core::bool} 1) {
-    self::expect(123, #lateLocal#set(123){(core::int?) → dynamic});
+  self::throws(() → core::int? => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
+  if(1.{core::num::==}(1)) {
+    self::expect(123, #lateLocal#set.call(123));
   }
-  self::expect(123, #lateLocal#get(){() → core::int?});
-  self::throws(() → core::int => #lateLocal#set(124){(core::int?) → dynamic}, "Write value to initialized lateLocal");
+  self::expect(123, #lateLocal#get.call());
+  self::throws(() → core::int => #lateLocal#set.call(124), "Write value to initialized lateLocal");
   function local<T extends core::Object? = dynamic>(T? value) → Null {
     lowered final T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -33,26 +33,26 @@
         #lateGenericLocal#isSet = true;
         return #lateGenericLocal = #t2;
       }
-    self::throws(() → T? => #lateGenericLocal#get(){() → T?}, "Read value from uninitialized lateGenericLocal");
-    if(1 =={core::num::==}{(core::Object) → core::bool} 1) {
-      self::expect(value, #lateGenericLocal#set(value){(T?) → dynamic});
+    self::throws(() → T? => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
+    if(1.{core::num::==}(1)) {
+      self::expect(value, #lateGenericLocal#set.call(value));
     }
-    self::expect(value, #lateGenericLocal#get(){() → T?});
-    self::throws(() → T? => #lateGenericLocal#set(value){(T?) → dynamic}, "Write value to initialized lateGenericLocal");
+    self::expect(value, #lateGenericLocal#get.call());
+    self::throws(() → T? => #lateGenericLocal#set.call(value), "Write value to initialized lateGenericLocal");
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(0){(core::int?) → Null};
-  local<core::int>(null){(core::int?) → Null};
-  local<core::int>(0){(core::int?) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(0);
+  local.call<core::int>(null);
+  local.call<core::int>(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
@@ -63,6 +63,6 @@
 
 
 Extra constant evaluation status:
-Evaluated: EqualsCall @ org-dartlang-testcase:///late_final_nullable_local_without_initializer.dart:12:9 -> BoolConstant(true)
-Evaluated: EqualsCall @ org-dartlang-testcase:///late_final_nullable_local_without_initializer.dart:26:11 -> BoolConstant(true)
-Extra constant evaluation: evaluated: 69, effectively constant: 2
+Evaluated: MethodInvocation @ org-dartlang-testcase:///late_final_nullable_local_without_initializer.dart:12:9 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///late_final_nullable_local_without_initializer.dart:26:11 -> BoolConstant(true)
+Extra constant evaluation: evaluated: 81, effectively constant: 2
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.expect
index 23b5b00..9fa00df 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.expect
@@ -15,12 +15,12 @@
       #lateLocal#isSet = true;
       return #lateLocal = #t1;
     }
-  self::throws(() → core::int? => #lateLocal#get(){() → core::int?}, "Read value from uninitialized lateLocal");
-  if(1 =={core::num::==}{(core::Object) → core::bool} 1) {
-    self::expect(123, #lateLocal#set(123){(core::int?) → dynamic});
+  self::throws(() → core::int? => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
+  if(1.{core::num::==}(1)) {
+    self::expect(123, #lateLocal#set.call(123));
   }
-  self::expect(123, #lateLocal#get(){() → core::int?});
-  self::throws(() → core::int => #lateLocal#set(124){(core::int?) → dynamic}, "Write value to initialized lateLocal");
+  self::expect(123, #lateLocal#get.call());
+  self::throws(() → core::int => #lateLocal#set.call(124), "Write value to initialized lateLocal");
   function local<T extends core::Object? = dynamic>(T? value) → Null {
     lowered final T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -33,26 +33,26 @@
         #lateGenericLocal#isSet = true;
         return #lateGenericLocal = #t2;
       }
-    self::throws(() → T? => #lateGenericLocal#get(){() → T?}, "Read value from uninitialized lateGenericLocal");
-    if(1 =={core::num::==}{(core::Object) → core::bool} 1) {
-      self::expect(value, #lateGenericLocal#set(value){(T?) → dynamic});
+    self::throws(() → T? => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
+    if(1.{core::num::==}(1)) {
+      self::expect(value, #lateGenericLocal#set.call(value));
     }
-    self::expect(value, #lateGenericLocal#get(){() → T?});
-    self::throws(() → T? => #lateGenericLocal#set(value){(T?) → dynamic}, "Write value to initialized lateGenericLocal");
+    self::expect(value, #lateGenericLocal#get.call());
+    self::throws(() → T? => #lateGenericLocal#set.call(value), "Write value to initialized lateGenericLocal");
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(0){(core::int?) → Null};
-  local<core::int>(null){(core::int?) → Null};
-  local<core::int>(0){(core::int?) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(0);
+  local.call<core::int>(null);
+  local.call<core::int>(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.transformed.expect
index 024f237..b844175 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.transformed.expect
@@ -15,12 +15,12 @@
       #lateLocal#isSet = true;
       return #lateLocal = #t1;
     }
-  self::throws(() → core::int? => #lateLocal#get(){() → core::int?}, "Read value from uninitialized lateLocal");
-  if(1 =={core::num::==}{(core::Object) → core::bool} 1) {
-    self::expect(123, #lateLocal#set(123){(core::int?) → dynamic});
+  self::throws(() → core::int? => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
+  if(1.{core::num::==}(1)) {
+    self::expect(123, #lateLocal#set.call(123));
   }
-  self::expect(123, #lateLocal#get(){() → core::int?});
-  self::throws(() → core::int => #lateLocal#set(124){(core::int?) → dynamic}, "Write value to initialized lateLocal");
+  self::expect(123, #lateLocal#get.call());
+  self::throws(() → core::int => #lateLocal#set.call(124), "Write value to initialized lateLocal");
   function local<T extends core::Object? = dynamic>(T? value) → Null {
     lowered final T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -33,26 +33,26 @@
         #lateGenericLocal#isSet = true;
         return #lateGenericLocal = #t2;
       }
-    self::throws(() → T? => #lateGenericLocal#get(){() → T?}, "Read value from uninitialized lateGenericLocal");
-    if(1 =={core::num::==}{(core::Object) → core::bool} 1) {
-      self::expect(value, #lateGenericLocal#set(value){(T?) → dynamic});
+    self::throws(() → T? => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
+    if(1.{core::num::==}(1)) {
+      self::expect(value, #lateGenericLocal#set.call(value));
     }
-    self::expect(value, #lateGenericLocal#get(){() → T?});
-    self::throws(() → T? => #lateGenericLocal#set(value){(T?) → dynamic}, "Write value to initialized lateGenericLocal");
+    self::expect(value, #lateGenericLocal#get.call());
+    self::throws(() → T? => #lateGenericLocal#set.call(value), "Write value to initialized lateGenericLocal");
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(0){(core::int?) → Null};
-  local<core::int>(null){(core::int?) → Null};
-  local<core::int>(0){(core::int?) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(0);
+  local.call<core::int>(null);
+  local.call<core::int>(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
@@ -63,6 +63,6 @@
 
 
 Extra constant evaluation status:
-Evaluated: EqualsCall @ org-dartlang-testcase:///late_final_nullable_local_without_initializer.dart:12:9 -> BoolConstant(true)
-Evaluated: EqualsCall @ org-dartlang-testcase:///late_final_nullable_local_without_initializer.dart:26:11 -> BoolConstant(true)
-Extra constant evaluation: evaluated: 69, effectively constant: 2
+Evaluated: MethodInvocation @ org-dartlang-testcase:///late_final_nullable_local_without_initializer.dart:12:9 -> BoolConstant(true)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///late_final_nullable_local_without_initializer.dart:26:11 -> BoolConstant(true)
+Extra constant evaluation: evaluated: 81, effectively constant: 2
diff --git a/pkg/front_end/testcases/late_lowering/late_future_or.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_future_or.dart.strong.expect
index e6f3126..2a49ff2 100644
--- a/pkg/front_end/testcases/late_lowering/late_future_or.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_future_or.dart.strong.expect
@@ -150,7 +150,7 @@
   self::_#field3 = #t14;
 }
 static get field4() → FutureOr<core::int>
-  return let final FutureOr<core::int>? #t15 = self::_#field4 in #t15 == null ?{FutureOr<core::int>} self::_#field4 = self::method4() : #t15{FutureOr<core::int>};
+  return let final FutureOr<core::int>? #t15 = self::_#field4 in #t15.==(null) ?{FutureOr<core::int>} self::_#field4 = self::method4() : #t15{FutureOr<core::int>};
 static set field4(FutureOr<core::int>#t16) → void
   self::_#field4 = #t16;
 static get field5() → FutureOr<core::int?> {
diff --git a/pkg/front_end/testcases/late_lowering/late_future_or.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_future_or.dart.strong.transformed.expect
index e6f3126..2a49ff2 100644
--- a/pkg/front_end/testcases/late_lowering/late_future_or.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_future_or.dart.strong.transformed.expect
@@ -150,7 +150,7 @@
   self::_#field3 = #t14;
 }
 static get field4() → FutureOr<core::int>
-  return let final FutureOr<core::int>? #t15 = self::_#field4 in #t15 == null ?{FutureOr<core::int>} self::_#field4 = self::method4() : #t15{FutureOr<core::int>};
+  return let final FutureOr<core::int>? #t15 = self::_#field4 in #t15.==(null) ?{FutureOr<core::int>} self::_#field4 = self::method4() : #t15{FutureOr<core::int>};
 static set field4(FutureOr<core::int>#t16) → void
   self::_#field4 = #t16;
 static get field5() → FutureOr<core::int?> {
diff --git a/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.strong.expect
index 3e73dd7..77cb4ba 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.strong.expect
@@ -5,12 +5,12 @@
 static method main() → dynamic {
   lowered core::int? #lateLocal;
   function #lateLocal#get() → core::int
-    return let final core::int? #t1 = #lateLocal in #t1 == null ?{core::int} #lateLocal = 123 : #t1{core::int};
+    return let final core::int? #t1 = #lateLocal in #t1.==(null) ?{core::int} #lateLocal = 123 : #t1{core::int};
   function #lateLocal#set(core::int #t2) → dynamic
     return #lateLocal = #t2;
-  self::expect(123, #lateLocal#get(){() → core::int});
-  self::expect(124, #lateLocal#set(124){(core::int) → dynamic});
-  self::expect(124, #lateLocal#get(){() → core::int});
+  self::expect(123, #lateLocal#get.call());
+  self::expect(124, #lateLocal#set.call(124));
+  self::expect(124, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T% value1, T% value2) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -25,15 +25,15 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t3;
     }
-    self::expect(value1, #lateGenericLocal#get(){() → T%});
-    self::expect(value2, #lateGenericLocal#set(value2){(T%) → dynamic});
-    self::expect(value2, #lateGenericLocal#get(){() → T%});
+    self::expect(value1, #lateGenericLocal#get.call());
+    self::expect(value2, #lateGenericLocal#set.call(value2));
+    self::expect(value2, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null, 0){(core::int?, core::int?) → Null};
-  local<core::int?>(0, null){(core::int?, core::int?) → Null};
-  local<core::int>(0, 42){(core::int, core::int) → Null};
+  local.call<core::int?>(null, 0);
+  local.call<core::int?>(0, null);
+  local.call<core::int>(0, 42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.strong.transformed.expect
index 3e73dd7..77cb4ba 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.strong.transformed.expect
@@ -5,12 +5,12 @@
 static method main() → dynamic {
   lowered core::int? #lateLocal;
   function #lateLocal#get() → core::int
-    return let final core::int? #t1 = #lateLocal in #t1 == null ?{core::int} #lateLocal = 123 : #t1{core::int};
+    return let final core::int? #t1 = #lateLocal in #t1.==(null) ?{core::int} #lateLocal = 123 : #t1{core::int};
   function #lateLocal#set(core::int #t2) → dynamic
     return #lateLocal = #t2;
-  self::expect(123, #lateLocal#get(){() → core::int});
-  self::expect(124, #lateLocal#set(124){(core::int) → dynamic});
-  self::expect(124, #lateLocal#get(){() → core::int});
+  self::expect(123, #lateLocal#get.call());
+  self::expect(124, #lateLocal#set.call(124));
+  self::expect(124, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T% value1, T% value2) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -25,15 +25,15 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t3;
     }
-    self::expect(value1, #lateGenericLocal#get(){() → T%});
-    self::expect(value2, #lateGenericLocal#set(value2){(T%) → dynamic});
-    self::expect(value2, #lateGenericLocal#get(){() → T%});
+    self::expect(value1, #lateGenericLocal#get.call());
+    self::expect(value2, #lateGenericLocal#set.call(value2));
+    self::expect(value2, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null, 0){(core::int?, core::int?) → Null};
-  local<core::int?>(0, null){(core::int?, core::int?) → Null};
-  local<core::int>(0, 42){(core::int, core::int) → Null};
+  local.call<core::int?>(null, 0);
+  local.call<core::int?>(0, null);
+  local.call<core::int>(0, 42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.weak.expect
index caa8e52..8942212 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.weak.expect
@@ -16,9 +16,9 @@
     #lateLocal#isSet = true;
     return #lateLocal = #t1;
   }
-  self::expect(123, #lateLocal#get(){() → core::int});
-  self::expect(124, #lateLocal#set(124){(core::int) → dynamic});
-  self::expect(124, #lateLocal#get(){() → core::int});
+  self::expect(123, #lateLocal#get.call());
+  self::expect(124, #lateLocal#set.call(124));
+  self::expect(124, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T% value1, T% value2) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -33,15 +33,15 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t2;
     }
-    self::expect(value1, #lateGenericLocal#get(){() → T%});
-    self::expect(value2, #lateGenericLocal#set(value2){(T%) → dynamic});
-    self::expect(value2, #lateGenericLocal#get(){() → T%});
+    self::expect(value1, #lateGenericLocal#get.call());
+    self::expect(value2, #lateGenericLocal#set.call(value2));
+    self::expect(value2, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null, 0){(core::int?, core::int?) → Null};
-  local<core::int?>(0, null){(core::int?, core::int?) → Null};
-  local<core::int>(0, 42){(core::int, core::int) → Null};
+  local.call<core::int?>(null, 0);
+  local.call<core::int?>(0, null);
+  local.call<core::int>(0, 42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.weak.transformed.expect
index caa8e52..8942212 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_local_with_initializer.dart.weak.transformed.expect
@@ -16,9 +16,9 @@
     #lateLocal#isSet = true;
     return #lateLocal = #t1;
   }
-  self::expect(123, #lateLocal#get(){() → core::int});
-  self::expect(124, #lateLocal#set(124){(core::int) → dynamic});
-  self::expect(124, #lateLocal#get(){() → core::int});
+  self::expect(123, #lateLocal#get.call());
+  self::expect(124, #lateLocal#set.call(124));
+  self::expect(124, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T% value1, T% value2) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -33,15 +33,15 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t2;
     }
-    self::expect(value1, #lateGenericLocal#get(){() → T%});
-    self::expect(value2, #lateGenericLocal#set(value2){(T%) → dynamic});
-    self::expect(value2, #lateGenericLocal#get(){() → T%});
+    self::expect(value1, #lateGenericLocal#get.call());
+    self::expect(value2, #lateGenericLocal#set.call(value2));
+    self::expect(value2, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null, 0){(core::int?, core::int?) → Null};
-  local<core::int?>(0, null){(core::int?, core::int?) → Null};
-  local<core::int>(0, 42){(core::int, core::int) → Null};
+  local.call<core::int?>(null, 0);
+  local.call<core::int?>(0, null);
+  local.call<core::int>(0, 42);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.expect
index 1269386..40781ea 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.expect
@@ -6,12 +6,12 @@
 static method main() → dynamic {
   lowered core::int? #lateLocal;
   function #lateLocal#get() → core::int
-    return let final core::int? #t1 = #lateLocal in #t1 == null ?{core::int} throw new _in::LateError::localNI("lateLocal") : #t1{core::int};
+    return let final core::int? #t1 = #lateLocal in #t1.==(null) ?{core::int} throw new _in::LateError::localNI("lateLocal") : #t1{core::int};
   function #lateLocal#set(core::int #t2) → dynamic
     return #lateLocal = #t2;
-  self::throws(() → core::int => #lateLocal#get(){() → core::int}, "Read value from uninitialized lateLocal");
-  self::expect(123, #lateLocal#set(123){(core::int) → dynamic});
-  self::expect(123, #lateLocal#get(){() → core::int});
+  self::throws(() → core::int => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
+  self::expect(123, #lateLocal#set.call(123));
+  self::expect(123, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T% value) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -21,22 +21,22 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t3;
     }
-    self::throws(() → T% => #lateGenericLocal#get(){() → T%}, "Read value from uninitialized lateGenericLocal");
-    self::expect(value, #lateGenericLocal#set(value){(T%) → dynamic});
-    self::expect(value, #lateGenericLocal#get(){() → T%});
+    self::throws(() → T% => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
+    self::expect(value, #lateGenericLocal#set.call(value));
+    self::expect(value, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(0){(core::int?) → Null};
-  local<core::int>(0){(core::int) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(0);
+  local.call<core::int>(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.transformed.expect
index 1269386..40781ea 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.transformed.expect
@@ -6,12 +6,12 @@
 static method main() → dynamic {
   lowered core::int? #lateLocal;
   function #lateLocal#get() → core::int
-    return let final core::int? #t1 = #lateLocal in #t1 == null ?{core::int} throw new _in::LateError::localNI("lateLocal") : #t1{core::int};
+    return let final core::int? #t1 = #lateLocal in #t1.==(null) ?{core::int} throw new _in::LateError::localNI("lateLocal") : #t1{core::int};
   function #lateLocal#set(core::int #t2) → dynamic
     return #lateLocal = #t2;
-  self::throws(() → core::int => #lateLocal#get(){() → core::int}, "Read value from uninitialized lateLocal");
-  self::expect(123, #lateLocal#set(123){(core::int) → dynamic});
-  self::expect(123, #lateLocal#get(){() → core::int});
+  self::throws(() → core::int => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
+  self::expect(123, #lateLocal#set.call(123));
+  self::expect(123, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T% value) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -21,22 +21,22 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t3;
     }
-    self::throws(() → T% => #lateGenericLocal#get(){() → T%}, "Read value from uninitialized lateGenericLocal");
-    self::expect(value, #lateGenericLocal#set(value){(T%) → dynamic});
-    self::expect(value, #lateGenericLocal#get(){() → T%});
+    self::throws(() → T% => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
+    self::expect(value, #lateGenericLocal#set.call(value));
+    self::expect(value, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(0){(core::int?) → Null};
-  local<core::int>(0){(core::int) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(0);
+  local.call<core::int>(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.expect
index aa3df9d..237c5ac 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.expect
@@ -12,9 +12,9 @@
     #lateLocal#isSet = true;
     return #lateLocal = #t1;
   }
-  self::throws(() → core::int => #lateLocal#get(){() → core::int}, "Read value from uninitialized lateLocal");
-  self::expect(123, #lateLocal#set(123){(core::int) → dynamic});
-  self::expect(123, #lateLocal#get(){() → core::int});
+  self::throws(() → core::int => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
+  self::expect(123, #lateLocal#set.call(123));
+  self::expect(123, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T% value) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -24,22 +24,22 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t2;
     }
-    self::throws(() → T% => #lateGenericLocal#get(){() → T%}, "Read value from uninitialized lateGenericLocal");
-    self::expect(value, #lateGenericLocal#set(value){(T%) → dynamic});
-    self::expect(value, #lateGenericLocal#get(){() → T%});
+    self::throws(() → T% => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
+    self::expect(value, #lateGenericLocal#set.call(value));
+    self::expect(value, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(0){(core::int?) → Null};
-  local<core::int>(0){(core::int) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(0);
+  local.call<core::int>(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.transformed.expect
index aa3df9d..237c5ac 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.transformed.expect
@@ -12,9 +12,9 @@
     #lateLocal#isSet = true;
     return #lateLocal = #t1;
   }
-  self::throws(() → core::int => #lateLocal#get(){() → core::int}, "Read value from uninitialized lateLocal");
-  self::expect(123, #lateLocal#set(123){(core::int) → dynamic});
-  self::expect(123, #lateLocal#get(){() → core::int});
+  self::throws(() → core::int => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
+  self::expect(123, #lateLocal#set.call(123));
+  self::expect(123, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T% value) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -24,22 +24,22 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t2;
     }
-    self::throws(() → T% => #lateGenericLocal#get(){() → T%}, "Read value from uninitialized lateGenericLocal");
-    self::expect(value, #lateGenericLocal#set(value){(T%) → dynamic});
-    self::expect(value, #lateGenericLocal#get(){() → T%});
+    self::throws(() → T% => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
+    self::expect(value, #lateGenericLocal#set.call(value));
+    self::expect(value, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(0){(core::int?) → Null};
-  local<core::int>(0){(core::int) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(0);
+  local.call<core::int>(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.strong.expect
index af5acbd..b8d325b 100644
--- a/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.strong.expect
@@ -16,39 +16,39 @@
     : super core::Object::•()
     ;
   static get uninitializedNonFinalStaticField() → core::int
-    return let final core::int? #t1 = self::Class::_#uninitializedNonFinalStaticField in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalStaticField") : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#uninitializedNonFinalStaticField in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalStaticField") : #t1{core::int};
   static set uninitializedNonFinalStaticField(core::int #t2) → void
     self::Class::_#uninitializedNonFinalStaticField = #t2;
   static get uninitializedFinalStaticField() → core::int
-    return let final core::int? #t3 = self::Class::_#uninitializedFinalStaticField in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalStaticField") : #t3{core::int};
+    return let final core::int? #t3 = self::Class::_#uninitializedFinalStaticField in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalStaticField") : #t3{core::int};
   static set uninitializedFinalStaticField(core::int #t4) → void
-    if(self::Class::_#uninitializedFinalStaticField == null)
+    if(self::Class::_#uninitializedFinalStaticField.==(null))
       self::Class::_#uninitializedFinalStaticField = #t4;
     else
       throw new _in::LateError::fieldAI("uninitializedFinalStaticField");
   static get initializedNonFinalStaticField() → core::int
-    return let final core::int? #t5 = self::Class::_#initializedNonFinalStaticField in #t5 == null ?{core::int} self::Class::_#initializedNonFinalStaticField = 0 : #t5{core::int};
+    return let final core::int? #t5 = self::Class::_#initializedNonFinalStaticField in #t5.==(null) ?{core::int} self::Class::_#initializedNonFinalStaticField = 0 : #t5{core::int};
   static set initializedNonFinalStaticField(core::int #t6) → void
     self::Class::_#initializedNonFinalStaticField = #t6;
   static get initializedFinalStaticField() → core::int
-    return let final core::int? #t7 = self::Class::_#initializedFinalStaticField in #t7 == null ?{core::int} let final core::int #t8 = 0 in self::Class::_#initializedFinalStaticField == null ?{core::int} self::Class::_#initializedFinalStaticField = #t8 : throw new _in::LateError::fieldADI("initializedFinalStaticField") : #t7{core::int};
+    return let final core::int? #t7 = self::Class::_#initializedFinalStaticField in #t7.==(null) ?{core::int} let final core::int #t8 = 0 in self::Class::_#initializedFinalStaticField.==(null) ?{core::int} self::Class::_#initializedFinalStaticField = #t8 : throw new _in::LateError::fieldADI("initializedFinalStaticField") : #t7{core::int};
   get uninitializedNonFinalInstanceField() → core::int
-    return let final core::int? #t9 = this.{self::Class::_#Class#uninitializedNonFinalInstanceField} in #t9 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalInstanceField") : #t9{core::int};
+    return let final core::int? #t9 = this.{self::Class::_#Class#uninitializedNonFinalInstanceField} in #t9.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalInstanceField") : #t9{core::int};
   set uninitializedNonFinalInstanceField(core::int #t10) → void
     this.{self::Class::_#Class#uninitializedNonFinalInstanceField} = #t10;
   get uninitializedFinalInstanceField() → core::int
-    return let final core::int? #t11 = this.{self::Class::_#Class#uninitializedFinalInstanceField} in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalInstanceField") : #t11{core::int};
+    return let final core::int? #t11 = this.{self::Class::_#Class#uninitializedFinalInstanceField} in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalInstanceField") : #t11{core::int};
   set uninitializedFinalInstanceField(core::int #t12) → void
-    if(this.{self::Class::_#Class#uninitializedFinalInstanceField} == null)
+    if(this.{self::Class::_#Class#uninitializedFinalInstanceField}.==(null))
       this.{self::Class::_#Class#uninitializedFinalInstanceField} = #t12;
     else
       throw new _in::LateError::fieldAI("uninitializedFinalInstanceField");
   get initializedNonFinalInstanceField() → core::int
-    return let final core::int? #t13 = this.{self::Class::_#Class#initializedNonFinalInstanceField} in #t13 == null ?{core::int} this.{self::Class::_#Class#initializedNonFinalInstanceField} = 0 : #t13{core::int};
+    return let final core::int? #t13 = this.{self::Class::_#Class#initializedNonFinalInstanceField} in #t13.==(null) ?{core::int} this.{self::Class::_#Class#initializedNonFinalInstanceField} = 0 : #t13{core::int};
   set initializedNonFinalInstanceField(core::int #t14) → void
     this.{self::Class::_#Class#initializedNonFinalInstanceField} = #t14;
   get initializedFinalInstanceField() → core::int
-    return let final core::int? #t15 = this.{self::Class::_#Class#initializedFinalInstanceField} in #t15 == null ?{core::int} let final core::int #t16 = 0 in this.{self::Class::_#Class#initializedFinalInstanceField} == null ?{core::int} this.{self::Class::_#Class#initializedFinalInstanceField} = #t16 : throw new _in::LateError::fieldADI("initializedFinalInstanceField") : #t15{core::int};
+    return let final core::int? #t15 = this.{self::Class::_#Class#initializedFinalInstanceField} in #t15.==(null) ?{core::int} let final core::int #t16 = 0 in this.{self::Class::_#Class#initializedFinalInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#initializedFinalInstanceField} = #t16 : throw new _in::LateError::fieldADI("initializedFinalInstanceField") : #t15{core::int};
 }
 static field core::int? _#uninitializedNonFinalTopLevelField = null;
 static field core::int? _#uninitializedFinalTopLevelField = null;
@@ -66,7 +66,7 @@
   }
   lowered core::int? #nonNullableUninitializedNonFinalLocal;
   function #nonNullableUninitializedNonFinalLocal#get() → core::int
-    return let final core::int? #t18 = #nonNullableUninitializedNonFinalLocal in #t18 == null ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedNonFinalLocal") : #t18{core::int};
+    return let final core::int? #t18 = #nonNullableUninitializedNonFinalLocal in #t18.==(null) ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedNonFinalLocal") : #t18{core::int};
   function #nonNullableUninitializedNonFinalLocal#set(core::int #t19) → dynamic
     return #nonNullableUninitializedNonFinalLocal = #t19;
   lowered final core::int? #nullableUninitializedFinalLocal;
@@ -82,9 +82,9 @@
     }
   lowered final core::int? #nonNullableUninitializedFinalLocal;
   function #nonNullableUninitializedFinalLocal#get() → core::int
-    return let final core::int? #t21 = #nonNullableUninitializedFinalLocal in #t21 == null ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedFinalLocal") : #t21{core::int};
+    return let final core::int? #t21 = #nonNullableUninitializedFinalLocal in #t21.==(null) ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedFinalLocal") : #t21{core::int};
   function #nonNullableUninitializedFinalLocal#set(core::int #t22) → dynamic
-    if(#nonNullableUninitializedFinalLocal == null)
+    if(#nonNullableUninitializedFinalLocal.==(null))
       return #nonNullableUninitializedFinalLocal = #t22;
     else
       throw new _in::LateError::localAI("nonNullableUninitializedFinalLocal");
@@ -103,7 +103,7 @@
   }
   lowered core::int? #nonNullableInitializedNonFinalLocal;
   function #nonNullableInitializedNonFinalLocal#get() → core::int
-    return let final core::int? #t24 = #nonNullableInitializedNonFinalLocal in #t24 == null ?{core::int} #nonNullableInitializedNonFinalLocal = 0 : #t24{core::int};
+    return let final core::int? #t24 = #nonNullableInitializedNonFinalLocal in #t24.==(null) ?{core::int} #nonNullableInitializedNonFinalLocal = 0 : #t24{core::int};
   function #nonNullableInitializedNonFinalLocal#set(core::int #t25) → dynamic
     return #nonNullableInitializedNonFinalLocal = #t25;
   lowered final core::int? #nullableInitializedFinalLocal;
@@ -120,22 +120,22 @@
   }
   lowered final core::int? #nonNullableInitializedFinalLocal;
   function #nonNullableInitializedFinalLocal#get() → core::int
-    return let final core::int? #t27 = #nonNullableInitializedFinalLocal in #t27 == null ?{core::int} let final core::int #t28 = 0 in #nonNullableInitializedFinalLocal == null ?{core::int} #nonNullableInitializedFinalLocal = #t28 : throw new _in::LateError::localADI("nonNullableInitializedFinalLocal") : #t27{core::int};
+    return let final core::int? #t27 = #nonNullableInitializedFinalLocal in #t27.==(null) ?{core::int} let final core::int #t28 = 0 in #nonNullableInitializedFinalLocal.==(null) ?{core::int} #nonNullableInitializedFinalLocal = #t28 : throw new _in::LateError::localADI("nonNullableInitializedFinalLocal") : #t27{core::int};
 }
 static get uninitializedNonFinalTopLevelField() → core::int
-  return let final core::int? #t29 = self::_#uninitializedNonFinalTopLevelField in #t29 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalTopLevelField") : #t29{core::int};
+  return let final core::int? #t29 = self::_#uninitializedNonFinalTopLevelField in #t29.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalTopLevelField") : #t29{core::int};
 static set uninitializedNonFinalTopLevelField(core::int #t30) → void
   self::_#uninitializedNonFinalTopLevelField = #t30;
 static get uninitializedFinalTopLevelField() → core::int
-  return let final core::int? #t31 = self::_#uninitializedFinalTopLevelField in #t31 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalTopLevelField") : #t31{core::int};
+  return let final core::int? #t31 = self::_#uninitializedFinalTopLevelField in #t31.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalTopLevelField") : #t31{core::int};
 static set uninitializedFinalTopLevelField(core::int #t32) → void
-  if(self::_#uninitializedFinalTopLevelField == null)
+  if(self::_#uninitializedFinalTopLevelField.==(null))
     self::_#uninitializedFinalTopLevelField = #t32;
   else
     throw new _in::LateError::fieldAI("uninitializedFinalTopLevelField");
 static get initializedNonFinalTopLevelField() → core::int
-  return let final core::int? #t33 = self::_#initializedNonFinalTopLevelField in #t33 == null ?{core::int} self::_#initializedNonFinalTopLevelField = 0 : #t33{core::int};
+  return let final core::int? #t33 = self::_#initializedNonFinalTopLevelField in #t33.==(null) ?{core::int} self::_#initializedNonFinalTopLevelField = 0 : #t33{core::int};
 static set initializedNonFinalTopLevelField(core::int #t34) → void
   self::_#initializedNonFinalTopLevelField = #t34;
 static get initializedFinalTopLevelField() → core::int
-  return let final core::int? #t35 = self::_#initializedFinalTopLevelField in #t35 == null ?{core::int} let final core::int #t36 = 0 in self::_#initializedFinalTopLevelField == null ?{core::int} self::_#initializedFinalTopLevelField = #t36 : throw new _in::LateError::fieldADI("initializedFinalTopLevelField") : #t35{core::int};
+  return let final core::int? #t35 = self::_#initializedFinalTopLevelField in #t35.==(null) ?{core::int} let final core::int #t36 = 0 in self::_#initializedFinalTopLevelField.==(null) ?{core::int} self::_#initializedFinalTopLevelField = #t36 : throw new _in::LateError::fieldADI("initializedFinalTopLevelField") : #t35{core::int};
diff --git a/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.strong.transformed.expect
index 3d43dd6..dd059f5 100644
--- a/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.strong.transformed.expect
@@ -16,39 +16,39 @@
     : super core::Object::•()
     ;
   static get uninitializedNonFinalStaticField() → core::int
-    return let final core::int? #t1 = self::Class::_#uninitializedNonFinalStaticField in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalStaticField") : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#uninitializedNonFinalStaticField in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalStaticField") : #t1{core::int};
   static set uninitializedNonFinalStaticField(core::int #t2) → void
     self::Class::_#uninitializedNonFinalStaticField = #t2;
   static get uninitializedFinalStaticField() → core::int
-    return let final core::int? #t3 = self::Class::_#uninitializedFinalStaticField in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalStaticField") : #t3{core::int};
+    return let final core::int? #t3 = self::Class::_#uninitializedFinalStaticField in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalStaticField") : #t3{core::int};
   static set uninitializedFinalStaticField(core::int #t4) → void
-    if(self::Class::_#uninitializedFinalStaticField == null)
+    if(self::Class::_#uninitializedFinalStaticField.==(null))
       self::Class::_#uninitializedFinalStaticField = #t4;
     else
       throw new _in::LateError::fieldAI("uninitializedFinalStaticField");
   static get initializedNonFinalStaticField() → core::int
-    return let final core::int? #t5 = self::Class::_#initializedNonFinalStaticField in #t5 == null ?{core::int} self::Class::_#initializedNonFinalStaticField = 0 : #t5{core::int};
+    return let final core::int? #t5 = self::Class::_#initializedNonFinalStaticField in #t5.==(null) ?{core::int} self::Class::_#initializedNonFinalStaticField = 0 : #t5{core::int};
   static set initializedNonFinalStaticField(core::int #t6) → void
     self::Class::_#initializedNonFinalStaticField = #t6;
   static get initializedFinalStaticField() → core::int
-    return let final core::int? #t7 = self::Class::_#initializedFinalStaticField in #t7 == null ?{core::int} let final core::int #t8 = 0 in self::Class::_#initializedFinalStaticField == null ?{core::int} self::Class::_#initializedFinalStaticField = #t8 : throw new _in::LateError::fieldADI("initializedFinalStaticField") : #t7{core::int};
+    return let final core::int? #t7 = self::Class::_#initializedFinalStaticField in #t7.==(null) ?{core::int} let final core::int #t8 = 0 in self::Class::_#initializedFinalStaticField.==(null) ?{core::int} self::Class::_#initializedFinalStaticField = #t8 : throw new _in::LateError::fieldADI("initializedFinalStaticField") : #t7{core::int};
   get uninitializedNonFinalInstanceField() → core::int
-    return let final core::int? #t9 = this.{self::Class::_#Class#uninitializedNonFinalInstanceField} in #t9 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalInstanceField") : #t9{core::int};
+    return let final core::int? #t9 = this.{self::Class::_#Class#uninitializedNonFinalInstanceField} in #t9.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalInstanceField") : #t9{core::int};
   set uninitializedNonFinalInstanceField(core::int #t10) → void
     this.{self::Class::_#Class#uninitializedNonFinalInstanceField} = #t10;
   get uninitializedFinalInstanceField() → core::int
-    return let final core::int? #t11 = this.{self::Class::_#Class#uninitializedFinalInstanceField} in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalInstanceField") : #t11{core::int};
+    return let final core::int? #t11 = this.{self::Class::_#Class#uninitializedFinalInstanceField} in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalInstanceField") : #t11{core::int};
   set uninitializedFinalInstanceField(core::int #t12) → void
-    if(this.{self::Class::_#Class#uninitializedFinalInstanceField} == null)
+    if(this.{self::Class::_#Class#uninitializedFinalInstanceField}.==(null))
       this.{self::Class::_#Class#uninitializedFinalInstanceField} = #t12;
     else
       throw new _in::LateError::fieldAI("uninitializedFinalInstanceField");
   get initializedNonFinalInstanceField() → core::int
-    return let final core::int? #t13 = this.{self::Class::_#Class#initializedNonFinalInstanceField} in #t13 == null ?{core::int} this.{self::Class::_#Class#initializedNonFinalInstanceField} = 0 : #t13{core::int};
+    return let final core::int? #t13 = this.{self::Class::_#Class#initializedNonFinalInstanceField} in #t13.==(null) ?{core::int} this.{self::Class::_#Class#initializedNonFinalInstanceField} = 0 : #t13{core::int};
   set initializedNonFinalInstanceField(core::int #t14) → void
     this.{self::Class::_#Class#initializedNonFinalInstanceField} = #t14;
   get initializedFinalInstanceField() → core::int
-    return let final core::int? #t15 = this.{self::Class::_#Class#initializedFinalInstanceField} in #t15 == null ?{core::int} let final core::int #t16 = 0 in this.{self::Class::_#Class#initializedFinalInstanceField} == null ?{core::int} this.{self::Class::_#Class#initializedFinalInstanceField} = #t16 : throw new _in::LateError::fieldADI("initializedFinalInstanceField") : #t15{core::int};
+    return let final core::int? #t15 = this.{self::Class::_#Class#initializedFinalInstanceField} in #t15.==(null) ?{core::int} let final core::int #t16 = 0 in this.{self::Class::_#Class#initializedFinalInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#initializedFinalInstanceField} = #t16 : throw new _in::LateError::fieldADI("initializedFinalInstanceField") : #t15{core::int};
 }
 static field core::int? _#uninitializedNonFinalTopLevelField = null;
 static field core::int? _#uninitializedFinalTopLevelField = null;
@@ -66,7 +66,7 @@
   }
   lowered core::int? #nonNullableUninitializedNonFinalLocal;
   function #nonNullableUninitializedNonFinalLocal#get() → core::int
-    return let final core::int? #t18 = #nonNullableUninitializedNonFinalLocal in #t18 == null ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedNonFinalLocal") : #t18{core::int};
+    return let final core::int? #t18 = #nonNullableUninitializedNonFinalLocal in #t18.==(null) ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedNonFinalLocal") : #t18{core::int};
   function #nonNullableUninitializedNonFinalLocal#set(core::int #t19) → dynamic
     return #nonNullableUninitializedNonFinalLocal = #t19;
   lowered final core::int? #nullableUninitializedFinalLocal;
@@ -82,9 +82,9 @@
     }
   lowered final core::int? #nonNullableUninitializedFinalLocal;
   function #nonNullableUninitializedFinalLocal#get() → core::int
-    return let final core::int? #t21 = #nonNullableUninitializedFinalLocal in #t21 == null ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedFinalLocal") : #t21{core::int};
+    return let final core::int? #t21 = #nonNullableUninitializedFinalLocal in #t21.==(null) ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedFinalLocal") : #t21{core::int};
   function #nonNullableUninitializedFinalLocal#set(core::int #t22) → dynamic
-    if(#nonNullableUninitializedFinalLocal == null)
+    if(#nonNullableUninitializedFinalLocal.==(null))
       return #nonNullableUninitializedFinalLocal = #t22;
     else
       throw new _in::LateError::localAI("nonNullableUninitializedFinalLocal");
@@ -103,7 +103,7 @@
   }
   lowered core::int? #nonNullableInitializedNonFinalLocal;
   function #nonNullableInitializedNonFinalLocal#get() → core::int
-    return let final core::int? #t24 = #nonNullableInitializedNonFinalLocal in #t24 == null ?{core::int} #nonNullableInitializedNonFinalLocal = 0 : #t24{core::int};
+    return let final core::int? #t24 = #nonNullableInitializedNonFinalLocal in #t24.==(null) ?{core::int} #nonNullableInitializedNonFinalLocal = 0 : #t24{core::int};
   function #nonNullableInitializedNonFinalLocal#set(core::int #t25) → dynamic
     return #nonNullableInitializedNonFinalLocal = #t25;
   lowered final core::int? #nullableInitializedFinalLocal;
@@ -120,25 +120,25 @@
   }
   lowered final core::int? #nonNullableInitializedFinalLocal;
   function #nonNullableInitializedFinalLocal#get() → core::int
-    return let final core::int? #t27 = #nonNullableInitializedFinalLocal in #t27 == null ?{core::int} let final core::int #t28 = 0 in #nonNullableInitializedFinalLocal == null ?{core::int} #nonNullableInitializedFinalLocal = #t28 : throw new _in::LateError::localADI("nonNullableInitializedFinalLocal") : #t27{core::int};
+    return let final core::int? #t27 = #nonNullableInitializedFinalLocal in #t27.==(null) ?{core::int} let final core::int #t28 = 0 in #nonNullableInitializedFinalLocal.==(null) ?{core::int} #nonNullableInitializedFinalLocal = #t28 : throw new _in::LateError::localADI("nonNullableInitializedFinalLocal") : #t27{core::int};
 }
 static get uninitializedNonFinalTopLevelField() → core::int
-  return let final core::int? #t29 = self::_#uninitializedNonFinalTopLevelField in #t29 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalTopLevelField") : #t29{core::int};
+  return let final core::int? #t29 = self::_#uninitializedNonFinalTopLevelField in #t29.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalTopLevelField") : #t29{core::int};
 static set uninitializedNonFinalTopLevelField(core::int #t30) → void
   self::_#uninitializedNonFinalTopLevelField = #t30;
 static get uninitializedFinalTopLevelField() → core::int
-  return let final core::int? #t31 = self::_#uninitializedFinalTopLevelField in #t31 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalTopLevelField") : #t31{core::int};
+  return let final core::int? #t31 = self::_#uninitializedFinalTopLevelField in #t31.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalTopLevelField") : #t31{core::int};
 static set uninitializedFinalTopLevelField(core::int #t32) → void
-  if(self::_#uninitializedFinalTopLevelField == null)
+  if(self::_#uninitializedFinalTopLevelField.==(null))
     self::_#uninitializedFinalTopLevelField = #t32;
   else
     throw new _in::LateError::fieldAI("uninitializedFinalTopLevelField");
 static get initializedNonFinalTopLevelField() → core::int
-  return let final core::int? #t33 = self::_#initializedNonFinalTopLevelField in #t33 == null ?{core::int} self::_#initializedNonFinalTopLevelField = 0 : #t33{core::int};
+  return let final core::int? #t33 = self::_#initializedNonFinalTopLevelField in #t33.==(null) ?{core::int} self::_#initializedNonFinalTopLevelField = 0 : #t33{core::int};
 static set initializedNonFinalTopLevelField(core::int #t34) → void
   self::_#initializedNonFinalTopLevelField = #t34;
 static get initializedFinalTopLevelField() → core::int
-  return let final core::int? #t35 = self::_#initializedFinalTopLevelField in #t35 == null ?{core::int} let final core::int #t36 = 0 in self::_#initializedFinalTopLevelField == null ?{core::int} self::_#initializedFinalTopLevelField = #t36 : throw new _in::LateError::fieldADI("initializedFinalTopLevelField") : #t35{core::int};
+  return let final core::int? #t35 = self::_#initializedFinalTopLevelField in #t35.==(null) ?{core::int} let final core::int #t36 = 0 in self::_#initializedFinalTopLevelField.==(null) ?{core::int} self::_#initializedFinalTopLevelField = #t36 : throw new _in::LateError::fieldADI("initializedFinalTopLevelField") : #t35{core::int};
 
 
 Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.strong.expect
index 162ff86..36b9cb9 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.strong.expect
@@ -50,7 +50,7 @@
     return 16;
   get lateInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#lateInstanceField#isSet}) {
-      this.{self::Class::_#Class#lateInstanceField} = this.{self::Class::lateInstanceFieldInit}(){() → core::int?};
+      this.{self::Class::_#Class#lateInstanceField} = this.{self::Class::lateInstanceFieldInit}();
       this.{self::Class::_#Class#lateInstanceField#isSet} = true;
     }
     return this.{self::Class::_#Class#lateInstanceField};
@@ -60,10 +60,10 @@
     this.{self::Class::_#Class#lateInstanceField} = #t3;
   }
   method lateGenericInstanceFieldInit() → self::Class::T?
-    return this.{self::Class::field}{self::Class::T?};
+    return this.{self::Class::field};
   get lateGenericInstanceField() → self::Class::T? {
     if(!this.{self::Class::_#Class#lateGenericInstanceField#isSet}) {
-      this.{self::Class::_#Class#lateGenericInstanceField} = this.{self::Class::lateGenericInstanceFieldInit}(){() → self::Class::T?};
+      this.{self::Class::_#Class#lateGenericInstanceField} = this.{self::Class::lateGenericInstanceFieldInit}();
       this.{self::Class::_#Class#lateGenericInstanceField#isSet} = true;
     }
     return this.{self::Class::_#Class#lateGenericInstanceField};
@@ -73,12 +73,12 @@
     this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
   }
   method instanceMethod(generic-covariant-impl self::Class::T? value) → dynamic {
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
+    self::expect(16, this.{self::Class::lateInstanceField});
     this.{self::Class::lateInstanceField} = 17;
-    self::expect(17, this.{self::Class::lateInstanceField}{core::int?});
-    self::expect(this.{self::Class::field}{self::Class::T?}, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(17, this.{self::Class::lateInstanceField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericInstanceField});
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -152,16 +152,16 @@
   self::Class::lateStaticField1 = 88;
   self::expect(88, self::Class::lateStaticField1);
   self::Class::staticMethod();
-  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int>(null).{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(null){(core::int?) → dynamic};
+  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int>(null).{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(null);
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|lateExtensionField1 = 88;
   self::expect(88, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.strong.transformed.expect
index 162ff86..36b9cb9 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.strong.transformed.expect
@@ -50,7 +50,7 @@
     return 16;
   get lateInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#lateInstanceField#isSet}) {
-      this.{self::Class::_#Class#lateInstanceField} = this.{self::Class::lateInstanceFieldInit}(){() → core::int?};
+      this.{self::Class::_#Class#lateInstanceField} = this.{self::Class::lateInstanceFieldInit}();
       this.{self::Class::_#Class#lateInstanceField#isSet} = true;
     }
     return this.{self::Class::_#Class#lateInstanceField};
@@ -60,10 +60,10 @@
     this.{self::Class::_#Class#lateInstanceField} = #t3;
   }
   method lateGenericInstanceFieldInit() → self::Class::T?
-    return this.{self::Class::field}{self::Class::T?};
+    return this.{self::Class::field};
   get lateGenericInstanceField() → self::Class::T? {
     if(!this.{self::Class::_#Class#lateGenericInstanceField#isSet}) {
-      this.{self::Class::_#Class#lateGenericInstanceField} = this.{self::Class::lateGenericInstanceFieldInit}(){() → self::Class::T?};
+      this.{self::Class::_#Class#lateGenericInstanceField} = this.{self::Class::lateGenericInstanceFieldInit}();
       this.{self::Class::_#Class#lateGenericInstanceField#isSet} = true;
     }
     return this.{self::Class::_#Class#lateGenericInstanceField};
@@ -73,12 +73,12 @@
     this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
   }
   method instanceMethod(generic-covariant-impl self::Class::T? value) → dynamic {
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
+    self::expect(16, this.{self::Class::lateInstanceField});
     this.{self::Class::lateInstanceField} = 17;
-    self::expect(17, this.{self::Class::lateInstanceField}{core::int?});
-    self::expect(this.{self::Class::field}{self::Class::T?}, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(17, this.{self::Class::lateInstanceField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericInstanceField});
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -152,16 +152,16 @@
   self::Class::lateStaticField1 = 88;
   self::expect(88, self::Class::lateStaticField1);
   self::Class::staticMethod();
-  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int>(null).{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(null){(core::int?) → dynamic};
+  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int>(null).{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(null);
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|lateExtensionField1 = 88;
   self::expect(88, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.weak.expect
index 162ff86..36b9cb9 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.weak.expect
@@ -50,7 +50,7 @@
     return 16;
   get lateInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#lateInstanceField#isSet}) {
-      this.{self::Class::_#Class#lateInstanceField} = this.{self::Class::lateInstanceFieldInit}(){() → core::int?};
+      this.{self::Class::_#Class#lateInstanceField} = this.{self::Class::lateInstanceFieldInit}();
       this.{self::Class::_#Class#lateInstanceField#isSet} = true;
     }
     return this.{self::Class::_#Class#lateInstanceField};
@@ -60,10 +60,10 @@
     this.{self::Class::_#Class#lateInstanceField} = #t3;
   }
   method lateGenericInstanceFieldInit() → self::Class::T?
-    return this.{self::Class::field}{self::Class::T?};
+    return this.{self::Class::field};
   get lateGenericInstanceField() → self::Class::T? {
     if(!this.{self::Class::_#Class#lateGenericInstanceField#isSet}) {
-      this.{self::Class::_#Class#lateGenericInstanceField} = this.{self::Class::lateGenericInstanceFieldInit}(){() → self::Class::T?};
+      this.{self::Class::_#Class#lateGenericInstanceField} = this.{self::Class::lateGenericInstanceFieldInit}();
       this.{self::Class::_#Class#lateGenericInstanceField#isSet} = true;
     }
     return this.{self::Class::_#Class#lateGenericInstanceField};
@@ -73,12 +73,12 @@
     this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
   }
   method instanceMethod(generic-covariant-impl self::Class::T? value) → dynamic {
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
+    self::expect(16, this.{self::Class::lateInstanceField});
     this.{self::Class::lateInstanceField} = 17;
-    self::expect(17, this.{self::Class::lateInstanceField}{core::int?});
-    self::expect(this.{self::Class::field}{self::Class::T?}, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(17, this.{self::Class::lateInstanceField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericInstanceField});
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -152,16 +152,16 @@
   self::Class::lateStaticField1 = 88;
   self::expect(88, self::Class::lateStaticField1);
   self::Class::staticMethod();
-  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int>(null).{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(null){(core::int?) → dynamic};
+  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int>(null).{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(null);
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|lateExtensionField1 = 88;
   self::expect(88, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.weak.transformed.expect
index 162ff86..36b9cb9 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.weak.transformed.expect
@@ -50,7 +50,7 @@
     return 16;
   get lateInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#lateInstanceField#isSet}) {
-      this.{self::Class::_#Class#lateInstanceField} = this.{self::Class::lateInstanceFieldInit}(){() → core::int?};
+      this.{self::Class::_#Class#lateInstanceField} = this.{self::Class::lateInstanceFieldInit}();
       this.{self::Class::_#Class#lateInstanceField#isSet} = true;
     }
     return this.{self::Class::_#Class#lateInstanceField};
@@ -60,10 +60,10 @@
     this.{self::Class::_#Class#lateInstanceField} = #t3;
   }
   method lateGenericInstanceFieldInit() → self::Class::T?
-    return this.{self::Class::field}{self::Class::T?};
+    return this.{self::Class::field};
   get lateGenericInstanceField() → self::Class::T? {
     if(!this.{self::Class::_#Class#lateGenericInstanceField#isSet}) {
-      this.{self::Class::_#Class#lateGenericInstanceField} = this.{self::Class::lateGenericInstanceFieldInit}(){() → self::Class::T?};
+      this.{self::Class::_#Class#lateGenericInstanceField} = this.{self::Class::lateGenericInstanceFieldInit}();
       this.{self::Class::_#Class#lateGenericInstanceField#isSet} = true;
     }
     return this.{self::Class::_#Class#lateGenericInstanceField};
@@ -73,12 +73,12 @@
     this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
   }
   method instanceMethod(generic-covariant-impl self::Class::T? value) → dynamic {
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
+    self::expect(16, this.{self::Class::lateInstanceField});
     this.{self::Class::lateInstanceField} = 17;
-    self::expect(17, this.{self::Class::lateInstanceField}{core::int?});
-    self::expect(this.{self::Class::field}{self::Class::T?}, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(17, this.{self::Class::lateInstanceField});
+    self::expect(this.{self::Class::field}, this.{self::Class::lateGenericInstanceField});
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -152,16 +152,16 @@
   self::Class::lateStaticField1 = 88;
   self::expect(88, self::Class::lateStaticField1);
   self::Class::staticMethod();
-  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int>(null).{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(null){(core::int?) → dynamic};
+  new self::Class::•<core::int?>(null).{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int?>(0).{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int>(null).{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(null);
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|lateExtensionField1 = 88;
   self::expect(88, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.expect
index 79ec9e1..d01d771 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.expect
@@ -45,12 +45,12 @@
     this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
   }
   method instanceMethod(generic-covariant-impl self::Class::T? value) → dynamic {
-    self::throws(() → core::int? => this.{self::Class::lateInstanceField}{core::int?}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int? => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
-    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}{self::Class::T?}, "Read value from uninitialized Class.lateGenericInstanceField");
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -105,19 +105,19 @@
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(0){(core::int?) → dynamic};
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.transformed.expect
index 79ec9e1..d01d771 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.transformed.expect
@@ -45,12 +45,12 @@
     this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
   }
   method instanceMethod(generic-covariant-impl self::Class::T? value) → dynamic {
-    self::throws(() → core::int? => this.{self::Class::lateInstanceField}{core::int?}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int? => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
-    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}{self::Class::T?}, "Read value from uninitialized Class.lateGenericInstanceField");
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -105,19 +105,19 @@
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(0){(core::int?) → dynamic};
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.expect
index 79ec9e1..d01d771 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.expect
@@ -45,12 +45,12 @@
     this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
   }
   method instanceMethod(generic-covariant-impl self::Class::T? value) → dynamic {
-    self::throws(() → core::int? => this.{self::Class::lateInstanceField}{core::int?}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int? => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
-    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}{self::Class::T?}, "Read value from uninitialized Class.lateGenericInstanceField");
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -105,19 +105,19 @@
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(0){(core::int?) → dynamic};
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.transformed.expect
index 79ec9e1..d01d771 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.transformed.expect
@@ -45,12 +45,12 @@
     this.{self::Class::_#Class#lateGenericInstanceField} = #t4;
   }
   method instanceMethod(generic-covariant-impl self::Class::T? value) → dynamic {
-    self::throws(() → core::int? => this.{self::Class::lateInstanceField}{core::int?}, "Read value from uninitialized Class.lateInstanceField");
+    self::throws(() → core::int? => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
     this.{self::Class::lateInstanceField} = 16;
-    self::expect(16, this.{self::Class::lateInstanceField}{core::int?});
-    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}{self::Class::T?}, "Read value from uninitialized Class.lateGenericInstanceField");
+    self::expect(16, this.{self::Class::lateInstanceField});
+    self::throws(() → self::Class::T? => this.{self::Class::lateGenericInstanceField}, "Read value from uninitialized Class.lateGenericInstanceField");
     this.{self::Class::lateGenericInstanceField} = value;
-    self::expect(value, this.{self::Class::lateGenericInstanceField}{self::Class::T?});
+    self::expect(value, this.{self::Class::lateGenericInstanceField});
   }
 }
 extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
@@ -105,19 +105,19 @@
   self::Extension|lateExtensionField1 = 87;
   self::expect(87, self::Extension|lateExtensionField1);
   self::Extension|staticMethod();
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0){(core::int?) → dynamic};
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(null){(core::int?) → dynamic};
-  new self::Class::•<core::int>().{self::Class::instanceMethod}(0){(core::int?) → dynamic};
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int?>().{self::Class::instanceMethod}(0);
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(null);
+  new self::Class::•<core::int>().{self::Class::instanceMethod}(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.strong.expect
index a150002..12dcc96 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.strong.expect
@@ -18,9 +18,9 @@
     #lateLocal#isSet = true;
     return #lateLocal = #t1;
   }
-  self::expect(123, #lateLocal#get(){() → core::int?});
-  self::expect(124, #lateLocal#set(124){(core::int?) → dynamic});
-  self::expect(124, #lateLocal#get(){() → core::int?});
+  self::expect(123, #lateLocal#get.call());
+  self::expect(124, #lateLocal#set.call(124));
+  self::expect(124, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T? value1, T? value2) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -35,16 +35,16 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t2;
     }
-    self::expect(value1, #lateGenericLocal#get(){() → T?});
-    self::expect(value2, #lateGenericLocal#set(value2){(T?) → dynamic});
-    self::expect(value2, #lateGenericLocal#get(){() → T?});
+    self::expect(value1, #lateGenericLocal#get.call());
+    self::expect(value2, #lateGenericLocal#set.call(value2));
+    self::expect(value2, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null, 0){(core::int?, core::int?) → Null};
-  local<core::int?>(0, null){(core::int?, core::int?) → Null};
-  local<core::int>(null, 0){(core::int?, core::int?) → Null};
-  local<core::int>(0, null){(core::int?, core::int?) → Null};
+  local.call<core::int?>(null, 0);
+  local.call<core::int?>(0, null);
+  local.call<core::int>(null, 0);
+  local.call<core::int>(0, null);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.strong.transformed.expect
index a150002..12dcc96 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.strong.transformed.expect
@@ -18,9 +18,9 @@
     #lateLocal#isSet = true;
     return #lateLocal = #t1;
   }
-  self::expect(123, #lateLocal#get(){() → core::int?});
-  self::expect(124, #lateLocal#set(124){(core::int?) → dynamic});
-  self::expect(124, #lateLocal#get(){() → core::int?});
+  self::expect(123, #lateLocal#get.call());
+  self::expect(124, #lateLocal#set.call(124));
+  self::expect(124, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T? value1, T? value2) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -35,16 +35,16 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t2;
     }
-    self::expect(value1, #lateGenericLocal#get(){() → T?});
-    self::expect(value2, #lateGenericLocal#set(value2){(T?) → dynamic});
-    self::expect(value2, #lateGenericLocal#get(){() → T?});
+    self::expect(value1, #lateGenericLocal#get.call());
+    self::expect(value2, #lateGenericLocal#set.call(value2));
+    self::expect(value2, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null, 0){(core::int?, core::int?) → Null};
-  local<core::int?>(0, null){(core::int?, core::int?) → Null};
-  local<core::int>(null, 0){(core::int?, core::int?) → Null};
-  local<core::int>(0, null){(core::int?, core::int?) → Null};
+  local.call<core::int?>(null, 0);
+  local.call<core::int?>(0, null);
+  local.call<core::int>(null, 0);
+  local.call<core::int>(0, null);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.weak.expect
index a150002..12dcc96 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.weak.expect
@@ -18,9 +18,9 @@
     #lateLocal#isSet = true;
     return #lateLocal = #t1;
   }
-  self::expect(123, #lateLocal#get(){() → core::int?});
-  self::expect(124, #lateLocal#set(124){(core::int?) → dynamic});
-  self::expect(124, #lateLocal#get(){() → core::int?});
+  self::expect(123, #lateLocal#get.call());
+  self::expect(124, #lateLocal#set.call(124));
+  self::expect(124, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T? value1, T? value2) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -35,16 +35,16 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t2;
     }
-    self::expect(value1, #lateGenericLocal#get(){() → T?});
-    self::expect(value2, #lateGenericLocal#set(value2){(T?) → dynamic});
-    self::expect(value2, #lateGenericLocal#get(){() → T?});
+    self::expect(value1, #lateGenericLocal#get.call());
+    self::expect(value2, #lateGenericLocal#set.call(value2));
+    self::expect(value2, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null, 0){(core::int?, core::int?) → Null};
-  local<core::int?>(0, null){(core::int?, core::int?) → Null};
-  local<core::int>(null, 0){(core::int?, core::int?) → Null};
-  local<core::int>(0, null){(core::int?, core::int?) → Null};
+  local.call<core::int?>(null, 0);
+  local.call<core::int?>(0, null);
+  local.call<core::int>(null, 0);
+  local.call<core::int>(0, null);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.weak.transformed.expect
index a150002..12dcc96 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_with_initializer.dart.weak.transformed.expect
@@ -18,9 +18,9 @@
     #lateLocal#isSet = true;
     return #lateLocal = #t1;
   }
-  self::expect(123, #lateLocal#get(){() → core::int?});
-  self::expect(124, #lateLocal#set(124){(core::int?) → dynamic});
-  self::expect(124, #lateLocal#get(){() → core::int?});
+  self::expect(123, #lateLocal#get.call());
+  self::expect(124, #lateLocal#set.call(124));
+  self::expect(124, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T? value1, T? value2) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -35,16 +35,16 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t2;
     }
-    self::expect(value1, #lateGenericLocal#get(){() → T?});
-    self::expect(value2, #lateGenericLocal#set(value2){(T?) → dynamic});
-    self::expect(value2, #lateGenericLocal#get(){() → T?});
+    self::expect(value1, #lateGenericLocal#get.call());
+    self::expect(value2, #lateGenericLocal#set.call(value2));
+    self::expect(value2, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null, 0){(core::int?, core::int?) → Null};
-  local<core::int?>(0, null){(core::int?, core::int?) → Null};
-  local<core::int>(null, 0){(core::int?, core::int?) → Null};
-  local<core::int>(0, null){(core::int?, core::int?) → Null};
+  local.call<core::int?>(null, 0);
+  local.call<core::int?>(0, null);
+  local.call<core::int>(null, 0);
+  local.call<core::int>(0, null);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.expect
index 6167145..7fa4edc 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.expect
@@ -12,9 +12,9 @@
     #lateLocal#isSet = true;
     return #lateLocal = #t1;
   }
-  self::throws(() → core::int? => #lateLocal#get(){() → core::int?}, "Read value from uninitialized lateLocal");
-  self::expect(123, #lateLocal#set(123){(core::int?) → dynamic});
-  self::expect(123, #lateLocal#get(){() → core::int?});
+  self::throws(() → core::int? => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
+  self::expect(123, #lateLocal#set.call(123));
+  self::expect(123, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T? value) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -24,23 +24,23 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t2;
     }
-    self::throws(() → T? => #lateGenericLocal#get(){() → T?}, "Read value from uninitialized lateGenericLocal");
-    self::expect(value, #lateGenericLocal#set(value){(T?) → dynamic});
-    self::expect(value, #lateGenericLocal#get(){() → T?});
+    self::throws(() → T? => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
+    self::expect(value, #lateGenericLocal#set.call(value));
+    self::expect(value, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(0){(core::int?) → Null};
-  local<core::int>(null){(core::int?) → Null};
-  local<core::int>(0){(core::int?) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(0);
+  local.call<core::int>(null);
+  local.call<core::int>(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.transformed.expect
index 6167145..7fa4edc 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.transformed.expect
@@ -12,9 +12,9 @@
     #lateLocal#isSet = true;
     return #lateLocal = #t1;
   }
-  self::throws(() → core::int? => #lateLocal#get(){() → core::int?}, "Read value from uninitialized lateLocal");
-  self::expect(123, #lateLocal#set(123){(core::int?) → dynamic});
-  self::expect(123, #lateLocal#get(){() → core::int?});
+  self::throws(() → core::int? => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
+  self::expect(123, #lateLocal#set.call(123));
+  self::expect(123, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T? value) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -24,23 +24,23 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t2;
     }
-    self::throws(() → T? => #lateGenericLocal#get(){() → T?}, "Read value from uninitialized lateGenericLocal");
-    self::expect(value, #lateGenericLocal#set(value){(T?) → dynamic});
-    self::expect(value, #lateGenericLocal#get(){() → T?});
+    self::throws(() → T? => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
+    self::expect(value, #lateGenericLocal#set.call(value));
+    self::expect(value, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(0){(core::int?) → Null};
-  local<core::int>(null){(core::int?) → Null};
-  local<core::int>(0){(core::int?) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(0);
+  local.call<core::int>(null);
+  local.call<core::int>(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.expect
index 6167145..7fa4edc 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.expect
@@ -12,9 +12,9 @@
     #lateLocal#isSet = true;
     return #lateLocal = #t1;
   }
-  self::throws(() → core::int? => #lateLocal#get(){() → core::int?}, "Read value from uninitialized lateLocal");
-  self::expect(123, #lateLocal#set(123){(core::int?) → dynamic});
-  self::expect(123, #lateLocal#get(){() → core::int?});
+  self::throws(() → core::int? => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
+  self::expect(123, #lateLocal#set.call(123));
+  self::expect(123, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T? value) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -24,23 +24,23 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t2;
     }
-    self::throws(() → T? => #lateGenericLocal#get(){() → T?}, "Read value from uninitialized lateGenericLocal");
-    self::expect(value, #lateGenericLocal#set(value){(T?) → dynamic});
-    self::expect(value, #lateGenericLocal#get(){() → T?});
+    self::throws(() → T? => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
+    self::expect(value, #lateGenericLocal#set.call(value));
+    self::expect(value, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(0){(core::int?) → Null};
-  local<core::int>(null){(core::int?) → Null};
-  local<core::int>(0){(core::int?) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(0);
+  local.call<core::int>(null);
+  local.call<core::int>(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.transformed.expect
index 6167145..7fa4edc 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.transformed.expect
@@ -12,9 +12,9 @@
     #lateLocal#isSet = true;
     return #lateLocal = #t1;
   }
-  self::throws(() → core::int? => #lateLocal#get(){() → core::int?}, "Read value from uninitialized lateLocal");
-  self::expect(123, #lateLocal#set(123){(core::int?) → dynamic});
-  self::expect(123, #lateLocal#get(){() → core::int?});
+  self::throws(() → core::int? => #lateLocal#get.call(), "Read value from uninitialized lateLocal");
+  self::expect(123, #lateLocal#set.call(123));
+  self::expect(123, #lateLocal#get.call());
   function local<T extends core::Object? = dynamic>(T? value) → Null {
     lowered T? #lateGenericLocal;
     lowered core::bool #lateGenericLocal#isSet = false;
@@ -24,23 +24,23 @@
       #lateGenericLocal#isSet = true;
       return #lateGenericLocal = #t2;
     }
-    self::throws(() → T? => #lateGenericLocal#get(){() → T?}, "Read value from uninitialized lateGenericLocal");
-    self::expect(value, #lateGenericLocal#set(value){(T?) → dynamic});
-    self::expect(value, #lateGenericLocal#get(){() → T?});
+    self::throws(() → T? => #lateGenericLocal#get.call(), "Read value from uninitialized lateGenericLocal");
+    self::expect(value, #lateGenericLocal#set.call(value));
+    self::expect(value, #lateGenericLocal#get.call());
   }
-  local<core::int?>(null){(core::int?) → Null};
-  local<core::int?>(0){(core::int?) → Null};
-  local<core::int>(null){(core::int?) → Null};
-  local<core::int>(0){(core::int?) → Null};
+  local.call<core::int?>(null);
+  local.call<core::int?>(0);
+  local.call<core::int>(null);
+  local.call<core::int>(0);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/late_override.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_override.dart.strong.expect
index 23e3efa..0dffea5 100644
--- a/pkg/front_end/testcases/late_lowering/late_override.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_override.dart.strong.expect
@@ -9,7 +9,7 @@
     : super core::Object::•()
     ;
   get implementedLateFieldDeclaredGetterSetter() → core::int
-    return let final core::int? #t1 = this.{self::Interface::_#Interface#implementedLateFieldDeclaredGetterSetter} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("implementedLateFieldDeclaredGetterSetter") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::Interface::_#Interface#implementedLateFieldDeclaredGetterSetter} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("implementedLateFieldDeclaredGetterSetter") : #t1{core::int};
   set implementedLateFieldDeclaredGetterSetter(core::int #t2) → void
     this.{self::Interface::_#Interface#implementedLateFieldDeclaredGetterSetter} = #t2;
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_override.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_override.dart.strong.transformed.expect
index 23e3efa..0dffea5 100644
--- a/pkg/front_end/testcases/late_lowering/late_override.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_override.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     : super core::Object::•()
     ;
   get implementedLateFieldDeclaredGetterSetter() → core::int
-    return let final core::int? #t1 = this.{self::Interface::_#Interface#implementedLateFieldDeclaredGetterSetter} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("implementedLateFieldDeclaredGetterSetter") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::Interface::_#Interface#implementedLateFieldDeclaredGetterSetter} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("implementedLateFieldDeclaredGetterSetter") : #t1{core::int};
   set implementedLateFieldDeclaredGetterSetter(core::int #t2) → void
     this.{self::Interface::_#Interface#implementedLateFieldDeclaredGetterSetter} = #t2;
 }
diff --git a/pkg/front_end/testcases/late_lowering/later.dart.strong.expect b/pkg/front_end/testcases/late_lowering/later.dart.strong.expect
index 0bce815..0b84933 100644
--- a/pkg/front_end/testcases/late_lowering/later.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/later.dart.strong.expect
@@ -74,7 +74,7 @@
     : super core::Object::•()
     ;
   get b() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#b} in #t1 == null ?{core::int} this.{self::A::_#A#b} = this.{self::A::a}{core::int}.{core::num::*}(2){(core::num) → core::int}.{core::int::>>}(1){(core::int) → core::int} : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#b} in #t1.==(null) ?{core::int} this.{self::A::_#A#b} = this.{self::A::a}.{core::num::*}(2).{core::int::>>}(1) : #t1{core::int};
   set b(core::int #t2) → void
     this.{self::A::_#A#b} = #t2;
   method foo(core::int x) → dynamic {}
@@ -85,7 +85,7 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t3 = this.{self::B::_#B#x} in #t3 == null ?{core::int} let final core::int #t4 = 42 in this.{self::B::_#B#x} == null ?{core::int} this.{self::B::_#B#x} = #t4 : throw new _in::LateError::fieldADI("x") : #t3{core::int};
+    return let final core::int? #t3 = this.{self::B::_#B#x} in #t3.==(null) ?{core::int} let final core::int #t4 = 42 in this.{self::B::_#B#x}.==(null) ?{core::int} this.{self::B::_#B#x} = #t4 : throw new _in::LateError::fieldADI("x") : #t3{core::int};
 }
 class C extends core::Object {
   field core::int? _#C#x = null;
@@ -93,9 +93,9 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t5 = this.{self::C::_#C#x} in #t5 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t5{core::int};
+    return let final core::int? #t5 = this.{self::C::_#C#x} in #t5.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t5{core::int};
   set x(core::int #t6) → void
-    if(this.{self::C::_#C#x} == null)
+    if(this.{self::C::_#C#x}.==(null))
       this.{self::C::_#C#x} = #t6;
     else
       throw new _in::LateError::fieldAI("x");
@@ -118,7 +118,7 @@
     on dynamic catch(final dynamic late, final core::StackTrace e) {
     }
   }
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print("baz");
   }
   for (core::String s in <core::String>["baz"]) {
@@ -126,8 +126,8 @@
   }
   block {
     final core::List<core::int> #t7 = <core::int>[];
-    for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t7.{core::List::add}(i){(core::int) → void};
+    for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1))
+      #t7.{core::List::add}{Invariant}(i);
   } =>#t7;
 }
 static method hest() → dynamic async {
@@ -139,21 +139,21 @@
 static method fisk() → dynamic async {
   lowered core::String? #s1;
   function #s1#get() → core::String
-    return let final core::String? #t8 = #s1 in #t8 == null ?{core::String} #s1 = invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:40:20: Error: `await` expressions are not supported in late local initializers.
+    return let final core::String? #t8 = #s1 in #t8.==(null) ?{core::String} #s1 = invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:40:20: Error: `await` expressions are not supported in late local initializers.
   late String s1 = await hest(); // Error.
                    ^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::String : #t8{core::String};
   function #s1#set(core::String #t9) → dynamic
     return #s1 = #t9;
   lowered core::String? #s2;
   function #s2#get() → core::String
-    return let final core::String? #t10 = #s2 in #t10 == null ?{core::String} #s2 = "${#C1}${invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:41:30: Error: `await` expressions are not supported in late local initializers.
+    return let final core::String? #t10 = #s2 in #t10.==(null) ?{core::String} #s2 = "${#C1}${invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:41:30: Error: `await` expressions are not supported in late local initializers.
   late String s2 = '\${fisk}\${await hest()}\${fisk}'; // Error.
                              ^^^^^"}${#C1}" : #t10{core::String};
   function #s2#set(core::String #t11) → dynamic
     return #s2 = #t11;
   lowered core::Function? #f;
   function #f#get() → core::Function
-    return let final core::Function? #t12 = #f in #t12 == null ?{core::Function} #f = () → asy::Future<dynamic> async => await self::hest() : #t12{core::Function};
+    return let final core::Function? #t12 = #f in #t12.==(null) ?{core::Function} #f = () → asy::Future<dynamic> async => await self::hest() : #t12{core::Function};
   function #f#set(core::Function #t13) → dynamic
     return #f = #t13;
 }
diff --git a/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect
index 3987725..12f0ed3 100644
--- a/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect
@@ -74,7 +74,7 @@
     : super core::Object::•()
     ;
   get b() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#b} in #t1 == null ?{core::int} this.{self::A::_#A#b} = this.{self::A::a}{core::int}.{core::num::*}(2){(core::num) → core::int}.{core::int::>>}(1){(core::int) → core::int} : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#b} in #t1.==(null) ?{core::int} this.{self::A::_#A#b} = this.{self::A::a}.{core::num::*}(2).{core::int::>>}(1) : #t1{core::int};
   set b(core::int #t2) → void
     this.{self::A::_#A#b} = #t2;
   method foo(core::int x) → dynamic {}
@@ -85,7 +85,7 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t3 = this.{self::B::_#B#x} in #t3 == null ?{core::int} let final core::int #t4 = 42 in this.{self::B::_#B#x} == null ?{core::int} this.{self::B::_#B#x} = #t4 : throw new _in::LateError::fieldADI("x") : #t3{core::int};
+    return let final core::int? #t3 = this.{self::B::_#B#x} in #t3.==(null) ?{core::int} let final core::int #t4 = 42 in this.{self::B::_#B#x}.==(null) ?{core::int} this.{self::B::_#B#x} = #t4 : throw new _in::LateError::fieldADI("x") : #t3{core::int};
 }
 class C extends core::Object {
   field core::int? _#C#x = null;
@@ -93,9 +93,9 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t5 = this.{self::C::_#C#x} in #t5 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t5{core::int};
+    return let final core::int? #t5 = this.{self::C::_#C#x} in #t5.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t5{core::int};
   set x(core::int #t6) → void
-    if(this.{self::C::_#C#x} == null)
+    if(this.{self::C::_#C#x}.==(null))
       this.{self::C::_#C#x} = #t6;
     else
       throw new _in::LateError::fieldAI("x");
@@ -118,7 +118,7 @@
     on dynamic catch(final dynamic late, final core::StackTrace e) {
     }
   }
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print("baz");
   }
   {
@@ -132,8 +132,8 @@
   }
   block {
     final core::List<core::int> #t7 = core::_GrowableList::•<core::int>(0);
-    for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t7.{core::List::add}(i){(core::int) → void};
+    for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1))
+      #t7.{core::List::add}{Invariant}(i);
   } =>#t7;
 }
 static method hest() → dynamic /* originally async */ {
@@ -204,21 +204,21 @@
       {
         lowered core::String? #s1;
         function #s1#get() → core::String
-          return let final core::String? #t11 = #s1 in #t11 == null ?{core::String} #s1 = invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:40:20: Error: `await` expressions are not supported in late local initializers.
+          return let final core::String? #t11 = #s1 in #t11.==(null) ?{core::String} #s1 = invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:40:20: Error: `await` expressions are not supported in late local initializers.
   late String s1 = await hest(); // Error.
                    ^^^^^" : #t11{core::String};
         function #s1#set(core::String #t12) → dynamic
           return #s1 = #t12;
         lowered core::String? #s2;
         function #s2#get() → core::String
-          return let final core::String? #t13 = #s2 in #t13 == null ?{core::String} #s2 = "${#C1}${invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:41:30: Error: `await` expressions are not supported in late local initializers.
+          return let final core::String? #t13 = #s2 in #t13.==(null) ?{core::String} #s2 = "${#C1}${invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:41:30: Error: `await` expressions are not supported in late local initializers.
   late String s2 = '\${fisk}\${await hest()}\${fisk}'; // Error.
                              ^^^^^"}${#C1}" : #t13{core::String};
         function #s2#set(core::String #t14) → dynamic
           return #s2 = #t14;
         lowered core::Function? #f;
         function #f#get() → core::Function
-          return let final core::Function? #t15 = #f in #t15 == null ?{core::Function} #f = () → asy::Future<dynamic> /* originally async */ {
+          return let final core::Function? #t15 = #f in #t15.==(null) ?{core::Function} #f = () → asy::Future<dynamic> /* originally async */ {
             final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
             core::bool* :is_sync = false;
             FutureOr<dynamic>? :return_value;
diff --git a/pkg/front_end/testcases/late_lowering/later.dart.weak.expect b/pkg/front_end/testcases/late_lowering/later.dart.weak.expect
index 4e66fba..7123dd80 100644
--- a/pkg/front_end/testcases/late_lowering/later.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/later.dart.weak.expect
@@ -76,7 +76,7 @@
     ;
   get b() → core::int {
     if(!this.{self::A::_#A#b#isSet}) {
-      this.{self::A::_#A#b} = this.{self::A::a}{core::int}.{core::num::*}(2){(core::num) → core::int}.{core::int::>>}(1){(core::int) → core::int};
+      this.{self::A::_#A#b} = this.{self::A::a}.{core::num::*}(2).{core::int::>>}(1);
       this.{self::A::_#A#b#isSet} = true;
     }
     return let final core::int? #t1 = this.{self::A::_#A#b} in #t1{core::int};
@@ -138,7 +138,7 @@
     on dynamic catch(final dynamic late, final core::StackTrace e) {
     }
   }
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print("baz");
   }
   for (core::String s in <core::String>["baz"]) {
@@ -146,8 +146,8 @@
   }
   block {
     final core::List<core::int> #t7 = <core::int>[];
-    for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t7.{core::List::add}(i){(core::int) → void};
+    for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1))
+      #t7.{core::List::add}{Invariant}(i);
   } =>#t7;
 }
 static method hest() → dynamic async {
diff --git a/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect
index bb87ef7..3bcf2b7 100644
--- a/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect
@@ -76,7 +76,7 @@
     ;
   get b() → core::int {
     if(!this.{self::A::_#A#b#isSet}) {
-      this.{self::A::_#A#b} = this.{self::A::a}{core::int}.{core::num::*}(2){(core::num) → core::int}.{core::int::>>}(1){(core::int) → core::int};
+      this.{self::A::_#A#b} = this.{self::A::a}.{core::num::*}(2).{core::int::>>}(1);
       this.{self::A::_#A#b#isSet} = true;
     }
     return let final core::int? #t1 = this.{self::A::_#A#b} in #t1{core::int};
@@ -138,7 +138,7 @@
     on dynamic catch(final dynamic late, final core::StackTrace e) {
     }
   }
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print("baz");
   }
   {
@@ -152,8 +152,8 @@
   }
   block {
     final core::List<core::int> #t7 = core::_GrowableList::•<core::int>(0);
-    for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t7.{core::List::add}(i){(core::int) → void};
+    for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1))
+      #t7.{core::List::add}{Invariant}(i);
   } =>#t7;
 }
 static method hest() → dynamic /* originally async */ {
diff --git a/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.strong.expect
index c5e64b1..9e954be 100644
--- a/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.strong.expect
@@ -24,10 +24,10 @@
   non::Class::staticFinalField = null;
   non::expect(null, non::topLevelField);
   non::expect(null, non::finalTopLevelField);
-  non::expect(null, c.{non::Class::instanceField}{core::int*});
-  non::expect(null, c.{non::Class::finalInstanceField}{dynamic});
-  non::expect(null, c.{non::Class::instanceTypeVariable}{core::int*});
-  non::expect(null, c.{non::Class::finalInstanceTypeVariable}{core::int*});
+  non::expect(null, c.{non::Class::instanceField});
+  non::expect(null, c.{non::Class::finalInstanceField});
+  non::expect(null, c.{non::Class::instanceTypeVariable});
+  non::expect(null, c.{non::Class::finalInstanceTypeVariable});
   non::expect(null, non::Class::staticField);
   non::expect(null, non::Class::staticFinalField);
   non::throws(() → Null => non::finalTopLevelField = null);
@@ -55,7 +55,7 @@
     : super core::Object::•()
     ;
   get instanceField() → core::int
-    return let final core::int? #t1 = this.{non::Class::_#Class#instanceField} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("instanceField") : #t1{core::int};
+    return let final core::int? #t1 = this.{non::Class::_#Class#instanceField} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("instanceField") : #t1{core::int};
   set instanceField(core::int #t2) → void
     this.{non::Class::_#Class#instanceField} = #t2;
   get finalInstanceField() → dynamic
@@ -68,18 +68,18 @@
       this.{non::Class::_#Class#finalInstanceField} = #t3;
     }
   get instanceTypeVariable() → non::Class::T
-    return let final non::Class::T? #t4 = this.{non::Class::_#Class#instanceTypeVariable} in #t4 == null ?{non::Class::T} throw new _in::LateError::fieldNI("instanceTypeVariable") : #t4{non::Class::T};
+    return let final non::Class::T? #t4 = this.{non::Class::_#Class#instanceTypeVariable} in #t4.==(null) ?{non::Class::T} throw new _in::LateError::fieldNI("instanceTypeVariable") : #t4{non::Class::T};
   set instanceTypeVariable(generic-covariant-impl non::Class::T #t5) → void
     this.{non::Class::_#Class#instanceTypeVariable} = #t5;
   get finalInstanceTypeVariable() → non::Class::T
-    return let final non::Class::T? #t6 = this.{non::Class::_#Class#finalInstanceTypeVariable} in #t6 == null ?{non::Class::T} throw new _in::LateError::fieldNI("finalInstanceTypeVariable") : #t6{non::Class::T};
+    return let final non::Class::T? #t6 = this.{non::Class::_#Class#finalInstanceTypeVariable} in #t6.==(null) ?{non::Class::T} throw new _in::LateError::fieldNI("finalInstanceTypeVariable") : #t6{non::Class::T};
   set finalInstanceTypeVariable(non::Class::T #t7) → void
-    if(this.{non::Class::_#Class#finalInstanceTypeVariable} == null)
+    if(this.{non::Class::_#Class#finalInstanceTypeVariable}.==(null))
       this.{non::Class::_#Class#finalInstanceTypeVariable} = #t7;
     else
       throw new _in::LateError::fieldAI("finalInstanceTypeVariable");
   static get staticField() → core::int
-    return let final core::int? #t8 = non::Class::_#staticField in #t8 == null ?{core::int} throw new _in::LateError::fieldNI("staticField") : #t8{core::int};
+    return let final core::int? #t8 = non::Class::_#staticField in #t8.==(null) ?{core::int} throw new _in::LateError::fieldNI("staticField") : #t8{core::int};
   static set staticField(core::int #t9) → void
     non::Class::_#staticField = #t9;
   static get staticFinalField() → dynamic
@@ -96,7 +96,7 @@
 static field dynamic _#finalTopLevelField = null;
 static field core::bool _#finalTopLevelField#isSet = false;
 static get topLevelField() → core::int
-  return let final core::int? #t11 = non::_#topLevelField in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("topLevelField") : #t11{core::int};
+  return let final core::int? #t11 = non::_#topLevelField in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("topLevelField") : #t11{core::int};
 static set topLevelField(core::int #t12) → void
   non::_#topLevelField = #t12;
 static get finalTopLevelField() → dynamic
@@ -111,7 +111,7 @@
 static method method<T extends core::Object>(core::bool b, core::int i, non::method::T t) → dynamic {
   lowered core::int? #local;
   function #local#get() → core::int
-    return let final core::int? #t14 = #local in #t14 == null ?{core::int} throw new _in::LateError::localNI("local") : #t14{core::int};
+    return let final core::int? #t14 = #local in #t14.==(null) ?{core::int} throw new _in::LateError::localNI("local") : #t14{core::int};
   function #local#set(core::int #t15) → dynamic
     return #local = #t15;
   lowered final dynamic #finalLocal;
@@ -127,37 +127,37 @@
     }
   lowered non::method::T? #localTypeVariable;
   function #localTypeVariable#get() → non::method::T
-    return let final non::method::T? #t17 = #localTypeVariable in #t17 == null ?{non::method::T} throw new _in::LateError::localNI("localTypeVariable") : #t17{non::method::T};
+    return let final non::method::T? #t17 = #localTypeVariable in #t17.==(null) ?{non::method::T} throw new _in::LateError::localNI("localTypeVariable") : #t17{non::method::T};
   function #localTypeVariable#set(non::method::T #t18) → dynamic
     return #localTypeVariable = #t18;
   lowered final non::method::T? #finalLocalTypeVariable;
   function #finalLocalTypeVariable#get() → non::method::T
-    return let final non::method::T? #t19 = #finalLocalTypeVariable in #t19 == null ?{non::method::T} throw new _in::LateError::localNI("finalLocalTypeVariable") : #t19{non::method::T};
+    return let final non::method::T? #t19 = #finalLocalTypeVariable in #t19.==(null) ?{non::method::T} throw new _in::LateError::localNI("finalLocalTypeVariable") : #t19{non::method::T};
   function #finalLocalTypeVariable#set(non::method::T #t20) → dynamic
-    if(#finalLocalTypeVariable == null)
+    if(#finalLocalTypeVariable.==(null))
       return #finalLocalTypeVariable = #t20;
     else
       throw new _in::LateError::localAI("finalLocalTypeVariable");
   if(b) {
-    #local#set(i){(core::int) → dynamic};
-    #finalLocal#set(i){(dynamic) → dynamic};
-    #localTypeVariable#set(t){(non::method::T) → dynamic};
-    #finalLocalTypeVariable#set(t){(non::method::T) → dynamic};
-    non::expect(i, #local#get(){() → core::int});
-    non::expect(i, #finalLocal#get(){() → dynamic});
-    non::expect(t, #localTypeVariable#get(){() → non::method::T});
-    non::expect(t, #finalLocalTypeVariable#get(){() → non::method::T});
+    #local#set.call(i);
+    #finalLocal#set.call(i);
+    #localTypeVariable#set.call(t);
+    #finalLocalTypeVariable#set.call(t);
+    non::expect(i, #local#get.call());
+    non::expect(i, #finalLocal#get.call());
+    non::expect(t, #localTypeVariable#get.call());
+    non::expect(t, #finalLocalTypeVariable#get.call());
   }
-  non::throws(() → void => #finalLocal#set(i){(dynamic) → dynamic});
-  non::throws(() → void => #finalLocalTypeVariable#set(t){(non::method::T) → dynamic});
+  non::throws(() → void => #finalLocal#set.call(i));
+  non::throws(() → void => #finalLocalTypeVariable#set.call(t));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.strong.transformed.expect
index c5e64b1..9e954be 100644
--- a/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.strong.transformed.expect
@@ -24,10 +24,10 @@
   non::Class::staticFinalField = null;
   non::expect(null, non::topLevelField);
   non::expect(null, non::finalTopLevelField);
-  non::expect(null, c.{non::Class::instanceField}{core::int*});
-  non::expect(null, c.{non::Class::finalInstanceField}{dynamic});
-  non::expect(null, c.{non::Class::instanceTypeVariable}{core::int*});
-  non::expect(null, c.{non::Class::finalInstanceTypeVariable}{core::int*});
+  non::expect(null, c.{non::Class::instanceField});
+  non::expect(null, c.{non::Class::finalInstanceField});
+  non::expect(null, c.{non::Class::instanceTypeVariable});
+  non::expect(null, c.{non::Class::finalInstanceTypeVariable});
   non::expect(null, non::Class::staticField);
   non::expect(null, non::Class::staticFinalField);
   non::throws(() → Null => non::finalTopLevelField = null);
@@ -55,7 +55,7 @@
     : super core::Object::•()
     ;
   get instanceField() → core::int
-    return let final core::int? #t1 = this.{non::Class::_#Class#instanceField} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("instanceField") : #t1{core::int};
+    return let final core::int? #t1 = this.{non::Class::_#Class#instanceField} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("instanceField") : #t1{core::int};
   set instanceField(core::int #t2) → void
     this.{non::Class::_#Class#instanceField} = #t2;
   get finalInstanceField() → dynamic
@@ -68,18 +68,18 @@
       this.{non::Class::_#Class#finalInstanceField} = #t3;
     }
   get instanceTypeVariable() → non::Class::T
-    return let final non::Class::T? #t4 = this.{non::Class::_#Class#instanceTypeVariable} in #t4 == null ?{non::Class::T} throw new _in::LateError::fieldNI("instanceTypeVariable") : #t4{non::Class::T};
+    return let final non::Class::T? #t4 = this.{non::Class::_#Class#instanceTypeVariable} in #t4.==(null) ?{non::Class::T} throw new _in::LateError::fieldNI("instanceTypeVariable") : #t4{non::Class::T};
   set instanceTypeVariable(generic-covariant-impl non::Class::T #t5) → void
     this.{non::Class::_#Class#instanceTypeVariable} = #t5;
   get finalInstanceTypeVariable() → non::Class::T
-    return let final non::Class::T? #t6 = this.{non::Class::_#Class#finalInstanceTypeVariable} in #t6 == null ?{non::Class::T} throw new _in::LateError::fieldNI("finalInstanceTypeVariable") : #t6{non::Class::T};
+    return let final non::Class::T? #t6 = this.{non::Class::_#Class#finalInstanceTypeVariable} in #t6.==(null) ?{non::Class::T} throw new _in::LateError::fieldNI("finalInstanceTypeVariable") : #t6{non::Class::T};
   set finalInstanceTypeVariable(non::Class::T #t7) → void
-    if(this.{non::Class::_#Class#finalInstanceTypeVariable} == null)
+    if(this.{non::Class::_#Class#finalInstanceTypeVariable}.==(null))
       this.{non::Class::_#Class#finalInstanceTypeVariable} = #t7;
     else
       throw new _in::LateError::fieldAI("finalInstanceTypeVariable");
   static get staticField() → core::int
-    return let final core::int? #t8 = non::Class::_#staticField in #t8 == null ?{core::int} throw new _in::LateError::fieldNI("staticField") : #t8{core::int};
+    return let final core::int? #t8 = non::Class::_#staticField in #t8.==(null) ?{core::int} throw new _in::LateError::fieldNI("staticField") : #t8{core::int};
   static set staticField(core::int #t9) → void
     non::Class::_#staticField = #t9;
   static get staticFinalField() → dynamic
@@ -96,7 +96,7 @@
 static field dynamic _#finalTopLevelField = null;
 static field core::bool _#finalTopLevelField#isSet = false;
 static get topLevelField() → core::int
-  return let final core::int? #t11 = non::_#topLevelField in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("topLevelField") : #t11{core::int};
+  return let final core::int? #t11 = non::_#topLevelField in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("topLevelField") : #t11{core::int};
 static set topLevelField(core::int #t12) → void
   non::_#topLevelField = #t12;
 static get finalTopLevelField() → dynamic
@@ -111,7 +111,7 @@
 static method method<T extends core::Object>(core::bool b, core::int i, non::method::T t) → dynamic {
   lowered core::int? #local;
   function #local#get() → core::int
-    return let final core::int? #t14 = #local in #t14 == null ?{core::int} throw new _in::LateError::localNI("local") : #t14{core::int};
+    return let final core::int? #t14 = #local in #t14.==(null) ?{core::int} throw new _in::LateError::localNI("local") : #t14{core::int};
   function #local#set(core::int #t15) → dynamic
     return #local = #t15;
   lowered final dynamic #finalLocal;
@@ -127,37 +127,37 @@
     }
   lowered non::method::T? #localTypeVariable;
   function #localTypeVariable#get() → non::method::T
-    return let final non::method::T? #t17 = #localTypeVariable in #t17 == null ?{non::method::T} throw new _in::LateError::localNI("localTypeVariable") : #t17{non::method::T};
+    return let final non::method::T? #t17 = #localTypeVariable in #t17.==(null) ?{non::method::T} throw new _in::LateError::localNI("localTypeVariable") : #t17{non::method::T};
   function #localTypeVariable#set(non::method::T #t18) → dynamic
     return #localTypeVariable = #t18;
   lowered final non::method::T? #finalLocalTypeVariable;
   function #finalLocalTypeVariable#get() → non::method::T
-    return let final non::method::T? #t19 = #finalLocalTypeVariable in #t19 == null ?{non::method::T} throw new _in::LateError::localNI("finalLocalTypeVariable") : #t19{non::method::T};
+    return let final non::method::T? #t19 = #finalLocalTypeVariable in #t19.==(null) ?{non::method::T} throw new _in::LateError::localNI("finalLocalTypeVariable") : #t19{non::method::T};
   function #finalLocalTypeVariable#set(non::method::T #t20) → dynamic
-    if(#finalLocalTypeVariable == null)
+    if(#finalLocalTypeVariable.==(null))
       return #finalLocalTypeVariable = #t20;
     else
       throw new _in::LateError::localAI("finalLocalTypeVariable");
   if(b) {
-    #local#set(i){(core::int) → dynamic};
-    #finalLocal#set(i){(dynamic) → dynamic};
-    #localTypeVariable#set(t){(non::method::T) → dynamic};
-    #finalLocalTypeVariable#set(t){(non::method::T) → dynamic};
-    non::expect(i, #local#get(){() → core::int});
-    non::expect(i, #finalLocal#get(){() → dynamic});
-    non::expect(t, #localTypeVariable#get(){() → non::method::T});
-    non::expect(t, #finalLocalTypeVariable#get(){() → non::method::T});
+    #local#set.call(i);
+    #finalLocal#set.call(i);
+    #localTypeVariable#set.call(t);
+    #finalLocalTypeVariable#set.call(t);
+    non::expect(i, #local#get.call());
+    non::expect(i, #finalLocal#get.call());
+    non::expect(t, #localTypeVariable#get.call());
+    non::expect(t, #finalLocalTypeVariable#get.call());
   }
-  non::throws(() → void => #finalLocal#set(i){(dynamic) → dynamic});
-  non::throws(() → void => #finalLocalTypeVariable#set(t){(non::method::T) → dynamic});
+  non::throws(() → void => #finalLocal#set.call(i));
+  non::throws(() → void => #finalLocalTypeVariable#set.call(t));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.weak.expect
index 0aace1f..f6a85c7 100644
--- a/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.weak.expect
@@ -17,10 +17,10 @@
   non::Class::staticFinalField = null;
   non::expect(null, non::topLevelField);
   non::expect(null, non::finalTopLevelField);
-  non::expect(null, c.{non::Class::instanceField}{core::int*});
-  non::expect(null, c.{non::Class::finalInstanceField}{dynamic});
-  non::expect(null, c.{non::Class::instanceTypeVariable}{core::int*});
-  non::expect(null, c.{non::Class::finalInstanceTypeVariable}{core::int*});
+  non::expect(null, c.{non::Class::instanceField});
+  non::expect(null, c.{non::Class::finalInstanceField});
+  non::expect(null, c.{non::Class::instanceTypeVariable});
+  non::expect(null, c.{non::Class::finalInstanceTypeVariable});
   non::expect(null, non::Class::staticField);
   non::expect(null, non::Class::staticFinalField);
   non::throws(() → Null => non::finalTopLevelField = null);
@@ -156,25 +156,25 @@
       return #finalLocalTypeVariable = #t17;
     }
   if(b) {
-    #local#set(i){(core::int) → dynamic};
-    #finalLocal#set(i){(dynamic) → dynamic};
-    #localTypeVariable#set(t){(non::method::T) → dynamic};
-    #finalLocalTypeVariable#set(t){(non::method::T) → dynamic};
-    non::expect(i, #local#get(){() → core::int});
-    non::expect(i, #finalLocal#get(){() → dynamic});
-    non::expect(t, #localTypeVariable#get(){() → non::method::T});
-    non::expect(t, #finalLocalTypeVariable#get(){() → non::method::T});
+    #local#set.call(i);
+    #finalLocal#set.call(i);
+    #localTypeVariable#set.call(t);
+    #finalLocalTypeVariable#set.call(t);
+    non::expect(i, #local#get.call());
+    non::expect(i, #finalLocal#get.call());
+    non::expect(t, #localTypeVariable#get.call());
+    non::expect(t, #finalLocalTypeVariable#get.call());
   }
-  non::throws(() → void => #finalLocal#set(i){(dynamic) → dynamic});
-  non::throws(() → void => #finalLocalTypeVariable#set(t){(non::method::T) → dynamic});
+  non::throws(() → void => #finalLocal#set.call(i));
+  non::throws(() → void => #finalLocalTypeVariable#set.call(t));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.weak.transformed.expect
index 0aace1f..f6a85c7 100644
--- a/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/non_nullable_from_opt_out.dart.weak.transformed.expect
@@ -17,10 +17,10 @@
   non::Class::staticFinalField = null;
   non::expect(null, non::topLevelField);
   non::expect(null, non::finalTopLevelField);
-  non::expect(null, c.{non::Class::instanceField}{core::int*});
-  non::expect(null, c.{non::Class::finalInstanceField}{dynamic});
-  non::expect(null, c.{non::Class::instanceTypeVariable}{core::int*});
-  non::expect(null, c.{non::Class::finalInstanceTypeVariable}{core::int*});
+  non::expect(null, c.{non::Class::instanceField});
+  non::expect(null, c.{non::Class::finalInstanceField});
+  non::expect(null, c.{non::Class::instanceTypeVariable});
+  non::expect(null, c.{non::Class::finalInstanceTypeVariable});
   non::expect(null, non::Class::staticField);
   non::expect(null, non::Class::staticFinalField);
   non::throws(() → Null => non::finalTopLevelField = null);
@@ -156,25 +156,25 @@
       return #finalLocalTypeVariable = #t17;
     }
   if(b) {
-    #local#set(i){(core::int) → dynamic};
-    #finalLocal#set(i){(dynamic) → dynamic};
-    #localTypeVariable#set(t){(non::method::T) → dynamic};
-    #finalLocalTypeVariable#set(t){(non::method::T) → dynamic};
-    non::expect(i, #local#get(){() → core::int});
-    non::expect(i, #finalLocal#get(){() → dynamic});
-    non::expect(t, #localTypeVariable#get(){() → non::method::T});
-    non::expect(t, #finalLocalTypeVariable#get(){() → non::method::T});
+    #local#set.call(i);
+    #finalLocal#set.call(i);
+    #localTypeVariable#set.call(t);
+    #finalLocalTypeVariable#set.call(t);
+    non::expect(i, #local#get.call());
+    non::expect(i, #finalLocal#get.call());
+    non::expect(t, #localTypeVariable#get.call());
+    non::expect(t, #finalLocalTypeVariable#get.call());
   }
-  non::throws(() → void => #finalLocal#set(i){(dynamic) → dynamic});
-  non::throws(() → void => #finalLocalTypeVariable#set(t){(non::method::T) → dynamic});
+  non::throws(() → void => #finalLocal#set.call(i));
+  non::throws(() → void => #finalLocalTypeVariable#set.call(t));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/late_lowering/override.dart.strong.expect b/pkg/front_end/testcases/late_lowering/override.dart.strong.expect
index 15a8681..6fa984a 100644
--- a/pkg/front_end/testcases/late_lowering/override.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/override.dart.strong.expect
@@ -12,24 +12,24 @@
     : super core::Object::•()
     ;
   get field1() → core::int
-    return let final core::int? #t1 = this.{self::Class::_#Class#field1} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("field1") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::Class::_#Class#field1} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("field1") : #t1{core::int};
   set field1(core::int #t2) → void
     this.{self::Class::_#Class#field1} = #t2;
   get field2() → core::int
-    return let final core::int? #t3 = this.{self::Class::_#Class#field2} in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("field2") : #t3{core::int};
+    return let final core::int? #t3 = this.{self::Class::_#Class#field2} in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("field2") : #t3{core::int};
   set field2(core::int #t4) → void
     this.{self::Class::_#Class#field2} = #t4;
   get field3() → core::int
-    return let final core::int? #t5 = this.{self::Class::_#Class#field3} in #t5 == null ?{core::int} throw new _in::LateError::fieldNI("field3") : #t5{core::int};
+    return let final core::int? #t5 = this.{self::Class::_#Class#field3} in #t5.==(null) ?{core::int} throw new _in::LateError::fieldNI("field3") : #t5{core::int};
   set field3(core::int #t6) → void
-    if(this.{self::Class::_#Class#field3} == null)
+    if(this.{self::Class::_#Class#field3}.==(null))
       this.{self::Class::_#Class#field3} = #t6;
     else
       throw new _in::LateError::fieldAI("field3");
   get field4() → core::int
-    return let final core::int? #t7 = this.{self::Class::_#Class#field4} in #t7 == null ?{core::int} throw new _in::LateError::fieldNI("field4") : #t7{core::int};
+    return let final core::int? #t7 = this.{self::Class::_#Class#field4} in #t7.==(null) ?{core::int} throw new _in::LateError::fieldNI("field4") : #t7{core::int};
   set field4(core::int #t8) → void
-    if(this.{self::Class::_#Class#field4} == null)
+    if(this.{self::Class::_#Class#field4}.==(null))
       this.{self::Class::_#Class#field4} = #t8;
     else
       throw new _in::LateError::fieldAI("field4");
@@ -43,22 +43,22 @@
     : super self::Class::•()
     ;
   get field1() → core::int
-    return let final core::int? #t9 = this.{self::SubClass::_#SubClass#field1} in #t9 == null ?{core::int} throw new _in::LateError::fieldNI("field1") : #t9{core::int};
+    return let final core::int? #t9 = this.{self::SubClass::_#SubClass#field1} in #t9.==(null) ?{core::int} throw new _in::LateError::fieldNI("field1") : #t9{core::int};
   set field1(core::int #t10) → void
     this.{self::SubClass::_#SubClass#field1} = #t10;
   get field2() → core::int
-    return let final core::int? #t11 = this.{self::SubClass::_#SubClass#field2} in #t11 == null ?{core::int} this.{self::SubClass::_#SubClass#field2} = 0 : #t11{core::int};
+    return let final core::int? #t11 = this.{self::SubClass::_#SubClass#field2} in #t11.==(null) ?{core::int} this.{self::SubClass::_#SubClass#field2} = 0 : #t11{core::int};
   set field2(core::int #t12) → void
     this.{self::SubClass::_#SubClass#field2} = #t12;
   get field3() → core::int
-    return let final core::int? #t13 = this.{self::SubClass::_#SubClass#field3} in #t13 == null ?{core::int} throw new _in::LateError::fieldNI("field3") : #t13{core::int};
+    return let final core::int? #t13 = this.{self::SubClass::_#SubClass#field3} in #t13.==(null) ?{core::int} throw new _in::LateError::fieldNI("field3") : #t13{core::int};
   set field3(core::int #t14) → void
-    if(this.{self::SubClass::_#SubClass#field3} == null)
+    if(this.{self::SubClass::_#SubClass#field3}.==(null))
       this.{self::SubClass::_#SubClass#field3} = #t14;
     else
       throw new _in::LateError::fieldAI("field3");
   get field4() → core::int
-    return let final core::int? #t15 = this.{self::SubClass::_#SubClass#field4} in #t15 == null ?{core::int} let final core::int #t16 = 0 in this.{self::SubClass::_#SubClass#field4} == null ?{core::int} this.{self::SubClass::_#SubClass#field4} = #t16 : throw new _in::LateError::fieldADI("field4") : #t15{core::int};
+    return let final core::int? #t15 = this.{self::SubClass::_#SubClass#field4} in #t15.==(null) ?{core::int} let final core::int #t16 = 0 in this.{self::SubClass::_#SubClass#field4}.==(null) ?{core::int} this.{self::SubClass::_#SubClass#field4} = #t16 : throw new _in::LateError::fieldADI("field4") : #t15{core::int};
   get directField1() → core::int
     return super.{self::Class::field1};
   set directField1(core::int value) → void {
@@ -77,41 +77,41 @@
 static method main() → dynamic {
   self::SubClass sc = new self::SubClass::•();
   self::Class c = sc;
-  self::throws(() → core::int => c.{self::Class::field1}{core::int}, "Read value from uninitialized SubClass.field1");
-  self::throws(() → core::int => sc.{self::SubClass::directField1}{core::int}, "Read value from uninitialized Class.field1");
+  self::throws(() → core::int => c.{self::Class::field1}, "Read value from uninitialized SubClass.field1");
+  self::throws(() → core::int => sc.{self::SubClass::directField1}, "Read value from uninitialized Class.field1");
   self::expect(42, c.{self::Class::field1} = 42);
-  self::expect(42, c.{self::Class::field1}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField1}{core::int}, "Read value from uninitialized Class.field1");
+  self::expect(42, c.{self::Class::field1});
+  self::throws(() → core::int => sc.{self::SubClass::directField1}, "Read value from uninitialized Class.field1");
   self::expect(87, sc.{self::SubClass::directField1} = 87);
-  self::expect(87, sc.{self::SubClass::directField1}{core::int});
-  self::expect(0, c.{self::Class::field2}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField2}{core::int}, "Read value from uninitialized Class.field2");
+  self::expect(87, sc.{self::SubClass::directField1});
+  self::expect(0, c.{self::Class::field2});
+  self::throws(() → core::int => sc.{self::SubClass::directField2}, "Read value from uninitialized Class.field2");
   self::expect(42, c.{self::Class::field2} = 42);
-  self::expect(42, c.{self::Class::field2}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField2}{core::int}, "Read value from uninitialized Class.field2");
+  self::expect(42, c.{self::Class::field2});
+  self::throws(() → core::int => sc.{self::SubClass::directField2}, "Read value from uninitialized Class.field2");
   self::expect(87, sc.{self::SubClass::directField2} = 87);
-  self::expect(87, sc.{self::SubClass::directField2}{core::int});
-  self::throws(() → core::int => c.{self::Class::field3}{core::int}, "Read value from uninitialized SubClass.field3");
-  self::throws(() → core::int => sc.{self::SubClass::directField3}{core::int}, "Read value from uninitialized Class.field3");
+  self::expect(87, sc.{self::SubClass::directField2});
+  self::throws(() → core::int => c.{self::Class::field3}, "Read value from uninitialized SubClass.field3");
+  self::throws(() → core::int => sc.{self::SubClass::directField3}, "Read value from uninitialized Class.field3");
   self::expect(42, c.{self::Class::field3} = 42);
-  self::expect(42, c.{self::Class::field3}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField3}{core::int}, "Read value from uninitialized Class.field3");
+  self::expect(42, c.{self::Class::field3});
+  self::throws(() → core::int => sc.{self::SubClass::directField3}, "Read value from uninitialized Class.field3");
   self::throws(() → core::int => c.{self::Class::field3} = 87, "Write value to initialized SubClass.field3");
-  self::expect(0, c.{self::Class::field4}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField4}{core::int}, "Read value from uninitialized Class.field4");
+  self::expect(0, c.{self::Class::field4});
+  self::throws(() → core::int => sc.{self::SubClass::directField4}, "Read value from uninitialized Class.field4");
   self::expect(42, c.{self::Class::field4} = 42);
-  self::expect(0, c.{self::Class::field4}{core::int});
-  self::expect(42, sc.{self::SubClass::directField4}{core::int});
+  self::expect(0, c.{self::Class::field4});
+  self::expect(42, sc.{self::SubClass::directField4});
   self::throws(() → core::int => c.{self::Class::field4} = 87, "Write value to initialized SubClass.field4");
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}.";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/override.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/override.dart.strong.transformed.expect
index e46e3c3..31e4f1c 100644
--- a/pkg/front_end/testcases/late_lowering/override.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/override.dart.strong.transformed.expect
@@ -12,24 +12,24 @@
     : super core::Object::•()
     ;
   get field1() → core::int
-    return let final core::int? #t1 = this.{self::Class::_#Class#field1} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("field1") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::Class::_#Class#field1} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("field1") : #t1{core::int};
   set field1(core::int #t2) → void
     this.{self::Class::_#Class#field1} = #t2;
   get field2() → core::int
-    return let final core::int? #t3 = this.{self::Class::_#Class#field2} in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("field2") : #t3{core::int};
+    return let final core::int? #t3 = this.{self::Class::_#Class#field2} in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("field2") : #t3{core::int};
   set field2(core::int #t4) → void
     this.{self::Class::_#Class#field2} = #t4;
   get field3() → core::int
-    return let final core::int? #t5 = this.{self::Class::_#Class#field3} in #t5 == null ?{core::int} throw new _in::LateError::fieldNI("field3") : #t5{core::int};
+    return let final core::int? #t5 = this.{self::Class::_#Class#field3} in #t5.==(null) ?{core::int} throw new _in::LateError::fieldNI("field3") : #t5{core::int};
   set field3(core::int #t6) → void
-    if(this.{self::Class::_#Class#field3} == null)
+    if(this.{self::Class::_#Class#field3}.==(null))
       this.{self::Class::_#Class#field3} = #t6;
     else
       throw new _in::LateError::fieldAI("field3");
   get field4() → core::int
-    return let final core::int? #t7 = this.{self::Class::_#Class#field4} in #t7 == null ?{core::int} throw new _in::LateError::fieldNI("field4") : #t7{core::int};
+    return let final core::int? #t7 = this.{self::Class::_#Class#field4} in #t7.==(null) ?{core::int} throw new _in::LateError::fieldNI("field4") : #t7{core::int};
   set field4(core::int #t8) → void
-    if(this.{self::Class::_#Class#field4} == null)
+    if(this.{self::Class::_#Class#field4}.==(null))
       this.{self::Class::_#Class#field4} = #t8;
     else
       throw new _in::LateError::fieldAI("field4");
@@ -43,22 +43,22 @@
     : super self::Class::•()
     ;
   get field1() → core::int
-    return let final core::int? #t9 = this.{self::SubClass::_#SubClass#field1} in #t9 == null ?{core::int} throw new _in::LateError::fieldNI("field1") : #t9{core::int};
+    return let final core::int? #t9 = this.{self::SubClass::_#SubClass#field1} in #t9.==(null) ?{core::int} throw new _in::LateError::fieldNI("field1") : #t9{core::int};
   set field1(core::int #t10) → void
     this.{self::SubClass::_#SubClass#field1} = #t10;
   get field2() → core::int
-    return let final core::int? #t11 = this.{self::SubClass::_#SubClass#field2} in #t11 == null ?{core::int} this.{self::SubClass::_#SubClass#field2} = 0 : #t11{core::int};
+    return let final core::int? #t11 = this.{self::SubClass::_#SubClass#field2} in #t11.==(null) ?{core::int} this.{self::SubClass::_#SubClass#field2} = 0 : #t11{core::int};
   set field2(core::int #t12) → void
     this.{self::SubClass::_#SubClass#field2} = #t12;
   get field3() → core::int
-    return let final core::int? #t13 = this.{self::SubClass::_#SubClass#field3} in #t13 == null ?{core::int} throw new _in::LateError::fieldNI("field3") : #t13{core::int};
+    return let final core::int? #t13 = this.{self::SubClass::_#SubClass#field3} in #t13.==(null) ?{core::int} throw new _in::LateError::fieldNI("field3") : #t13{core::int};
   set field3(core::int #t14) → void
-    if(this.{self::SubClass::_#SubClass#field3} == null)
+    if(this.{self::SubClass::_#SubClass#field3}.==(null))
       this.{self::SubClass::_#SubClass#field3} = #t14;
     else
       throw new _in::LateError::fieldAI("field3");
   get field4() → core::int
-    return let final core::int? #t15 = this.{self::SubClass::_#SubClass#field4} in #t15 == null ?{core::int} let final core::int #t16 = 0 in this.{self::SubClass::_#SubClass#field4} == null ?{core::int} this.{self::SubClass::_#SubClass#field4} = #t16 : throw new _in::LateError::fieldADI("field4") : #t15{core::int};
+    return let final core::int? #t15 = this.{self::SubClass::_#SubClass#field4} in #t15.==(null) ?{core::int} let final core::int #t16 = 0 in this.{self::SubClass::_#SubClass#field4}.==(null) ?{core::int} this.{self::SubClass::_#SubClass#field4} = #t16 : throw new _in::LateError::fieldADI("field4") : #t15{core::int};
   get directField1() → core::int
     return super.{self::Class::field1};
   set directField1(core::int value) → void {
@@ -77,41 +77,41 @@
 static method main() → dynamic {
   self::SubClass sc = new self::SubClass::•();
   self::Class c = sc;
-  self::throws(() → core::int => c.{self::Class::field1}{core::int}, "Read value from uninitialized SubClass.field1");
-  self::throws(() → core::int => sc.{self::SubClass::directField1}{core::int}, "Read value from uninitialized Class.field1");
+  self::throws(() → core::int => c.{self::Class::field1}, "Read value from uninitialized SubClass.field1");
+  self::throws(() → core::int => sc.{self::SubClass::directField1}, "Read value from uninitialized Class.field1");
   self::expect(42, c.{self::Class::field1} = 42);
-  self::expect(42, c.{self::Class::field1}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField1}{core::int}, "Read value from uninitialized Class.field1");
+  self::expect(42, c.{self::Class::field1});
+  self::throws(() → core::int => sc.{self::SubClass::directField1}, "Read value from uninitialized Class.field1");
   self::expect(87, sc.{self::SubClass::directField1} = 87);
-  self::expect(87, sc.{self::SubClass::directField1}{core::int});
-  self::expect(0, c.{self::Class::field2}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField2}{core::int}, "Read value from uninitialized Class.field2");
+  self::expect(87, sc.{self::SubClass::directField1});
+  self::expect(0, c.{self::Class::field2});
+  self::throws(() → core::int => sc.{self::SubClass::directField2}, "Read value from uninitialized Class.field2");
   self::expect(42, c.{self::Class::field2} = 42);
-  self::expect(42, c.{self::Class::field2}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField2}{core::int}, "Read value from uninitialized Class.field2");
+  self::expect(42, c.{self::Class::field2});
+  self::throws(() → core::int => sc.{self::SubClass::directField2}, "Read value from uninitialized Class.field2");
   self::expect(87, sc.{self::SubClass::directField2} = 87);
-  self::expect(87, sc.{self::SubClass::directField2}{core::int});
-  self::throws(() → core::int => c.{self::Class::field3}{core::int}, "Read value from uninitialized SubClass.field3");
-  self::throws(() → core::int => sc.{self::SubClass::directField3}{core::int}, "Read value from uninitialized Class.field3");
+  self::expect(87, sc.{self::SubClass::directField2});
+  self::throws(() → core::int => c.{self::Class::field3}, "Read value from uninitialized SubClass.field3");
+  self::throws(() → core::int => sc.{self::SubClass::directField3}, "Read value from uninitialized Class.field3");
   self::expect(42, c.{self::Class::field3} = 42);
-  self::expect(42, c.{self::Class::field3}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField3}{core::int}, "Read value from uninitialized Class.field3");
+  self::expect(42, c.{self::Class::field3});
+  self::throws(() → core::int => sc.{self::SubClass::directField3}, "Read value from uninitialized Class.field3");
   self::throws(() → core::int => c.{self::Class::field3} = 87, "Write value to initialized SubClass.field3");
-  self::expect(0, c.{self::Class::field4}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField4}{core::int}, "Read value from uninitialized Class.field4");
+  self::expect(0, c.{self::Class::field4});
+  self::throws(() → core::int => sc.{self::SubClass::directField4}, "Read value from uninitialized Class.field4");
   self::expect(42, c.{self::Class::field4} = 42);
-  self::expect(0, c.{self::Class::field4}{core::int});
-  self::expect(42, sc.{self::SubClass::directField4}{core::int});
+  self::expect(0, c.{self::Class::field4});
+  self::expect(42, sc.{self::SubClass::directField4});
   self::throws(() → core::int => c.{self::Class::field4} = 87, "Write value to initialized SubClass.field4");
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}.";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/override.dart.weak.expect b/pkg/front_end/testcases/late_lowering/override.dart.weak.expect
index f36bd78..9b3ba60 100644
--- a/pkg/front_end/testcases/late_lowering/override.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/override.dart.weak.expect
@@ -112,41 +112,41 @@
 static method main() → dynamic {
   self::SubClass sc = new self::SubClass::•();
   self::Class c = sc;
-  self::throws(() → core::int => c.{self::Class::field1}{core::int}, "Read value from uninitialized SubClass.field1");
-  self::throws(() → core::int => sc.{self::SubClass::directField1}{core::int}, "Read value from uninitialized Class.field1");
+  self::throws(() → core::int => c.{self::Class::field1}, "Read value from uninitialized SubClass.field1");
+  self::throws(() → core::int => sc.{self::SubClass::directField1}, "Read value from uninitialized Class.field1");
   self::expect(42, c.{self::Class::field1} = 42);
-  self::expect(42, c.{self::Class::field1}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField1}{core::int}, "Read value from uninitialized Class.field1");
+  self::expect(42, c.{self::Class::field1});
+  self::throws(() → core::int => sc.{self::SubClass::directField1}, "Read value from uninitialized Class.field1");
   self::expect(87, sc.{self::SubClass::directField1} = 87);
-  self::expect(87, sc.{self::SubClass::directField1}{core::int});
-  self::expect(0, c.{self::Class::field2}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField2}{core::int}, "Read value from uninitialized Class.field2");
+  self::expect(87, sc.{self::SubClass::directField1});
+  self::expect(0, c.{self::Class::field2});
+  self::throws(() → core::int => sc.{self::SubClass::directField2}, "Read value from uninitialized Class.field2");
   self::expect(42, c.{self::Class::field2} = 42);
-  self::expect(42, c.{self::Class::field2}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField2}{core::int}, "Read value from uninitialized Class.field2");
+  self::expect(42, c.{self::Class::field2});
+  self::throws(() → core::int => sc.{self::SubClass::directField2}, "Read value from uninitialized Class.field2");
   self::expect(87, sc.{self::SubClass::directField2} = 87);
-  self::expect(87, sc.{self::SubClass::directField2}{core::int});
-  self::throws(() → core::int => c.{self::Class::field3}{core::int}, "Read value from uninitialized SubClass.field3");
-  self::throws(() → core::int => sc.{self::SubClass::directField3}{core::int}, "Read value from uninitialized Class.field3");
+  self::expect(87, sc.{self::SubClass::directField2});
+  self::throws(() → core::int => c.{self::Class::field3}, "Read value from uninitialized SubClass.field3");
+  self::throws(() → core::int => sc.{self::SubClass::directField3}, "Read value from uninitialized Class.field3");
   self::expect(42, c.{self::Class::field3} = 42);
-  self::expect(42, c.{self::Class::field3}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField3}{core::int}, "Read value from uninitialized Class.field3");
+  self::expect(42, c.{self::Class::field3});
+  self::throws(() → core::int => sc.{self::SubClass::directField3}, "Read value from uninitialized Class.field3");
   self::throws(() → core::int => c.{self::Class::field3} = 87, "Write value to initialized SubClass.field3");
-  self::expect(0, c.{self::Class::field4}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField4}{core::int}, "Read value from uninitialized Class.field4");
+  self::expect(0, c.{self::Class::field4});
+  self::throws(() → core::int => sc.{self::SubClass::directField4}, "Read value from uninitialized Class.field4");
   self::expect(42, c.{self::Class::field4} = 42);
-  self::expect(0, c.{self::Class::field4}{core::int});
-  self::expect(42, sc.{self::SubClass::directField4}{core::int});
+  self::expect(0, c.{self::Class::field4});
+  self::expect(42, sc.{self::SubClass::directField4});
   self::throws(() → core::int => c.{self::Class::field4} = 87, "Write value to initialized SubClass.field4");
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}.";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/override.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/override.dart.weak.transformed.expect
index f36bd78..9b3ba60 100644
--- a/pkg/front_end/testcases/late_lowering/override.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/override.dart.weak.transformed.expect
@@ -112,41 +112,41 @@
 static method main() → dynamic {
   self::SubClass sc = new self::SubClass::•();
   self::Class c = sc;
-  self::throws(() → core::int => c.{self::Class::field1}{core::int}, "Read value from uninitialized SubClass.field1");
-  self::throws(() → core::int => sc.{self::SubClass::directField1}{core::int}, "Read value from uninitialized Class.field1");
+  self::throws(() → core::int => c.{self::Class::field1}, "Read value from uninitialized SubClass.field1");
+  self::throws(() → core::int => sc.{self::SubClass::directField1}, "Read value from uninitialized Class.field1");
   self::expect(42, c.{self::Class::field1} = 42);
-  self::expect(42, c.{self::Class::field1}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField1}{core::int}, "Read value from uninitialized Class.field1");
+  self::expect(42, c.{self::Class::field1});
+  self::throws(() → core::int => sc.{self::SubClass::directField1}, "Read value from uninitialized Class.field1");
   self::expect(87, sc.{self::SubClass::directField1} = 87);
-  self::expect(87, sc.{self::SubClass::directField1}{core::int});
-  self::expect(0, c.{self::Class::field2}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField2}{core::int}, "Read value from uninitialized Class.field2");
+  self::expect(87, sc.{self::SubClass::directField1});
+  self::expect(0, c.{self::Class::field2});
+  self::throws(() → core::int => sc.{self::SubClass::directField2}, "Read value from uninitialized Class.field2");
   self::expect(42, c.{self::Class::field2} = 42);
-  self::expect(42, c.{self::Class::field2}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField2}{core::int}, "Read value from uninitialized Class.field2");
+  self::expect(42, c.{self::Class::field2});
+  self::throws(() → core::int => sc.{self::SubClass::directField2}, "Read value from uninitialized Class.field2");
   self::expect(87, sc.{self::SubClass::directField2} = 87);
-  self::expect(87, sc.{self::SubClass::directField2}{core::int});
-  self::throws(() → core::int => c.{self::Class::field3}{core::int}, "Read value from uninitialized SubClass.field3");
-  self::throws(() → core::int => sc.{self::SubClass::directField3}{core::int}, "Read value from uninitialized Class.field3");
+  self::expect(87, sc.{self::SubClass::directField2});
+  self::throws(() → core::int => c.{self::Class::field3}, "Read value from uninitialized SubClass.field3");
+  self::throws(() → core::int => sc.{self::SubClass::directField3}, "Read value from uninitialized Class.field3");
   self::expect(42, c.{self::Class::field3} = 42);
-  self::expect(42, c.{self::Class::field3}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField3}{core::int}, "Read value from uninitialized Class.field3");
+  self::expect(42, c.{self::Class::field3});
+  self::throws(() → core::int => sc.{self::SubClass::directField3}, "Read value from uninitialized Class.field3");
   self::throws(() → core::int => c.{self::Class::field3} = 87, "Write value to initialized SubClass.field3");
-  self::expect(0, c.{self::Class::field4}{core::int});
-  self::throws(() → core::int => sc.{self::SubClass::directField4}{core::int}, "Read value from uninitialized Class.field4");
+  self::expect(0, c.{self::Class::field4});
+  self::throws(() → core::int => sc.{self::SubClass::directField4}, "Read value from uninitialized Class.field4");
   self::expect(42, c.{self::Class::field4} = 42);
-  self::expect(0, c.{self::Class::field4}{core::int});
-  self::expect(42, sc.{self::SubClass::directField4}{core::int});
+  self::expect(0, c.{self::Class::field4});
+  self::expect(42, sc.{self::SubClass::directField4});
   self::throws(() → core::int => c.{self::Class::field4} = 87, "Write value to initialized SubClass.field4");
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}.";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.expect b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.expect
index a6efc95..600c0c9 100644
--- a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.expect
@@ -11,9 +11,9 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#x} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#x} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
   set x(core::int #t2) → void
-    if(this.{self::A::_#A#x} == null)
+    if(this.{self::A::_#A#x}.==(null))
       this.{self::A::_#A#x} = #t2;
     else
       throw new _in::LateError::fieldAI("x");
@@ -44,7 +44,7 @@
     : super self::A::•()
     ;
   get x() → core::int
-    return let final core::int? #t4 = this.{self::C::_#C#x} in #t4 == null ?{core::int} let final core::int #t5 = 2 in this.{self::C::_#C#x} == null ?{core::int} this.{self::C::_#C#x} = #t5 : throw new _in::LateError::fieldADI("x") : #t4{core::int};
+    return let final core::int? #t4 = this.{self::C::_#C#x} in #t4.==(null) ?{core::int} let final core::int #t5 = 2 in this.{self::C::_#C#x}.==(null) ?{core::int} this.{self::C::_#C#x} = #t5 : throw new _in::LateError::fieldADI("x") : #t4{core::int};
   get y() → core::int? {
     if(!this.{self::C::_#C#y#isSet}) {
       final core::int? #t6 = 2;
@@ -63,23 +63,23 @@
   self::throws(() → core::int => b.{self::A::x} = 14, "Write to B.x");
   c.{self::A::x} = 3;
   self::throws(() → core::int => c.{self::A::x} = 14, "Write to C.x");
-  self::expect(1, b.{self::B::x}{core::int});
-  self::expect(2, c.{self::C::x}{core::int});
+  self::expect(1, b.{self::B::x});
+  self::expect(2, c.{self::C::x});
   b.{self::A::y} = 3;
   self::throws(() → core::int => b.{self::A::y} = 14, "Write to B.y");
   c.{self::A::y} = 3;
   self::throws(() → core::int => c.{self::A::y} = 14, "Write to C.y");
-  self::expect(1, b.{self::B::y}{core::int?});
-  self::expect(2, c.{self::C::y}{core::int?});
+  self::expect(1, b.{self::B::y});
+  self::expect(2, c.{self::C::y});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.transformed.expect
index 19b863e..474f90a 100644
--- a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.transformed.expect
@@ -11,9 +11,9 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#x} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#x} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
   set x(core::int #t2) → void
-    if(this.{self::A::_#A#x} == null)
+    if(this.{self::A::_#A#x}.==(null))
       this.{self::A::_#A#x} = #t2;
     else
       throw new _in::LateError::fieldAI("x");
@@ -44,7 +44,7 @@
     : super self::A::•()
     ;
   get x() → core::int
-    return let final core::int? #t4 = this.{self::C::_#C#x} in #t4 == null ?{core::int} let final core::int #t5 = 2 in this.{self::C::_#C#x} == null ?{core::int} this.{self::C::_#C#x} = #t5 : throw new _in::LateError::fieldADI("x") : #t4{core::int};
+    return let final core::int? #t4 = this.{self::C::_#C#x} in #t4.==(null) ?{core::int} let final core::int #t5 = 2 in this.{self::C::_#C#x}.==(null) ?{core::int} this.{self::C::_#C#x} = #t5 : throw new _in::LateError::fieldADI("x") : #t4{core::int};
   get y() → core::int? {
     if(!this.{self::C::_#C#y#isSet}) {
       final core::int? #t6 = 2;
@@ -63,23 +63,23 @@
   self::throws(() → core::int => b.{self::A::x} = 14, "Write to B.x");
   c.{self::A::x} = 3;
   self::throws(() → core::int => c.{self::A::x} = 14, "Write to C.x");
-  self::expect(1, b.{self::B::x}{core::int});
-  self::expect(2, c.{self::C::x}{core::int});
+  self::expect(1, b.{self::B::x});
+  self::expect(2, c.{self::C::x});
   b.{self::A::y} = 3;
   self::throws(() → core::int => b.{self::A::y} = 14, "Write to B.y");
   c.{self::A::y} = 3;
   self::throws(() → core::int => c.{self::A::y} = 14, "Write to C.y");
-  self::expect(1, b.{self::B::y}{core::int?});
-  self::expect(2, c.{self::C::y}{core::int?});
+  self::expect(1, b.{self::B::y});
+  self::expect(2, c.{self::C::y});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.expect b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.expect
index 004775a..1cb53d8 100644
--- a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.expect
@@ -75,23 +75,23 @@
   self::throws(() → core::int => b.{self::A::x} = 14, "Write to B.x");
   c.{self::A::x} = 3;
   self::throws(() → core::int => c.{self::A::x} = 14, "Write to C.x");
-  self::expect(1, b.{self::B::x}{core::int});
-  self::expect(2, c.{self::C::x}{core::int});
+  self::expect(1, b.{self::B::x});
+  self::expect(2, c.{self::C::x});
   b.{self::A::y} = 3;
   self::throws(() → core::int => b.{self::A::y} = 14, "Write to B.y");
   c.{self::A::y} = 3;
   self::throws(() → core::int => c.{self::A::y} = 14, "Write to C.y");
-  self::expect(1, b.{self::B::y}{core::int?});
-  self::expect(2, c.{self::C::y}{core::int?});
+  self::expect(1, b.{self::B::y});
+  self::expect(2, c.{self::C::y});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.transformed.expect
index 004775a..1cb53d8 100644
--- a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.transformed.expect
@@ -75,23 +75,23 @@
   self::throws(() → core::int => b.{self::A::x} = 14, "Write to B.x");
   c.{self::A::x} = 3;
   self::throws(() → core::int => c.{self::A::x} = 14, "Write to C.x");
-  self::expect(1, b.{self::B::x}{core::int});
-  self::expect(2, c.{self::C::x}{core::int});
+  self::expect(1, b.{self::B::x});
+  self::expect(2, c.{self::C::x});
   b.{self::A::y} = 3;
   self::throws(() → core::int => b.{self::A::y} = 14, "Write to B.y");
   c.{self::A::y} = 3;
   self::throws(() → core::int => c.{self::A::y} = 14, "Write to C.y");
-  self::expect(1, b.{self::B::y}{core::int?});
-  self::expect(2, c.{self::C::y}{core::int?});
+  self::expect(1, b.{self::B::y});
+  self::expect(2, c.{self::C::y});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/late_lowering/private_members.dart.strong.expect b/pkg/front_end/testcases/late_lowering/private_members.dart.strong.expect
index 90de275..af828fe 100644
--- a/pkg/front_end/testcases/late_lowering/private_members.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/private_members.dart.strong.expect
@@ -14,7 +14,7 @@
     : super core::Object::•()
     ;
   get _privateField1() → core::int
-    return let final core::int? #t1 = this.{self::_Class::_#_Class#_privateField1} in #t1 == null ?{core::int} this.{self::_Class::_#_Class#_privateField1} = 1 : #t1{core::int};
+    return let final core::int? #t1 = this.{self::_Class::_#_Class#_privateField1} in #t1.==(null) ?{core::int} this.{self::_Class::_#_Class#_privateField1} = 1 : #t1{core::int};
   set _privateField1(core::int #t2) → void
     this.{self::_Class::_#_Class#_privateField1} = #t2;
   get _privateField2() → core::int? {
@@ -29,7 +29,7 @@
     this.{self::_Class::_#_Class#_privateField2} = #t3;
   }
   get _privateFinalField1() → core::int
-    return let final core::int? #t4 = this.{self::_Class::_#_Class#_privateFinalField1} in #t4 == null ?{core::int} this.{self::_Class::_#_Class#_privateFinalField1} = 1 : #t4{core::int};
+    return let final core::int? #t4 = this.{self::_Class::_#_Class#_privateFinalField1} in #t4.==(null) ?{core::int} this.{self::_Class::_#_Class#_privateFinalField1} = 1 : #t4{core::int};
   set _privateFinalField1(core::int #t5) → void
     this.{self::_Class::_#_Class#_privateFinalField1} = #t5;
   get _privateFinalField2() → core::int? {
@@ -68,17 +68,17 @@
 static field core::bool _#_Extension|_privateFinalField2#isSet = false /* from org-dartlang-testcase:///private_members_part.dart */;
 static method main() → dynamic {
   self::_Class c = new self::_Class::•();
-  c.{self::_Class::_privateField1} = c.{self::_Class::_privateField1}{core::int};
-  c.{self::_Class::_privateField2} = c.{self::_Class::_privateField2}{core::int?};
-  c.{self::_Class::_privateFinalField1}{core::int};
-  c.{self::_Class::_privateFinalField2}{core::int?};
+  c.{self::_Class::_privateField1} = c.{self::_Class::_privateField1};
+  c.{self::_Class::_privateField2} = c.{self::_Class::_privateField2};
+  c.{self::_Class::_privateFinalField1};
+  c.{self::_Class::_privateFinalField2};
   self::_Extension|_privateField1 = self::_Extension|_privateField1;
   self::_Extension|_privateField2 = self::_Extension|_privateField2;
   self::_Extension|_privateFinalField1;
   self::_Extension|_privateFinalField2;
 }
 static get /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|_privateField1() → core::int
-  return let final core::int? #t7 = self::_#_Extension|_privateField1 in #t7 == null ?{core::int} self::_#_Extension|_privateField1 = 1 : #t7{core::int};
+  return let final core::int? #t7 = self::_#_Extension|_privateField1 in #t7.==(null) ?{core::int} self::_#_Extension|_privateField1 = 1 : #t7{core::int};
 static set /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|_privateField1(core::int #t8) → void
   self::_#_Extension|_privateField1 = #t8;
 static get /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|_privateField2() → core::int? {
@@ -93,7 +93,7 @@
   self::_#_Extension|_privateField2 = #t9;
 }
 static get /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|_privateFinalField1() → core::int
-  return let final core::int? #t10 = self::_#_Extension|_privateFinalField1 in #t10 == null ?{core::int} self::_#_Extension|_privateFinalField1 = 1 : #t10{core::int};
+  return let final core::int? #t10 = self::_#_Extension|_privateFinalField1 in #t10.==(null) ?{core::int} self::_#_Extension|_privateFinalField1 = 1 : #t10{core::int};
 static set /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|_privateFinalField1(core::int #t11) → void
   self::_#_Extension|_privateFinalField1 = #t11;
 static get /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|_privateFinalField2() → core::int? {
diff --git a/pkg/front_end/testcases/late_lowering/private_members.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/private_members.dart.strong.transformed.expect
index 90de275..af828fe 100644
--- a/pkg/front_end/testcases/late_lowering/private_members.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/private_members.dart.strong.transformed.expect
@@ -14,7 +14,7 @@
     : super core::Object::•()
     ;
   get _privateField1() → core::int
-    return let final core::int? #t1 = this.{self::_Class::_#_Class#_privateField1} in #t1 == null ?{core::int} this.{self::_Class::_#_Class#_privateField1} = 1 : #t1{core::int};
+    return let final core::int? #t1 = this.{self::_Class::_#_Class#_privateField1} in #t1.==(null) ?{core::int} this.{self::_Class::_#_Class#_privateField1} = 1 : #t1{core::int};
   set _privateField1(core::int #t2) → void
     this.{self::_Class::_#_Class#_privateField1} = #t2;
   get _privateField2() → core::int? {
@@ -29,7 +29,7 @@
     this.{self::_Class::_#_Class#_privateField2} = #t3;
   }
   get _privateFinalField1() → core::int
-    return let final core::int? #t4 = this.{self::_Class::_#_Class#_privateFinalField1} in #t4 == null ?{core::int} this.{self::_Class::_#_Class#_privateFinalField1} = 1 : #t4{core::int};
+    return let final core::int? #t4 = this.{self::_Class::_#_Class#_privateFinalField1} in #t4.==(null) ?{core::int} this.{self::_Class::_#_Class#_privateFinalField1} = 1 : #t4{core::int};
   set _privateFinalField1(core::int #t5) → void
     this.{self::_Class::_#_Class#_privateFinalField1} = #t5;
   get _privateFinalField2() → core::int? {
@@ -68,17 +68,17 @@
 static field core::bool _#_Extension|_privateFinalField2#isSet = false /* from org-dartlang-testcase:///private_members_part.dart */;
 static method main() → dynamic {
   self::_Class c = new self::_Class::•();
-  c.{self::_Class::_privateField1} = c.{self::_Class::_privateField1}{core::int};
-  c.{self::_Class::_privateField2} = c.{self::_Class::_privateField2}{core::int?};
-  c.{self::_Class::_privateFinalField1}{core::int};
-  c.{self::_Class::_privateFinalField2}{core::int?};
+  c.{self::_Class::_privateField1} = c.{self::_Class::_privateField1};
+  c.{self::_Class::_privateField2} = c.{self::_Class::_privateField2};
+  c.{self::_Class::_privateFinalField1};
+  c.{self::_Class::_privateFinalField2};
   self::_Extension|_privateField1 = self::_Extension|_privateField1;
   self::_Extension|_privateField2 = self::_Extension|_privateField2;
   self::_Extension|_privateFinalField1;
   self::_Extension|_privateFinalField2;
 }
 static get /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|_privateField1() → core::int
-  return let final core::int? #t7 = self::_#_Extension|_privateField1 in #t7 == null ?{core::int} self::_#_Extension|_privateField1 = 1 : #t7{core::int};
+  return let final core::int? #t7 = self::_#_Extension|_privateField1 in #t7.==(null) ?{core::int} self::_#_Extension|_privateField1 = 1 : #t7{core::int};
 static set /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|_privateField1(core::int #t8) → void
   self::_#_Extension|_privateField1 = #t8;
 static get /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|_privateField2() → core::int? {
@@ -93,7 +93,7 @@
   self::_#_Extension|_privateField2 = #t9;
 }
 static get /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|_privateFinalField1() → core::int
-  return let final core::int? #t10 = self::_#_Extension|_privateFinalField1 in #t10 == null ?{core::int} self::_#_Extension|_privateFinalField1 = 1 : #t10{core::int};
+  return let final core::int? #t10 = self::_#_Extension|_privateFinalField1 in #t10.==(null) ?{core::int} self::_#_Extension|_privateFinalField1 = 1 : #t10{core::int};
 static set /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|_privateFinalField1(core::int #t11) → void
   self::_#_Extension|_privateFinalField1 = #t11;
 static get /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|_privateFinalField2() → core::int? {
diff --git a/pkg/front_end/testcases/late_lowering/private_members.dart.weak.expect b/pkg/front_end/testcases/late_lowering/private_members.dart.weak.expect
index bdc0f2b..91b12c0 100644
--- a/pkg/front_end/testcases/late_lowering/private_members.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/private_members.dart.weak.expect
@@ -88,10 +88,10 @@
 static field core::bool _#_Extension|_privateFinalField2#isSet = false /* from org-dartlang-testcase:///private_members_part.dart */;
 static method main() → dynamic {
   self::_Class c = new self::_Class::•();
-  c.{self::_Class::_privateField1} = c.{self::_Class::_privateField1}{core::int};
-  c.{self::_Class::_privateField2} = c.{self::_Class::_privateField2}{core::int?};
-  c.{self::_Class::_privateFinalField1}{core::int};
-  c.{self::_Class::_privateFinalField2}{core::int?};
+  c.{self::_Class::_privateField1} = c.{self::_Class::_privateField1};
+  c.{self::_Class::_privateField2} = c.{self::_Class::_privateField2};
+  c.{self::_Class::_privateFinalField1};
+  c.{self::_Class::_privateFinalField2};
   self::_Extension|_privateField1 = self::_Extension|_privateField1;
   self::_Extension|_privateField2 = self::_Extension|_privateField2;
   self::_Extension|_privateFinalField1;
diff --git a/pkg/front_end/testcases/late_lowering/private_members.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/private_members.dart.weak.transformed.expect
index bdc0f2b..91b12c0 100644
--- a/pkg/front_end/testcases/late_lowering/private_members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/private_members.dart.weak.transformed.expect
@@ -88,10 +88,10 @@
 static field core::bool _#_Extension|_privateFinalField2#isSet = false /* from org-dartlang-testcase:///private_members_part.dart */;
 static method main() → dynamic {
   self::_Class c = new self::_Class::•();
-  c.{self::_Class::_privateField1} = c.{self::_Class::_privateField1}{core::int};
-  c.{self::_Class::_privateField2} = c.{self::_Class::_privateField2}{core::int?};
-  c.{self::_Class::_privateFinalField1}{core::int};
-  c.{self::_Class::_privateFinalField2}{core::int?};
+  c.{self::_Class::_privateField1} = c.{self::_Class::_privateField1};
+  c.{self::_Class::_privateField2} = c.{self::_Class::_privateField2};
+  c.{self::_Class::_privateFinalField1};
+  c.{self::_Class::_privateFinalField2};
   self::_Extension|_privateField1 = self::_Extension|_privateField1;
   self::_Extension|_privateField2 = self::_Extension|_privateField2;
   self::_Extension|_privateFinalField1;
diff --git a/pkg/front_end/testcases/late_lowering/return_late.dart.strong.expect b/pkg/front_end/testcases/late_lowering/return_late.dart.strong.expect
index 8b9bf40..2ad5eb6 100644
--- a/pkg/front_end/testcases/late_lowering/return_late.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/return_late.dart.strong.expect
@@ -12,7 +12,7 @@
     lowered core::bool #result#isSet = false;
     function #result#get() → self::Class::E% {
       if(!#result#isSet) {
-        #result = this.{self::Class::field}{self::Class::E%};
+        #result = this.{self::Class::field};
         #result#isSet = true;
       }
       return #result{self::Class::E%};
@@ -21,16 +21,16 @@
       #result#isSet = true;
       return #result = #t1;
     }
-    return #result#get(){() → self::Class::E%};
+    return #result#get.call();
   }
 }
 static method returnNonNullable(core::int value) → core::int {
   lowered core::int? #result;
   function #result#get() → core::int
-    return let final core::int? #t2 = #result in #t2 == null ?{core::int} #result = value : #t2{core::int};
+    return let final core::int? #t2 = #result in #t2.==(null) ?{core::int} #result = value : #t2{core::int};
   function #result#set(core::int #t3) → dynamic
     return #result = #t3;
-  return #result#get(){() → core::int};
+  return #result#get.call();
 }
 static method returnNullable(core::int? value) → core::int? {
   lowered core::int? #result;
@@ -46,17 +46,17 @@
     #result#isSet = true;
     return #result = #t4;
   }
-  return #result#get(){() → core::int?};
+  return #result#get.call();
 }
 static method main() → dynamic {
-  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}(){() → core::int});
-  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}(){() → core::int?});
-  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}(){() → core::int?});
+  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}());
+  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}());
+  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}());
   self::expect(42, self::returnNonNullable(42));
   self::expect(87, self::returnNullable(87));
   self::expect(null, self::returnNullable(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/return_late.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/return_late.dart.strong.transformed.expect
index 8b9bf40..2ad5eb6 100644
--- a/pkg/front_end/testcases/late_lowering/return_late.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/return_late.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
     lowered core::bool #result#isSet = false;
     function #result#get() → self::Class::E% {
       if(!#result#isSet) {
-        #result = this.{self::Class::field}{self::Class::E%};
+        #result = this.{self::Class::field};
         #result#isSet = true;
       }
       return #result{self::Class::E%};
@@ -21,16 +21,16 @@
       #result#isSet = true;
       return #result = #t1;
     }
-    return #result#get(){() → self::Class::E%};
+    return #result#get.call();
   }
 }
 static method returnNonNullable(core::int value) → core::int {
   lowered core::int? #result;
   function #result#get() → core::int
-    return let final core::int? #t2 = #result in #t2 == null ?{core::int} #result = value : #t2{core::int};
+    return let final core::int? #t2 = #result in #t2.==(null) ?{core::int} #result = value : #t2{core::int};
   function #result#set(core::int #t3) → dynamic
     return #result = #t3;
-  return #result#get(){() → core::int};
+  return #result#get.call();
 }
 static method returnNullable(core::int? value) → core::int? {
   lowered core::int? #result;
@@ -46,17 +46,17 @@
     #result#isSet = true;
     return #result = #t4;
   }
-  return #result#get(){() → core::int?};
+  return #result#get.call();
 }
 static method main() → dynamic {
-  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}(){() → core::int});
-  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}(){() → core::int?});
-  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}(){() → core::int?});
+  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}());
+  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}());
+  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}());
   self::expect(42, self::returnNonNullable(42));
   self::expect(87, self::returnNullable(87));
   self::expect(null, self::returnNullable(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/return_late.dart.weak.expect b/pkg/front_end/testcases/late_lowering/return_late.dart.weak.expect
index 3733586..3270539 100644
--- a/pkg/front_end/testcases/late_lowering/return_late.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/return_late.dart.weak.expect
@@ -12,7 +12,7 @@
     lowered core::bool #result#isSet = false;
     function #result#get() → self::Class::E% {
       if(!#result#isSet) {
-        #result = this.{self::Class::field}{self::Class::E%};
+        #result = this.{self::Class::field};
         #result#isSet = true;
       }
       return #result{self::Class::E%};
@@ -21,7 +21,7 @@
       #result#isSet = true;
       return #result = #t1;
     }
-    return #result#get(){() → self::Class::E%};
+    return #result#get.call();
   }
 }
 static method returnNonNullable(core::int value) → core::int {
@@ -38,7 +38,7 @@
     #result#isSet = true;
     return #result = #t2;
   }
-  return #result#get(){() → core::int};
+  return #result#get.call();
 }
 static method returnNullable(core::int? value) → core::int? {
   lowered core::int? #result;
@@ -54,17 +54,17 @@
     #result#isSet = true;
     return #result = #t3;
   }
-  return #result#get(){() → core::int?};
+  return #result#get.call();
 }
 static method main() → dynamic {
-  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}(){() → core::int});
-  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}(){() → core::int?});
-  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}(){() → core::int?});
+  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}());
+  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}());
+  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}());
   self::expect(42, self::returnNonNullable(42));
   self::expect(87, self::returnNullable(87));
   self::expect(null, self::returnNullable(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/return_late.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/return_late.dart.weak.transformed.expect
index 3733586..3270539 100644
--- a/pkg/front_end/testcases/late_lowering/return_late.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/return_late.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
     lowered core::bool #result#isSet = false;
     function #result#get() → self::Class::E% {
       if(!#result#isSet) {
-        #result = this.{self::Class::field}{self::Class::E%};
+        #result = this.{self::Class::field};
         #result#isSet = true;
       }
       return #result{self::Class::E%};
@@ -21,7 +21,7 @@
       #result#isSet = true;
       return #result = #t1;
     }
-    return #result#get(){() → self::Class::E%};
+    return #result#get.call();
   }
 }
 static method returnNonNullable(core::int value) → core::int {
@@ -38,7 +38,7 @@
     #result#isSet = true;
     return #result = #t2;
   }
-  return #result#get(){() → core::int};
+  return #result#get.call();
 }
 static method returnNullable(core::int? value) → core::int? {
   lowered core::int? #result;
@@ -54,17 +54,17 @@
     #result#isSet = true;
     return #result = #t3;
   }
-  return #result#get(){() → core::int?};
+  return #result#get.call();
 }
 static method main() → dynamic {
-  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}(){() → core::int});
-  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}(){() → core::int?});
-  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}(){() → core::int?});
+  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}());
+  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}());
+  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}());
   self::expect(42, self::returnNonNullable(42));
   self::expect(87, self::returnNullable(87));
   self::expect(null, self::returnNullable(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.strong.expect b/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.strong.expect
index d259950..74bb4fc 100644
--- a/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.strong.expect
@@ -16,35 +16,35 @@
     : super core::Object::•()
     ;
   static get uninitializedNonFinalStaticField() → core::int
-    return let final core::int? #t1 = self::Class::_#uninitializedNonFinalStaticField in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalStaticField") : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#uninitializedNonFinalStaticField in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalStaticField") : #t1{core::int};
   static set uninitializedNonFinalStaticField(core::int #t2) → void
     self::Class::_#uninitializedNonFinalStaticField = #t2;
   static get uninitializedFinalStaticField() → core::int
-    return let final core::int? #t3 = self::Class::_#uninitializedFinalStaticField in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalStaticField") : #t3{core::int};
+    return let final core::int? #t3 = self::Class::_#uninitializedFinalStaticField in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalStaticField") : #t3{core::int};
   static set uninitializedFinalStaticField(core::int #t4) → void
-    if(self::Class::_#uninitializedFinalStaticField == null)
+    if(self::Class::_#uninitializedFinalStaticField.==(null))
       self::Class::_#uninitializedFinalStaticField = #t4;
     else
       throw new _in::LateError::fieldAI("uninitializedFinalStaticField");
   static get initializedNonFinalStaticField() → core::int
-    return let final core::int? #t5 = self::Class::_#initializedNonFinalStaticField in #t5 == null ?{core::int} self::Class::_#initializedNonFinalStaticField = 0 : #t5{core::int};
+    return let final core::int? #t5 = self::Class::_#initializedNonFinalStaticField in #t5.==(null) ?{core::int} self::Class::_#initializedNonFinalStaticField = 0 : #t5{core::int};
   static set initializedNonFinalStaticField(core::int #t6) → void
     self::Class::_#initializedNonFinalStaticField = #t6;
   static get initializedFinalStaticField() → core::int
-    return let final core::int? #t7 = self::Class::_#initializedFinalStaticField in #t7 == null ?{core::int} let final core::int #t8 = 0 in self::Class::_#initializedFinalStaticField == null ?{core::int} self::Class::_#initializedFinalStaticField = #t8 : throw new _in::LateError::fieldADI("initializedFinalStaticField") : #t7{core::int};
+    return let final core::int? #t7 = self::Class::_#initializedFinalStaticField in #t7.==(null) ?{core::int} let final core::int #t8 = 0 in self::Class::_#initializedFinalStaticField.==(null) ?{core::int} self::Class::_#initializedFinalStaticField = #t8 : throw new _in::LateError::fieldADI("initializedFinalStaticField") : #t7{core::int};
   get uninitializedFinalInstanceField() → core::int
-    return let final core::int? #t9 = this.{self::Class::_#Class#uninitializedFinalInstanceField} in #t9 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalInstanceField") : #t9{core::int};
+    return let final core::int? #t9 = this.{self::Class::_#Class#uninitializedFinalInstanceField} in #t9.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalInstanceField") : #t9{core::int};
   set uninitializedFinalInstanceField(core::int #t10) → void
-    if(this.{self::Class::_#Class#uninitializedFinalInstanceField} == null)
+    if(this.{self::Class::_#Class#uninitializedFinalInstanceField}.==(null))
       this.{self::Class::_#Class#uninitializedFinalInstanceField} = #t10;
     else
       throw new _in::LateError::fieldAI("uninitializedFinalInstanceField");
   get initializedNonFinalInstanceField() → core::int
-    return let final core::int? #t11 = this.{self::Class::_#Class#initializedNonFinalInstanceField} in #t11 == null ?{core::int} this.{self::Class::_#Class#initializedNonFinalInstanceField} = 0 : #t11{core::int};
+    return let final core::int? #t11 = this.{self::Class::_#Class#initializedNonFinalInstanceField} in #t11.==(null) ?{core::int} this.{self::Class::_#Class#initializedNonFinalInstanceField} = 0 : #t11{core::int};
   set initializedNonFinalInstanceField(core::int #t12) → void
     this.{self::Class::_#Class#initializedNonFinalInstanceField} = #t12;
   get initializedFinalInstanceField() → core::int
-    return let final core::int? #t13 = this.{self::Class::_#Class#initializedFinalInstanceField} in #t13 == null ?{core::int} let final core::int #t14 = 0 in this.{self::Class::_#Class#initializedFinalInstanceField} == null ?{core::int} this.{self::Class::_#Class#initializedFinalInstanceField} = #t14 : throw new _in::LateError::fieldADI("initializedFinalInstanceField") : #t13{core::int};
+    return let final core::int? #t13 = this.{self::Class::_#Class#initializedFinalInstanceField} in #t13.==(null) ?{core::int} let final core::int #t14 = 0 in this.{self::Class::_#Class#initializedFinalInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#initializedFinalInstanceField} = #t14 : throw new _in::LateError::fieldADI("initializedFinalInstanceField") : #t13{core::int};
 }
 static field core::int? _#uninitializedNonFinalTopLevelField = null;
 static field core::int? _#uninitializedFinalTopLevelField = null;
@@ -62,7 +62,7 @@
   }
   lowered core::int? #nonNullableUninitializedNonFinalLocal;
   function #nonNullableUninitializedNonFinalLocal#get() → core::int
-    return let final core::int? #t16 = #nonNullableUninitializedNonFinalLocal in #t16 == null ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedNonFinalLocal") : #t16{core::int};
+    return let final core::int? #t16 = #nonNullableUninitializedNonFinalLocal in #t16.==(null) ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedNonFinalLocal") : #t16{core::int};
   function #nonNullableUninitializedNonFinalLocal#set(core::int #t17) → dynamic
     return #nonNullableUninitializedNonFinalLocal = #t17;
   lowered final core::int? #nullableUninitializedFinalLocal;
@@ -78,9 +78,9 @@
     }
   lowered final core::int? #nonNullableUninitializedFinalLocal;
   function #nonNullableUninitializedFinalLocal#get() → core::int
-    return let final core::int? #t19 = #nonNullableUninitializedFinalLocal in #t19 == null ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedFinalLocal") : #t19{core::int};
+    return let final core::int? #t19 = #nonNullableUninitializedFinalLocal in #t19.==(null) ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedFinalLocal") : #t19{core::int};
   function #nonNullableUninitializedFinalLocal#set(core::int #t20) → dynamic
-    if(#nonNullableUninitializedFinalLocal == null)
+    if(#nonNullableUninitializedFinalLocal.==(null))
       return #nonNullableUninitializedFinalLocal = #t20;
     else
       throw new _in::LateError::localAI("nonNullableUninitializedFinalLocal");
@@ -99,7 +99,7 @@
   }
   lowered core::int? #nonNullableInitializedNonFinalLocal;
   function #nonNullableInitializedNonFinalLocal#get() → core::int
-    return let final core::int? #t22 = #nonNullableInitializedNonFinalLocal in #t22 == null ?{core::int} #nonNullableInitializedNonFinalLocal = 0 : #t22{core::int};
+    return let final core::int? #t22 = #nonNullableInitializedNonFinalLocal in #t22.==(null) ?{core::int} #nonNullableInitializedNonFinalLocal = 0 : #t22{core::int};
   function #nonNullableInitializedNonFinalLocal#set(core::int #t23) → dynamic
     return #nonNullableInitializedNonFinalLocal = #t23;
   lowered final core::int? #nullableInitializedFinalLocal;
@@ -116,22 +116,22 @@
   }
   lowered final core::int? #nonNullableInitializedFinalLocal;
   function #nonNullableInitializedFinalLocal#get() → core::int
-    return let final core::int? #t25 = #nonNullableInitializedFinalLocal in #t25 == null ?{core::int} let final core::int #t26 = 0 in #nonNullableInitializedFinalLocal == null ?{core::int} #nonNullableInitializedFinalLocal = #t26 : throw new _in::LateError::localADI("nonNullableInitializedFinalLocal") : #t25{core::int};
+    return let final core::int? #t25 = #nonNullableInitializedFinalLocal in #t25.==(null) ?{core::int} let final core::int #t26 = 0 in #nonNullableInitializedFinalLocal.==(null) ?{core::int} #nonNullableInitializedFinalLocal = #t26 : throw new _in::LateError::localADI("nonNullableInitializedFinalLocal") : #t25{core::int};
 }
 static get uninitializedNonFinalTopLevelField() → core::int
-  return let final core::int? #t27 = self::_#uninitializedNonFinalTopLevelField in #t27 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalTopLevelField") : #t27{core::int};
+  return let final core::int? #t27 = self::_#uninitializedNonFinalTopLevelField in #t27.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalTopLevelField") : #t27{core::int};
 static set uninitializedNonFinalTopLevelField(core::int #t28) → void
   self::_#uninitializedNonFinalTopLevelField = #t28;
 static get uninitializedFinalTopLevelField() → core::int
-  return let final core::int? #t29 = self::_#uninitializedFinalTopLevelField in #t29 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalTopLevelField") : #t29{core::int};
+  return let final core::int? #t29 = self::_#uninitializedFinalTopLevelField in #t29.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalTopLevelField") : #t29{core::int};
 static set uninitializedFinalTopLevelField(core::int #t30) → void
-  if(self::_#uninitializedFinalTopLevelField == null)
+  if(self::_#uninitializedFinalTopLevelField.==(null))
     self::_#uninitializedFinalTopLevelField = #t30;
   else
     throw new _in::LateError::fieldAI("uninitializedFinalTopLevelField");
 static get initializedNonFinalTopLevelField() → core::int
-  return let final core::int? #t31 = self::_#initializedNonFinalTopLevelField in #t31 == null ?{core::int} self::_#initializedNonFinalTopLevelField = 0 : #t31{core::int};
+  return let final core::int? #t31 = self::_#initializedNonFinalTopLevelField in #t31.==(null) ?{core::int} self::_#initializedNonFinalTopLevelField = 0 : #t31{core::int};
 static set initializedNonFinalTopLevelField(core::int #t32) → void
   self::_#initializedNonFinalTopLevelField = #t32;
 static get initializedFinalTopLevelField() → core::int
-  return let final core::int? #t33 = self::_#initializedFinalTopLevelField in #t33 == null ?{core::int} let final core::int #t34 = 0 in self::_#initializedFinalTopLevelField == null ?{core::int} self::_#initializedFinalTopLevelField = #t34 : throw new _in::LateError::fieldADI("initializedFinalTopLevelField") : #t33{core::int};
+  return let final core::int? #t33 = self::_#initializedFinalTopLevelField in #t33.==(null) ?{core::int} let final core::int #t34 = 0 in self::_#initializedFinalTopLevelField.==(null) ?{core::int} self::_#initializedFinalTopLevelField = #t34 : throw new _in::LateError::fieldADI("initializedFinalTopLevelField") : #t33{core::int};
diff --git a/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.strong.transformed.expect
index 74df9f3..64e9c55 100644
--- a/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.strong.transformed.expect
@@ -16,35 +16,35 @@
     : super core::Object::•()
     ;
   static get uninitializedNonFinalStaticField() → core::int
-    return let final core::int? #t1 = self::Class::_#uninitializedNonFinalStaticField in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalStaticField") : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#uninitializedNonFinalStaticField in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalStaticField") : #t1{core::int};
   static set uninitializedNonFinalStaticField(core::int #t2) → void
     self::Class::_#uninitializedNonFinalStaticField = #t2;
   static get uninitializedFinalStaticField() → core::int
-    return let final core::int? #t3 = self::Class::_#uninitializedFinalStaticField in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalStaticField") : #t3{core::int};
+    return let final core::int? #t3 = self::Class::_#uninitializedFinalStaticField in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalStaticField") : #t3{core::int};
   static set uninitializedFinalStaticField(core::int #t4) → void
-    if(self::Class::_#uninitializedFinalStaticField == null)
+    if(self::Class::_#uninitializedFinalStaticField.==(null))
       self::Class::_#uninitializedFinalStaticField = #t4;
     else
       throw new _in::LateError::fieldAI("uninitializedFinalStaticField");
   static get initializedNonFinalStaticField() → core::int
-    return let final core::int? #t5 = self::Class::_#initializedNonFinalStaticField in #t5 == null ?{core::int} self::Class::_#initializedNonFinalStaticField = 0 : #t5{core::int};
+    return let final core::int? #t5 = self::Class::_#initializedNonFinalStaticField in #t5.==(null) ?{core::int} self::Class::_#initializedNonFinalStaticField = 0 : #t5{core::int};
   static set initializedNonFinalStaticField(core::int #t6) → void
     self::Class::_#initializedNonFinalStaticField = #t6;
   static get initializedFinalStaticField() → core::int
-    return let final core::int? #t7 = self::Class::_#initializedFinalStaticField in #t7 == null ?{core::int} let final core::int #t8 = 0 in self::Class::_#initializedFinalStaticField == null ?{core::int} self::Class::_#initializedFinalStaticField = #t8 : throw new _in::LateError::fieldADI("initializedFinalStaticField") : #t7{core::int};
+    return let final core::int? #t7 = self::Class::_#initializedFinalStaticField in #t7.==(null) ?{core::int} let final core::int #t8 = 0 in self::Class::_#initializedFinalStaticField.==(null) ?{core::int} self::Class::_#initializedFinalStaticField = #t8 : throw new _in::LateError::fieldADI("initializedFinalStaticField") : #t7{core::int};
   get uninitializedFinalInstanceField() → core::int
-    return let final core::int? #t9 = this.{self::Class::_#Class#uninitializedFinalInstanceField} in #t9 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalInstanceField") : #t9{core::int};
+    return let final core::int? #t9 = this.{self::Class::_#Class#uninitializedFinalInstanceField} in #t9.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalInstanceField") : #t9{core::int};
   set uninitializedFinalInstanceField(core::int #t10) → void
-    if(this.{self::Class::_#Class#uninitializedFinalInstanceField} == null)
+    if(this.{self::Class::_#Class#uninitializedFinalInstanceField}.==(null))
       this.{self::Class::_#Class#uninitializedFinalInstanceField} = #t10;
     else
       throw new _in::LateError::fieldAI("uninitializedFinalInstanceField");
   get initializedNonFinalInstanceField() → core::int
-    return let final core::int? #t11 = this.{self::Class::_#Class#initializedNonFinalInstanceField} in #t11 == null ?{core::int} this.{self::Class::_#Class#initializedNonFinalInstanceField} = 0 : #t11{core::int};
+    return let final core::int? #t11 = this.{self::Class::_#Class#initializedNonFinalInstanceField} in #t11.==(null) ?{core::int} this.{self::Class::_#Class#initializedNonFinalInstanceField} = 0 : #t11{core::int};
   set initializedNonFinalInstanceField(core::int #t12) → void
     this.{self::Class::_#Class#initializedNonFinalInstanceField} = #t12;
   get initializedFinalInstanceField() → core::int
-    return let final core::int? #t13 = this.{self::Class::_#Class#initializedFinalInstanceField} in #t13 == null ?{core::int} let final core::int #t14 = 0 in this.{self::Class::_#Class#initializedFinalInstanceField} == null ?{core::int} this.{self::Class::_#Class#initializedFinalInstanceField} = #t14 : throw new _in::LateError::fieldADI("initializedFinalInstanceField") : #t13{core::int};
+    return let final core::int? #t13 = this.{self::Class::_#Class#initializedFinalInstanceField} in #t13.==(null) ?{core::int} let final core::int #t14 = 0 in this.{self::Class::_#Class#initializedFinalInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#initializedFinalInstanceField} = #t14 : throw new _in::LateError::fieldADI("initializedFinalInstanceField") : #t13{core::int};
 }
 static field core::int? _#uninitializedNonFinalTopLevelField = null;
 static field core::int? _#uninitializedFinalTopLevelField = null;
@@ -62,7 +62,7 @@
   }
   lowered core::int? #nonNullableUninitializedNonFinalLocal;
   function #nonNullableUninitializedNonFinalLocal#get() → core::int
-    return let final core::int? #t16 = #nonNullableUninitializedNonFinalLocal in #t16 == null ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedNonFinalLocal") : #t16{core::int};
+    return let final core::int? #t16 = #nonNullableUninitializedNonFinalLocal in #t16.==(null) ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedNonFinalLocal") : #t16{core::int};
   function #nonNullableUninitializedNonFinalLocal#set(core::int #t17) → dynamic
     return #nonNullableUninitializedNonFinalLocal = #t17;
   lowered final core::int? #nullableUninitializedFinalLocal;
@@ -78,9 +78,9 @@
     }
   lowered final core::int? #nonNullableUninitializedFinalLocal;
   function #nonNullableUninitializedFinalLocal#get() → core::int
-    return let final core::int? #t19 = #nonNullableUninitializedFinalLocal in #t19 == null ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedFinalLocal") : #t19{core::int};
+    return let final core::int? #t19 = #nonNullableUninitializedFinalLocal in #t19.==(null) ?{core::int} throw new _in::LateError::localNI("nonNullableUninitializedFinalLocal") : #t19{core::int};
   function #nonNullableUninitializedFinalLocal#set(core::int #t20) → dynamic
-    if(#nonNullableUninitializedFinalLocal == null)
+    if(#nonNullableUninitializedFinalLocal.==(null))
       return #nonNullableUninitializedFinalLocal = #t20;
     else
       throw new _in::LateError::localAI("nonNullableUninitializedFinalLocal");
@@ -99,7 +99,7 @@
   }
   lowered core::int? #nonNullableInitializedNonFinalLocal;
   function #nonNullableInitializedNonFinalLocal#get() → core::int
-    return let final core::int? #t22 = #nonNullableInitializedNonFinalLocal in #t22 == null ?{core::int} #nonNullableInitializedNonFinalLocal = 0 : #t22{core::int};
+    return let final core::int? #t22 = #nonNullableInitializedNonFinalLocal in #t22.==(null) ?{core::int} #nonNullableInitializedNonFinalLocal = 0 : #t22{core::int};
   function #nonNullableInitializedNonFinalLocal#set(core::int #t23) → dynamic
     return #nonNullableInitializedNonFinalLocal = #t23;
   lowered final core::int? #nullableInitializedFinalLocal;
@@ -116,25 +116,25 @@
   }
   lowered final core::int? #nonNullableInitializedFinalLocal;
   function #nonNullableInitializedFinalLocal#get() → core::int
-    return let final core::int? #t25 = #nonNullableInitializedFinalLocal in #t25 == null ?{core::int} let final core::int #t26 = 0 in #nonNullableInitializedFinalLocal == null ?{core::int} #nonNullableInitializedFinalLocal = #t26 : throw new _in::LateError::localADI("nonNullableInitializedFinalLocal") : #t25{core::int};
+    return let final core::int? #t25 = #nonNullableInitializedFinalLocal in #t25.==(null) ?{core::int} let final core::int #t26 = 0 in #nonNullableInitializedFinalLocal.==(null) ?{core::int} #nonNullableInitializedFinalLocal = #t26 : throw new _in::LateError::localADI("nonNullableInitializedFinalLocal") : #t25{core::int};
 }
 static get uninitializedNonFinalTopLevelField() → core::int
-  return let final core::int? #t27 = self::_#uninitializedNonFinalTopLevelField in #t27 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalTopLevelField") : #t27{core::int};
+  return let final core::int? #t27 = self::_#uninitializedNonFinalTopLevelField in #t27.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedNonFinalTopLevelField") : #t27{core::int};
 static set uninitializedNonFinalTopLevelField(core::int #t28) → void
   self::_#uninitializedNonFinalTopLevelField = #t28;
 static get uninitializedFinalTopLevelField() → core::int
-  return let final core::int? #t29 = self::_#uninitializedFinalTopLevelField in #t29 == null ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalTopLevelField") : #t29{core::int};
+  return let final core::int? #t29 = self::_#uninitializedFinalTopLevelField in #t29.==(null) ?{core::int} throw new _in::LateError::fieldNI("uninitializedFinalTopLevelField") : #t29{core::int};
 static set uninitializedFinalTopLevelField(core::int #t30) → void
-  if(self::_#uninitializedFinalTopLevelField == null)
+  if(self::_#uninitializedFinalTopLevelField.==(null))
     self::_#uninitializedFinalTopLevelField = #t30;
   else
     throw new _in::LateError::fieldAI("uninitializedFinalTopLevelField");
 static get initializedNonFinalTopLevelField() → core::int
-  return let final core::int? #t31 = self::_#initializedNonFinalTopLevelField in #t31 == null ?{core::int} self::_#initializedNonFinalTopLevelField = 0 : #t31{core::int};
+  return let final core::int? #t31 = self::_#initializedNonFinalTopLevelField in #t31.==(null) ?{core::int} self::_#initializedNonFinalTopLevelField = 0 : #t31{core::int};
 static set initializedNonFinalTopLevelField(core::int #t32) → void
   self::_#initializedNonFinalTopLevelField = #t32;
 static get initializedFinalTopLevelField() → core::int
-  return let final core::int? #t33 = self::_#initializedFinalTopLevelField in #t33 == null ?{core::int} let final core::int #t34 = 0 in self::_#initializedFinalTopLevelField == null ?{core::int} self::_#initializedFinalTopLevelField = #t34 : throw new _in::LateError::fieldADI("initializedFinalTopLevelField") : #t33{core::int};
+  return let final core::int? #t33 = self::_#initializedFinalTopLevelField in #t33.==(null) ?{core::int} let final core::int #t34 = 0 in self::_#initializedFinalTopLevelField.==(null) ?{core::int} self::_#initializedFinalTopLevelField = #t34 : throw new _in::LateError::fieldADI("initializedFinalTopLevelField") : #t33{core::int};
 
 
 Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/late_lowering/uninitialized_non_nullable_late_fields.dart.strong.expect b/pkg/front_end/testcases/late_lowering/uninitialized_non_nullable_late_fields.dart.strong.expect
index 6320e39..8297049 100644
--- a/pkg/front_end/testcases/late_lowering/uninitialized_non_nullable_late_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/uninitialized_non_nullable_late_fields.dart.strong.expect
@@ -12,7 +12,7 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#x} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#x} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
   set x(core::int #t2) → void
     this.{self::A::_#A#x} = #t2;
 }
diff --git a/pkg/front_end/testcases/late_lowering/uninitialized_non_nullable_late_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/uninitialized_non_nullable_late_fields.dart.strong.transformed.expect
index 6320e39..8297049 100644
--- a/pkg/front_end/testcases/late_lowering/uninitialized_non_nullable_late_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/uninitialized_non_nullable_late_fields.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
     : super core::Object::•()
     ;
   get x() → core::int
-    return let final core::int? #t1 = this.{self::A::_#A#x} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
+    return let final core::int? #t1 = this.{self::A::_#A#x} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
   set x(core::int #t2) → void
     this.{self::A::_#A#x} = #t2;
 }
diff --git a/pkg/front_end/testcases/late_lowering_sentinel/late_fields.dart.strong.expect b/pkg/front_end/testcases/late_lowering_sentinel/late_fields.dart.strong.expect
index 1d4a7c3..007c84a 100644
--- a/pkg/front_end/testcases/late_lowering_sentinel/late_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering_sentinel/late_fields.dart.strong.expect
@@ -17,7 +17,7 @@
 static set nullableTopLevelField(core::int? #t2) → void
   self::_#nullableTopLevelField = #t2;
 static get nonNullableTopLevelField() → core::int
-  return let final core::int? #t3 = self::_#nonNullableTopLevelField in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("nonNullableTopLevelField") : #t3{core::int};
+  return let final core::int? #t3 = self::_#nonNullableTopLevelField in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("nonNullableTopLevelField") : #t3{core::int};
 static set nonNullableTopLevelField(core::int #t4) → void
   self::_#nonNullableTopLevelField = #t4;
 static get nullableTopLevelFieldWithInitializer() → core::int?
@@ -25,7 +25,7 @@
 static set nullableTopLevelFieldWithInitializer(core::int? #t6) → void
   self::_#nullableTopLevelFieldWithInitializer = #t6;
 static get nonNullableTopLevelFieldWithInitializer() → core::int
-  return let final core::int? #t7 = self::_#nonNullableTopLevelFieldWithInitializer in #t7 == null ?{core::int} self::_#nonNullableTopLevelFieldWithInitializer = 0 : #t7{core::int};
+  return let final core::int? #t7 = self::_#nonNullableTopLevelFieldWithInitializer in #t7.==(null) ?{core::int} self::_#nonNullableTopLevelFieldWithInitializer = 0 : #t7{core::int};
 static set nonNullableTopLevelFieldWithInitializer(core::int #t8) → void
   self::_#nonNullableTopLevelFieldWithInitializer = #t8;
 static get nullableFinalTopLevelField() → core::int?
@@ -36,18 +36,18 @@
   else
     throw new _in::LateError::fieldAI("nullableFinalTopLevelField");
 static get nonNullableFinalTopLevelField() → core::int
-  return let final core::int? #t11 = self::_#nonNullableFinalTopLevelField in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("nonNullableFinalTopLevelField") : #t11{core::int};
+  return let final core::int? #t11 = self::_#nonNullableFinalTopLevelField in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("nonNullableFinalTopLevelField") : #t11{core::int};
 static set nonNullableFinalTopLevelField(core::int #t12) → void
-  if(self::_#nonNullableFinalTopLevelField == null)
+  if(self::_#nonNullableFinalTopLevelField.==(null))
     self::_#nonNullableFinalTopLevelField = #t12;
   else
     throw new _in::LateError::fieldAI("nonNullableFinalTopLevelField");
 static get nullableFinalTopLevelFieldWithInitializer() → core::int?
   return let final core::int? #t13 = self::_#nullableFinalTopLevelFieldWithInitializer in _in::isSentinel(#t13) ?{core::int?} let final core::int? #t14 = null in _in::isSentinel(self::_#nullableFinalTopLevelFieldWithInitializer) ?{core::int?} self::_#nullableFinalTopLevelFieldWithInitializer = #t14 : throw new _in::LateError::fieldADI("nullableFinalTopLevelFieldWithInitializer") : #t13;
 static get nonNullableFinalTopLevelFieldWithInitializer() → core::int
-  return let final core::int? #t15 = self::_#nonNullableFinalTopLevelFieldWithInitializer in #t15 == null ?{core::int} let final core::int #t16 = 0 in self::_#nonNullableFinalTopLevelFieldWithInitializer == null ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer = #t16 : throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer") : #t15{core::int};
+  return let final core::int? #t15 = self::_#nonNullableFinalTopLevelFieldWithInitializer in #t15.==(null) ?{core::int} let final core::int #t16 = 0 in self::_#nonNullableFinalTopLevelFieldWithInitializer.==(null) ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer = #t16 : throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer") : #t15{core::int};
 static get neverTopLevelField() → Never
-  return let final Never? #t17 = self::_#neverTopLevelField in #t17 == null ?{Never} throw new _in::LateError::fieldNI("neverTopLevelField") : #t17{Never};
+  return let final Never? #t17 = self::_#neverTopLevelField in #t17.==(null) ?{Never} throw new _in::LateError::fieldNI("neverTopLevelField") : #t17{Never};
 static set neverTopLevelField(Never #t18) → void
   self::_#neverTopLevelField = #t18;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering_sentinel/late_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering_sentinel/late_fields.dart.strong.transformed.expect
index 2f61bd0..6713a38 100644
--- a/pkg/front_end/testcases/late_lowering_sentinel/late_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering_sentinel/late_fields.dart.strong.transformed.expect
@@ -17,7 +17,7 @@
 static set nullableTopLevelField(core::int? #t2) → void
   self::_#nullableTopLevelField = #t2;
 static get nonNullableTopLevelField() → core::int
-  return let final core::int? #t3 = self::_#nonNullableTopLevelField in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("nonNullableTopLevelField") : #t3{core::int};
+  return let final core::int? #t3 = self::_#nonNullableTopLevelField in #t3.==(null) ?{core::int} throw new _in::LateError::fieldNI("nonNullableTopLevelField") : #t3{core::int};
 static set nonNullableTopLevelField(core::int #t4) → void
   self::_#nonNullableTopLevelField = #t4;
 static get nullableTopLevelFieldWithInitializer() → core::int?
@@ -25,7 +25,7 @@
 static set nullableTopLevelFieldWithInitializer(core::int? #t6) → void
   self::_#nullableTopLevelFieldWithInitializer = #t6;
 static get nonNullableTopLevelFieldWithInitializer() → core::int
-  return let final core::int? #t7 = self::_#nonNullableTopLevelFieldWithInitializer in #t7 == null ?{core::int} self::_#nonNullableTopLevelFieldWithInitializer = 0 : #t7{core::int};
+  return let final core::int? #t7 = self::_#nonNullableTopLevelFieldWithInitializer in #t7.==(null) ?{core::int} self::_#nonNullableTopLevelFieldWithInitializer = 0 : #t7{core::int};
 static set nonNullableTopLevelFieldWithInitializer(core::int #t8) → void
   self::_#nonNullableTopLevelFieldWithInitializer = #t8;
 static get nullableFinalTopLevelField() → core::int?
@@ -36,18 +36,18 @@
   else
     throw new _in::LateError::fieldAI("nullableFinalTopLevelField");
 static get nonNullableFinalTopLevelField() → core::int
-  return let final core::int? #t11 = self::_#nonNullableFinalTopLevelField in #t11 == null ?{core::int} throw new _in::LateError::fieldNI("nonNullableFinalTopLevelField") : #t11{core::int};
+  return let final core::int? #t11 = self::_#nonNullableFinalTopLevelField in #t11.==(null) ?{core::int} throw new _in::LateError::fieldNI("nonNullableFinalTopLevelField") : #t11{core::int};
 static set nonNullableFinalTopLevelField(core::int #t12) → void
-  if(self::_#nonNullableFinalTopLevelField == null)
+  if(self::_#nonNullableFinalTopLevelField.==(null))
     self::_#nonNullableFinalTopLevelField = #t12;
   else
     throw new _in::LateError::fieldAI("nonNullableFinalTopLevelField");
 static get nullableFinalTopLevelFieldWithInitializer() → core::int?
   return let final core::int? #t13 = self::_#nullableFinalTopLevelFieldWithInitializer in _in::isSentinel(#t13) ?{core::int?} let final core::int? #t14 = null in _in::isSentinel(self::_#nullableFinalTopLevelFieldWithInitializer) ?{core::int?} self::_#nullableFinalTopLevelFieldWithInitializer = #t14 : throw new _in::LateError::fieldADI("nullableFinalTopLevelFieldWithInitializer") : #t13;
 static get nonNullableFinalTopLevelFieldWithInitializer() → core::int
-  return let final core::int? #t15 = self::_#nonNullableFinalTopLevelFieldWithInitializer in #t15 == null ?{core::int} let final core::int #t16 = 0 in self::_#nonNullableFinalTopLevelFieldWithInitializer == null ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer = #t16 : throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer") : #t15{core::int};
+  return let final core::int? #t15 = self::_#nonNullableFinalTopLevelFieldWithInitializer in #t15.==(null) ?{core::int} let final core::int #t16 = 0 in self::_#nonNullableFinalTopLevelFieldWithInitializer.==(null) ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer = #t16 : throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer") : #t15{core::int};
 static get neverTopLevelField() → Never
-  return let final Never? #t17 = self::_#neverTopLevelField in #t17 == null ?{Never} throw new _in::LateError::fieldNI("neverTopLevelField") : #t17{Never};
+  return let final Never? #t17 = self::_#neverTopLevelField in #t17.==(null) ?{Never} throw new _in::LateError::fieldNI("neverTopLevelField") : #t17{Never};
 static set neverTopLevelField(Never #t18) → void
   self::_#neverTopLevelField = #t18;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering_sentinel/late_locals.dart.strong.expect b/pkg/front_end/testcases/late_lowering_sentinel/late_locals.dart.strong.expect
index 7b794cc..729f30f 100644
--- a/pkg/front_end/testcases/late_lowering_sentinel/late_locals.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering_sentinel/late_locals.dart.strong.expect
@@ -11,7 +11,7 @@
     return #nullableTopLevelLocal = #t2;
   lowered core::int? #nonNullableTopLevelLocal;
   function #nonNullableTopLevelLocal#get() → core::int
-    return let final core::int? #t3 = #nonNullableTopLevelLocal in #t3 == null ?{core::int} throw new _in::LateError::localNI("nonNullableTopLevelLocal") : #t3{core::int};
+    return let final core::int? #t3 = #nonNullableTopLevelLocal in #t3.==(null) ?{core::int} throw new _in::LateError::localNI("nonNullableTopLevelLocal") : #t3{core::int};
   function #nonNullableTopLevelLocal#set(core::int #t4) → dynamic
     return #nonNullableTopLevelLocal = #t4;
   lowered core::int? #nullableTopLevelLocalWithInitializer = _in::createSentinel<core::int?>();
@@ -21,7 +21,7 @@
     return #nullableTopLevelLocalWithInitializer = #t6;
   lowered core::int? #nonNullableTopLevelLocalWithInitializer;
   function #nonNullableTopLevelLocalWithInitializer#get() → core::int
-    return let final core::int? #t7 = #nonNullableTopLevelLocalWithInitializer in #t7 == null ?{core::int} #nonNullableTopLevelLocalWithInitializer = 0 : #t7{core::int};
+    return let final core::int? #t7 = #nonNullableTopLevelLocalWithInitializer in #t7.==(null) ?{core::int} #nonNullableTopLevelLocalWithInitializer = 0 : #t7{core::int};
   function #nonNullableTopLevelLocalWithInitializer#set(core::int #t8) → dynamic
     return #nonNullableTopLevelLocalWithInitializer = #t8;
   lowered final core::int? #nullableFinalTopLevelLocal = _in::createSentinel<core::int?>();
@@ -34,9 +34,9 @@
       throw new _in::LateError::localAI("nullableFinalTopLevelLocal");
   lowered final core::int? #nonNullableFinalTopLevelLocal;
   function #nonNullableFinalTopLevelLocal#get() → core::int
-    return let final core::int? #t11 = #nonNullableFinalTopLevelLocal in #t11 == null ?{core::int} throw new _in::LateError::localNI("nonNullableFinalTopLevelLocal") : #t11{core::int};
+    return let final core::int? #t11 = #nonNullableFinalTopLevelLocal in #t11.==(null) ?{core::int} throw new _in::LateError::localNI("nonNullableFinalTopLevelLocal") : #t11{core::int};
   function #nonNullableFinalTopLevelLocal#set(core::int #t12) → dynamic
-    if(#nonNullableFinalTopLevelLocal == null)
+    if(#nonNullableFinalTopLevelLocal.==(null))
       return #nonNullableFinalTopLevelLocal = #t12;
     else
       throw new _in::LateError::localAI("nonNullableFinalTopLevelLocal");
@@ -45,10 +45,10 @@
     return let final core::int? #t13 = #nullableFinalTopLevelLocalWithInitializer in _in::isSentinel(#t13) ?{core::int?} let final core::int? #t14 = null in _in::isSentinel(#nullableFinalTopLevelLocalWithInitializer) ?{core::int?} #nullableFinalTopLevelLocalWithInitializer = #t14 : throw new _in::LateError::localADI("nullableFinalTopLevelLocalWithInitializer") : #t13;
   lowered final core::int? #nonNullableFinalTopLevelLocalWithInitializer;
   function #nonNullableFinalTopLevelLocalWithInitializer#get() → core::int
-    return let final core::int? #t15 = #nonNullableFinalTopLevelLocalWithInitializer in #t15 == null ?{core::int} let final core::int #t16 = 0 in #nonNullableFinalTopLevelLocalWithInitializer == null ?{core::int} #nonNullableFinalTopLevelLocalWithInitializer = #t16 : throw new _in::LateError::localADI("nonNullableFinalTopLevelLocalWithInitializer") : #t15{core::int};
+    return let final core::int? #t15 = #nonNullableFinalTopLevelLocalWithInitializer in #t15.==(null) ?{core::int} let final core::int #t16 = 0 in #nonNullableFinalTopLevelLocalWithInitializer.==(null) ?{core::int} #nonNullableFinalTopLevelLocalWithInitializer = #t16 : throw new _in::LateError::localADI("nonNullableFinalTopLevelLocalWithInitializer") : #t15{core::int};
   lowered Null #neverLocal;
   function #neverLocal#get() → Never
-    return let final Never? #t17 = #neverLocal in #t17 == null ?{Never} throw new _in::LateError::localNI("neverLocal") : #t17{Never};
+    return let final Never? #t17 = #neverLocal in #t17.==(null) ?{Never} throw new _in::LateError::localNI("neverLocal") : #t17{Never};
   function #neverLocal#set(Never #t18) → dynamic
     return #neverLocal = #t18;
 }
diff --git a/pkg/front_end/testcases/late_lowering_sentinel/late_locals.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering_sentinel/late_locals.dart.strong.transformed.expect
index c00b5b9..28acc1d 100644
--- a/pkg/front_end/testcases/late_lowering_sentinel/late_locals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering_sentinel/late_locals.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
     return #nullableTopLevelLocal = #t2;
   lowered core::int? #nonNullableTopLevelLocal;
   function #nonNullableTopLevelLocal#get() → core::int
-    return let final core::int? #t3 = #nonNullableTopLevelLocal in #t3 == null ?{core::int} throw new _in::LateError::localNI("nonNullableTopLevelLocal") : #t3{core::int};
+    return let final core::int? #t3 = #nonNullableTopLevelLocal in #t3.==(null) ?{core::int} throw new _in::LateError::localNI("nonNullableTopLevelLocal") : #t3{core::int};
   function #nonNullableTopLevelLocal#set(core::int #t4) → dynamic
     return #nonNullableTopLevelLocal = #t4;
   lowered core::int? #nullableTopLevelLocalWithInitializer = _in::createSentinel<core::int?>();
@@ -21,7 +21,7 @@
     return #nullableTopLevelLocalWithInitializer = #t6;
   lowered core::int? #nonNullableTopLevelLocalWithInitializer;
   function #nonNullableTopLevelLocalWithInitializer#get() → core::int
-    return let final core::int? #t7 = #nonNullableTopLevelLocalWithInitializer in #t7 == null ?{core::int} #nonNullableTopLevelLocalWithInitializer = 0 : #t7{core::int};
+    return let final core::int? #t7 = #nonNullableTopLevelLocalWithInitializer in #t7.==(null) ?{core::int} #nonNullableTopLevelLocalWithInitializer = 0 : #t7{core::int};
   function #nonNullableTopLevelLocalWithInitializer#set(core::int #t8) → dynamic
     return #nonNullableTopLevelLocalWithInitializer = #t8;
   lowered final core::int? #nullableFinalTopLevelLocal = _in::createSentinel<core::int?>();
@@ -34,9 +34,9 @@
       throw new _in::LateError::localAI("nullableFinalTopLevelLocal");
   lowered final core::int? #nonNullableFinalTopLevelLocal;
   function #nonNullableFinalTopLevelLocal#get() → core::int
-    return let final core::int? #t11 = #nonNullableFinalTopLevelLocal in #t11 == null ?{core::int} throw new _in::LateError::localNI("nonNullableFinalTopLevelLocal") : #t11{core::int};
+    return let final core::int? #t11 = #nonNullableFinalTopLevelLocal in #t11.==(null) ?{core::int} throw new _in::LateError::localNI("nonNullableFinalTopLevelLocal") : #t11{core::int};
   function #nonNullableFinalTopLevelLocal#set(core::int #t12) → dynamic
-    if(#nonNullableFinalTopLevelLocal == null)
+    if(#nonNullableFinalTopLevelLocal.==(null))
       return #nonNullableFinalTopLevelLocal = #t12;
     else
       throw new _in::LateError::localAI("nonNullableFinalTopLevelLocal");
@@ -45,10 +45,10 @@
     return let final core::int? #t13 = #nullableFinalTopLevelLocalWithInitializer in _in::isSentinel(#t13) ?{core::int?} let final core::int? #t14 = null in _in::isSentinel(#nullableFinalTopLevelLocalWithInitializer) ?{core::int?} #nullableFinalTopLevelLocalWithInitializer = #t14 : throw new _in::LateError::localADI("nullableFinalTopLevelLocalWithInitializer") : #t13;
   lowered final core::int? #nonNullableFinalTopLevelLocalWithInitializer;
   function #nonNullableFinalTopLevelLocalWithInitializer#get() → core::int
-    return let final core::int? #t15 = #nonNullableFinalTopLevelLocalWithInitializer in #t15 == null ?{core::int} let final core::int #t16 = 0 in #nonNullableFinalTopLevelLocalWithInitializer == null ?{core::int} #nonNullableFinalTopLevelLocalWithInitializer = #t16 : throw new _in::LateError::localADI("nonNullableFinalTopLevelLocalWithInitializer") : #t15{core::int};
+    return let final core::int? #t15 = #nonNullableFinalTopLevelLocalWithInitializer in #t15.==(null) ?{core::int} let final core::int #t16 = 0 in #nonNullableFinalTopLevelLocalWithInitializer.==(null) ?{core::int} #nonNullableFinalTopLevelLocalWithInitializer = #t16 : throw new _in::LateError::localADI("nonNullableFinalTopLevelLocalWithInitializer") : #t15{core::int};
   lowered Null #neverLocal;
   function #neverLocal#get() → Never
-    return let final Never? #t17 = #neverLocal in #t17 == null ?{Never} throw new _in::LateError::localNI("neverLocal") : #t17{Never};
+    return let final Never? #t17 = #neverLocal in #t17.==(null) ?{Never} throw new _in::LateError::localNI("neverLocal") : #t17{Never};
   function #neverLocal#set(Never #t18) → dynamic
     return #neverLocal = #t18;
 }
diff --git a/pkg/front_end/testcases/new_const_insertion/simple.dart.weak.expect b/pkg/front_end/testcases/new_const_insertion/simple.dart.weak.expect
index 47eae93..dd6eff2 100644
--- a/pkg/front_end/testcases/new_const_insertion/simple.dart.weak.expect
+++ b/pkg/front_end/testcases/new_const_insertion/simple.dart.weak.expect
@@ -21,7 +21,7 @@
 static method main() → dynamic {
   core::int* foo = 42;
   new self::A::•(5);
-  new self::A::•(5.{core::num::+}(5){(core::num*) →* core::int*});
+  new self::A::•(5.{core::num::+}(5));
   new self::A::•(foo);
-  new self::A::•(5.{core::num::+}(foo){(core::num*) →* core::int*});
+  new self::A::•(5.{core::num::+}(foo));
 }
diff --git a/pkg/front_end/testcases/new_const_insertion/simple.dart.weak.transformed.expect b/pkg/front_end/testcases/new_const_insertion/simple.dart.weak.transformed.expect
index ecf3e40..b2d7e74 100644
--- a/pkg/front_end/testcases/new_const_insertion/simple.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/new_const_insertion/simple.dart.weak.transformed.expect
@@ -21,12 +21,12 @@
 static method main() → dynamic {
   core::int* foo = 42;
   new self::A::•(5);
-  new self::A::•(5.{core::num::+}(5){(core::num*) →* core::int*});
+  new self::A::•(5.{core::num::+}(5));
   new self::A::•(foo);
-  new self::A::•(5.{core::num::+}(foo){(core::num*) →* core::int*});
+  new self::A::•(5.{core::num::+}(foo));
 }
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///simple.dart:15:7 -> IntConstant(10)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///simple.dart:15:7 -> IntConstant(10)
 Extra constant evaluation: evaluated: 9, effectively constant: 1
diff --git a/pkg/front_end/testcases/nnbd/assign_type_variable.dart.strong.expect b/pkg/front_end/testcases/nnbd/assign_type_variable.dart.strong.expect
index f8a2ab8..88ac3ae 100644
--- a/pkg/front_end/testcases/nnbd/assign_type_variable.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/assign_type_variable.dart.strong.expect
@@ -9,7 +9,7 @@
   method method(generic-covariant-impl self::Class::E% e) → void {
     e = self::id<self::Class::E%>(e);
     e = self::id<self::Class::E%>(e);
-    if(!(e == null)) {
+    if(!e.{core::Object::==}(null)) {
       self::Class::E% e2 = e{self::Class::E% & core::Object /* '%' & '!' = '!' */};
       e2 = self::id<self::Class::E%>(e{self::Class::E% & core::Object /* '%' & '!' = '!' */});
       e2 = self::id<self::Class::E%>(e{self::Class::E% & core::Object /* '%' & '!' = '!' */});
diff --git a/pkg/front_end/testcases/nnbd/assign_type_variable.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/assign_type_variable.dart.strong.transformed.expect
index f8a2ab8..88ac3ae 100644
--- a/pkg/front_end/testcases/nnbd/assign_type_variable.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/assign_type_variable.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
   method method(generic-covariant-impl self::Class::E% e) → void {
     e = self::id<self::Class::E%>(e);
     e = self::id<self::Class::E%>(e);
-    if(!(e == null)) {
+    if(!e.{core::Object::==}(null)) {
       self::Class::E% e2 = e{self::Class::E% & core::Object /* '%' & '!' = '!' */};
       e2 = self::id<self::Class::E%>(e{self::Class::E% & core::Object /* '%' & '!' = '!' */});
       e2 = self::id<self::Class::E%>(e{self::Class::E% & core::Object /* '%' & '!' = '!' */});
diff --git a/pkg/front_end/testcases/nnbd/assign_type_variable.dart.weak.expect b/pkg/front_end/testcases/nnbd/assign_type_variable.dart.weak.expect
index f8a2ab8..88ac3ae 100644
--- a/pkg/front_end/testcases/nnbd/assign_type_variable.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/assign_type_variable.dart.weak.expect
@@ -9,7 +9,7 @@
   method method(generic-covariant-impl self::Class::E% e) → void {
     e = self::id<self::Class::E%>(e);
     e = self::id<self::Class::E%>(e);
-    if(!(e == null)) {
+    if(!e.{core::Object::==}(null)) {
       self::Class::E% e2 = e{self::Class::E% & core::Object /* '%' & '!' = '!' */};
       e2 = self::id<self::Class::E%>(e{self::Class::E% & core::Object /* '%' & '!' = '!' */});
       e2 = self::id<self::Class::E%>(e{self::Class::E% & core::Object /* '%' & '!' = '!' */});
diff --git a/pkg/front_end/testcases/nnbd/assign_type_variable.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/assign_type_variable.dart.weak.transformed.expect
index f8a2ab8..88ac3ae 100644
--- a/pkg/front_end/testcases/nnbd/assign_type_variable.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/assign_type_variable.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
   method method(generic-covariant-impl self::Class::E% e) → void {
     e = self::id<self::Class::E%>(e);
     e = self::id<self::Class::E%>(e);
-    if(!(e == null)) {
+    if(!e.{core::Object::==}(null)) {
       self::Class::E% e2 = e{self::Class::E% & core::Object /* '%' & '!' = '!' */};
       e2 = self::id<self::Class::E%>(e{self::Class::E% & core::Object /* '%' & '!' = '!' */});
       e2 = self::id<self::Class::E%>(e{self::Class::E% & core::Object /* '%' & '!' = '!' */});
diff --git a/pkg/front_end/testcases/nnbd/assignability.dart.strong.expect b/pkg/front_end/testcases/nnbd/assignability.dart.strong.expect
index 6318674..19d474e 100644
--- a/pkg/front_end/testcases/nnbd/assignability.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/assignability.dart.strong.expect
@@ -1014,10 +1014,10 @@
   core::Function functionVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} core::Function;
   functionVar = functionArg;
   functionVar = toVoidArg;
-  functionVar = let final self::Tearoffable #t1 = tearoffableArg in #t1 == null ?{() → void} null : #t1.{self::Tearoffable::call};
+  functionVar = let final self::Tearoffable #t1 = tearoffableArg in #t1.==(null) ?{() → void} null : #t1.{self::Tearoffable::call};
   () → void toVoidVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} () → void;
   toVoidVar = toVoidArg;
-  toVoidVar = let final self::Tearoffable #t2 = tearoffableArg in #t2 == null ?{() → void} null : #t2.{self::Tearoffable::call};
+  toVoidVar = let final self::Tearoffable #t2 = tearoffableArg in #t2.==(null) ?{() → void} null : #t2.{self::Tearoffable::call};
   self::Tearoffable tearoffableVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} self::Tearoffable;
   tearoffableVar = tearoffableArg;
   self::ok::XnonNull xNonNullVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} self::ok::XnonNull;
diff --git a/pkg/front_end/testcases/nnbd/assignability.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/assignability.dart.strong.transformed.expect
index 1f47a4a..0c62a44 100644
--- a/pkg/front_end/testcases/nnbd/assignability.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/assignability.dart.strong.transformed.expect
@@ -1014,10 +1014,10 @@
   core::Function functionVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} core::Function;
   functionVar = functionArg;
   functionVar = toVoidArg;
-  functionVar = let final self::Tearoffable #t2 = tearoffableArg in #t2 == null ?{() → void} null : #t2.{self::Tearoffable::call};
+  functionVar = let final self::Tearoffable #t2 = tearoffableArg in #t2.==(null) ?{() → void} null : #t2.{self::Tearoffable::call};
   () → void toVoidVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} () → void;
   toVoidVar = toVoidArg;
-  toVoidVar = let final self::Tearoffable #t3 = tearoffableArg in #t3 == null ?{() → void} null : #t3.{self::Tearoffable::call};
+  toVoidVar = let final self::Tearoffable #t3 = tearoffableArg in #t3.==(null) ?{() → void} null : #t3.{self::Tearoffable::call};
   self::Tearoffable tearoffableVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} self::Tearoffable;
   tearoffableVar = tearoffableArg;
   self::ok::XnonNull xNonNullVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} self::ok::XnonNull;
diff --git a/pkg/front_end/testcases/nnbd/assignability.dart.weak.expect b/pkg/front_end/testcases/nnbd/assignability.dart.weak.expect
index 6318674..19d474e 100644
--- a/pkg/front_end/testcases/nnbd/assignability.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/assignability.dart.weak.expect
@@ -1014,10 +1014,10 @@
   core::Function functionVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} core::Function;
   functionVar = functionArg;
   functionVar = toVoidArg;
-  functionVar = let final self::Tearoffable #t1 = tearoffableArg in #t1 == null ?{() → void} null : #t1.{self::Tearoffable::call};
+  functionVar = let final self::Tearoffable #t1 = tearoffableArg in #t1.==(null) ?{() → void} null : #t1.{self::Tearoffable::call};
   () → void toVoidVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} () → void;
   toVoidVar = toVoidArg;
-  toVoidVar = let final self::Tearoffable #t2 = tearoffableArg in #t2 == null ?{() → void} null : #t2.{self::Tearoffable::call};
+  toVoidVar = let final self::Tearoffable #t2 = tearoffableArg in #t2.==(null) ?{() → void} null : #t2.{self::Tearoffable::call};
   self::Tearoffable tearoffableVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} self::Tearoffable;
   tearoffableVar = tearoffableArg;
   self::ok::XnonNull xNonNullVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} self::ok::XnonNull;
diff --git a/pkg/front_end/testcases/nnbd/assignability.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/assignability.dart.weak.transformed.expect
index e558c54..24484a9 100644
--- a/pkg/front_end/testcases/nnbd/assignability.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/assignability.dart.weak.transformed.expect
@@ -1014,10 +1014,10 @@
   core::Function functionVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} core::Function;
   functionVar = functionArg;
   functionVar = toVoidArg;
-  functionVar = let final self::Tearoffable #t1 = tearoffableArg in #t1 == null ?{() → void} null : #t1.{self::Tearoffable::call};
+  functionVar = let final self::Tearoffable #t1 = tearoffableArg in #t1.==(null) ?{() → void} null : #t1.{self::Tearoffable::call};
   () → void toVoidVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} () → void;
   toVoidVar = toVoidArg;
-  toVoidVar = let final self::Tearoffable #t2 = tearoffableArg in #t2 == null ?{() → void} null : #t2.{self::Tearoffable::call};
+  toVoidVar = let final self::Tearoffable #t2 = tearoffableArg in #t2.==(null) ?{() → void} null : #t2.{self::Tearoffable::call};
   self::Tearoffable tearoffableVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} self::Tearoffable;
   tearoffableVar = tearoffableArg;
   self::ok::XnonNull xNonNullVar = dynamicArg as{TypeError,ForDynamic,ForNonNullableByDefault} self::ok::XnonNull;
diff --git a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.expect b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.expect
index 4b9bd7e..e3efe03 100644
--- a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.expect
@@ -333,7 +333,7 @@
 static method baz(self::C c) → void {
   self::bazContext(let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:62:14: Error: The argument type 'num? Function()' can't be assigned to the parameter type 'num Function()' because 'num?' is nullable and 'num' isn't.
   bazContext(c);
-             ^" in (let final self::C #t15 = c in #t15 == null ?{() → core::num?} null : #t15.{self::C::call}) as{TypeError,ForNonNullableByDefault} () → core::num);
+             ^" in (let final self::C #t15 = c in #t15.==(null) ?{() → core::num?} null : #t15.{self::C::call}) as{TypeError,ForNonNullableByDefault} () → core::num);
 }
 static method boz(Null x) → self::A {
   self::fooContext(let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:66:14: Error: The argument type 'Null' can't be assigned to the parameter type 'A' because 'A' is not nullable.
diff --git a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.transformed.expect
index 8d03a24..bff0969 100644
--- a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.transformed.expect
@@ -375,7 +375,7 @@
 static method baz(self::C c) → void {
   self::bazContext(let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:62:14: Error: The argument type 'num? Function()' can't be assigned to the parameter type 'num Function()' because 'num?' is nullable and 'num' isn't.
   bazContext(c);
-             ^" in (let final self::C #t21 = c in #t21 == null ?{() → core::num?} null : #t21.{self::C::call}) as{TypeError,ForNonNullableByDefault} () → core::num);
+             ^" in (let final self::C #t21 = c in #t21.==(null) ?{() → core::num?} null : #t21.{self::C::call}) as{TypeError,ForNonNullableByDefault} () → core::num);
 }
 static method boz(Null x) → self::A {
   self::fooContext(let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:66:14: Error: The argument type 'Null' can't be assigned to the parameter type 'A' because 'A' is not nullable.
diff --git a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.expect b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.expect
index 4b9bd7e..e3efe03 100644
--- a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.expect
@@ -333,7 +333,7 @@
 static method baz(self::C c) → void {
   self::bazContext(let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:62:14: Error: The argument type 'num? Function()' can't be assigned to the parameter type 'num Function()' because 'num?' is nullable and 'num' isn't.
   bazContext(c);
-             ^" in (let final self::C #t15 = c in #t15 == null ?{() → core::num?} null : #t15.{self::C::call}) as{TypeError,ForNonNullableByDefault} () → core::num);
+             ^" in (let final self::C #t15 = c in #t15.==(null) ?{() → core::num?} null : #t15.{self::C::call}) as{TypeError,ForNonNullableByDefault} () → core::num);
 }
 static method boz(Null x) → self::A {
   self::fooContext(let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:66:14: Error: The argument type 'Null' can't be assigned to the parameter type 'A' because 'A' is not nullable.
diff --git a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.transformed.expect
index 3f9fa94..0f21343 100644
--- a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.transformed.expect
@@ -375,7 +375,7 @@
 static method baz(self::C c) → void {
   self::bazContext(let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:62:14: Error: The argument type 'num? Function()' can't be assigned to the parameter type 'num Function()' because 'num?' is nullable and 'num' isn't.
   bazContext(c);
-             ^" in let final self::C #t15 = c in #t15 == null ?{() → core::num?} null : #t15.{self::C::call});
+             ^" in let final self::C #t15 = c in #t15.==(null) ?{() → core::num?} null : #t15.{self::C::call});
 }
 static method boz(Null x) → self::A {
   self::fooContext(let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:66:14: Error: The argument type 'Null' can't be assigned to the parameter type 'A' because 'A' is not nullable.
diff --git a/pkg/front_end/testcases/nnbd/bounds_checks.dart.strong.expect b/pkg/front_end/testcases/nnbd/bounds_checks.dart.strong.expect
index ab741a5..cf1774b 100644
--- a/pkg/front_end/testcases/nnbd/bounds_checks.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/bounds_checks.dart.strong.expect
@@ -86,6 +86,6 @@
 static method hest<T extends core::num>() → void {}
 static method fisk(self::Hest h) → dynamic {
   self::hest<core::num?>();
-  h.{self::Hest::hest}<core::num?>(){() → void};
+  h.{self::Hest::hest}<core::num?>();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/bounds_checks.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/bounds_checks.dart.strong.transformed.expect
index ab741a5..cf1774b 100644
--- a/pkg/front_end/testcases/nnbd/bounds_checks.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/bounds_checks.dart.strong.transformed.expect
@@ -86,6 +86,6 @@
 static method hest<T extends core::num>() → void {}
 static method fisk(self::Hest h) → dynamic {
   self::hest<core::num?>();
-  h.{self::Hest::hest}<core::num?>(){() → void};
+  h.{self::Hest::hest}<core::num?>();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/bounds_checks.dart.weak.expect b/pkg/front_end/testcases/nnbd/bounds_checks.dart.weak.expect
index ab741a5..cf1774b 100644
--- a/pkg/front_end/testcases/nnbd/bounds_checks.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/bounds_checks.dart.weak.expect
@@ -86,6 +86,6 @@
 static method hest<T extends core::num>() → void {}
 static method fisk(self::Hest h) → dynamic {
   self::hest<core::num?>();
-  h.{self::Hest::hest}<core::num?>(){() → void};
+  h.{self::Hest::hest}<core::num?>();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/bounds_checks.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/bounds_checks.dart.weak.transformed.expect
index ab741a5..cf1774b 100644
--- a/pkg/front_end/testcases/nnbd/bounds_checks.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/bounds_checks.dart.weak.transformed.expect
@@ -86,6 +86,6 @@
 static method hest<T extends core::num>() → void {}
 static method fisk(self::Hest h) → dynamic {
   self::hest<core::num?>();
-  h.{self::Hest::hest}<core::num?>(){() → void};
+  h.{self::Hest::hest}<core::num?>();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/call.dart.strong.expect b/pkg/front_end/testcases/nnbd/call.dart.strong.expect
index 2984427..44a78ec 100644
--- a/pkg/front_end/testcases/nnbd/call.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/call.dart.strong.expect
@@ -38,19 +38,19 @@
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:12:4: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   f();
-   ^" in f{<nullable>}.(){() →? void};
+   ^" in f.call();
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:13:5: Error: Method 'call' cannot be called on 'void Function()?' because it is potentially null.
 Try calling using ?. instead.
   f.call();
-    ^^^^" in f{<nullable>}.(){() →? void};
+    ^^^^" in f.call();
   self::Class c = new self::Class::•();
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:15:10: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   c.field();
-         ^" in c.{self::Class::field}{() →? void}{<nullable>}.(){() →? void};
+         ^" in c.{self::Class::field}.call();
   let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:16:11: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   c.getter();
-          ^" in c.{self::Class::getter}{() →? void}{<nullable>}.(){() →? void};
+          ^" in c.{self::Class::getter}.call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/call.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/call.dart.strong.transformed.expect
index 2984427..44a78ec 100644
--- a/pkg/front_end/testcases/nnbd/call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/call.dart.strong.transformed.expect
@@ -38,19 +38,19 @@
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:12:4: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   f();
-   ^" in f{<nullable>}.(){() →? void};
+   ^" in f.call();
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:13:5: Error: Method 'call' cannot be called on 'void Function()?' because it is potentially null.
 Try calling using ?. instead.
   f.call();
-    ^^^^" in f{<nullable>}.(){() →? void};
+    ^^^^" in f.call();
   self::Class c = new self::Class::•();
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:15:10: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   c.field();
-         ^" in c.{self::Class::field}{() →? void}{<nullable>}.(){() →? void};
+         ^" in c.{self::Class::field}.call();
   let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:16:11: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   c.getter();
-          ^" in c.{self::Class::getter}{() →? void}{<nullable>}.(){() →? void};
+          ^" in c.{self::Class::getter}.call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/call.dart.weak.expect b/pkg/front_end/testcases/nnbd/call.dart.weak.expect
index 2984427..44a78ec 100644
--- a/pkg/front_end/testcases/nnbd/call.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/call.dart.weak.expect
@@ -38,19 +38,19 @@
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:12:4: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   f();
-   ^" in f{<nullable>}.(){() →? void};
+   ^" in f.call();
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:13:5: Error: Method 'call' cannot be called on 'void Function()?' because it is potentially null.
 Try calling using ?. instead.
   f.call();
-    ^^^^" in f{<nullable>}.(){() →? void};
+    ^^^^" in f.call();
   self::Class c = new self::Class::•();
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:15:10: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   c.field();
-         ^" in c.{self::Class::field}{() →? void}{<nullable>}.(){() →? void};
+         ^" in c.{self::Class::field}.call();
   let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:16:11: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   c.getter();
-          ^" in c.{self::Class::getter}{() →? void}{<nullable>}.(){() →? void};
+          ^" in c.{self::Class::getter}.call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/call.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/call.dart.weak.transformed.expect
index 2984427..44a78ec 100644
--- a/pkg/front_end/testcases/nnbd/call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/call.dart.weak.transformed.expect
@@ -38,19 +38,19 @@
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:12:4: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   f();
-   ^" in f{<nullable>}.(){() →? void};
+   ^" in f.call();
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:13:5: Error: Method 'call' cannot be called on 'void Function()?' because it is potentially null.
 Try calling using ?. instead.
   f.call();
-    ^^^^" in f{<nullable>}.(){() →? void};
+    ^^^^" in f.call();
   self::Class c = new self::Class::•();
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:15:10: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   c.field();
-         ^" in c.{self::Class::field}{() →? void}{<nullable>}.(){() →? void};
+         ^" in c.{self::Class::field}.call();
   let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/call.dart:16:11: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   c.getter();
-          ^" in c.{self::Class::getter}{() →? void}{<nullable>}.(){() →? void};
+          ^" in c.{self::Class::getter}.call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/const_canonical_type.dart.strong.expect b/pkg/front_end/testcases/nnbd/const_canonical_type.dart.strong.expect
index 478af10..1631d801 100644
--- a/pkg/front_end/testcases/nnbd/const_canonical_type.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/const_canonical_type.dart.strong.expect
@@ -11,7 +11,7 @@
 class Check extends core::Object /*hasConstConstructor*/  {
   final field dynamic _ignored;
   const constructor •(dynamic x, dynamic y) → self::Check
-    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0){(core::num) → core::int}, super core::Object::•()
+    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0), super core::Object::•()
     ;
 }
 class A<X extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
@@ -20,7 +20,7 @@
     ;
 }
 static method expectEqual(dynamic x, dynamic y) → void {
-  if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
+  if(!x.{core::Object::==}(y)) {
     throw "Arguments were supposed to be identical.";
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/const_canonical_type.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/const_canonical_type.dart.strong.transformed.expect
index 478af10..1631d801 100644
--- a/pkg/front_end/testcases/nnbd/const_canonical_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/const_canonical_type.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
 class Check extends core::Object /*hasConstConstructor*/  {
   final field dynamic _ignored;
   const constructor •(dynamic x, dynamic y) → self::Check
-    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0){(core::num) → core::int}, super core::Object::•()
+    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0), super core::Object::•()
     ;
 }
 class A<X extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
@@ -20,7 +20,7 @@
     ;
 }
 static method expectEqual(dynamic x, dynamic y) → void {
-  if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
+  if(!x.{core::Object::==}(y)) {
     throw "Arguments were supposed to be identical.";
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/const_canonical_type.dart.weak.expect b/pkg/front_end/testcases/nnbd/const_canonical_type.dart.weak.expect
index 5e1af23..43eae4f 100644
--- a/pkg/front_end/testcases/nnbd/const_canonical_type.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/const_canonical_type.dart.weak.expect
@@ -11,7 +11,7 @@
 class Check extends core::Object /*hasConstConstructor*/  {
   final field dynamic _ignored;
   const constructor •(dynamic x, dynamic y) → self::Check
-    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0){(core::num) → core::int}, super core::Object::•()
+    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0), super core::Object::•()
     ;
 }
 class A<X extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
@@ -20,7 +20,7 @@
     ;
 }
 static method expectEqual(dynamic x, dynamic y) → void {
-  if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
+  if(!x.{core::Object::==}(y)) {
     throw "Arguments were supposed to be identical.";
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/const_canonical_type.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/const_canonical_type.dart.weak.outline.expect
index c94203e..5239ad1 100644
--- a/pkg/front_end/testcases/nnbd/const_canonical_type.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/const_canonical_type.dart.weak.outline.expect
@@ -11,7 +11,7 @@
 class Check extends core::Object /*hasConstConstructor*/  {
   final field dynamic _ignored;
   const constructor •(dynamic x, dynamic y) → self::Check
-    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0){(core::num) → core::int}, super core::Object::•()
+    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0), super core::Object::•()
     ;
 }
 class A<X extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
diff --git a/pkg/front_end/testcases/nnbd/const_canonical_type.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/const_canonical_type.dart.weak.transformed.expect
index 5e1af23..43eae4f 100644
--- a/pkg/front_end/testcases/nnbd/const_canonical_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/const_canonical_type.dart.weak.transformed.expect
@@ -11,7 +11,7 @@
 class Check extends core::Object /*hasConstConstructor*/  {
   final field dynamic _ignored;
   const constructor •(dynamic x, dynamic y) → self::Check
-    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0){(core::num) → core::int}, super core::Object::•()
+    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0), super core::Object::•()
     ;
 }
 class A<X extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
@@ -20,7 +20,7 @@
     ;
 }
 static method expectEqual(dynamic x, dynamic y) → void {
-  if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
+  if(!x.{core::Object::==}(y)) {
     throw "Arguments were supposed to be identical.";
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/const_is.dart.strong.expect b/pkg/front_end/testcases/nnbd/const_is.dart.strong.expect
index ee9ce9b..ecdde5d 100644
--- a/pkg/front_end/testcases/nnbd/const_is.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/const_is.dart.strong.expect
@@ -49,10 +49,10 @@
 static const field core::bool f4_is_t1 = #C2;
 static const field core::bool f5_is_t1 = #C1;
 static method f({required core::int i = #C3}) → core::int {
-  return i.{core::num::+}(1){(core::num) → core::int};
+  return i.{core::num::+}(1);
 }
 static method g({core::int i = #C4}) → core::int {
-  return i.{core::num::+}(1){(core::num) → core::int};
+  return i.{core::num::+}(1);
 }
 static method f1(core::int i, self::B b, core::Map<core::int, core::num> m, dynamic x, {required dynamic extraParam = #C3, required core::bool obool = #C3, required dynamic ox = #C3, required self::D ob = #C3, required core::List<core::num>? ol = #C3}) → self::B
   return new self::B::•();
@@ -87,7 +87,7 @@
   self::expect((#C11) is{ForNonNullableByDefault} (core::int, self::B, core::Map<core::int, core::num>, dynamic, {required ob: self::B, required obool: core::bool, required ol: core::List<core::num>, required ox: dynamic}) → self::B, #C1);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/const_is.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/const_is.dart.strong.transformed.expect
index 2eda141..deac28e 100644
--- a/pkg/front_end/testcases/nnbd/const_is.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/const_is.dart.strong.transformed.expect
@@ -49,10 +49,10 @@
 static const field core::bool f4_is_t1 = #C2;
 static const field core::bool f5_is_t1 = #C1;
 static method f({required core::int i = #C3}) → core::int {
-  return i.{core::num::+}(1){(core::num) → core::int};
+  return i.{core::num::+}(1);
 }
 static method g({core::int i = #C4}) → core::int {
-  return i.{core::num::+}(1){(core::num) → core::int};
+  return i.{core::num::+}(1);
 }
 static method f1(core::int i, self::B b, core::Map<core::int, core::num> m, dynamic x, {required dynamic extraParam = #C3, required core::bool obool = #C3, required dynamic ox = #C3, required self::D ob = #C3, required core::List<core::num>? ol = #C3}) → self::B
   return new self::B::•();
@@ -87,7 +87,7 @@
   self::expect((#C11) is{ForNonNullableByDefault} (core::int, self::B, core::Map<core::int, core::num>, dynamic, {required ob: self::B, required obool: core::bool, required ol: core::List<core::num>, required ox: dynamic}) → self::B, #C1);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/const_is.dart.weak.expect b/pkg/front_end/testcases/nnbd/const_is.dart.weak.expect
index 7da3b8f..f6c3bba 100644
--- a/pkg/front_end/testcases/nnbd/const_is.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/const_is.dart.weak.expect
@@ -49,10 +49,10 @@
 static const field core::bool f4_is_t1 = #C1;
 static const field core::bool f5_is_t1 = #C1;
 static method f({required core::int i = #C3}) → core::int {
-  return i.{core::num::+}(1){(core::num) → core::int};
+  return i.{core::num::+}(1);
 }
 static method g({core::int i = #C4}) → core::int {
-  return i.{core::num::+}(1){(core::num) → core::int};
+  return i.{core::num::+}(1);
 }
 static method f1(core::int i, self::B b, core::Map<core::int, core::num> m, dynamic x, {required dynamic extraParam = #C3, required core::bool obool = #C3, required dynamic ox = #C3, required self::D ob = #C3, required core::List<core::num>? ol = #C3}) → self::B
   return new self::B::•();
@@ -87,7 +87,7 @@
   self::expect((#C11) is{ForNonNullableByDefault} (core::int, self::B, core::Map<core::int, core::num>, dynamic, {required ob: self::B, required obool: core::bool, required ol: core::List<core::num>, required ox: dynamic}) → self::B, #C1);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/const_is.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/const_is.dart.weak.transformed.expect
index 67362a6..3817966 100644
--- a/pkg/front_end/testcases/nnbd/const_is.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/const_is.dart.weak.transformed.expect
@@ -49,10 +49,10 @@
 static const field core::bool f4_is_t1 = #C1;
 static const field core::bool f5_is_t1 = #C1;
 static method f({required core::int i = #C3}) → core::int {
-  return i.{core::num::+}(1){(core::num) → core::int};
+  return i.{core::num::+}(1);
 }
 static method g({core::int i = #C4}) → core::int {
-  return i.{core::num::+}(1){(core::num) → core::int};
+  return i.{core::num::+}(1);
 }
 static method f1(core::int i, self::B b, core::Map<core::int, core::num> m, dynamic x, {required dynamic extraParam = #C3, required core::bool obool = #C3, required dynamic ox = #C3, required self::D ob = #C3, required core::List<core::num>? ol = #C3}) → self::B
   return new self::B::•();
@@ -87,7 +87,7 @@
   self::expect((#C11) is{ForNonNullableByDefault} (core::int, self::B, core::Map<core::int, core::num>, dynamic, {required ob: self::B, required obool: core::bool, required ol: core::List<core::num>, required ox: dynamic}) → self::B, #C1);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.expect b/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.expect
index b3142fc..a1b3d15 100644
--- a/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.expect
@@ -40,10 +40,10 @@
 static method main() → dynamic {
   self::expect(42, #C1);
   self::expect(42, #C1);
-  self::expect(42, (#C3).{self::Class::y}{core::int});
+  self::expect(42, (#C3).{self::Class::y});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.transformed.expect
index b3142fc..a1b3d15 100644
--- a/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.transformed.expect
@@ -40,10 +40,10 @@
 static method main() → dynamic {
   self::expect(42, #C1);
   self::expect(42, #C1);
-  self::expect(42, (#C3).{self::Class::y}{core::int});
+  self::expect(42, (#C3).{self::Class::y});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.expect b/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.expect
index b3142fc..a1b3d15 100644
--- a/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.expect
@@ -40,10 +40,10 @@
 static method main() → dynamic {
   self::expect(42, #C1);
   self::expect(42, #C1);
-  self::expect(42, (#C3).{self::Class::y}{core::int});
+  self::expect(42, (#C3).{self::Class::y});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.transformed.expect
index b3142fc..a1b3d15 100644
--- a/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.transformed.expect
@@ -40,10 +40,10 @@
 static method main() → dynamic {
   self::expect(42, #C1);
   self::expect(42, #C1);
-  self::expect(42, (#C3).{self::Class::y}{core::int});
+  self::expect(42, (#C3).{self::Class::y});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.expect b/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.expect
index 390e1a9..6432e62 100644
--- a/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.expect
@@ -59,24 +59,24 @@
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never>, #C3, "null is FutureOr<Never>");
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never?>, #C2, "null is FutureOr<Never?>");
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never>?, #C2, "null is FutureOr<Never>?");
-  self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}{core::bool}, (#C4).{self::Class::field}{core::bool}, "Class<int>.constructor1(null).field");
-  self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}{core::bool}, "new Class<int?>.constructor1(null).field");
-  self::expect(self::isWeakMode, (#C5).{self::Class::field}{core::bool}, "const Class<List<int>>.constructor1(<Null>[null]).field");
-  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor1(null).field");
-  self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}{core::bool}, (#C7).{self::Class::field}{core::bool}, "Class<int>.constructor2(null).field");
-  self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}{core::bool}, "new Class<int?>.constructor2(null).field");
-  self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}{core::bool}, (#C8).{self::Class::field}{core::bool}, "Class<int?>.constructor2(null).field");
-  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor2(null).field");
-  self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}{core::bool}, (#C4).{self::Class::field}{core::bool}, "Class<int>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}{core::bool}, (#C9).{self::Class::field}{core::bool}, "Class<int?>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}{core::bool}, (#C9).{self::Class::field}{core::bool}, "Class<int?>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}{core::bool}, (#C10).{self::Class::field}{core::bool}, "Class<Null>.constructor3(null).field");
-  self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}{core::bool}, (#C7).{self::Class::field}{core::bool}, "Class<int>.constructor4(null).field");
-  self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}{core::bool}, (#C8).{self::Class::field}{core::bool}, "Class<int?>.constructor4(null).field");
-  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor4(null).field");
+  self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor1(null).field");
+  self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor1(null).field");
+  self::expect(self::isWeakMode, (#C5).{self::Class::field}, "const Class<List<int>>.constructor1(<Null>[null]).field");
+  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor1(null).field");
+  self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor2(null).field");
+  self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor2(null).field");
+  self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor2(null).field");
+  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor2(null).field");
+  self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}, (#C10).{self::Class::field}, "Class<Null>.constructor3(null).field");
+  self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor4(null).field");
+  self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor4(null).field");
+  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor4(null).field");
 }
 static method expect(dynamic expected, dynamic actual, core::String message) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual} for ${message}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.transformed.expect
index d3fccea..33c269a 100644
--- a/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.transformed.expect
@@ -59,24 +59,24 @@
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never>, #C3, "null is FutureOr<Never>");
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never?>, #C2, "null is FutureOr<Never?>");
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never>?, #C2, "null is FutureOr<Never>?");
-  self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}{core::bool}, (#C4).{self::Class::field}{core::bool}, "Class<int>.constructor1(null).field");
-  self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}{core::bool}, "new Class<int?>.constructor1(null).field");
-  self::expect(self::isWeakMode, (#C5).{self::Class::field}{core::bool}, "const Class<List<int>>.constructor1(<Null>[null]).field");
-  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor1(null).field");
-  self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}{core::bool}, (#C7).{self::Class::field}{core::bool}, "Class<int>.constructor2(null).field");
-  self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}{core::bool}, "new Class<int?>.constructor2(null).field");
-  self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}{core::bool}, (#C8).{self::Class::field}{core::bool}, "Class<int?>.constructor2(null).field");
-  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor2(null).field");
-  self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}{core::bool}, (#C4).{self::Class::field}{core::bool}, "Class<int>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}{core::bool}, (#C9).{self::Class::field}{core::bool}, "Class<int?>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}{core::bool}, (#C9).{self::Class::field}{core::bool}, "Class<int?>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}{core::bool}, (#C10).{self::Class::field}{core::bool}, "Class<Null>.constructor3(null).field");
-  self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}{core::bool}, (#C7).{self::Class::field}{core::bool}, "Class<int>.constructor4(null).field");
-  self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}{core::bool}, (#C8).{self::Class::field}{core::bool}, "Class<int?>.constructor4(null).field");
-  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor4(null).field");
+  self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor1(null).field");
+  self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor1(null).field");
+  self::expect(self::isWeakMode, (#C5).{self::Class::field}, "const Class<List<int>>.constructor1(<Null>[null]).field");
+  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor1(null).field");
+  self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor2(null).field");
+  self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor2(null).field");
+  self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor2(null).field");
+  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor2(null).field");
+  self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}, (#C10).{self::Class::field}, "Class<Null>.constructor3(null).field");
+  self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor4(null).field");
+  self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor4(null).field");
+  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor4(null).field");
 }
 static method expect(dynamic expected, dynamic actual, core::String message) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual} for ${message}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is.dart.weak.expect b/pkg/front_end/testcases/nnbd/constant_null_is.dart.weak.expect
index d14ab66..d9f07b7 100644
--- a/pkg/front_end/testcases/nnbd/constant_null_is.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/constant_null_is.dart.weak.expect
@@ -59,24 +59,24 @@
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never>, #C3, "null is FutureOr<Never>");
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never?>, #C2, "null is FutureOr<Never?>");
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never>?, #C2, "null is FutureOr<Never>?");
-  self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}{core::bool}, (#C4).{self::Class::field}{core::bool}, "Class<int>.constructor1(null).field");
-  self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}{core::bool}, "new Class<int?>.constructor1(null).field");
-  self::expect(self::isWeakMode, (#C5).{self::Class::field}{core::bool}, "const Class<List<int>>.constructor1(<Null>[null]).field");
-  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor1(null).field");
-  self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}{core::bool}, (#C7).{self::Class::field}{core::bool}, "Class<int>.constructor2(null).field");
-  self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}{core::bool}, "new Class<int?>.constructor2(null).field");
-  self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}{core::bool}, (#C8).{self::Class::field}{core::bool}, "Class<int?>.constructor2(null).field");
-  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor2(null).field");
-  self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}{core::bool}, (#C4).{self::Class::field}{core::bool}, "Class<int>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}{core::bool}, (#C9).{self::Class::field}{core::bool}, "Class<int?>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}{core::bool}, (#C9).{self::Class::field}{core::bool}, "Class<int?>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}{core::bool}, (#C10).{self::Class::field}{core::bool}, "Class<Null>.constructor3(null).field");
-  self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}{core::bool}, (#C7).{self::Class::field}{core::bool}, "Class<int>.constructor4(null).field");
-  self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}{core::bool}, (#C8).{self::Class::field}{core::bool}, "Class<int?>.constructor4(null).field");
-  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor4(null).field");
+  self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor1(null).field");
+  self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor1(null).field");
+  self::expect(self::isWeakMode, (#C5).{self::Class::field}, "const Class<List<int>>.constructor1(<Null>[null]).field");
+  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor1(null).field");
+  self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor2(null).field");
+  self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor2(null).field");
+  self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor2(null).field");
+  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor2(null).field");
+  self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}, (#C10).{self::Class::field}, "Class<Null>.constructor3(null).field");
+  self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor4(null).field");
+  self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor4(null).field");
+  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor4(null).field");
 }
 static method expect(dynamic expected, dynamic actual, core::String message) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual} for ${message}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/constant_null_is.dart.weak.transformed.expect
index fc6a3ef..9710d1f 100644
--- a/pkg/front_end/testcases/nnbd/constant_null_is.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/constant_null_is.dart.weak.transformed.expect
@@ -59,24 +59,24 @@
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never>, #C3, "null is FutureOr<Never>");
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never?>, #C2, "null is FutureOr<Never?>");
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never>?, #C2, "null is FutureOr<Never>?");
-  self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}{core::bool}, (#C4).{self::Class::field}{core::bool}, "Class<int>.constructor1(null).field");
-  self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}{core::bool}, "new Class<int?>.constructor1(null).field");
-  self::expect(self::isWeakMode, (#C5).{self::Class::field}{core::bool}, "const Class<List<int>>.constructor1(<Null>[null]).field");
-  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor1(null).field");
-  self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}{core::bool}, (#C7).{self::Class::field}{core::bool}, "Class<int>.constructor2(null).field");
-  self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}{core::bool}, "new Class<int?>.constructor2(null).field");
-  self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}{core::bool}, (#C8).{self::Class::field}{core::bool}, "Class<int?>.constructor2(null).field");
-  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor2(null).field");
-  self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}{core::bool}, (#C4).{self::Class::field}{core::bool}, "Class<int>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}{core::bool}, (#C9).{self::Class::field}{core::bool}, "Class<int?>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}{core::bool}, (#C9).{self::Class::field}{core::bool}, "Class<int?>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}{core::bool}, (#C10).{self::Class::field}{core::bool}, "Class<Null>.constructor3(null).field");
-  self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}{core::bool}, (#C7).{self::Class::field}{core::bool}, "Class<int>.constructor4(null).field");
-  self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}{core::bool}, (#C8).{self::Class::field}{core::bool}, "Class<int?>.constructor4(null).field");
-  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor4(null).field");
+  self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor1(null).field");
+  self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor1(null).field");
+  self::expect(self::isWeakMode, (#C5).{self::Class::field}, "const Class<List<int>>.constructor1(<Null>[null]).field");
+  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor1(null).field");
+  self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor2(null).field");
+  self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor2(null).field");
+  self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor2(null).field");
+  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor2(null).field");
+  self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}, (#C10).{self::Class::field}, "Class<Null>.constructor3(null).field");
+  self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor4(null).field");
+  self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor4(null).field");
+  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor4(null).field");
 }
 static method expect(dynamic expected, dynamic actual, core::String message) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual} for ${message}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/constants.dart.weak.outline.expect
index b25d8c4..846a242 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.weak.outline.expect
@@ -86,7 +86,7 @@
 Evaluated: StaticInvocation @ org-dartlang-testcase:///constants.dart:37:5 -> BoolConstant(true)
 Evaluated: StaticInvocation @ org-dartlang-testcase:///constants.dart:39:5 -> BoolConstant(true)
 Evaluated: TypeLiteral @ org-dartlang-testcase:///constants_lib.dart:16:27 -> TypeLiteralConstant(Object*)
-Evaluated: StaticTearOff @ org-dartlang-testcase:///constants_lib.dart:17:12 -> TearOffConstant(identical)
+Evaluated: StaticGet @ org-dartlang-testcase:///constants_lib.dart:17:12 -> TearOffConstant(identical)
 Evaluated: Instantiation @ org-dartlang-testcase:///constants_lib.dart:18:48 -> PartialInstantiationConstant(id<int*>)
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///constants_lib.dart:19:24 -> InstanceConstant(const Class<int*>{Class.field: 0})
 Evaluated: TypeLiteral @ org-dartlang-testcase:///constants_lib.dart:20:29 -> TypeLiteralConstant(dynamic Function(dynamic)*)
diff --git a/pkg/front_end/testcases/nnbd/covariant_equals.dart.strong.expect b/pkg/front_end/testcases/nnbd/covariant_equals.dart.strong.expect
index ddfe4c9..f4bf705 100644
--- a/pkg/front_end/testcases/nnbd/covariant_equals.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/covariant_equals.dart.strong.expect
@@ -297,250 +297,250 @@
 }
 static method main() → dynamic {}
 static method testNonNullable(self::A a, self::B b, self::C<dynamic> c_dynamic, self::C<core::int> c_int, self::C<core::String> c_string, self::D d) → dynamic {
-  a =={self::A::==}{(self::A) → core::bool} a;
-  a =={self::A::==}{(self::A) → core::bool} b;
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:24:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(a);
+  a.{self::A::==}(b);
+  a.{self::A::==}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:24:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_dynamic; // error
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:25:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:25:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_int; // error
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:26:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:26:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_string; // error
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:27:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:27:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == d; // error
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} a;
-  b =={self::B::==}{(self::A) → core::bool} b;
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:31:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(a);
+  b.{self::B::==}(b);
+  b.{self::B::==}(let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:31:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_dynamic; // error
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:32:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:32:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_int; // error
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:33:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:33:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_string; // error
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:34:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:34:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == d; // error
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:36:16: Error: The argument type 'A' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:36:16: Error: The argument type 'A' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == a; // error
                ^" in a as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:37:16: Error: The argument type 'B' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:37:16: Error: The argument type 'B' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == b; // error
                ^" in b as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_dynamic;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_int;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_string;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} d;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:43:12: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
+  c_dynamic.{self::C::==}(c_dynamic);
+  c_dynamic.{self::C::==}(c_int);
+  c_dynamic.{self::C::==}(c_string);
+  c_dynamic.{self::C::==}(d);
+  c_int.{self::C::==}(let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:43:12: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == a; // error
            ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:44:12: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:44:12: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == b; // error
            ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:45:12: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:45:12: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_dynamic; // error
            ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:47:12: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(c_int);
+  c_int.{self::C::==}(let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:47:12: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_string; // error
            ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} d;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:50:15: Error: The argument type 'A' can't be assigned to the parameter type 'C<String>?'.
+  c_int.{self::C::==}(d);
+  c_string.{self::C::==}(let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:50:15: Error: The argument type 'A' can't be assigned to the parameter type 'C<String>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == a; // error
               ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:51:15: Error: The argument type 'B' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:51:15: Error: The argument type 'B' can't be assigned to the parameter type 'C<String>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == b; // error
               ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:52:15: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:52:15: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_dynamic; // error
               ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:53:15: Error: The argument type 'C<int>' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:53:15: Error: The argument type 'C<int>' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_int; // error
               ^" in c_int as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} c_string;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:55:15: Error: The argument type 'D' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(c_string);
+  c_string.{self::C::==}(let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:55:15: Error: The argument type 'D' can't be assigned to the parameter type 'C<String>?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == d; // error
               ^" in d as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:57:8: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:57:8: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == a; // error
        ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:58:8: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:58:8: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == b; // error
        ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:59:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:59:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_dynamic; // error
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:61:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(c_int);
+  d.{self::C::==}(let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:61:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_string; // error
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} d;
+  d.{self::C::==}(d);
 }
 static method testNullable(self::A? a, self::B? b, self::C<dynamic>? c_dynamic, self::C<core::int>? c_int, self::C<core::String>? c_string, self::D? d) → dynamic {
-  a =={self::A::==}{(self::A) → core::bool} a;
-  a =={self::A::==}{(self::A) → core::bool} b;
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:75:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(a);
+  a.{self::A::==}(b);
+  a.{self::A::==}(let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:75:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_dynamic; // ok or error ?
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:76:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:76:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_int; // ok or error ?
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:77:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:77:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_string; // ok or error ?
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:78:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:78:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == d; // ok or error ?
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} a;
-  b =={self::B::==}{(self::A) → core::bool} b;
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t28 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:82:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(a);
+  b.{self::B::==}(b);
+  b.{self::B::==}(let final Never #t28 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:82:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_dynamic; // ok or error ?
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:83:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:83:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_int; // ok or error ?
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:84:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:84:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_string; // ok or error ?
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:85:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:85:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == d; // ok or error ?
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:87:16: Error: The argument type 'A?' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:87:16: Error: The argument type 'A?' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == a; // ok or error ?
                ^" in a as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:88:16: Error: The argument type 'B?' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:88:16: Error: The argument type 'B?' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == b; // ok or error ?
                ^" in b as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_dynamic;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_int;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_string;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} d;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t34 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:94:12: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
+  c_dynamic.{self::C::==}(c_dynamic);
+  c_dynamic.{self::C::==}(c_int);
+  c_dynamic.{self::C::==}(c_string);
+  c_dynamic.{self::C::==}(d);
+  c_int.{self::C::==}(let final Never #t34 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:94:12: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == a; // ok or error ?
            ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:95:12: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:95:12: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == b; // ok or error ?
            ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:96:12: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:96:12: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_dynamic; // ok or error ?
            ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t37 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:98:12: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(c_int);
+  c_int.{self::C::==}(let final Never #t37 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:98:12: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_string; // ok or error ?
            ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} d;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t38 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:101:15: Error: The argument type 'A?' can't be assigned to the parameter type 'C<String>?'.
+  c_int.{self::C::==}(d);
+  c_string.{self::C::==}(let final Never #t38 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:101:15: Error: The argument type 'A?' can't be assigned to the parameter type 'C<String>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == a; // ok or error ?
               ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t39 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:102:15: Error: The argument type 'B?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t39 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:102:15: Error: The argument type 'B?' can't be assigned to the parameter type 'C<String>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == b; // ok or error ?
               ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t40 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:103:15: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t40 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:103:15: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_dynamic; // ok or error ?
               ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t41 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:104:15: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t41 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:104:15: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_int; // ok or error ?
               ^" in c_int as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} c_string;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t42 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:106:15: Error: The argument type 'D?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(c_string);
+  c_string.{self::C::==}(let final Never #t42 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:106:15: Error: The argument type 'D?' can't be assigned to the parameter type 'C<String>?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == d; // ok or error ?
               ^" in d as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:108:8: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:108:8: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == a; // ok or error ?
        ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t44 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:109:8: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t44 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:109:8: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == b; // ok or error ?
        ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:110:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:110:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_dynamic; // ok or error ?
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t46 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:112:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(c_int);
+  d.{self::C::==}(let final Never #t46 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:112:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_string; // ok or error ?
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} d;
+  d.{self::C::==}(d);
 }
diff --git a/pkg/front_end/testcases/nnbd/covariant_equals.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/covariant_equals.dart.strong.transformed.expect
index ddfe4c9..f4bf705 100644
--- a/pkg/front_end/testcases/nnbd/covariant_equals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/covariant_equals.dart.strong.transformed.expect
@@ -297,250 +297,250 @@
 }
 static method main() → dynamic {}
 static method testNonNullable(self::A a, self::B b, self::C<dynamic> c_dynamic, self::C<core::int> c_int, self::C<core::String> c_string, self::D d) → dynamic {
-  a =={self::A::==}{(self::A) → core::bool} a;
-  a =={self::A::==}{(self::A) → core::bool} b;
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:24:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(a);
+  a.{self::A::==}(b);
+  a.{self::A::==}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:24:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_dynamic; // error
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:25:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:25:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_int; // error
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:26:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:26:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_string; // error
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:27:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:27:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == d; // error
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} a;
-  b =={self::B::==}{(self::A) → core::bool} b;
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:31:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(a);
+  b.{self::B::==}(b);
+  b.{self::B::==}(let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:31:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_dynamic; // error
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:32:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:32:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_int; // error
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:33:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:33:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_string; // error
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:34:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:34:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == d; // error
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:36:16: Error: The argument type 'A' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:36:16: Error: The argument type 'A' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == a; // error
                ^" in a as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:37:16: Error: The argument type 'B' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:37:16: Error: The argument type 'B' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == b; // error
                ^" in b as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_dynamic;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_int;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_string;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} d;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:43:12: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
+  c_dynamic.{self::C::==}(c_dynamic);
+  c_dynamic.{self::C::==}(c_int);
+  c_dynamic.{self::C::==}(c_string);
+  c_dynamic.{self::C::==}(d);
+  c_int.{self::C::==}(let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:43:12: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == a; // error
            ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:44:12: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:44:12: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == b; // error
            ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:45:12: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:45:12: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_dynamic; // error
            ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:47:12: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(c_int);
+  c_int.{self::C::==}(let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:47:12: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_string; // error
            ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} d;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:50:15: Error: The argument type 'A' can't be assigned to the parameter type 'C<String>?'.
+  c_int.{self::C::==}(d);
+  c_string.{self::C::==}(let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:50:15: Error: The argument type 'A' can't be assigned to the parameter type 'C<String>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == a; // error
               ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:51:15: Error: The argument type 'B' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:51:15: Error: The argument type 'B' can't be assigned to the parameter type 'C<String>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == b; // error
               ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:52:15: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:52:15: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_dynamic; // error
               ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:53:15: Error: The argument type 'C<int>' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:53:15: Error: The argument type 'C<int>' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_int; // error
               ^" in c_int as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} c_string;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:55:15: Error: The argument type 'D' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(c_string);
+  c_string.{self::C::==}(let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:55:15: Error: The argument type 'D' can't be assigned to the parameter type 'C<String>?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == d; // error
               ^" in d as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:57:8: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:57:8: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == a; // error
        ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:58:8: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:58:8: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == b; // error
        ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:59:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:59:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_dynamic; // error
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:61:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(c_int);
+  d.{self::C::==}(let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:61:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_string; // error
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} d;
+  d.{self::C::==}(d);
 }
 static method testNullable(self::A? a, self::B? b, self::C<dynamic>? c_dynamic, self::C<core::int>? c_int, self::C<core::String>? c_string, self::D? d) → dynamic {
-  a =={self::A::==}{(self::A) → core::bool} a;
-  a =={self::A::==}{(self::A) → core::bool} b;
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:75:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(a);
+  a.{self::A::==}(b);
+  a.{self::A::==}(let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:75:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_dynamic; // ok or error ?
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:76:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:76:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_int; // ok or error ?
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:77:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:77:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_string; // ok or error ?
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:78:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:78:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == d; // ok or error ?
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} a;
-  b =={self::B::==}{(self::A) → core::bool} b;
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t28 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:82:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(a);
+  b.{self::B::==}(b);
+  b.{self::B::==}(let final Never #t28 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:82:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_dynamic; // ok or error ?
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:83:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:83:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_int; // ok or error ?
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:84:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:84:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_string; // ok or error ?
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:85:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:85:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == d; // ok or error ?
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:87:16: Error: The argument type 'A?' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:87:16: Error: The argument type 'A?' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == a; // ok or error ?
                ^" in a as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:88:16: Error: The argument type 'B?' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:88:16: Error: The argument type 'B?' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == b; // ok or error ?
                ^" in b as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_dynamic;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_int;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_string;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} d;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t34 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:94:12: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
+  c_dynamic.{self::C::==}(c_dynamic);
+  c_dynamic.{self::C::==}(c_int);
+  c_dynamic.{self::C::==}(c_string);
+  c_dynamic.{self::C::==}(d);
+  c_int.{self::C::==}(let final Never #t34 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:94:12: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == a; // ok or error ?
            ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:95:12: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:95:12: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == b; // ok or error ?
            ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:96:12: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:96:12: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_dynamic; // ok or error ?
            ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t37 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:98:12: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(c_int);
+  c_int.{self::C::==}(let final Never #t37 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:98:12: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_string; // ok or error ?
            ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} d;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t38 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:101:15: Error: The argument type 'A?' can't be assigned to the parameter type 'C<String>?'.
+  c_int.{self::C::==}(d);
+  c_string.{self::C::==}(let final Never #t38 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:101:15: Error: The argument type 'A?' can't be assigned to the parameter type 'C<String>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == a; // ok or error ?
               ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t39 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:102:15: Error: The argument type 'B?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t39 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:102:15: Error: The argument type 'B?' can't be assigned to the parameter type 'C<String>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == b; // ok or error ?
               ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t40 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:103:15: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t40 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:103:15: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_dynamic; // ok or error ?
               ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t41 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:104:15: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t41 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:104:15: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_int; // ok or error ?
               ^" in c_int as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} c_string;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t42 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:106:15: Error: The argument type 'D?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(c_string);
+  c_string.{self::C::==}(let final Never #t42 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:106:15: Error: The argument type 'D?' can't be assigned to the parameter type 'C<String>?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == d; // ok or error ?
               ^" in d as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:108:8: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:108:8: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == a; // ok or error ?
        ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t44 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:109:8: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t44 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:109:8: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == b; // ok or error ?
        ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:110:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:110:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_dynamic; // ok or error ?
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t46 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:112:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(c_int);
+  d.{self::C::==}(let final Never #t46 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:112:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_string; // ok or error ?
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} d;
+  d.{self::C::==}(d);
 }
diff --git a/pkg/front_end/testcases/nnbd/covariant_equals.dart.weak.expect b/pkg/front_end/testcases/nnbd/covariant_equals.dart.weak.expect
index ddfe4c9..f4bf705 100644
--- a/pkg/front_end/testcases/nnbd/covariant_equals.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/covariant_equals.dart.weak.expect
@@ -297,250 +297,250 @@
 }
 static method main() → dynamic {}
 static method testNonNullable(self::A a, self::B b, self::C<dynamic> c_dynamic, self::C<core::int> c_int, self::C<core::String> c_string, self::D d) → dynamic {
-  a =={self::A::==}{(self::A) → core::bool} a;
-  a =={self::A::==}{(self::A) → core::bool} b;
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:24:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(a);
+  a.{self::A::==}(b);
+  a.{self::A::==}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:24:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_dynamic; // error
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:25:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:25:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_int; // error
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:26:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:26:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_string; // error
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:27:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:27:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == d; // error
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} a;
-  b =={self::B::==}{(self::A) → core::bool} b;
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:31:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(a);
+  b.{self::B::==}(b);
+  b.{self::B::==}(let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:31:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_dynamic; // error
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:32:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:32:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_int; // error
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:33:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:33:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_string; // error
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:34:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:34:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == d; // error
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:36:16: Error: The argument type 'A' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:36:16: Error: The argument type 'A' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == a; // error
                ^" in a as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:37:16: Error: The argument type 'B' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:37:16: Error: The argument type 'B' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == b; // error
                ^" in b as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_dynamic;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_int;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_string;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} d;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:43:12: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
+  c_dynamic.{self::C::==}(c_dynamic);
+  c_dynamic.{self::C::==}(c_int);
+  c_dynamic.{self::C::==}(c_string);
+  c_dynamic.{self::C::==}(d);
+  c_int.{self::C::==}(let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:43:12: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == a; // error
            ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:44:12: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:44:12: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == b; // error
            ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:45:12: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:45:12: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_dynamic; // error
            ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:47:12: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(c_int);
+  c_int.{self::C::==}(let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:47:12: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_string; // error
            ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} d;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:50:15: Error: The argument type 'A' can't be assigned to the parameter type 'C<String>?'.
+  c_int.{self::C::==}(d);
+  c_string.{self::C::==}(let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:50:15: Error: The argument type 'A' can't be assigned to the parameter type 'C<String>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == a; // error
               ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:51:15: Error: The argument type 'B' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:51:15: Error: The argument type 'B' can't be assigned to the parameter type 'C<String>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == b; // error
               ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:52:15: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:52:15: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_dynamic; // error
               ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:53:15: Error: The argument type 'C<int>' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:53:15: Error: The argument type 'C<int>' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_int; // error
               ^" in c_int as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} c_string;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:55:15: Error: The argument type 'D' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(c_string);
+  c_string.{self::C::==}(let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:55:15: Error: The argument type 'D' can't be assigned to the parameter type 'C<String>?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == d; // error
               ^" in d as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:57:8: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:57:8: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == a; // error
        ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:58:8: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:58:8: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == b; // error
        ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:59:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:59:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_dynamic; // error
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:61:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(c_int);
+  d.{self::C::==}(let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:61:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_string; // error
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} d;
+  d.{self::C::==}(d);
 }
 static method testNullable(self::A? a, self::B? b, self::C<dynamic>? c_dynamic, self::C<core::int>? c_int, self::C<core::String>? c_string, self::D? d) → dynamic {
-  a =={self::A::==}{(self::A) → core::bool} a;
-  a =={self::A::==}{(self::A) → core::bool} b;
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:75:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(a);
+  a.{self::A::==}(b);
+  a.{self::A::==}(let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:75:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_dynamic; // ok or error ?
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:76:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:76:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_int; // ok or error ?
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:77:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:77:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_string; // ok or error ?
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:78:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:78:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == d; // ok or error ?
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} a;
-  b =={self::B::==}{(self::A) → core::bool} b;
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t28 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:82:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(a);
+  b.{self::B::==}(b);
+  b.{self::B::==}(let final Never #t28 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:82:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_dynamic; // ok or error ?
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:83:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:83:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_int; // ok or error ?
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:84:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:84:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_string; // ok or error ?
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:85:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:85:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == d; // ok or error ?
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:87:16: Error: The argument type 'A?' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:87:16: Error: The argument type 'A?' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == a; // ok or error ?
                ^" in a as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:88:16: Error: The argument type 'B?' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:88:16: Error: The argument type 'B?' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == b; // ok or error ?
                ^" in b as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_dynamic;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_int;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_string;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} d;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t34 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:94:12: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
+  c_dynamic.{self::C::==}(c_dynamic);
+  c_dynamic.{self::C::==}(c_int);
+  c_dynamic.{self::C::==}(c_string);
+  c_dynamic.{self::C::==}(d);
+  c_int.{self::C::==}(let final Never #t34 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:94:12: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == a; // ok or error ?
            ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:95:12: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:95:12: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == b; // ok or error ?
            ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:96:12: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:96:12: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_dynamic; // ok or error ?
            ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t37 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:98:12: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(c_int);
+  c_int.{self::C::==}(let final Never #t37 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:98:12: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_string; // ok or error ?
            ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} d;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t38 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:101:15: Error: The argument type 'A?' can't be assigned to the parameter type 'C<String>?'.
+  c_int.{self::C::==}(d);
+  c_string.{self::C::==}(let final Never #t38 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:101:15: Error: The argument type 'A?' can't be assigned to the parameter type 'C<String>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == a; // ok or error ?
               ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t39 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:102:15: Error: The argument type 'B?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t39 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:102:15: Error: The argument type 'B?' can't be assigned to the parameter type 'C<String>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == b; // ok or error ?
               ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t40 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:103:15: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t40 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:103:15: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_dynamic; // ok or error ?
               ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t41 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:104:15: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t41 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:104:15: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_int; // ok or error ?
               ^" in c_int as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} c_string;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t42 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:106:15: Error: The argument type 'D?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(c_string);
+  c_string.{self::C::==}(let final Never #t42 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:106:15: Error: The argument type 'D?' can't be assigned to the parameter type 'C<String>?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == d; // ok or error ?
               ^" in d as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:108:8: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:108:8: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == a; // ok or error ?
        ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t44 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:109:8: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t44 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:109:8: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == b; // ok or error ?
        ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:110:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:110:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_dynamic; // ok or error ?
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t46 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:112:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(c_int);
+  d.{self::C::==}(let final Never #t46 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:112:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_string; // ok or error ?
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} d;
+  d.{self::C::==}(d);
 }
diff --git a/pkg/front_end/testcases/nnbd/covariant_equals.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/covariant_equals.dart.weak.transformed.expect
index ddfe4c9..f4bf705 100644
--- a/pkg/front_end/testcases/nnbd/covariant_equals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/covariant_equals.dart.weak.transformed.expect
@@ -297,250 +297,250 @@
 }
 static method main() → dynamic {}
 static method testNonNullable(self::A a, self::B b, self::C<dynamic> c_dynamic, self::C<core::int> c_int, self::C<core::String> c_string, self::D d) → dynamic {
-  a =={self::A::==}{(self::A) → core::bool} a;
-  a =={self::A::==}{(self::A) → core::bool} b;
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:24:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(a);
+  a.{self::A::==}(b);
+  a.{self::A::==}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:24:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_dynamic; // error
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:25:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:25:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_int; // error
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:26:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:26:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_string; // error
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:27:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:27:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == d; // error
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} a;
-  b =={self::B::==}{(self::A) → core::bool} b;
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:31:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(a);
+  b.{self::B::==}(b);
+  b.{self::B::==}(let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:31:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_dynamic; // error
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:32:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:32:8: Error: The argument type 'C<int>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_int; // error
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:33:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:33:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_string; // error
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:34:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:34:8: Error: The argument type 'D' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == d; // error
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:36:16: Error: The argument type 'A' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:36:16: Error: The argument type 'A' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == a; // error
                ^" in a as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:37:16: Error: The argument type 'B' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:37:16: Error: The argument type 'B' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == b; // error
                ^" in b as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_dynamic;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_int;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_string;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} d;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:43:12: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
+  c_dynamic.{self::C::==}(c_dynamic);
+  c_dynamic.{self::C::==}(c_int);
+  c_dynamic.{self::C::==}(c_string);
+  c_dynamic.{self::C::==}(d);
+  c_int.{self::C::==}(let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:43:12: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == a; // error
            ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:44:12: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:44:12: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == b; // error
            ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:45:12: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:45:12: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_dynamic; // error
            ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:47:12: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(c_int);
+  c_int.{self::C::==}(let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:47:12: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_string; // error
            ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} d;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:50:15: Error: The argument type 'A' can't be assigned to the parameter type 'C<String>?'.
+  c_int.{self::C::==}(d);
+  c_string.{self::C::==}(let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:50:15: Error: The argument type 'A' can't be assigned to the parameter type 'C<String>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == a; // error
               ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:51:15: Error: The argument type 'B' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:51:15: Error: The argument type 'B' can't be assigned to the parameter type 'C<String>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == b; // error
               ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:52:15: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:52:15: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_dynamic; // error
               ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:53:15: Error: The argument type 'C<int>' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:53:15: Error: The argument type 'C<int>' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_int; // error
               ^" in c_int as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} c_string;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:55:15: Error: The argument type 'D' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(c_string);
+  c_string.{self::C::==}(let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:55:15: Error: The argument type 'D' can't be assigned to the parameter type 'C<String>?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == d; // error
               ^" in d as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:57:8: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:57:8: Error: The argument type 'A' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == a; // error
        ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:58:8: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:58:8: Error: The argument type 'B' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == b; // error
        ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:59:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:59:8: Error: The argument type 'C<dynamic>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_dynamic; // error
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:61:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(c_int);
+  d.{self::C::==}(let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:61:8: Error: The argument type 'C<String>' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_string; // error
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} d;
+  d.{self::C::==}(d);
 }
 static method testNullable(self::A? a, self::B? b, self::C<dynamic>? c_dynamic, self::C<core::int>? c_int, self::C<core::String>? c_string, self::D? d) → dynamic {
-  a =={self::A::==}{(self::A) → core::bool} a;
-  a =={self::A::==}{(self::A) → core::bool} b;
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:75:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(a);
+  a.{self::A::==}(b);
+  a.{self::A::==}(let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:75:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_dynamic; // ok or error ?
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:76:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:76:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_int; // ok or error ?
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:77:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:77:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == c_string; // ok or error ?
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  a =={self::A::==}{(self::A) → core::bool} (let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:78:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
+  a.{self::A::==}(let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:78:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   a == d; // ok or error ?
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} a;
-  b =={self::B::==}{(self::A) → core::bool} b;
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t28 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:82:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(a);
+  b.{self::B::==}(b);
+  b.{self::B::==}(let final Never #t28 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:82:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_dynamic; // ok or error ?
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:83:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:83:8: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_int; // ok or error ?
        ^" in c_int as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:84:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:84:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'A?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == c_string; // ok or error ?
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::A?);
-  b =={self::B::==}{(self::A) → core::bool} (let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:85:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
+  b.{self::B::==}(let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:85:8: Error: The argument type 'D?' can't be assigned to the parameter type 'A?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   b == d; // ok or error ?
        ^" in d as{TypeError,ForNonNullableByDefault} self::A?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:87:16: Error: The argument type 'A?' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:87:16: Error: The argument type 'A?' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == a; // ok or error ?
                ^" in a as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} (let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:88:16: Error: The argument type 'B?' can't be assigned to the parameter type 'C<dynamic>?'.
+  c_dynamic.{self::C::==}(let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:88:16: Error: The argument type 'B?' can't be assigned to the parameter type 'C<dynamic>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_dynamic == b; // ok or error ?
                ^" in b as{TypeError,ForNonNullableByDefault} self::C<dynamic>?);
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_dynamic;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_int;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} c_string;
-  c_dynamic =={self::C::==}{(self::C<dynamic>) → core::bool} d;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t34 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:94:12: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
+  c_dynamic.{self::C::==}(c_dynamic);
+  c_dynamic.{self::C::==}(c_int);
+  c_dynamic.{self::C::==}(c_string);
+  c_dynamic.{self::C::==}(d);
+  c_int.{self::C::==}(let final Never #t34 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:94:12: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == a; // ok or error ?
            ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:95:12: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:95:12: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == b; // ok or error ?
            ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:96:12: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:96:12: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_dynamic; // ok or error ?
            ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t37 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:98:12: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
+  c_int.{self::C::==}(c_int);
+  c_int.{self::C::==}(let final Never #t37 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:98:12: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_int == c_string; // ok or error ?
            ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  c_int =={self::C::==}{(self::C<core::int>) → core::bool} d;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t38 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:101:15: Error: The argument type 'A?' can't be assigned to the parameter type 'C<String>?'.
+  c_int.{self::C::==}(d);
+  c_string.{self::C::==}(let final Never #t38 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:101:15: Error: The argument type 'A?' can't be assigned to the parameter type 'C<String>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == a; // ok or error ?
               ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t39 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:102:15: Error: The argument type 'B?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t39 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:102:15: Error: The argument type 'B?' can't be assigned to the parameter type 'C<String>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == b; // ok or error ?
               ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t40 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:103:15: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t40 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:103:15: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_dynamic; // ok or error ?
               ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t41 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:104:15: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(let final Never #t41 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:104:15: Error: The argument type 'C<int>?' can't be assigned to the parameter type 'C<String>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == c_int; // ok or error ?
               ^" in c_int as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} c_string;
-  c_string =={self::C::==}{(self::C<core::String>) → core::bool} (let final Never #t42 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:106:15: Error: The argument type 'D?' can't be assigned to the parameter type 'C<String>?'.
+  c_string.{self::C::==}(c_string);
+  c_string.{self::C::==}(let final Never #t42 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:106:15: Error: The argument type 'D?' can't be assigned to the parameter type 'C<String>?'.
  - 'D' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   c_string == d; // ok or error ?
               ^" in d as{TypeError,ForNonNullableByDefault} self::C<core::String>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:108:8: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:108:8: Error: The argument type 'A?' can't be assigned to the parameter type 'C<int>?'.
  - 'A' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == a; // ok or error ?
        ^" in a as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t44 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:109:8: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t44 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:109:8: Error: The argument type 'B?' can't be assigned to the parameter type 'C<int>?'.
  - 'B' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == b; // ok or error ?
        ^" in b as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:110:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:110:8: Error: The argument type 'C<dynamic>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_dynamic; // ok or error ?
        ^" in c_dynamic as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} c_int;
-  d =={self::C::==}{(self::C<core::int>) → core::bool} (let final Never #t46 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:112:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
+  d.{self::C::==}(c_int);
+  d.{self::C::==}(let final Never #t46 = invalid-expression "pkg/front_end/testcases/nnbd/covariant_equals.dart:112:8: Error: The argument type 'C<String>?' can't be assigned to the parameter type 'C<int>?'.
  - 'C' is from 'pkg/front_end/testcases/nnbd/covariant_equals.dart'.
   d == c_string; // ok or error ?
        ^" in c_string as{TypeError,ForNonNullableByDefault} self::C<core::int>?);
-  d =={self::C::==}{(self::C<core::int>) → core::bool} d;
+  d.{self::C::==}(d);
 }
diff --git a/pkg/front_end/testcases/nnbd/definitely_assigned.dart.strong.expect b/pkg/front_end/testcases/nnbd/definitely_assigned.dart.strong.expect
index b478d6b..b63b878 100644
--- a/pkg/front_end/testcases/nnbd/definitely_assigned.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/definitely_assigned.dart.strong.expect
@@ -107,7 +107,7 @@
   local4 = 0;
   let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_assigned.dart:88:3: Error: Late final variable 'local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^" in local4 = local4.{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4 = local4.{core::num::+}(0);
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   late final self::methodDirect::T% local2;
@@ -153,6 +153,6 @@
   local4 = 0;
   let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_assigned.dart:80:3: Error: Late final variable 'local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^" in local4 = local4.{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4 = local4.{core::num::+}(0);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/definitely_assigned.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/definitely_assigned.dart.strong.transformed.expect
index b478d6b..b63b878 100644
--- a/pkg/front_end/testcases/nnbd/definitely_assigned.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/definitely_assigned.dart.strong.transformed.expect
@@ -107,7 +107,7 @@
   local4 = 0;
   let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_assigned.dart:88:3: Error: Late final variable 'local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^" in local4 = local4.{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4 = local4.{core::num::+}(0);
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   late final self::methodDirect::T% local2;
@@ -153,6 +153,6 @@
   local4 = 0;
   let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_assigned.dart:80:3: Error: Late final variable 'local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^" in local4 = local4.{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4 = local4.{core::num::+}(0);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/definitely_assigned.dart.weak.expect b/pkg/front_end/testcases/nnbd/definitely_assigned.dart.weak.expect
index b478d6b..b63b878 100644
--- a/pkg/front_end/testcases/nnbd/definitely_assigned.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/definitely_assigned.dart.weak.expect
@@ -107,7 +107,7 @@
   local4 = 0;
   let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_assigned.dart:88:3: Error: Late final variable 'local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^" in local4 = local4.{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4 = local4.{core::num::+}(0);
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   late final self::methodDirect::T% local2;
@@ -153,6 +153,6 @@
   local4 = 0;
   let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_assigned.dart:80:3: Error: Late final variable 'local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^" in local4 = local4.{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4 = local4.{core::num::+}(0);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/definitely_assigned.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/definitely_assigned.dart.weak.transformed.expect
index b478d6b..b63b878 100644
--- a/pkg/front_end/testcases/nnbd/definitely_assigned.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/definitely_assigned.dart.weak.transformed.expect
@@ -107,7 +107,7 @@
   local4 = 0;
   let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_assigned.dart:88:3: Error: Late final variable 'local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^" in local4 = local4.{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4 = local4.{core::num::+}(0);
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   late final self::methodDirect::T% local2;
@@ -153,6 +153,6 @@
   local4 = 0;
   let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_assigned.dart:80:3: Error: Late final variable 'local4' definitely assigned.
   local4 += 0; // error
-  ^^^^^^" in local4 = local4.{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4 = local4.{core::num::+}(0);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.strong.expect b/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.strong.expect
index 50bf941..e50077d 100644
--- a/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.strong.expect
@@ -159,10 +159,10 @@
   late core::int local4;
   local3 = (let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:111:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local3).{core::num::+}(0);
   local4 = (let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:112:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in local4).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4).{core::num::+}(0);
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   self::methodDirect::T% local1;
@@ -228,9 +228,9 @@
   late core::int local4;
   local3 = (let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:103:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local3).{core::num::+}(0);
   local4 = (let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:104:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in local4).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4).{core::num::+}(0);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.strong.transformed.expect
index 8295079..e003c09 100644
--- a/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.strong.transformed.expect
@@ -163,10 +163,10 @@
   late core::int local4;
   local3 = (let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:111:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local3).{core::num::+}(0);
   local4 = (let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:112:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in local4).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4).{core::num::+}(0);
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   self::methodDirect::T% local1;
@@ -236,9 +236,9 @@
   late core::int local4;
   local3 = (let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:103:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local3).{core::num::+}(0);
   local4 = (let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:104:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in local4).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4).{core::num::+}(0);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.weak.expect b/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.weak.expect
index 50bf941..e50077d 100644
--- a/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.weak.expect
@@ -159,10 +159,10 @@
   late core::int local4;
   local3 = (let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:111:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local3).{core::num::+}(0);
   local4 = (let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:112:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in local4).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4).{core::num::+}(0);
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   self::methodDirect::T% local1;
@@ -228,9 +228,9 @@
   late core::int local4;
   local3 = (let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:103:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local3).{core::num::+}(0);
   local4 = (let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:104:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in local4).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4).{core::num::+}(0);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.weak.transformed.expect
index 8295079..e003c09 100644
--- a/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/definitely_unassigned.dart.weak.transformed.expect
@@ -163,10 +163,10 @@
   late core::int local4;
   local3 = (let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:111:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local3).{core::num::+}(0);
   local4 = (let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:112:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in local4).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4).{core::num::+}(0);
 };
 static method methodDirect<T extends core::Object? = dynamic>(self::methodDirect::T% value) → dynamic {
   self::methodDirect::T% local1;
@@ -236,9 +236,9 @@
   late core::int local4;
   local3 = (let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:103:3: Error: Non-nullable variable 'local3' must be assigned before it can be used.
   local3 += 0; // error
-  ^^^^^^" in local3).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local3).{core::num::+}(0);
   local4 = (let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned.dart:104:3: Error: Late variable 'local4' without initializer is definitely unassigned.
   local4 += 0; // error
-  ^^^^^^" in local4).{core::num::+}(0){(core::num) → core::int};
+  ^^^^^^" in local4).{core::num::+}(0);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.strong.expect b/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.strong.expect
index f47ac7f..0ba1c44 100644
--- a/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.strong.expect
@@ -24,10 +24,10 @@
     late core::int intValue;
     this.{self::A::bar}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart:15:9: Error: Late variable 'value' without initializer is definitely unassigned.
     bar(value); // Error.
-        ^^^^^" in value){(self::A::T%) → dynamic};
+        ^^^^^" in value);
     this.{self::A::barInt}(let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart:16:12: Error: Late variable 'intValue' without initializer is definitely unassigned.
     barInt(intValue); // Error.
-           ^^^^^^^^" in intValue){(core::int) → dynamic};
+           ^^^^^^^^" in intValue);
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.strong.transformed.expect
index f47ac7f..0ba1c44 100644
--- a/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.strong.transformed.expect
@@ -24,10 +24,10 @@
     late core::int intValue;
     this.{self::A::bar}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart:15:9: Error: Late variable 'value' without initializer is definitely unassigned.
     bar(value); // Error.
-        ^^^^^" in value){(self::A::T%) → dynamic};
+        ^^^^^" in value);
     this.{self::A::barInt}(let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart:16:12: Error: Late variable 'intValue' without initializer is definitely unassigned.
     barInt(intValue); // Error.
-           ^^^^^^^^" in intValue){(core::int) → dynamic};
+           ^^^^^^^^" in intValue);
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.weak.expect b/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.weak.expect
index f47ac7f..0ba1c44 100644
--- a/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.weak.expect
@@ -24,10 +24,10 @@
     late core::int intValue;
     this.{self::A::bar}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart:15:9: Error: Late variable 'value' without initializer is definitely unassigned.
     bar(value); // Error.
-        ^^^^^" in value){(self::A::T%) → dynamic};
+        ^^^^^" in value);
     this.{self::A::barInt}(let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart:16:12: Error: Late variable 'intValue' without initializer is definitely unassigned.
     barInt(intValue); // Error.
-           ^^^^^^^^" in intValue){(core::int) → dynamic};
+           ^^^^^^^^" in intValue);
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.weak.transformed.expect
index f47ac7f..0ba1c44 100644
--- a/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart.weak.transformed.expect
@@ -24,10 +24,10 @@
     late core::int intValue;
     this.{self::A::bar}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart:15:9: Error: Late variable 'value' without initializer is definitely unassigned.
     bar(value); // Error.
-        ^^^^^" in value){(self::A::T%) → dynamic};
+        ^^^^^" in value);
     this.{self::A::barInt}(let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/definitely_unassigned_late_local_variables.dart:16:12: Error: Late variable 'intValue' without initializer is definitely unassigned.
     barInt(intValue); // Error.
-           ^^^^^^^^" in intValue){(core::int) → dynamic};
+           ^^^^^^^^" in intValue);
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/demote_closure_types.dart.strong.expect b/pkg/front_end/testcases/nnbd/demote_closure_types.dart.strong.expect
index f003f8c..7210f8e 100644
--- a/pkg/front_end/testcases/nnbd/demote_closure_types.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/demote_closure_types.dart.strong.expect
@@ -14,7 +14,7 @@
     () → self::method::T% f = () → self::method::T% => a{self::method::T% & core::String /* '%' & '!' = '!' */};
     core::String s = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/demote_closure_types.dart:8:17: Error: A value of type 'T' can't be assigned to a variable of type 'String'.
     String s = f();
-                ^" in f(){() → self::method::T%} as{TypeError,ForNonNullableByDefault} core::String;
+                ^" in f.call() as{TypeError,ForNonNullableByDefault} core::String;
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/demote_closure_types.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/demote_closure_types.dart.strong.transformed.expect
index f003f8c..7210f8e 100644
--- a/pkg/front_end/testcases/nnbd/demote_closure_types.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/demote_closure_types.dart.strong.transformed.expect
@@ -14,7 +14,7 @@
     () → self::method::T% f = () → self::method::T% => a{self::method::T% & core::String /* '%' & '!' = '!' */};
     core::String s = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/demote_closure_types.dart:8:17: Error: A value of type 'T' can't be assigned to a variable of type 'String'.
     String s = f();
-                ^" in f(){() → self::method::T%} as{TypeError,ForNonNullableByDefault} core::String;
+                ^" in f.call() as{TypeError,ForNonNullableByDefault} core::String;
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/demote_closure_types.dart.weak.expect b/pkg/front_end/testcases/nnbd/demote_closure_types.dart.weak.expect
index f003f8c..7210f8e 100644
--- a/pkg/front_end/testcases/nnbd/demote_closure_types.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/demote_closure_types.dart.weak.expect
@@ -14,7 +14,7 @@
     () → self::method::T% f = () → self::method::T% => a{self::method::T% & core::String /* '%' & '!' = '!' */};
     core::String s = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/demote_closure_types.dart:8:17: Error: A value of type 'T' can't be assigned to a variable of type 'String'.
     String s = f();
-                ^" in f(){() → self::method::T%} as{TypeError,ForNonNullableByDefault} core::String;
+                ^" in f.call() as{TypeError,ForNonNullableByDefault} core::String;
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/demote_closure_types.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/demote_closure_types.dart.weak.transformed.expect
index f003f8c..7210f8e 100644
--- a/pkg/front_end/testcases/nnbd/demote_closure_types.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/demote_closure_types.dart.weak.transformed.expect
@@ -14,7 +14,7 @@
     () → self::method::T% f = () → self::method::T% => a{self::method::T% & core::String /* '%' & '!' = '!' */};
     core::String s = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/demote_closure_types.dart:8:17: Error: A value of type 'T' can't be assigned to a variable of type 'String'.
     String s = f();
-                ^" in f(){() → self::method::T%} as{TypeError,ForNonNullableByDefault} core::String;
+                ^" in f.call() as{TypeError,ForNonNullableByDefault} core::String;
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect
index 9b0aba2..383d3de 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect
@@ -258,7 +258,7 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
   (c.instanceMethod)();
-     ^^^^^^^^^^^^^^"{dynamic}.call();
+     ^^^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: The getter 'instanceGetter' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
@@ -285,7 +285,7 @@
   c.instanceDuplicateFieldAndSetter;
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
   c.{self::Class::instanceDuplicateFieldAndSetter} = 0;
-  c.{self::Class::instanceFieldAndDuplicateSetter}{core::int};
+  c.{self::Class::instanceFieldAndDuplicateSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: The setter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndDuplicateSetter'.
@@ -306,35 +306,35 @@
   self::Class c = new self::Class::•();
   c.{self::Class::instanceFieldAndSetter1} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceFieldAndSetter1}{core::int});
+  self::expect(0, c.{self::Class::instanceFieldAndSetter1});
   self::result = null;
   c.{self::Class::instanceFieldAndSetter2} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceFieldAndSetter2}{core::int});
+  self::expect(0, c.{self::Class::instanceFieldAndSetter2});
   self::result = null;
   c.{self::Class::instanceLateFinalFieldAndSetter1} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1}{core::int});
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1});
   self::result = null;
   c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter2}{core::int});
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter2});
   self::result = null;
-  self::expect(1, c.{self::Class::instanceMethodAndSetter1}(){() → core::int});
+  self::expect(1, c.{self::Class::instanceMethodAndSetter1}());
   c.{self::Class::instanceMethodAndSetter1} = 0;
   self::expect(2, self::result);
   self::result = null;
-  self::expect(1, c.{self::Class::instanceMethodAndSetter2}(){() → core::int});
+  self::expect(1, c.{self::Class::instanceMethodAndSetter2}());
   c.{self::Class::instanceMethodAndSetter2} = 0;
   self::expect(2, self::result);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect
index 9b0aba2..383d3de 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect
@@ -258,7 +258,7 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
   (c.instanceMethod)();
-     ^^^^^^^^^^^^^^"{dynamic}.call();
+     ^^^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: The getter 'instanceGetter' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
@@ -285,7 +285,7 @@
   c.instanceDuplicateFieldAndSetter;
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
   c.{self::Class::instanceDuplicateFieldAndSetter} = 0;
-  c.{self::Class::instanceFieldAndDuplicateSetter}{core::int};
+  c.{self::Class::instanceFieldAndDuplicateSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: The setter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndDuplicateSetter'.
@@ -306,35 +306,35 @@
   self::Class c = new self::Class::•();
   c.{self::Class::instanceFieldAndSetter1} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceFieldAndSetter1}{core::int});
+  self::expect(0, c.{self::Class::instanceFieldAndSetter1});
   self::result = null;
   c.{self::Class::instanceFieldAndSetter2} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceFieldAndSetter2}{core::int});
+  self::expect(0, c.{self::Class::instanceFieldAndSetter2});
   self::result = null;
   c.{self::Class::instanceLateFinalFieldAndSetter1} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1}{core::int});
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1});
   self::result = null;
   c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter2}{core::int});
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter2});
   self::result = null;
-  self::expect(1, c.{self::Class::instanceMethodAndSetter1}(){() → core::int});
+  self::expect(1, c.{self::Class::instanceMethodAndSetter1}());
   c.{self::Class::instanceMethodAndSetter1} = 0;
   self::expect(2, self::result);
   self::result = null;
-  self::expect(1, c.{self::Class::instanceMethodAndSetter2}(){() → core::int});
+  self::expect(1, c.{self::Class::instanceMethodAndSetter2}());
   c.{self::Class::instanceMethodAndSetter2} = 0;
   self::expect(2, self::result);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect
index 9b0aba2..383d3de 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect
@@ -258,7 +258,7 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
   (c.instanceMethod)();
-     ^^^^^^^^^^^^^^"{dynamic}.call();
+     ^^^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: The getter 'instanceGetter' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
@@ -285,7 +285,7 @@
   c.instanceDuplicateFieldAndSetter;
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
   c.{self::Class::instanceDuplicateFieldAndSetter} = 0;
-  c.{self::Class::instanceFieldAndDuplicateSetter}{core::int};
+  c.{self::Class::instanceFieldAndDuplicateSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: The setter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndDuplicateSetter'.
@@ -306,35 +306,35 @@
   self::Class c = new self::Class::•();
   c.{self::Class::instanceFieldAndSetter1} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceFieldAndSetter1}{core::int});
+  self::expect(0, c.{self::Class::instanceFieldAndSetter1});
   self::result = null;
   c.{self::Class::instanceFieldAndSetter2} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceFieldAndSetter2}{core::int});
+  self::expect(0, c.{self::Class::instanceFieldAndSetter2});
   self::result = null;
   c.{self::Class::instanceLateFinalFieldAndSetter1} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1}{core::int});
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1});
   self::result = null;
   c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter2}{core::int});
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter2});
   self::result = null;
-  self::expect(1, c.{self::Class::instanceMethodAndSetter1}(){() → core::int});
+  self::expect(1, c.{self::Class::instanceMethodAndSetter1}());
   c.{self::Class::instanceMethodAndSetter1} = 0;
   self::expect(2, self::result);
   self::result = null;
-  self::expect(1, c.{self::Class::instanceMethodAndSetter2}(){() → core::int});
+  self::expect(1, c.{self::Class::instanceMethodAndSetter2}());
   c.{self::Class::instanceMethodAndSetter2} = 0;
   self::expect(2, self::result);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect
index 9b0aba2..383d3de 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect
@@ -258,7 +258,7 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
   (c.instanceMethod)();
-     ^^^^^^^^^^^^^^"{dynamic}.call();
+     ^^^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: The getter 'instanceGetter' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
@@ -285,7 +285,7 @@
   c.instanceDuplicateFieldAndSetter;
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
   c.{self::Class::instanceDuplicateFieldAndSetter} = 0;
-  c.{self::Class::instanceFieldAndDuplicateSetter}{core::int};
+  c.{self::Class::instanceFieldAndDuplicateSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: The setter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndDuplicateSetter'.
@@ -306,35 +306,35 @@
   self::Class c = new self::Class::•();
   c.{self::Class::instanceFieldAndSetter1} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceFieldAndSetter1}{core::int});
+  self::expect(0, c.{self::Class::instanceFieldAndSetter1});
   self::result = null;
   c.{self::Class::instanceFieldAndSetter2} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceFieldAndSetter2}{core::int});
+  self::expect(0, c.{self::Class::instanceFieldAndSetter2});
   self::result = null;
   c.{self::Class::instanceLateFinalFieldAndSetter1} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1}{core::int});
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1});
   self::result = null;
   c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
   self::expect(null, self::result);
-  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter2}{core::int});
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter2});
   self::result = null;
-  self::expect(1, c.{self::Class::instanceMethodAndSetter1}(){() → core::int});
+  self::expect(1, c.{self::Class::instanceMethodAndSetter1}());
   c.{self::Class::instanceMethodAndSetter1} = 0;
   self::expect(2, self::result);
   self::result = null;
-  self::expect(1, c.{self::Class::instanceMethodAndSetter2}(){() → core::int});
+  self::expect(1, c.{self::Class::instanceMethodAndSetter2}());
   c.{self::Class::instanceMethodAndSetter2} = 0;
   self::expect(2, self::result);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.expect
index da11f99..6e1d27e 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.expect
@@ -332,7 +332,7 @@
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:84:6: Error: The getter 'instanceMethod' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
   (c.instanceMethod)();
-     ^^^^^^^^^^^^^^"{dynamic}.call();
+     ^^^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
   c.instanceGetter;
@@ -417,12 +417,12 @@
   self::expect(2, self::result);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.transformed.expect
index da11f99..6e1d27e 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.transformed.expect
@@ -332,7 +332,7 @@
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:84:6: Error: The getter 'instanceMethod' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
   (c.instanceMethod)();
-     ^^^^^^^^^^^^^^"{dynamic}.call();
+     ^^^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
   c.instanceGetter;
@@ -417,12 +417,12 @@
   self::expect(2, self::result);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.expect
index da11f99..6e1d27e 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.expect
@@ -332,7 +332,7 @@
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:84:6: Error: The getter 'instanceMethod' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
   (c.instanceMethod)();
-     ^^^^^^^^^^^^^^"{dynamic}.call();
+     ^^^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
   c.instanceGetter;
@@ -417,12 +417,12 @@
   self::expect(2, self::result);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.transformed.expect
index da11f99..6e1d27e 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.transformed.expect
@@ -332,7 +332,7 @@
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:84:6: Error: The getter 'instanceMethod' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
   (c.instanceMethod)();
-     ^^^^^^^^^^^^^^"{dynamic}.call();
+     ^^^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
   c.instanceGetter;
@@ -417,12 +417,12 @@
   self::expect(2, self::result);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect
index e4a1fa2..21e3973 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect
@@ -221,7 +221,7 @@
         ^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:86:10: Error: Can't use 'staticMethod' because it is declared more than once.
   (Class.staticMethod)();
-         ^^^^^^^^^^^^"{dynamic}.call();
+         ^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:87:9: Error: Can't use 'staticGetter' because it is declared more than once.
   Class.staticGetter;
         ^^^^^^^^^^^^";
@@ -278,12 +278,12 @@
   self::expect(1, self::Class::staticMethodAndSetter2());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect
index e4a1fa2..21e3973 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect
@@ -221,7 +221,7 @@
         ^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:86:10: Error: Can't use 'staticMethod' because it is declared more than once.
   (Class.staticMethod)();
-         ^^^^^^^^^^^^"{dynamic}.call();
+         ^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:87:9: Error: Can't use 'staticGetter' because it is declared more than once.
   Class.staticGetter;
         ^^^^^^^^^^^^";
@@ -278,12 +278,12 @@
   self::expect(1, self::Class::staticMethodAndSetter2());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect
index e4a1fa2..21e3973 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect
@@ -221,7 +221,7 @@
         ^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:86:10: Error: Can't use 'staticMethod' because it is declared more than once.
   (Class.staticMethod)();
-         ^^^^^^^^^^^^"{dynamic}.call();
+         ^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:87:9: Error: Can't use 'staticGetter' because it is declared more than once.
   Class.staticGetter;
         ^^^^^^^^^^^^";
@@ -278,12 +278,12 @@
   self::expect(1, self::Class::staticMethodAndSetter2());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect
index e4a1fa2..21e3973 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect
@@ -221,7 +221,7 @@
         ^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:86:10: Error: Can't use 'staticMethod' because it is declared more than once.
   (Class.staticMethod)();
-         ^^^^^^^^^^^^"{dynamic}.call();
+         ^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:87:9: Error: Can't use 'staticGetter' because it is declared more than once.
   Class.staticGetter;
         ^^^^^^^^^^^^";
@@ -278,12 +278,12 @@
   self::expect(1, self::Class::staticMethodAndSetter2());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect
index 610b486..2f9b306 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect
@@ -238,7 +238,7 @@
             ^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:86:14: Error: Can't use 'staticMethod' because it is declared more than once.
   (Extension.staticMethod)();
-             ^^^^^^^^^^^^"{dynamic}.call();
+             ^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:87:13: Error: Can't use 'staticGetter' because it is declared more than once.
   Extension.staticGetter;
             ^^^^^^^^^^^^";
@@ -295,12 +295,12 @@
   self::expect(1, self::Extension|staticMethodAndSetter2());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.transformed.expect
index 610b486..2f9b306 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.transformed.expect
@@ -238,7 +238,7 @@
             ^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:86:14: Error: Can't use 'staticMethod' because it is declared more than once.
   (Extension.staticMethod)();
-             ^^^^^^^^^^^^"{dynamic}.call();
+             ^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:87:13: Error: Can't use 'staticGetter' because it is declared more than once.
   Extension.staticGetter;
             ^^^^^^^^^^^^";
@@ -295,12 +295,12 @@
   self::expect(1, self::Extension|staticMethodAndSetter2());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect
index 610b486..2f9b306 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect
@@ -238,7 +238,7 @@
             ^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:86:14: Error: Can't use 'staticMethod' because it is declared more than once.
   (Extension.staticMethod)();
-             ^^^^^^^^^^^^"{dynamic}.call();
+             ^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:87:13: Error: Can't use 'staticGetter' because it is declared more than once.
   Extension.staticGetter;
             ^^^^^^^^^^^^";
@@ -295,12 +295,12 @@
   self::expect(1, self::Extension|staticMethodAndSetter2());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.transformed.expect
index 610b486..2f9b306 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.transformed.expect
@@ -238,7 +238,7 @@
             ^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:86:14: Error: Can't use 'staticMethod' because it is declared more than once.
   (Extension.staticMethod)();
-             ^^^^^^^^^^^^"{dynamic}.call();
+             ^^^^^^^^^^^^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:87:13: Error: Can't use 'staticGetter' because it is declared more than once.
   Extension.staticGetter;
             ^^^^^^^^^^^^";
@@ -295,12 +295,12 @@
   self::expect(1, self::Extension|staticMethodAndSetter2());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
index 4e8d072..3f6e28a 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
@@ -206,10 +206,10 @@
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
   topLevelMethod();
-  ^"{dynamic}.call();
+  ^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
   (topLevelMethod)();
-   ^"{dynamic}.call();
+   ^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
   topLevelGetter;
   ^";
@@ -266,12 +266,12 @@
   self::expect(1, self::topLevelMethodAndSetter2());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
index 4e8d072..3f6e28a 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
@@ -206,10 +206,10 @@
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
   topLevelMethod();
-  ^"{dynamic}.call();
+  ^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
   (topLevelMethod)();
-   ^"{dynamic}.call();
+   ^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
   topLevelGetter;
   ^";
@@ -266,12 +266,12 @@
   self::expect(1, self::topLevelMethodAndSetter2());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
index 4e8d072..3f6e28a 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
@@ -206,10 +206,10 @@
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
   topLevelMethod();
-  ^"{dynamic}.call();
+  ^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
   (topLevelMethod)();
-   ^"{dynamic}.call();
+   ^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
   topLevelGetter;
   ^";
@@ -266,12 +266,12 @@
   self::expect(1, self::topLevelMethodAndSetter2());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
index 4e8d072..3f6e28a 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
@@ -206,10 +206,10 @@
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
   topLevelMethod();
-  ^"{dynamic}.call();
+  ^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
   (topLevelMethod)();
-   ^"{dynamic}.call();
+   ^".call();
   invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
   topLevelGetter;
   ^";
@@ -266,12 +266,12 @@
   self::expect(1, self::topLevelMethodAndSetter2());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f) → dynamic {
   try {
-    f();
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.expect b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.expect
index db34931..e04e05f 100644
--- a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.expect
@@ -28,19 +28,19 @@
 static method main() → dynamic {}
 static method test() → dynamic {
   dynamic c = new self::Class::•();
-  core::String v1 = c.{core::Object::toString}(){() → core::String};
-  dynamic v2 = c{dynamic}.toString(foo: 42);
-  () → core::String v3 = c.{core::Object::toString}{() → core::String};
-  core::int v4 = c.{core::Object::hashCode}{core::int};
+  core::String v1 = c.{core::Object::toString}();
+  dynamic v2 = c.toString(foo: 42);
+  () → core::String v3 = c.{core::Object::toString};
+  core::int v4 = c.{core::Object::hashCode};
   dynamic v5 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:21:22: Error: 'hashCode' isn't a function or method and can't be invoked.
   var v5 = c.hashCode();
                      ^^^^...";
   dynamic v6 = c.{core::Object::noSuchMethod}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:23:27: Error: The argument type 'String' can't be assigned to the parameter type 'Invocation'.
  - 'Invocation' is from 'dart:core'.
   var v6 = c.noSuchMethod(\"foo\");
-                          ^" in "foo" as{TypeError,ForNonNullableByDefault} core::Invocation){(core::Invocation) → dynamic};
-  dynamic v7 = c{dynamic}.noSuchMethod("foo", foo: 42);
-  (core::Invocation) → dynamic v8 = c.{core::Object::noSuchMethod}{(core::Invocation) → dynamic};
+                          ^" in "foo" as{TypeError,ForNonNullableByDefault} core::Invocation);
+  dynamic v7 = c.noSuchMethod("foo", foo: 42);
+  (core::Invocation) → dynamic v8 = c.{core::Object::noSuchMethod};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.transformed.expect
index db34931..e04e05f 100644
--- a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.transformed.expect
@@ -28,19 +28,19 @@
 static method main() → dynamic {}
 static method test() → dynamic {
   dynamic c = new self::Class::•();
-  core::String v1 = c.{core::Object::toString}(){() → core::String};
-  dynamic v2 = c{dynamic}.toString(foo: 42);
-  () → core::String v3 = c.{core::Object::toString}{() → core::String};
-  core::int v4 = c.{core::Object::hashCode}{core::int};
+  core::String v1 = c.{core::Object::toString}();
+  dynamic v2 = c.toString(foo: 42);
+  () → core::String v3 = c.{core::Object::toString};
+  core::int v4 = c.{core::Object::hashCode};
   dynamic v5 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:21:22: Error: 'hashCode' isn't a function or method and can't be invoked.
   var v5 = c.hashCode();
                      ^^^^...";
   dynamic v6 = c.{core::Object::noSuchMethod}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:23:27: Error: The argument type 'String' can't be assigned to the parameter type 'Invocation'.
  - 'Invocation' is from 'dart:core'.
   var v6 = c.noSuchMethod(\"foo\");
-                          ^" in "foo" as{TypeError,ForNonNullableByDefault} core::Invocation){(core::Invocation) → dynamic};
-  dynamic v7 = c{dynamic}.noSuchMethod("foo", foo: 42);
-  (core::Invocation) → dynamic v8 = c.{core::Object::noSuchMethod}{(core::Invocation) → dynamic};
+                          ^" in "foo" as{TypeError,ForNonNullableByDefault} core::Invocation);
+  dynamic v7 = c.noSuchMethod("foo", foo: 42);
+  (core::Invocation) → dynamic v8 = c.{core::Object::noSuchMethod};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.expect b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.expect
index db34931..e04e05f 100644
--- a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.expect
@@ -28,19 +28,19 @@
 static method main() → dynamic {}
 static method test() → dynamic {
   dynamic c = new self::Class::•();
-  core::String v1 = c.{core::Object::toString}(){() → core::String};
-  dynamic v2 = c{dynamic}.toString(foo: 42);
-  () → core::String v3 = c.{core::Object::toString}{() → core::String};
-  core::int v4 = c.{core::Object::hashCode}{core::int};
+  core::String v1 = c.{core::Object::toString}();
+  dynamic v2 = c.toString(foo: 42);
+  () → core::String v3 = c.{core::Object::toString};
+  core::int v4 = c.{core::Object::hashCode};
   dynamic v5 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:21:22: Error: 'hashCode' isn't a function or method and can't be invoked.
   var v5 = c.hashCode();
                      ^^^^...";
   dynamic v6 = c.{core::Object::noSuchMethod}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:23:27: Error: The argument type 'String' can't be assigned to the parameter type 'Invocation'.
  - 'Invocation' is from 'dart:core'.
   var v6 = c.noSuchMethod(\"foo\");
-                          ^" in "foo" as{TypeError,ForNonNullableByDefault} core::Invocation){(core::Invocation) → dynamic};
-  dynamic v7 = c{dynamic}.noSuchMethod("foo", foo: 42);
-  (core::Invocation) → dynamic v8 = c.{core::Object::noSuchMethod}{(core::Invocation) → dynamic};
+                          ^" in "foo" as{TypeError,ForNonNullableByDefault} core::Invocation);
+  dynamic v7 = c.noSuchMethod("foo", foo: 42);
+  (core::Invocation) → dynamic v8 = c.{core::Object::noSuchMethod};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.transformed.expect
index db34931..e04e05f 100644
--- a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.transformed.expect
@@ -28,19 +28,19 @@
 static method main() → dynamic {}
 static method test() → dynamic {
   dynamic c = new self::Class::•();
-  core::String v1 = c.{core::Object::toString}(){() → core::String};
-  dynamic v2 = c{dynamic}.toString(foo: 42);
-  () → core::String v3 = c.{core::Object::toString}{() → core::String};
-  core::int v4 = c.{core::Object::hashCode}{core::int};
+  core::String v1 = c.{core::Object::toString}();
+  dynamic v2 = c.toString(foo: 42);
+  () → core::String v3 = c.{core::Object::toString};
+  core::int v4 = c.{core::Object::hashCode};
   dynamic v5 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:21:22: Error: 'hashCode' isn't a function or method and can't be invoked.
   var v5 = c.hashCode();
                      ^^^^...";
   dynamic v6 = c.{core::Object::noSuchMethod}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:23:27: Error: The argument type 'String' can't be assigned to the parameter type 'Invocation'.
  - 'Invocation' is from 'dart:core'.
   var v6 = c.noSuchMethod(\"foo\");
-                          ^" in "foo" as{TypeError,ForNonNullableByDefault} core::Invocation){(core::Invocation) → dynamic};
-  dynamic v7 = c{dynamic}.noSuchMethod("foo", foo: 42);
-  (core::Invocation) → dynamic v8 = c.{core::Object::noSuchMethod}{(core::Invocation) → dynamic};
+                          ^" in "foo" as{TypeError,ForNonNullableByDefault} core::Invocation);
+  dynamic v7 = c.noSuchMethod("foo", foo: 42);
+  (core::Invocation) → dynamic v8 = c.{core::Object::noSuchMethod};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/extension_never.dart.strong.expect b/pkg/front_end/testcases/nnbd/extension_never.dart.strong.expect
index 86d0862..0319a8a 100644
--- a/pkg/front_end/testcases/nnbd/extension_never.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/extension_never.dart.strong.expect
@@ -9,8 +9,8 @@
 static method Extension|get#extensionMethod(lowered final Never #this) → () → dynamic
   return () → dynamic => self::Extension|extensionMethod(#this);
 static method implicitAccess(Never never) → dynamic {
-  never{Never}.extensionMethod();
-  never{Never}.missingMethod();
+  never.extensionMethod();
+  never.missingMethod();
 }
 static method explicitAccess(Never never) → dynamic {
   self::Extension|extensionMethod(never);
diff --git a/pkg/front_end/testcases/nnbd/extension_never.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/extension_never.dart.strong.transformed.expect
index 86d0862..0319a8a 100644
--- a/pkg/front_end/testcases/nnbd/extension_never.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/extension_never.dart.strong.transformed.expect
@@ -9,8 +9,8 @@
 static method Extension|get#extensionMethod(lowered final Never #this) → () → dynamic
   return () → dynamic => self::Extension|extensionMethod(#this);
 static method implicitAccess(Never never) → dynamic {
-  never{Never}.extensionMethod();
-  never{Never}.missingMethod();
+  never.extensionMethod();
+  never.missingMethod();
 }
 static method explicitAccess(Never never) → dynamic {
   self::Extension|extensionMethod(never);
diff --git a/pkg/front_end/testcases/nnbd/extension_never.dart.weak.expect b/pkg/front_end/testcases/nnbd/extension_never.dart.weak.expect
index 16f18a0..b3068c2 100644
--- a/pkg/front_end/testcases/nnbd/extension_never.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/extension_never.dart.weak.expect
@@ -10,8 +10,8 @@
 static method Extension|get#extensionMethod(lowered final Never #this) → () → dynamic
   return () → dynamic => self::Extension|extensionMethod(#this);
 static method implicitAccess(Never never) → dynamic {
-  let final Never #t1 = (let final Never #t2 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.extensionMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t3 = (let final Never #t4 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.missingMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t1 = (let final Never #t2 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).extensionMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t3 = (let final Never #t4 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).missingMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 }
 static method explicitAccess(Never never) → dynamic {
   self::Extension|extensionMethod(let final Never #t5 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
diff --git a/pkg/front_end/testcases/nnbd/extension_never.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/extension_never.dart.weak.transformed.expect
index 16f18a0..b3068c2 100644
--- a/pkg/front_end/testcases/nnbd/extension_never.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/extension_never.dart.weak.transformed.expect
@@ -10,8 +10,8 @@
 static method Extension|get#extensionMethod(lowered final Never #this) → () → dynamic
   return () → dynamic => self::Extension|extensionMethod(#this);
 static method implicitAccess(Never never) → dynamic {
-  let final Never #t1 = (let final Never #t2 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.extensionMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t3 = (let final Never #t4 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.missingMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t1 = (let final Never #t2 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).extensionMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t3 = (let final Never #t4 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).missingMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 }
 static method explicitAccess(Never never) → dynamic {
   self::Extension|extensionMethod(let final Never #t5 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
diff --git a/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.strong.expect b/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.strong.expect
index 5390151..9eabe2c 100644
--- a/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.strong.expect
@@ -57,7 +57,7 @@
   return new self::Class::•();
 }
 static method test2<T extends self::Class>(self::test2::T t2) → dynamic {
-  if(self::test2::T =={core::Type::==}{(core::Object) → core::bool} (#C1)) {
+  if(self::test2::T.{core::Type::==}(#C1)) {
     self::SubClass subClass = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart:26:28: Error: A value of type 'T' can't be assigned to a variable of type 'SubClass'.
  - 'SubClass' is from 'pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart'.
     SubClass subClass = t2.method2();
diff --git a/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.strong.transformed.expect
index 06d884d..3d46c4f 100644
--- a/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.strong.transformed.expect
@@ -57,7 +57,7 @@
   return new self::Class::•();
 }
 static method test2<T extends self::Class>(self::test2::T t2) → dynamic {
-  if(self::test2::T =={core::Type::==}{(core::Object) → core::bool} (#C1)) {
+  if(self::test2::T.{core::Type::==}(#C1)) {
     self::SubClass subClass = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart:26:28: Error: A value of type 'T' can't be assigned to a variable of type 'SubClass'.
  - 'SubClass' is from 'pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart'.
     SubClass subClass = t2.method2();
diff --git a/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.weak.expect b/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.weak.expect
index 566b27a..b1bfc74 100644
--- a/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.weak.expect
@@ -57,7 +57,7 @@
   return new self::Class::•();
 }
 static method test2<T extends self::Class>(self::test2::T t2) → dynamic {
-  if(self::test2::T =={core::Type::==}{(core::Object) → core::bool} (#C1)) {
+  if(self::test2::T.{core::Type::==}(#C1)) {
     self::SubClass subClass = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart:26:28: Error: A value of type 'T' can't be assigned to a variable of type 'SubClass'.
  - 'SubClass' is from 'pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart'.
     SubClass subClass = t2.method2();
diff --git a/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.weak.transformed.expect
index 60b5e6c..ae9d534 100644
--- a/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart.weak.transformed.expect
@@ -57,7 +57,7 @@
   return new self::Class::•();
 }
 static method test2<T extends self::Class>(self::test2::T t2) → dynamic {
-  if(self::test2::T =={core::Type::==}{(core::Object) → core::bool} (#C1)) {
+  if(self::test2::T.{core::Type::==}(#C1)) {
     self::SubClass subClass = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart:26:28: Error: A value of type 'T' can't be assigned to a variable of type 'SubClass'.
  - 'SubClass' is from 'pkg/front_end/testcases/nnbd/extension_type_variable_bound.dart'.
     SubClass subClass = t2.method2();
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.expect
index 7c27f0b..b4d5461 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.expect
@@ -17,10 +17,10 @@
 static method main() → dynamic {
   final ffi::Pointer<self::StructInlineArrayMultiDimensional> pointer = ffi::AllocatorAlloc|call<self::StructInlineArrayMultiDimensional>(#C4);
   final self::StructInlineArrayMultiDimensional struct = ffi::StructPointer|get#ref<self::StructInlineArrayMultiDimensional>(pointer);
-  final ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> array = struct.{self::StructInlineArrayMultiDimensional::a0}{ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>>};
+  final ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> array = struct.{self::StructInlineArrayMultiDimensional::a0};
   final ffi::Array<ffi::Array<ffi::Uint8>> subArray = ffi::ArrayArray|[]<ffi::Array<ffi::Uint8>>(array, 0);
   ffi::ArrayArray|[]=<ffi::Array<ffi::Uint8>>(array, 1, subArray);
-  (#C4).{ffi::Allocator::free}(pointer){(ffi::Pointer<ffi::NativeType>) → void};
+  (#C4).{ffi::Allocator::free}(pointer);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.transformed.expect
index e7b555a..5b4a08c 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.transformed.expect
@@ -30,7 +30,7 @@
 static method main() → dynamic {
   final ffi::Pointer<self::StructInlineArrayMultiDimensional> pointer = (#C15).{ffi::Allocator::allocate}<self::StructInlineArrayMultiDimensional>(self::StructInlineArrayMultiDimensional::#sizeOf);
   final self::StructInlineArrayMultiDimensional struct = new self::StructInlineArrayMultiDimensional::#fromTypedDataBase(pointer!);
-  final ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> array = struct.{self::StructInlineArrayMultiDimensional::a0}{ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>>};
+  final ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> array = struct.{self::StructInlineArrayMultiDimensional::a0};
   final ffi::Array<ffi::Array<ffi::Uint8>> subArray = block {
     ffi::Array<dynamic> #array = array!;
     core::int #index = 0!;
@@ -50,7 +50,7 @@
     core::int #elementSize = #singleElementSize.{core::num::*}(#array.{ffi::Array::_nestedDimensionsFlattened});
     core::int #offset = #elementSize.{core::num::*}(#index);
   } =>ffi::_memCopy(#array.{ffi::Array::_typedDataBase}, #offset, subArray.{ffi::Array::_typedDataBase}, #C12, #elementSize);
-  (#C15).{ffi::Allocator::free}(pointer){(ffi::Pointer<ffi::NativeType>) → void};
+  (#C15).{ffi::Allocator::free}(pointer);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.expect
index 7831122..03a5224 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.expect
@@ -17,10 +17,10 @@
 static method main() → dynamic {
   final ffi::Pointer<self::StructInlineArrayMultiDimensional> pointer = ffi::AllocatorAlloc|call<self::StructInlineArrayMultiDimensional>(#C4);
   final self::StructInlineArrayMultiDimensional struct = ffi::StructPointer|get#ref<self::StructInlineArrayMultiDimensional>(pointer);
-  final ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> array = struct.{self::StructInlineArrayMultiDimensional::a0}{ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>>};
+  final ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> array = struct.{self::StructInlineArrayMultiDimensional::a0};
   final ffi::Array<ffi::Array<ffi::Uint8>> subArray = ffi::ArrayArray|[]<ffi::Array<ffi::Uint8>>(array, 0);
   ffi::ArrayArray|[]=<ffi::Array<ffi::Uint8>>(array, 1, subArray);
-  (#C4).{ffi::Allocator::free}(pointer){(ffi::Pointer<ffi::NativeType>) → void};
+  (#C4).{ffi::Allocator::free}(pointer);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.transformed.expect
index af2fe59..e502690 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.transformed.expect
@@ -30,7 +30,7 @@
 static method main() → dynamic {
   final ffi::Pointer<self::StructInlineArrayMultiDimensional> pointer = (#C15).{ffi::Allocator::allocate}<self::StructInlineArrayMultiDimensional>(self::StructInlineArrayMultiDimensional::#sizeOf);
   final self::StructInlineArrayMultiDimensional struct = new self::StructInlineArrayMultiDimensional::#fromTypedDataBase(pointer!);
-  final ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> array = struct.{self::StructInlineArrayMultiDimensional::a0}{ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>>};
+  final ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> array = struct.{self::StructInlineArrayMultiDimensional::a0};
   final ffi::Array<ffi::Array<ffi::Uint8>> subArray = block {
     ffi::Array<dynamic> #array = array!;
     core::int #index = 0!;
@@ -50,7 +50,7 @@
     core::int #elementSize = #singleElementSize.{core::num::*}(#array.{ffi::Array::_nestedDimensionsFlattened});
     core::int #offset = #elementSize.{core::num::*}(#index);
   } =>ffi::_memCopy(#array.{ffi::Array::_typedDataBase}, #offset, subArray.{ffi::Array::_typedDataBase}, #C12, #elementSize);
-  (#C15).{ffi::Allocator::free}(pointer){(ffi::Pointer<ffi::NativeType>) → void};
+  (#C15).{ffi::Allocator::free}(pointer);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect
index 17ad5ba..19a933b 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect
@@ -1156,10 +1156,10 @@
   duplicateTopLevelFieldAndSetter2 = duplicateTopLevelFieldAndSetter2;
                                    ^";
   self::Class c = new self::Class::•();
-  c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter}{core::int?};
-  c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter}{core::int?};
-  c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter}{core::int?};
-  c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter}{core::int?};
+  c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+  c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter};
+  c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+  c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:188:5: Error: The setter 'duplicateInstanceFieldAndStaticSetter1' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'duplicateInstanceFieldAndStaticSetter1'.
@@ -1195,11 +1195,11 @@
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:209:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
   Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter}{core::int?};
+  c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:212:47: Error: Can't assign to this.
   Class.instanceFieldAndStaticDuplicateSetter =
                                               ^";
-  c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter}{core::int?};
+  c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:217:5: Error: The setter 'duplicateStaticFieldAndInstanceSetter1' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'duplicateStaticFieldAndInstanceSetter1'.
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.transformed.expect
index 17ad5ba..19a933b 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.transformed.expect
@@ -1156,10 +1156,10 @@
   duplicateTopLevelFieldAndSetter2 = duplicateTopLevelFieldAndSetter2;
                                    ^";
   self::Class c = new self::Class::•();
-  c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter}{core::int?};
-  c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter}{core::int?};
-  c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter}{core::int?};
-  c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter}{core::int?};
+  c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+  c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter};
+  c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+  c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:188:5: Error: The setter 'duplicateInstanceFieldAndStaticSetter1' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'duplicateInstanceFieldAndStaticSetter1'.
@@ -1195,11 +1195,11 @@
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:209:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
   Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter}{core::int?};
+  c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:212:47: Error: Can't assign to this.
   Class.instanceFieldAndStaticDuplicateSetter =
                                               ^";
-  c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter}{core::int?};
+  c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:217:5: Error: The setter 'duplicateStaticFieldAndInstanceSetter1' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'duplicateStaticFieldAndInstanceSetter1'.
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect
index 17ad5ba..19a933b 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect
@@ -1156,10 +1156,10 @@
   duplicateTopLevelFieldAndSetter2 = duplicateTopLevelFieldAndSetter2;
                                    ^";
   self::Class c = new self::Class::•();
-  c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter}{core::int?};
-  c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter}{core::int?};
-  c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter}{core::int?};
-  c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter}{core::int?};
+  c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+  c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter};
+  c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+  c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:188:5: Error: The setter 'duplicateInstanceFieldAndStaticSetter1' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'duplicateInstanceFieldAndStaticSetter1'.
@@ -1195,11 +1195,11 @@
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:209:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
   Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter}{core::int?};
+  c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:212:47: Error: Can't assign to this.
   Class.instanceFieldAndStaticDuplicateSetter =
                                               ^";
-  c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter}{core::int?};
+  c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:217:5: Error: The setter 'duplicateStaticFieldAndInstanceSetter1' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'duplicateStaticFieldAndInstanceSetter1'.
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.transformed.expect
index 17ad5ba..19a933b 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.transformed.expect
@@ -1156,10 +1156,10 @@
   duplicateTopLevelFieldAndSetter2 = duplicateTopLevelFieldAndSetter2;
                                    ^";
   self::Class c = new self::Class::•();
-  c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter}{core::int?};
-  c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter}{core::int?};
-  c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter}{core::int?};
-  c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter}{core::int?};
+  c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+  c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter};
+  c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+  c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:188:5: Error: The setter 'duplicateInstanceFieldAndStaticSetter1' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'duplicateInstanceFieldAndStaticSetter1'.
@@ -1195,11 +1195,11 @@
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:209:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
   Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter}{core::int?};
+  c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:212:47: Error: Can't assign to this.
   Class.instanceFieldAndStaticDuplicateSetter =
                                               ^";
-  c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter}{core::int?};
+  c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter};
   invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:217:5: Error: The setter 'duplicateStaticFieldAndInstanceSetter1' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'duplicateStaticFieldAndInstanceSetter1'.
diff --git a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.expect b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.expect
index 73b1e1c..f39bdfbd 100644
--- a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.expect
@@ -8,11 +8,11 @@
     final self::TestMixin::R% response = await fetch;
     self::TestMixin::T% result;
     if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
-      result = response{self::TestMixin::R% & self::Response<dynamic> /* '%' & '!' = '!' */}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%;
+      result = response{self::TestMixin::R% & self::Response<dynamic> /* '%' & '!' = '!' */}.{self::Response::data} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%;
     }
     else
       if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
-        result = response{self::TestMixin::R% & self::PagingResponse<dynamic> /* '%' & '!' = '!' */}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} self::TestMixin::T%;
+        result = response{self::TestMixin::R% & self::PagingResponse<dynamic> /* '%' & '!' = '!' */}.{self::PagingResponse::data}.{self::PagingResponseData::data} as{ForNonNullableByDefault} self::TestMixin::T%;
       }
       else
         if(response is{ForNonNullableByDefault} self::TestMixin::T%) {
@@ -55,7 +55,7 @@
     ;
   method _test() → dynamic {
     final self::Response<core::String> response = new self::Response::•<core::String>("test");
-    this.{self::_Class1&Object&TestMixin::test}(asy::Future::value<self::Response<core::String>>(response)){(asy::Future<self::Response<core::String>>) → asy::Future<core::String>};
+    this.{self::_Class1&Object&TestMixin::test}(asy::Future::value<self::Response<core::String>>(response));
   }
 }
 abstract class _Class2&Object&TestMixin = core::Object with self::TestMixin<self::PagingResponse<core::String>, core::String> /*isAnonymousMixin,hasConstConstructor*/  {
@@ -71,7 +71,7 @@
     ;
   method _test() → dynamic {
     final self::PagingResponse<core::String> response = new self::PagingResponse::•<core::String>(new self::PagingResponseData::•<core::String>(<core::String>["test"]));
-    this.{self::_Class2&Object&TestMixin::test}(asy::Future::value<self::PagingResponse<core::String>>(response)){(asy::Future<self::PagingResponse<core::String>>) → asy::Future<core::String>};
+    this.{self::_Class2&Object&TestMixin::test}(asy::Future::value<self::PagingResponse<core::String>>(response));
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.transformed.expect
index 51a1889..76b3473 100644
--- a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.transformed.expect
@@ -22,11 +22,11 @@
           final self::TestMixin::R% response = _in::unsafeCast<self::TestMixin::R%>(:result);
           self::TestMixin::T% result;
           if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
-            result = response{self::TestMixin::R% & self::Response<dynamic> /* '%' & '!' = '!' */}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%;
+            result = response{self::TestMixin::R% & self::Response<dynamic> /* '%' & '!' = '!' */}.{self::Response::data} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%;
           }
           else
             if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
-              result = response{self::TestMixin::R% & self::PagingResponse<dynamic> /* '%' & '!' = '!' */}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} self::TestMixin::T%;
+              result = response{self::TestMixin::R% & self::PagingResponse<dynamic> /* '%' & '!' = '!' */}.{self::PagingResponse::data}.{self::PagingResponseData::data} as{ForNonNullableByDefault} self::TestMixin::T%;
             }
             else
               if(response is{ForNonNullableByDefault} self::TestMixin::T%) {
@@ -90,11 +90,11 @@
           final self::Response<core::String> response = _in::unsafeCast<self::Response<core::String>>(:result);
           core::String result;
           if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
-            result = response{self::Response<core::String>}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
+            result = response{self::Response<core::String>}.{self::Response::data};
           }
           else
             if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
-              result = response{self::Response<core::String>}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} core::String;
+              result = response{self::Response<core::String>}.{self::PagingResponse::data}.{self::PagingResponseData::data} as{ForNonNullableByDefault} core::String;
             }
             else
               if(response is{ForNonNullableByDefault} core::String) {
@@ -125,7 +125,7 @@
     ;
   method _test() → dynamic {
     final self::Response<core::String> response = new self::Response::•<core::String>("test");
-    this.{self::_Class1&Object&TestMixin::test}(asy::Future::value<self::Response<core::String>>(response)){(asy::Future<self::Response<core::String>>) → asy::Future<core::String>};
+    this.{self::_Class1&Object&TestMixin::test}(asy::Future::value<self::Response<core::String>>(response));
   }
 }
 abstract class _Class2&Object&TestMixin extends core::Object implements self::TestMixin<self::PagingResponse<core::String>, core::String> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
@@ -149,11 +149,11 @@
           final self::PagingResponse<core::String> response = _in::unsafeCast<self::PagingResponse<core::String>>(:result);
           core::String result;
           if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
-            result = response{self::PagingResponse<core::String>}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
+            result = response{self::PagingResponse<core::String>}.{self::Response::data} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
           }
           else
             if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
-              result = response{self::PagingResponse<core::String>}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} core::String;
+              result = response{self::PagingResponse<core::String>}.{self::PagingResponse::data}.{self::PagingResponseData::data} as{ForNonNullableByDefault} core::String;
             }
             else
               if(response is{ForNonNullableByDefault} core::String) {
@@ -184,7 +184,7 @@
     ;
   method _test() → dynamic {
     final self::PagingResponse<core::String> response = new self::PagingResponse::•<core::String>(new self::PagingResponseData::•<core::String>(core::_GrowableList::_literal1<core::String>("test")));
-    this.{self::_Class2&Object&TestMixin::test}(asy::Future::value<self::PagingResponse<core::String>>(response)){(asy::Future<self::PagingResponse<core::String>>) → asy::Future<core::String>};
+    this.{self::_Class2&Object&TestMixin::test}(asy::Future::value<self::PagingResponse<core::String>>(response));
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.expect b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.expect
index 73b1e1c..f39bdfbd 100644
--- a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.expect
@@ -8,11 +8,11 @@
     final self::TestMixin::R% response = await fetch;
     self::TestMixin::T% result;
     if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
-      result = response{self::TestMixin::R% & self::Response<dynamic> /* '%' & '!' = '!' */}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%;
+      result = response{self::TestMixin::R% & self::Response<dynamic> /* '%' & '!' = '!' */}.{self::Response::data} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%;
     }
     else
       if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
-        result = response{self::TestMixin::R% & self::PagingResponse<dynamic> /* '%' & '!' = '!' */}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} self::TestMixin::T%;
+        result = response{self::TestMixin::R% & self::PagingResponse<dynamic> /* '%' & '!' = '!' */}.{self::PagingResponse::data}.{self::PagingResponseData::data} as{ForNonNullableByDefault} self::TestMixin::T%;
       }
       else
         if(response is{ForNonNullableByDefault} self::TestMixin::T%) {
@@ -55,7 +55,7 @@
     ;
   method _test() → dynamic {
     final self::Response<core::String> response = new self::Response::•<core::String>("test");
-    this.{self::_Class1&Object&TestMixin::test}(asy::Future::value<self::Response<core::String>>(response)){(asy::Future<self::Response<core::String>>) → asy::Future<core::String>};
+    this.{self::_Class1&Object&TestMixin::test}(asy::Future::value<self::Response<core::String>>(response));
   }
 }
 abstract class _Class2&Object&TestMixin = core::Object with self::TestMixin<self::PagingResponse<core::String>, core::String> /*isAnonymousMixin,hasConstConstructor*/  {
@@ -71,7 +71,7 @@
     ;
   method _test() → dynamic {
     final self::PagingResponse<core::String> response = new self::PagingResponse::•<core::String>(new self::PagingResponseData::•<core::String>(<core::String>["test"]));
-    this.{self::_Class2&Object&TestMixin::test}(asy::Future::value<self::PagingResponse<core::String>>(response)){(asy::Future<self::PagingResponse<core::String>>) → asy::Future<core::String>};
+    this.{self::_Class2&Object&TestMixin::test}(asy::Future::value<self::PagingResponse<core::String>>(response));
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.transformed.expect
index 51a1889..76b3473 100644
--- a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.transformed.expect
@@ -22,11 +22,11 @@
           final self::TestMixin::R% response = _in::unsafeCast<self::TestMixin::R%>(:result);
           self::TestMixin::T% result;
           if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
-            result = response{self::TestMixin::R% & self::Response<dynamic> /* '%' & '!' = '!' */}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%;
+            result = response{self::TestMixin::R% & self::Response<dynamic> /* '%' & '!' = '!' */}.{self::Response::data} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%;
           }
           else
             if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
-              result = response{self::TestMixin::R% & self::PagingResponse<dynamic> /* '%' & '!' = '!' */}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} self::TestMixin::T%;
+              result = response{self::TestMixin::R% & self::PagingResponse<dynamic> /* '%' & '!' = '!' */}.{self::PagingResponse::data}.{self::PagingResponseData::data} as{ForNonNullableByDefault} self::TestMixin::T%;
             }
             else
               if(response is{ForNonNullableByDefault} self::TestMixin::T%) {
@@ -90,11 +90,11 @@
           final self::Response<core::String> response = _in::unsafeCast<self::Response<core::String>>(:result);
           core::String result;
           if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
-            result = response{self::Response<core::String>}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
+            result = response{self::Response<core::String>}.{self::Response::data};
           }
           else
             if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
-              result = response{self::Response<core::String>}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} core::String;
+              result = response{self::Response<core::String>}.{self::PagingResponse::data}.{self::PagingResponseData::data} as{ForNonNullableByDefault} core::String;
             }
             else
               if(response is{ForNonNullableByDefault} core::String) {
@@ -125,7 +125,7 @@
     ;
   method _test() → dynamic {
     final self::Response<core::String> response = new self::Response::•<core::String>("test");
-    this.{self::_Class1&Object&TestMixin::test}(asy::Future::value<self::Response<core::String>>(response)){(asy::Future<self::Response<core::String>>) → asy::Future<core::String>};
+    this.{self::_Class1&Object&TestMixin::test}(asy::Future::value<self::Response<core::String>>(response));
   }
 }
 abstract class _Class2&Object&TestMixin extends core::Object implements self::TestMixin<self::PagingResponse<core::String>, core::String> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
@@ -149,11 +149,11 @@
           final self::PagingResponse<core::String> response = _in::unsafeCast<self::PagingResponse<core::String>>(:result);
           core::String result;
           if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
-            result = response{self::PagingResponse<core::String>}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
+            result = response{self::PagingResponse<core::String>}.{self::Response::data} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
           }
           else
             if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
-              result = response{self::PagingResponse<core::String>}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} core::String;
+              result = response{self::PagingResponse<core::String>}.{self::PagingResponse::data}.{self::PagingResponseData::data} as{ForNonNullableByDefault} core::String;
             }
             else
               if(response is{ForNonNullableByDefault} core::String) {
@@ -184,7 +184,7 @@
     ;
   method _test() → dynamic {
     final self::PagingResponse<core::String> response = new self::PagingResponse::•<core::String>(new self::PagingResponseData::•<core::String>(core::_GrowableList::_literal1<core::String>("test")));
-    this.{self::_Class2&Object&TestMixin::test}(asy::Future::value<self::PagingResponse<core::String>>(response)){(asy::Future<self::PagingResponse<core::String>>) → asy::Future<core::String>};
+    this.{self::_Class2&Object&TestMixin::test}(asy::Future::value<self::PagingResponse<core::String>>(response));
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/forin.dart.strong.expect b/pkg/front_end/testcases/nnbd/forin.dart.strong.expect
index a1bd97a..d8c55ad 100644
--- a/pkg/front_end/testcases/nnbd/forin.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/forin.dart.strong.expect
@@ -63,7 +63,7 @@
  - 'Iterable' is from 'dart:core'.
   [for (int x in i2) x];
                  ^" in i2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>)
-      #t2.{core::List::add}(x){(core::int) → void};
+      #t2.{core::List::add}{Invariant}(x);
   } =>#t2;
   for (core::int x in let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:12:17: Error: The type 'List<int>?' used in the 'for' loop must implement 'Iterable<dynamic>' because 'List<int>?' is nullable and 'Iterable<dynamic>' isn't.
  - 'List' is from 'dart:core'.
@@ -78,7 +78,7 @@
  - 'Iterable' is from 'dart:core'.
   [for (int x in l2) x];
                  ^" in l2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>)
-      #t5.{core::List::add}(x){(core::int) → void};
+      #t5.{core::List::add}{Invariant}(x);
   } =>#t5;
   for (final dynamic #t7 in let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:15:17: Error: The type 'Object' used in the 'for' loop must implement 'Iterable<dynamic>'.
  - 'Object' is from 'dart:core'.
@@ -96,7 +96,7 @@
   [for (int x in o1) x];
                  ^" in o1 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>) {
       core::int x = #t10 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-      #t9.{core::List::add}(x){(core::int) → void};
+      #t9.{core::List::add}{Invariant}(x);
     }
   } =>#t9;
   for (final dynamic #t12 in let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:18:17: Error: The type 'Object?' used in the 'for' loop must implement 'Iterable<dynamic>'.
@@ -115,7 +115,7 @@
   [for (int x in o2) x];
                  ^" in o2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>) {
       core::int x = #t15 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-      #t14.{core::List::add}(x){(core::int) → void};
+      #t14.{core::List::add}{Invariant}(x);
     }
   } =>#t14;
 }
@@ -125,14 +125,14 @@
   block {
     final core::List<core::int> #t17 = <core::int>[];
     for (core::int x in i1)
-      #t17.{core::List::add}(x){(core::int) → void};
+      #t17.{core::List::add}{Invariant}(x);
   } =>#t17;
   for (core::int x in l1)
     x;
   block {
     final core::List<core::int> #t18 = <core::int>[];
     for (core::int x in l1)
-      #t18.{core::List::add}(x){(core::int) → void};
+      #t18.{core::List::add}{Invariant}(x);
   } =>#t18;
   for (final dynamic #t19 in d as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
     core::int x = #t19 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
@@ -142,7 +142,7 @@
     final core::List<core::int> #t20 = <core::int>[];
     for (final dynamic #t21 in d as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       core::int x = #t21 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-      #t20.{core::List::add}(x){(core::int) → void};
+      #t20.{core::List::add}{Invariant}(x);
     }
   } =>#t20;
 }
diff --git a/pkg/front_end/testcases/nnbd/forin.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/forin.dart.strong.transformed.expect
index 06dc1da..8fdee86 100644
--- a/pkg/front_end/testcases/nnbd/forin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/forin.dart.strong.transformed.expect
@@ -71,7 +71,7 @@
                  ^" in let core::Iterable<core::int>? #t5 = i2 in #t5.==(null) ?{core::Iterable<dynamic>} #t5 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic> : #t5{core::Iterable<dynamic>}).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int x = :sync-for-iterator.{core::Iterator::current};
-        #t3.{core::List::add}(x){(core::int) → void};
+        #t3.{core::List::add}{Invariant}(x);
       }
     }
   } =>#t3;
@@ -96,7 +96,7 @@
                  ^" in let core::List<core::int>? #t10 = l2 in #t10.==(null) ?{core::Iterable<dynamic>} #t10 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic> : #t10{core::Iterable<dynamic>}).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int x = :sync-for-iterator.{core::Iterator::current};
-        #t8.{core::List::add}(x){(core::int) → void};
+        #t8.{core::List::add}{Invariant}(x);
       }
     }
   } =>#t8;
@@ -126,7 +126,7 @@
         final dynamic #t15 = :sync-for-iterator.{core::Iterator::current};
         {
           core::int x = #t15 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-          #t13.{core::List::add}(x){(core::int) → void};
+          #t13.{core::List::add}{Invariant}(x);
         }
       }
     }
@@ -157,7 +157,7 @@
         final dynamic #t20 = :sync-for-iterator.{core::Iterator::current};
         {
           core::int x = #t20 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-          #t18.{core::List::add}(x){(core::int) → void};
+          #t18.{core::List::add}{Invariant}(x);
         }
       }
     }
@@ -177,7 +177,7 @@
       core::Iterator<core::int> :sync-for-iterator = i1.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int x = :sync-for-iterator.{core::Iterator::current};
-        #t21.{core::List::add}(x){(core::int) → void};
+        #t21.{core::List::add}{Invariant}(x);
       }
     }
   } =>#t21;
@@ -194,7 +194,7 @@
       core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int x = :sync-for-iterator.{core::Iterator::current};
-        #t22.{core::List::add}(x){(core::int) → void};
+        #t22.{core::List::add}{Invariant}(x);
       }
     }
   } =>#t22;
@@ -216,7 +216,7 @@
         final dynamic #t25 = :sync-for-iterator.{core::Iterator::current};
         {
           core::int x = #t25 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-          #t24.{core::List::add}(x){(core::int) → void};
+          #t24.{core::List::add}{Invariant}(x);
         }
       }
     }
diff --git a/pkg/front_end/testcases/nnbd/forin.dart.weak.expect b/pkg/front_end/testcases/nnbd/forin.dart.weak.expect
index a1bd97a..d8c55ad 100644
--- a/pkg/front_end/testcases/nnbd/forin.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/forin.dart.weak.expect
@@ -63,7 +63,7 @@
  - 'Iterable' is from 'dart:core'.
   [for (int x in i2) x];
                  ^" in i2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>)
-      #t2.{core::List::add}(x){(core::int) → void};
+      #t2.{core::List::add}{Invariant}(x);
   } =>#t2;
   for (core::int x in let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:12:17: Error: The type 'List<int>?' used in the 'for' loop must implement 'Iterable<dynamic>' because 'List<int>?' is nullable and 'Iterable<dynamic>' isn't.
  - 'List' is from 'dart:core'.
@@ -78,7 +78,7 @@
  - 'Iterable' is from 'dart:core'.
   [for (int x in l2) x];
                  ^" in l2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>)
-      #t5.{core::List::add}(x){(core::int) → void};
+      #t5.{core::List::add}{Invariant}(x);
   } =>#t5;
   for (final dynamic #t7 in let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:15:17: Error: The type 'Object' used in the 'for' loop must implement 'Iterable<dynamic>'.
  - 'Object' is from 'dart:core'.
@@ -96,7 +96,7 @@
   [for (int x in o1) x];
                  ^" in o1 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>) {
       core::int x = #t10 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-      #t9.{core::List::add}(x){(core::int) → void};
+      #t9.{core::List::add}{Invariant}(x);
     }
   } =>#t9;
   for (final dynamic #t12 in let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:18:17: Error: The type 'Object?' used in the 'for' loop must implement 'Iterable<dynamic>'.
@@ -115,7 +115,7 @@
   [for (int x in o2) x];
                  ^" in o2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>) {
       core::int x = #t15 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-      #t14.{core::List::add}(x){(core::int) → void};
+      #t14.{core::List::add}{Invariant}(x);
     }
   } =>#t14;
 }
@@ -125,14 +125,14 @@
   block {
     final core::List<core::int> #t17 = <core::int>[];
     for (core::int x in i1)
-      #t17.{core::List::add}(x){(core::int) → void};
+      #t17.{core::List::add}{Invariant}(x);
   } =>#t17;
   for (core::int x in l1)
     x;
   block {
     final core::List<core::int> #t18 = <core::int>[];
     for (core::int x in l1)
-      #t18.{core::List::add}(x){(core::int) → void};
+      #t18.{core::List::add}{Invariant}(x);
   } =>#t18;
   for (final dynamic #t19 in d as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
     core::int x = #t19 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
@@ -142,7 +142,7 @@
     final core::List<core::int> #t20 = <core::int>[];
     for (final dynamic #t21 in d as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       core::int x = #t21 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-      #t20.{core::List::add}(x){(core::int) → void};
+      #t20.{core::List::add}{Invariant}(x);
     }
   } =>#t20;
 }
diff --git a/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect
index 1d91444..ed9bb5e 100644
--- a/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect
@@ -71,7 +71,7 @@
                  ^" in i2).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int x = :sync-for-iterator.{core::Iterator::current};
-        #t2.{core::List::add}(x){(core::int) → void};
+        #t2.{core::List::add}{Invariant}(x);
       }
     }
   } =>#t2;
@@ -96,7 +96,7 @@
                  ^" in l2).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int x = :sync-for-iterator.{core::Iterator::current};
-        #t5.{core::List::add}(x){(core::int) → void};
+        #t5.{core::List::add}{Invariant}(x);
       }
     }
   } =>#t5;
@@ -126,7 +126,7 @@
         final dynamic #t11 = :sync-for-iterator.{core::Iterator::current};
         {
           core::int x = #t11 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-          #t9.{core::List::add}(x){(core::int) → void};
+          #t9.{core::List::add}{Invariant}(x);
         }
       }
     }
@@ -157,7 +157,7 @@
         final dynamic #t16 = :sync-for-iterator.{core::Iterator::current};
         {
           core::int x = #t16 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-          #t14.{core::List::add}(x){(core::int) → void};
+          #t14.{core::List::add}{Invariant}(x);
         }
       }
     }
@@ -177,7 +177,7 @@
       core::Iterator<core::int> :sync-for-iterator = i1.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int x = :sync-for-iterator.{core::Iterator::current};
-        #t17.{core::List::add}(x){(core::int) → void};
+        #t17.{core::List::add}{Invariant}(x);
       }
     }
   } =>#t17;
@@ -194,7 +194,7 @@
       core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int x = :sync-for-iterator.{core::Iterator::current};
-        #t18.{core::List::add}(x){(core::int) → void};
+        #t18.{core::List::add}{Invariant}(x);
       }
     }
   } =>#t18;
@@ -216,7 +216,7 @@
         final dynamic #t21 = :sync-for-iterator.{core::Iterator::current};
         {
           core::int x = #t21 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-          #t20.{core::List::add}(x){(core::int) → void};
+          #t20.{core::List::add}{Invariant}(x);
         }
       }
     }
diff --git a/pkg/front_end/testcases/nnbd/infer_if_null.dart.strong.expect b/pkg/front_end/testcases/nnbd/infer_if_null.dart.strong.expect
index fe4267a..65650a7 100644
--- a/pkg/front_end/testcases/nnbd/infer_if_null.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/infer_if_null.dart.strong.expect
@@ -21,7 +21,7 @@
     : super self::A5::•()
     ;
   method test5() → dynamic {
-    core::String s = let final core::int #t1 = 0 in let final core::String? #t2 = super.{self::A5::[]}(#t1) in #t2 == null ?{core::String} let final core::String #t3 = "bar" in let final void #t4 = super.{self::A5::[]=}(#t1, #t3) in #t3 : #t2{core::String};
+    core::String s = let final core::int #t1 = 0 in let final core::String? #t2 = super.{self::A5::[]}(#t1) in #t2.{core::String::==}(null) ?{core::String} let final core::String #t3 = "bar" in let final void #t4 = super.{self::A5::[]=}(#t1, #t3) in #t3 : #t2{core::String};
   }
 }
 class A7 extends core::Object {
@@ -42,28 +42,28 @@
     return null;
   function bar() → core::String
     return "bar";
-  core::String s = let final core::String? #t5 = foo(){() → core::String?} in #t5 == null ?{core::String} bar(){() → core::String} : #t5{core::String};
-  core::String s2 = let final core::String? #t6 = self::hest1<core::String?>() in #t6 == null ?{core::String} "fisk" : #t6{core::String};
+  core::String s = let final core::String? #t5 = foo.call() in #t5.{core::String::==}(null) ?{core::String} bar.call() : #t5{core::String};
+  core::String s2 = let final core::String? #t6 = self::hest1<core::String?>() in #t6.{core::String::==}(null) ?{core::String} "fisk" : #t6{core::String};
 }
 static method test2(self::A2 a) → dynamic {
-  core::String s = let final self::A2 #t7 = a in let final core::String? #t8 = #t7.{self::A2::foo}{core::String?} in #t8 == null ?{core::String} #t7.{self::A2::foo} = "bar" : #t8{core::String};
+  core::String s = let final self::A2 #t7 = a in let final core::String? #t8 = #t7.{self::A2::foo} in #t8.{core::String::==}(null) ?{core::String} #t7.{self::A2::foo} = "bar" : #t8{core::String};
 }
 static method test3() → dynamic {
   core::String? s = null;
-  core::String s2 = let final core::String? #t9 = s in #t9 == null ?{core::String} s = "bar" : #t9{core::String};
+  core::String s2 = let final core::String? #t9 = s in #t9.{core::String::==}(null) ?{core::String} s = "bar" : #t9{core::String};
 }
 static method test4() → dynamic {
   core::List<core::String?> list = <core::String?>[null];
-  core::String s = let final core::List<core::String?> #t10 = list in let final core::int #t11 = 0 in let final core::String? #t12 = #t10.{core::List::[]}(#t11){(core::int) → core::String?} in #t12 == null ?{core::String} let final core::String #t13 = "bar" in let final void #t14 = #t10.{core::List::[]=}(#t11, #t13){(core::int, core::String?) → void} in #t13 : #t12{core::String};
+  core::String s = let final core::List<core::String?> #t10 = list in let final core::int #t11 = 0 in let final core::String? #t12 = #t10.{core::List::[]}(#t11) in #t12.{core::String::==}(null) ?{core::String} let final core::String #t13 = "bar" in let final void #t14 = #t10.{core::List::[]=}(#t11, #t13) in #t13 : #t12{core::String};
 }
 static method E6|[]=(lowered final core::double #this, core::int index, core::String? value) → void {}
 static method E6|[](lowered final core::double #this, core::int index) → core::String?
   return null;
 static method test6() → dynamic {
-  core::String s = let final core::double #t15 = 3.14 in let final core::int #t16 = 0 in let final core::String? #t17 = self::E6|[](#t15, #t16) in #t17 == null ?{core::String} let final core::String #t18 = "bar" in let final void #t19 = self::E6|[]=(#t15, #t16, #t18) in #t18 : #t17{core::String};
+  core::String s = let final core::double #t15 = 3.14 in let final core::int #t16 = 0 in let final core::String? #t17 = self::E6|[](#t15, #t16) in #t17.{core::String::==}(null) ?{core::String} let final core::String #t18 = "bar" in let final void #t19 = self::E6|[]=(#t15, #t16, #t18) in #t18 : #t17{core::String};
 }
 static method test7(self::A7? a) → dynamic {
-  core::String? s = let final self::A7? #t20 = a in #t20 == null ?{core::String?} null : let final core::String #t21 = #t20.{self::A7::foo}{core::String} in #t21 == null ?{core::String} #t20.{self::A7::foo} = "bar" : #t21;
-  core::String? s2 = let final self::A7? #t22 = a in #t22 == null ?{core::String?} null : let final core::String? #t23 = #t22.{self::A7::bar}{core::String?} in #t23 == null ?{core::String} #t22.{self::A7::bar} = "bar" : #t23{core::String};
+  core::String? s = let final self::A7? #t20 = a in #t20.{core::Object::==}(null) ?{core::String?} null : let final core::String #t21 = #t20.{self::A7::foo} in #t21.{core::String::==}(null) ?{core::String} #t20.{self::A7::foo} = "bar" : #t21;
+  core::String? s2 = let final self::A7? #t22 = a in #t22.{core::Object::==}(null) ?{core::String?} null : let final core::String? #t23 = #t22.{self::A7::bar} in #t23.{core::String::==}(null) ?{core::String} #t22.{self::A7::bar} = "bar" : #t23{core::String};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/infer_if_null.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/infer_if_null.dart.strong.transformed.expect
index bdfc626..91b9c97 100644
--- a/pkg/front_end/testcases/nnbd/infer_if_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/infer_if_null.dart.strong.transformed.expect
@@ -21,7 +21,7 @@
     : super self::A5::•()
     ;
   method test5() → dynamic {
-    core::String s = let final core::int #t1 = 0 in let final core::String? #t2 = super.{self::A5::[]}(#t1) in #t2 == null ?{core::String} let final core::String #t3 = "bar" in let final void #t4 = super.{self::A5::[]=}(#t1, #t3) in #t3 : #t2{core::String};
+    core::String s = let final core::int #t1 = 0 in let final core::String? #t2 = super.{self::A5::[]}(#t1) in #t2.{core::String::==}(null) ?{core::String} let final core::String #t3 = "bar" in let final void #t4 = super.{self::A5::[]=}(#t1, #t3) in #t3 : #t2{core::String};
   }
 }
 class A7 extends core::Object {
@@ -42,29 +42,29 @@
     return null;
   function bar() → core::String
     return "bar";
-  core::String s = let final core::String? #t5 = foo(){() → core::String?} in #t5 == null ?{core::String} bar(){() → core::String} : #t5{core::String};
-  core::String s2 = let final core::String? #t6 = self::hest1<core::String?>() in #t6 == null ?{core::String} "fisk" : #t6{core::String};
+  core::String s = let final core::String? #t5 = foo.call() in #t5.{core::String::==}(null) ?{core::String} bar.call() : #t5{core::String};
+  core::String s2 = let final core::String? #t6 = self::hest1<core::String?>() in #t6.{core::String::==}(null) ?{core::String} "fisk" : #t6{core::String};
 }
 static method test2(self::A2 a) → dynamic {
-  core::String s = let final self::A2 #t7 = a in let final core::String? #t8 = #t7.{self::A2::foo}{core::String?} in #t8 == null ?{core::String} #t7.{self::A2::foo} = "bar" : #t8{core::String};
+  core::String s = let final self::A2 #t7 = a in let final core::String? #t8 = #t7.{self::A2::foo} in #t8.{core::String::==}(null) ?{core::String} #t7.{self::A2::foo} = "bar" : #t8{core::String};
 }
 static method test3() → dynamic {
   core::String? s = null;
-  core::String s2 = let final core::String? #t9 = s in #t9 == null ?{core::String} s = "bar" : #t9{core::String};
+  core::String s2 = let final core::String? #t9 = s in #t9.{core::String::==}(null) ?{core::String} s = "bar" : #t9{core::String};
 }
 static method test4() → dynamic {
   core::List<core::String?> list = core::_GrowableList::_literal1<core::String?>(null);
-  core::String s = let final core::List<core::String?> #t10 = list in let final core::int #t11 = 0 in let final core::String? #t12 = #t10.{core::List::[]}(#t11){(core::int) → core::String?} in #t12 == null ?{core::String} let final core::String #t13 = "bar" in let final void #t14 = #t10.{core::List::[]=}(#t11, #t13){(core::int, core::String?) → void} in #t13 : #t12{core::String};
+  core::String s = let final core::List<core::String?> #t10 = list in let final core::int #t11 = 0 in let final core::String? #t12 = #t10.{core::List::[]}(#t11) in #t12.{core::String::==}(null) ?{core::String} let final core::String #t13 = "bar" in let final void #t14 = #t10.{core::List::[]=}(#t11, #t13) in #t13 : #t12{core::String};
 }
 static method E6|[]=(lowered final core::double #this, core::int index, core::String? value) → void {}
 static method E6|[](lowered final core::double #this, core::int index) → core::String?
   return null;
 static method test6() → dynamic {
-  core::String s = let final core::double #t15 = 3.14 in let final core::int #t16 = 0 in let final core::String? #t17 = self::E6|[](#t15, #t16) in #t17 == null ?{core::String} let final core::String #t18 = "bar" in let final void #t19 = self::E6|[]=(#t15, #t16, #t18) in #t18 : #t17{core::String};
+  core::String s = let final core::double #t15 = 3.14 in let final core::int #t16 = 0 in let final core::String? #t17 = self::E6|[](#t15, #t16) in #t17.{core::String::==}(null) ?{core::String} let final core::String #t18 = "bar" in let final void #t19 = self::E6|[]=(#t15, #t16, #t18) in #t18 : #t17{core::String};
 }
 static method test7(self::A7? a) → dynamic {
-  core::String? s = let final self::A7? #t20 = a in #t20 == null ?{core::String?} null : let final core::String #t21 = #t20.{self::A7::foo}{core::String} in #t21 == null ?{core::String} #t20.{self::A7::foo} = "bar" : #t21;
-  core::String? s2 = let final self::A7? #t22 = a in #t22 == null ?{core::String?} null : let final core::String? #t23 = #t22.{self::A7::bar}{core::String?} in #t23 == null ?{core::String} #t22.{self::A7::bar} = "bar" : #t23{core::String};
+  core::String? s = let final self::A7? #t20 = a in #t20.{core::Object::==}(null) ?{core::String?} null : let final core::String #t21 = #t20.{self::A7::foo} in #t21.{core::String::==}(null) ?{core::String} #t20.{self::A7::foo} = "bar" : #t21;
+  core::String? s2 = let final self::A7? #t22 = a in #t22.{core::Object::==}(null) ?{core::String?} null : let final core::String? #t23 = #t22.{self::A7::bar} in #t23.{core::String::==}(null) ?{core::String} #t22.{self::A7::bar} = "bar" : #t23{core::String};
 }
 static method main() → dynamic {}
 
@@ -84,4 +84,4 @@
 Evaluated: VariableGet @ org-dartlang-testcase:///infer_if_null.dart:60:21 -> IntConstant(0)
 Evaluated: VariableGet @ org-dartlang-testcase:///infer_if_null.dart:60:28 -> StringConstant("bar")
 Evaluated: VariableGet @ org-dartlang-testcase:///infer_if_null.dart:60:28 -> StringConstant("bar")
-Extra constant evaluation: evaluated: 110, effectively constant: 14
+Extra constant evaluation: evaluated: 112, effectively constant: 14
diff --git a/pkg/front_end/testcases/nnbd/infer_if_null.dart.weak.expect b/pkg/front_end/testcases/nnbd/infer_if_null.dart.weak.expect
index fe4267a..65650a7 100644
--- a/pkg/front_end/testcases/nnbd/infer_if_null.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/infer_if_null.dart.weak.expect
@@ -21,7 +21,7 @@
     : super self::A5::•()
     ;
   method test5() → dynamic {
-    core::String s = let final core::int #t1 = 0 in let final core::String? #t2 = super.{self::A5::[]}(#t1) in #t2 == null ?{core::String} let final core::String #t3 = "bar" in let final void #t4 = super.{self::A5::[]=}(#t1, #t3) in #t3 : #t2{core::String};
+    core::String s = let final core::int #t1 = 0 in let final core::String? #t2 = super.{self::A5::[]}(#t1) in #t2.{core::String::==}(null) ?{core::String} let final core::String #t3 = "bar" in let final void #t4 = super.{self::A5::[]=}(#t1, #t3) in #t3 : #t2{core::String};
   }
 }
 class A7 extends core::Object {
@@ -42,28 +42,28 @@
     return null;
   function bar() → core::String
     return "bar";
-  core::String s = let final core::String? #t5 = foo(){() → core::String?} in #t5 == null ?{core::String} bar(){() → core::String} : #t5{core::String};
-  core::String s2 = let final core::String? #t6 = self::hest1<core::String?>() in #t6 == null ?{core::String} "fisk" : #t6{core::String};
+  core::String s = let final core::String? #t5 = foo.call() in #t5.{core::String::==}(null) ?{core::String} bar.call() : #t5{core::String};
+  core::String s2 = let final core::String? #t6 = self::hest1<core::String?>() in #t6.{core::String::==}(null) ?{core::String} "fisk" : #t6{core::String};
 }
 static method test2(self::A2 a) → dynamic {
-  core::String s = let final self::A2 #t7 = a in let final core::String? #t8 = #t7.{self::A2::foo}{core::String?} in #t8 == null ?{core::String} #t7.{self::A2::foo} = "bar" : #t8{core::String};
+  core::String s = let final self::A2 #t7 = a in let final core::String? #t8 = #t7.{self::A2::foo} in #t8.{core::String::==}(null) ?{core::String} #t7.{self::A2::foo} = "bar" : #t8{core::String};
 }
 static method test3() → dynamic {
   core::String? s = null;
-  core::String s2 = let final core::String? #t9 = s in #t9 == null ?{core::String} s = "bar" : #t9{core::String};
+  core::String s2 = let final core::String? #t9 = s in #t9.{core::String::==}(null) ?{core::String} s = "bar" : #t9{core::String};
 }
 static method test4() → dynamic {
   core::List<core::String?> list = <core::String?>[null];
-  core::String s = let final core::List<core::String?> #t10 = list in let final core::int #t11 = 0 in let final core::String? #t12 = #t10.{core::List::[]}(#t11){(core::int) → core::String?} in #t12 == null ?{core::String} let final core::String #t13 = "bar" in let final void #t14 = #t10.{core::List::[]=}(#t11, #t13){(core::int, core::String?) → void} in #t13 : #t12{core::String};
+  core::String s = let final core::List<core::String?> #t10 = list in let final core::int #t11 = 0 in let final core::String? #t12 = #t10.{core::List::[]}(#t11) in #t12.{core::String::==}(null) ?{core::String} let final core::String #t13 = "bar" in let final void #t14 = #t10.{core::List::[]=}(#t11, #t13) in #t13 : #t12{core::String};
 }
 static method E6|[]=(lowered final core::double #this, core::int index, core::String? value) → void {}
 static method E6|[](lowered final core::double #this, core::int index) → core::String?
   return null;
 static method test6() → dynamic {
-  core::String s = let final core::double #t15 = 3.14 in let final core::int #t16 = 0 in let final core::String? #t17 = self::E6|[](#t15, #t16) in #t17 == null ?{core::String} let final core::String #t18 = "bar" in let final void #t19 = self::E6|[]=(#t15, #t16, #t18) in #t18 : #t17{core::String};
+  core::String s = let final core::double #t15 = 3.14 in let final core::int #t16 = 0 in let final core::String? #t17 = self::E6|[](#t15, #t16) in #t17.{core::String::==}(null) ?{core::String} let final core::String #t18 = "bar" in let final void #t19 = self::E6|[]=(#t15, #t16, #t18) in #t18 : #t17{core::String};
 }
 static method test7(self::A7? a) → dynamic {
-  core::String? s = let final self::A7? #t20 = a in #t20 == null ?{core::String?} null : let final core::String #t21 = #t20.{self::A7::foo}{core::String} in #t21 == null ?{core::String} #t20.{self::A7::foo} = "bar" : #t21;
-  core::String? s2 = let final self::A7? #t22 = a in #t22 == null ?{core::String?} null : let final core::String? #t23 = #t22.{self::A7::bar}{core::String?} in #t23 == null ?{core::String} #t22.{self::A7::bar} = "bar" : #t23{core::String};
+  core::String? s = let final self::A7? #t20 = a in #t20.{core::Object::==}(null) ?{core::String?} null : let final core::String #t21 = #t20.{self::A7::foo} in #t21.{core::String::==}(null) ?{core::String} #t20.{self::A7::foo} = "bar" : #t21;
+  core::String? s2 = let final self::A7? #t22 = a in #t22.{core::Object::==}(null) ?{core::String?} null : let final core::String? #t23 = #t22.{self::A7::bar} in #t23.{core::String::==}(null) ?{core::String} #t22.{self::A7::bar} = "bar" : #t23{core::String};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/infer_if_null.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/infer_if_null.dart.weak.transformed.expect
index bdfc626..91b9c97 100644
--- a/pkg/front_end/testcases/nnbd/infer_if_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/infer_if_null.dart.weak.transformed.expect
@@ -21,7 +21,7 @@
     : super self::A5::•()
     ;
   method test5() → dynamic {
-    core::String s = let final core::int #t1 = 0 in let final core::String? #t2 = super.{self::A5::[]}(#t1) in #t2 == null ?{core::String} let final core::String #t3 = "bar" in let final void #t4 = super.{self::A5::[]=}(#t1, #t3) in #t3 : #t2{core::String};
+    core::String s = let final core::int #t1 = 0 in let final core::String? #t2 = super.{self::A5::[]}(#t1) in #t2.{core::String::==}(null) ?{core::String} let final core::String #t3 = "bar" in let final void #t4 = super.{self::A5::[]=}(#t1, #t3) in #t3 : #t2{core::String};
   }
 }
 class A7 extends core::Object {
@@ -42,29 +42,29 @@
     return null;
   function bar() → core::String
     return "bar";
-  core::String s = let final core::String? #t5 = foo(){() → core::String?} in #t5 == null ?{core::String} bar(){() → core::String} : #t5{core::String};
-  core::String s2 = let final core::String? #t6 = self::hest1<core::String?>() in #t6 == null ?{core::String} "fisk" : #t6{core::String};
+  core::String s = let final core::String? #t5 = foo.call() in #t5.{core::String::==}(null) ?{core::String} bar.call() : #t5{core::String};
+  core::String s2 = let final core::String? #t6 = self::hest1<core::String?>() in #t6.{core::String::==}(null) ?{core::String} "fisk" : #t6{core::String};
 }
 static method test2(self::A2 a) → dynamic {
-  core::String s = let final self::A2 #t7 = a in let final core::String? #t8 = #t7.{self::A2::foo}{core::String?} in #t8 == null ?{core::String} #t7.{self::A2::foo} = "bar" : #t8{core::String};
+  core::String s = let final self::A2 #t7 = a in let final core::String? #t8 = #t7.{self::A2::foo} in #t8.{core::String::==}(null) ?{core::String} #t7.{self::A2::foo} = "bar" : #t8{core::String};
 }
 static method test3() → dynamic {
   core::String? s = null;
-  core::String s2 = let final core::String? #t9 = s in #t9 == null ?{core::String} s = "bar" : #t9{core::String};
+  core::String s2 = let final core::String? #t9 = s in #t9.{core::String::==}(null) ?{core::String} s = "bar" : #t9{core::String};
 }
 static method test4() → dynamic {
   core::List<core::String?> list = core::_GrowableList::_literal1<core::String?>(null);
-  core::String s = let final core::List<core::String?> #t10 = list in let final core::int #t11 = 0 in let final core::String? #t12 = #t10.{core::List::[]}(#t11){(core::int) → core::String?} in #t12 == null ?{core::String} let final core::String #t13 = "bar" in let final void #t14 = #t10.{core::List::[]=}(#t11, #t13){(core::int, core::String?) → void} in #t13 : #t12{core::String};
+  core::String s = let final core::List<core::String?> #t10 = list in let final core::int #t11 = 0 in let final core::String? #t12 = #t10.{core::List::[]}(#t11) in #t12.{core::String::==}(null) ?{core::String} let final core::String #t13 = "bar" in let final void #t14 = #t10.{core::List::[]=}(#t11, #t13) in #t13 : #t12{core::String};
 }
 static method E6|[]=(lowered final core::double #this, core::int index, core::String? value) → void {}
 static method E6|[](lowered final core::double #this, core::int index) → core::String?
   return null;
 static method test6() → dynamic {
-  core::String s = let final core::double #t15 = 3.14 in let final core::int #t16 = 0 in let final core::String? #t17 = self::E6|[](#t15, #t16) in #t17 == null ?{core::String} let final core::String #t18 = "bar" in let final void #t19 = self::E6|[]=(#t15, #t16, #t18) in #t18 : #t17{core::String};
+  core::String s = let final core::double #t15 = 3.14 in let final core::int #t16 = 0 in let final core::String? #t17 = self::E6|[](#t15, #t16) in #t17.{core::String::==}(null) ?{core::String} let final core::String #t18 = "bar" in let final void #t19 = self::E6|[]=(#t15, #t16, #t18) in #t18 : #t17{core::String};
 }
 static method test7(self::A7? a) → dynamic {
-  core::String? s = let final self::A7? #t20 = a in #t20 == null ?{core::String?} null : let final core::String #t21 = #t20.{self::A7::foo}{core::String} in #t21 == null ?{core::String} #t20.{self::A7::foo} = "bar" : #t21;
-  core::String? s2 = let final self::A7? #t22 = a in #t22 == null ?{core::String?} null : let final core::String? #t23 = #t22.{self::A7::bar}{core::String?} in #t23 == null ?{core::String} #t22.{self::A7::bar} = "bar" : #t23{core::String};
+  core::String? s = let final self::A7? #t20 = a in #t20.{core::Object::==}(null) ?{core::String?} null : let final core::String #t21 = #t20.{self::A7::foo} in #t21.{core::String::==}(null) ?{core::String} #t20.{self::A7::foo} = "bar" : #t21;
+  core::String? s2 = let final self::A7? #t22 = a in #t22.{core::Object::==}(null) ?{core::String?} null : let final core::String? #t23 = #t22.{self::A7::bar} in #t23.{core::String::==}(null) ?{core::String} #t22.{self::A7::bar} = "bar" : #t23{core::String};
 }
 static method main() → dynamic {}
 
@@ -84,4 +84,4 @@
 Evaluated: VariableGet @ org-dartlang-testcase:///infer_if_null.dart:60:21 -> IntConstant(0)
 Evaluated: VariableGet @ org-dartlang-testcase:///infer_if_null.dart:60:28 -> StringConstant("bar")
 Evaluated: VariableGet @ org-dartlang-testcase:///infer_if_null.dart:60:28 -> StringConstant("bar")
-Extra constant evaluation: evaluated: 110, effectively constant: 14
+Extra constant evaluation: evaluated: 112, effectively constant: 14
diff --git a/pkg/front_end/testcases/nnbd/instance_duplicates.dart.strong.expect b/pkg/front_end/testcases/nnbd/instance_duplicates.dart.strong.expect
index 9920c38..cc7de7a 100644
--- a/pkg/front_end/testcases/nnbd/instance_duplicates.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/instance_duplicates.dart.strong.expect
@@ -600,10 +600,10 @@
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
   c.{self::Class::methodAndSetter1} = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/instance_duplicates.dart:92:26: Error: A value of type 'int? Function()' can't be assigned to a variable of type 'int?'.
   c.methodAndSetter1 = c.methodAndSetter1;
-                         ^" in c.{self::Class::methodAndSetter1}{() → core::int?} as{TypeError,ForNonNullableByDefault} core::int?;
-  c.{self::Class::methodAndSetter2} = c.{self::Class::methodAndSetter2}{(core::int?) → void};
-  c.{self::Class::fieldAndSetter1} = c.{self::Class::fieldAndSetter1}{core::int?};
-  c.{self::Class::fieldAndSetter2} = c.{self::Class::fieldAndSetter2}{core::int?};
+                         ^" in c.{self::Class::methodAndSetter1} as{TypeError,ForNonNullableByDefault} core::int?;
+  c.{self::Class::methodAndSetter2} = c.{self::Class::methodAndSetter2};
+  c.{self::Class::fieldAndSetter1} = c.{self::Class::fieldAndSetter1};
+  c.{self::Class::fieldAndSetter2} = c.{self::Class::fieldAndSetter2};
   invalid-expression "pkg/front_end/testcases/nnbd/instance_duplicates.dart:96:5: Error: The setter 'fieldAndFinalFieldAndSetter1' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/instance_duplicates.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'fieldAndFinalFieldAndSetter1'.
diff --git a/pkg/front_end/testcases/nnbd/instance_duplicates.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/instance_duplicates.dart.strong.transformed.expect
index 68ff748..ef8c8c1 100644
--- a/pkg/front_end/testcases/nnbd/instance_duplicates.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/instance_duplicates.dart.strong.transformed.expect
@@ -600,10 +600,10 @@
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
   c.{self::Class::methodAndSetter1} = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/instance_duplicates.dart:92:26: Error: A value of type 'int? Function()' can't be assigned to a variable of type 'int?'.
   c.methodAndSetter1 = c.methodAndSetter1;
-                         ^" in c.{self::Class::methodAndSetter1}{() → core::int?} as{TypeError,ForNonNullableByDefault} core::int?;
-  c.{self::Class::methodAndSetter2} = c.{self::Class::methodAndSetter2}{(core::int?) → void};
-  c.{self::Class::fieldAndSetter1} = c.{self::Class::fieldAndSetter1}{core::int?};
-  c.{self::Class::fieldAndSetter2} = c.{self::Class::fieldAndSetter2}{core::int?};
+                         ^" in c.{self::Class::methodAndSetter1} as{TypeError,ForNonNullableByDefault} core::int?;
+  c.{self::Class::methodAndSetter2} = c.{self::Class::methodAndSetter2};
+  c.{self::Class::fieldAndSetter1} = c.{self::Class::fieldAndSetter1};
+  c.{self::Class::fieldAndSetter2} = c.{self::Class::fieldAndSetter2};
   invalid-expression "pkg/front_end/testcases/nnbd/instance_duplicates.dart:96:5: Error: The setter 'fieldAndFinalFieldAndSetter1' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/instance_duplicates.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'fieldAndFinalFieldAndSetter1'.
diff --git a/pkg/front_end/testcases/nnbd/instance_duplicates.dart.weak.expect b/pkg/front_end/testcases/nnbd/instance_duplicates.dart.weak.expect
index 9920c38..cc7de7a 100644
--- a/pkg/front_end/testcases/nnbd/instance_duplicates.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/instance_duplicates.dart.weak.expect
@@ -600,10 +600,10 @@
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
   c.{self::Class::methodAndSetter1} = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/instance_duplicates.dart:92:26: Error: A value of type 'int? Function()' can't be assigned to a variable of type 'int?'.
   c.methodAndSetter1 = c.methodAndSetter1;
-                         ^" in c.{self::Class::methodAndSetter1}{() → core::int?} as{TypeError,ForNonNullableByDefault} core::int?;
-  c.{self::Class::methodAndSetter2} = c.{self::Class::methodAndSetter2}{(core::int?) → void};
-  c.{self::Class::fieldAndSetter1} = c.{self::Class::fieldAndSetter1}{core::int?};
-  c.{self::Class::fieldAndSetter2} = c.{self::Class::fieldAndSetter2}{core::int?};
+                         ^" in c.{self::Class::methodAndSetter1} as{TypeError,ForNonNullableByDefault} core::int?;
+  c.{self::Class::methodAndSetter2} = c.{self::Class::methodAndSetter2};
+  c.{self::Class::fieldAndSetter1} = c.{self::Class::fieldAndSetter1};
+  c.{self::Class::fieldAndSetter2} = c.{self::Class::fieldAndSetter2};
   invalid-expression "pkg/front_end/testcases/nnbd/instance_duplicates.dart:96:5: Error: The setter 'fieldAndFinalFieldAndSetter1' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/instance_duplicates.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'fieldAndFinalFieldAndSetter1'.
diff --git a/pkg/front_end/testcases/nnbd/instance_duplicates.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/instance_duplicates.dart.weak.transformed.expect
index 68ff748..ef8c8c1 100644
--- a/pkg/front_end/testcases/nnbd/instance_duplicates.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/instance_duplicates.dart.weak.transformed.expect
@@ -600,10 +600,10 @@
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
   c.{self::Class::methodAndSetter1} = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/instance_duplicates.dart:92:26: Error: A value of type 'int? Function()' can't be assigned to a variable of type 'int?'.
   c.methodAndSetter1 = c.methodAndSetter1;
-                         ^" in c.{self::Class::methodAndSetter1}{() → core::int?} as{TypeError,ForNonNullableByDefault} core::int?;
-  c.{self::Class::methodAndSetter2} = c.{self::Class::methodAndSetter2}{(core::int?) → void};
-  c.{self::Class::fieldAndSetter1} = c.{self::Class::fieldAndSetter1}{core::int?};
-  c.{self::Class::fieldAndSetter2} = c.{self::Class::fieldAndSetter2}{core::int?};
+                         ^" in c.{self::Class::methodAndSetter1} as{TypeError,ForNonNullableByDefault} core::int?;
+  c.{self::Class::methodAndSetter2} = c.{self::Class::methodAndSetter2};
+  c.{self::Class::fieldAndSetter1} = c.{self::Class::fieldAndSetter1};
+  c.{self::Class::fieldAndSetter2} = c.{self::Class::fieldAndSetter2};
   invalid-expression "pkg/front_end/testcases/nnbd/instance_duplicates.dart:96:5: Error: The setter 'fieldAndFinalFieldAndSetter1' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/instance_duplicates.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'fieldAndFinalFieldAndSetter1'.
diff --git a/pkg/front_end/testcases/nnbd/issue40093.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue40093.dart.strong.expect
index f083d82..44e9546 100644
--- a/pkg/front_end/testcases/nnbd/issue40093.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue40093.dart.strong.expect
@@ -16,7 +16,7 @@
 import "dart:core" as core;
 
 static method error() → dynamic {
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print(i);
   }
   for (core::int i in <core::int>[]) {
diff --git a/pkg/front_end/testcases/nnbd/issue40093.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue40093.dart.strong.transformed.expect
index b44b839..c7299a7 100644
--- a/pkg/front_end/testcases/nnbd/issue40093.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40093.dart.strong.transformed.expect
@@ -16,7 +16,7 @@
 import "dart:core" as core;
 
 static method error() → dynamic {
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print(i);
   }
   {
diff --git a/pkg/front_end/testcases/nnbd/issue40093.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue40093.dart.weak.expect
index f083d82..44e9546 100644
--- a/pkg/front_end/testcases/nnbd/issue40093.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue40093.dart.weak.expect
@@ -16,7 +16,7 @@
 import "dart:core" as core;
 
 static method error() → dynamic {
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print(i);
   }
   for (core::int i in <core::int>[]) {
diff --git a/pkg/front_end/testcases/nnbd/issue40093.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue40093.dart.weak.transformed.expect
index b44b839..c7299a7 100644
--- a/pkg/front_end/testcases/nnbd/issue40093.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40093.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
 import "dart:core" as core;
 
 static method error() → dynamic {
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print(i);
   }
   {
diff --git a/pkg/front_end/testcases/nnbd/issue40600.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue40600.dart.strong.expect
index bcbb04c..ff89535 100644
--- a/pkg/front_end/testcases/nnbd/issue40600.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue40600.dart.strong.expect
@@ -18,7 +18,7 @@
     ;
   method foo([generic-covariant-impl FutureOr<self::A::X%>? x = #C1]) → dynamic {
     if(x is{ForNonNullableByDefault} asy::Future<self::A::X%>) {
-      this.{self::A::b}{self::B<self::A::X%>}.{self::B::bar}(x{asy::Future<self::A::X%>} as{ForNonNullableByDefault} FutureOr<self::A::X%>){(FutureOr<self::A::X%>) → dynamic};
+      this.{self::A::b}.{self::B::bar}(x{asy::Future<self::A::X%>} as{ForNonNullableByDefault} FutureOr<self::A::X%>);
     }
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue40600.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue40600.dart.strong.transformed.expect
index c9d1a5a..15445a8 100644
--- a/pkg/front_end/testcases/nnbd/issue40600.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40600.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     ;
   method foo([generic-covariant-impl FutureOr<self::A::X%>? x = #C1]) → dynamic {
     if(x is{ForNonNullableByDefault} asy::Future<self::A::X%>) {
-      this.{self::A::b}{self::B<self::A::X%>}.{self::B::bar}(x{asy::Future<self::A::X%>}){(FutureOr<self::A::X%>) → dynamic};
+      this.{self::A::b}.{self::B::bar}(x{asy::Future<self::A::X%>});
     }
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue40600.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue40600.dart.weak.expect
index bcbb04c..ff89535 100644
--- a/pkg/front_end/testcases/nnbd/issue40600.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue40600.dart.weak.expect
@@ -18,7 +18,7 @@
     ;
   method foo([generic-covariant-impl FutureOr<self::A::X%>? x = #C1]) → dynamic {
     if(x is{ForNonNullableByDefault} asy::Future<self::A::X%>) {
-      this.{self::A::b}{self::B<self::A::X%>}.{self::B::bar}(x{asy::Future<self::A::X%>} as{ForNonNullableByDefault} FutureOr<self::A::X%>){(FutureOr<self::A::X%>) → dynamic};
+      this.{self::A::b}.{self::B::bar}(x{asy::Future<self::A::X%>} as{ForNonNullableByDefault} FutureOr<self::A::X%>);
     }
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue40600.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue40600.dart.weak.transformed.expect
index c9d1a5a..15445a8 100644
--- a/pkg/front_end/testcases/nnbd/issue40600.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40600.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
     ;
   method foo([generic-covariant-impl FutureOr<self::A::X%>? x = #C1]) → dynamic {
     if(x is{ForNonNullableByDefault} asy::Future<self::A::X%>) {
-      this.{self::A::b}{self::B<self::A::X%>}.{self::B::bar}(x{asy::Future<self::A::X%>}){(FutureOr<self::A::X%>) → dynamic};
+      this.{self::A::b}.{self::B::bar}(x{asy::Future<self::A::X%>});
     }
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue40601.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue40601.dart.strong.expect
index 5a7fa88..412e12d 100644
--- a/pkg/front_end/testcases/nnbd/issue40601.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue40601.dart.strong.expect
@@ -10,10 +10,10 @@
   method bar(generic-covariant-impl self::A::T% value) → dynamic {}
   method foo() → dynamic {
     late self::A::T% value;
-    () → dynamic result = () → dynamic => this.{self::A::bar}(value){(self::A::T%) → dynamic};
+    () → dynamic result = () → dynamic => this.{self::A::bar}(value);
     (() → Null {
-      value = this.{self::A::baz}(){() → self::A::T%};
-    })(){() → Null};
+      value = this.{self::A::baz}();
+    }).call();
     return result;
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue40601.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue40601.dart.strong.transformed.expect
index 5a7fa88..412e12d 100644
--- a/pkg/front_end/testcases/nnbd/issue40601.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40601.dart.strong.transformed.expect
@@ -10,10 +10,10 @@
   method bar(generic-covariant-impl self::A::T% value) → dynamic {}
   method foo() → dynamic {
     late self::A::T% value;
-    () → dynamic result = () → dynamic => this.{self::A::bar}(value){(self::A::T%) → dynamic};
+    () → dynamic result = () → dynamic => this.{self::A::bar}(value);
     (() → Null {
-      value = this.{self::A::baz}(){() → self::A::T%};
-    })(){() → Null};
+      value = this.{self::A::baz}();
+    }).call();
     return result;
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue40601.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue40601.dart.weak.expect
index 5a7fa88..412e12d 100644
--- a/pkg/front_end/testcases/nnbd/issue40601.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue40601.dart.weak.expect
@@ -10,10 +10,10 @@
   method bar(generic-covariant-impl self::A::T% value) → dynamic {}
   method foo() → dynamic {
     late self::A::T% value;
-    () → dynamic result = () → dynamic => this.{self::A::bar}(value){(self::A::T%) → dynamic};
+    () → dynamic result = () → dynamic => this.{self::A::bar}(value);
     (() → Null {
-      value = this.{self::A::baz}(){() → self::A::T%};
-    })(){() → Null};
+      value = this.{self::A::baz}();
+    }).call();
     return result;
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue40601.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue40601.dart.weak.transformed.expect
index 5a7fa88..412e12d 100644
--- a/pkg/front_end/testcases/nnbd/issue40601.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40601.dart.weak.transformed.expect
@@ -10,10 +10,10 @@
   method bar(generic-covariant-impl self::A::T% value) → dynamic {}
   method foo() → dynamic {
     late self::A::T% value;
-    () → dynamic result = () → dynamic => this.{self::A::bar}(value){(self::A::T%) → dynamic};
+    () → dynamic result = () → dynamic => this.{self::A::bar}(value);
     (() → Null {
-      value = this.{self::A::baz}(){() → self::A::T%};
-    })(){() → Null};
+      value = this.{self::A::baz}();
+    }).call();
     return result;
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue40805.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue40805.dart.strong.expect
index e876287..12e6ed1 100644
--- a/pkg/front_end/testcases/nnbd/issue40805.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue40805.dart.strong.expect
@@ -13,7 +13,7 @@
     : super self::C::•()
     ;
   set x(covariant core::num value) → void {
-    super.{self::C::x} = value.{core::num::toInt}(){() → core::int};
+    super.{self::C::x} = value.{core::num::toInt}();
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue40805.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue40805.dart.strong.transformed.expect
index e876287..12e6ed1 100644
--- a/pkg/front_end/testcases/nnbd/issue40805.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40805.dart.strong.transformed.expect
@@ -13,7 +13,7 @@
     : super self::C::•()
     ;
   set x(covariant core::num value) → void {
-    super.{self::C::x} = value.{core::num::toInt}(){() → core::int};
+    super.{self::C::x} = value.{core::num::toInt}();
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue40805.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue40805.dart.weak.expect
index e876287..12e6ed1 100644
--- a/pkg/front_end/testcases/nnbd/issue40805.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue40805.dart.weak.expect
@@ -13,7 +13,7 @@
     : super self::C::•()
     ;
   set x(covariant core::num value) → void {
-    super.{self::C::x} = value.{core::num::toInt}(){() → core::int};
+    super.{self::C::x} = value.{core::num::toInt}();
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue40805.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue40805.dart.weak.transformed.expect
index e876287..12e6ed1 100644
--- a/pkg/front_end/testcases/nnbd/issue40805.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40805.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
     : super self::C::•()
     ;
   set x(covariant core::num value) → void {
-    super.{self::C::x} = value.{core::num::toInt}(){() → core::int};
+    super.{self::C::x} = value.{core::num::toInt}();
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue40945.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue40945.dart.strong.expect
index f441fd5..b38f082d 100644
--- a/pkg/front_end/testcases/nnbd/issue40945.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue40945.dart.strong.expect
@@ -23,6 +23,6 @@
 static method test() → dynamic {
   self::C c = new self::C::•();
   c.{self::C::test} = 1;
-  c.{self::C::test}{dynamic};
+  c.{self::C::test};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue40945.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue40945.dart.strong.transformed.expect
index f441fd5..b38f082d 100644
--- a/pkg/front_end/testcases/nnbd/issue40945.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40945.dart.strong.transformed.expect
@@ -23,6 +23,6 @@
 static method test() → dynamic {
   self::C c = new self::C::•();
   c.{self::C::test} = 1;
-  c.{self::C::test}{dynamic};
+  c.{self::C::test};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue40945.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue40945.dart.weak.expect
index f441fd5..b38f082d 100644
--- a/pkg/front_end/testcases/nnbd/issue40945.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue40945.dart.weak.expect
@@ -23,6 +23,6 @@
 static method test() → dynamic {
   self::C c = new self::C::•();
   c.{self::C::test} = 1;
-  c.{self::C::test}{dynamic};
+  c.{self::C::test};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue40945.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue40945.dart.weak.transformed.expect
index f441fd5..b38f082d 100644
--- a/pkg/front_end/testcases/nnbd/issue40945.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40945.dart.weak.transformed.expect
@@ -23,6 +23,6 @@
 static method test() → dynamic {
   self::C c = new self::C::•();
   c.{self::C::test} = 1;
-  c.{self::C::test}{dynamic};
+  c.{self::C::test};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41102.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41102.dart.strong.expect
index 76d99bf..9c7c798 100644
--- a/pkg/front_end/testcases/nnbd/issue41102.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41102.dart.strong.expect
@@ -67,9 +67,9 @@
 
 import "dart:async";
 
-static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data){(core::Object?) → void}), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}(){() → void}));
+static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data)), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}()));
 static final field core::List<dynamic> s1 = <dynamic>[];
-static final field core::int? s2 = let final core::List<dynamic> #t1 = self::s1 in #t1 == null ?{core::int?} null : #t1.{core::List::length}{core::int};
+static final field core::int? s2 = let final core::List<dynamic> #t1 = self::s1 in #t1.{core::List::==}(null) ?{core::int?} null : #t1.{core::List::length};
 static final field core::List<core::int> s3 = core::List::filled<core::int>(2, let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:17:36: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable.
 final s3 = new List<int>.filled(2, null);
                                    ^" in null as{TypeError,ForNonNullableByDefault} core::int);
@@ -86,38 +86,38 @@
     case #C3:
       {}
   }
-})(){() → Null};
+}).call();
 static field core::int? s5;
 static final field core::num s6 = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:31:15: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
 final s6 = s5 + 0;
-              ^" in self::s5.{core::num::+}(0){(core::num) → core::num};
+              ^" in self::s5.{core::num::+}(0);
 static field core::List<dynamic>? s7;
 static final field dynamic s8 = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:35:14: Error: Operator '[]' cannot be called on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 final s8 = s7[0];
-             ^" in self::s7.{core::List::[]}{<nullable>}.(0){(core::int) → dynamic};
+             ^" in self::s7.{core::List::[]}(0);
 static final field core::int s9 = let final core::List<dynamic>? #t5 = self::s7 in let final core::int #t6 = 0 in let final core::int #t7 = 0 in let final void #t8 = let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:37:14: Error: Operator '[]=' cannot be called on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 final s9 = s7[0] = 0;
-             ^" in #t5.{core::List::[]=}{<nullable>}.(#t6, #t7){(core::int, dynamic) → void} in #t7;
+             ^" in #t5.{core::List::[]=}(#t6, #t7) in #t7;
 static final field core::int s10 = let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:39:16: Error: Property 'length' cannot be accessed on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 Try accessing using ?. instead.
 final s10 = s7.length;
-               ^^^^^^" in self::s7.{core::List::length}{<nullable>}.{core::int};
+               ^^^^^^" in self::s7.{core::List::length};
 static final field core::int s11 = let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:41:16: Error: Property 'length' cannot be accessed on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 Try accessing using ?. instead.
 final s11 = s7.length = 0;
-               ^^^^^^" in self::s7.{core::List::length}{<nullable>}. = 0;
+               ^^^^^^" in self::s7.{core::List::length} = 0;
 static final field core::int s12 = let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:43:13: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
 final s12 = -s5;
-            ^" in self::s5.{core::int::unary-}(){() → core::int};
+            ^" in self::s5.{core::int::unary-}();
 static field () →? core::int s13;
 static final field core::int s14 = let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:47:18: Error: Can't use an expression of type 'int Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
 final s14 = (s13)();
-                 ^" in self::s13{<nullable>}.(){() →? core::int};
+                 ^" in self::s13.call();
 static final field Never s15 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:49:19: Error: Can't throw a value of 'Null' since it is neither dynamic nor non-nullable.
 final s15 = throw null;
                   ^" as{TypeError,ForDynamic,ForNonNullableByDefault} Never;
diff --git a/pkg/front_end/testcases/nnbd/issue41102.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41102.dart.strong.transformed.expect
index 2cbfb9d..fa0069f 100644
--- a/pkg/front_end/testcases/nnbd/issue41102.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41102.dart.strong.transformed.expect
@@ -67,9 +67,9 @@
 
 import "dart:async";
 
-static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data){(core::Object?) → void}), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}(){() → void}));
+static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data)), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}()));
 static final field core::List<dynamic> s1 = core::_GrowableList::•<dynamic>(0);
-static final field core::int? s2 = let final core::List<dynamic> #t1 = self::s1 in #t1 == null ?{core::int?} null : #t1.{core::List::length}{core::int};
+static final field core::int? s2 = let final core::List<dynamic> #t1 = self::s1 in #t1.{core::List::==}(null) ?{core::int?} null : #t1.{core::List::length};
 static final field core::List<core::int> s3 = core::_List::filled<core::int>(2, let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:17:36: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable.
 final s3 = new List<int>.filled(2, null);
                                    ^" in let Null #t3 = null in #t3.==(null) ?{core::int} #t3 as{TypeError,ForNonNullableByDefault} core::int : #t3{core::int});
@@ -86,38 +86,38 @@
     case #C3:
       {}
   }
-})(){() → Null};
+}).call();
 static field core::int? s5;
 static final field core::num s6 = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:31:15: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
 final s6 = s5 + 0;
-              ^" in self::s5.{core::num::+}(0){(core::num) → core::num};
+              ^" in self::s5.{core::num::+}(0);
 static field core::List<dynamic>? s7;
 static final field dynamic s8 = let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:35:14: Error: Operator '[]' cannot be called on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 final s8 = s7[0];
-             ^" in self::s7.{core::List::[]}{<nullable>}.(0){(core::int) → dynamic};
+             ^" in self::s7.{core::List::[]}(0);
 static final field core::int s9 = let final core::List<dynamic>? #t6 = self::s7 in let final core::int #t7 = 0 in let final core::int #t8 = 0 in let final void #t9 = let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:37:14: Error: Operator '[]=' cannot be called on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 final s9 = s7[0] = 0;
-             ^" in #t6.{core::List::[]=}{<nullable>}.(#t7, #t8){(core::int, dynamic) → void} in #t8;
+             ^" in #t6.{core::List::[]=}(#t7, #t8) in #t8;
 static final field core::int s10 = let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:39:16: Error: Property 'length' cannot be accessed on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 Try accessing using ?. instead.
 final s10 = s7.length;
-               ^^^^^^" in self::s7.{core::List::length}{<nullable>}.{core::int};
+               ^^^^^^" in self::s7.{core::List::length};
 static final field core::int s11 = let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:41:16: Error: Property 'length' cannot be accessed on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 Try accessing using ?. instead.
 final s11 = s7.length = 0;
-               ^^^^^^" in self::s7.{core::List::length}{<nullable>}. = 0;
+               ^^^^^^" in self::s7.{core::List::length} = 0;
 static final field core::int s12 = let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:43:13: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
 final s12 = -s5;
-            ^" in self::s5.{core::int::unary-}(){() → core::int};
+            ^" in self::s5.{core::int::unary-}();
 static field () →? core::int s13;
 static final field core::int s14 = let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:47:18: Error: Can't use an expression of type 'int Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
 final s14 = (s13)();
-                 ^" in self::s13{<nullable>}.(){() →? core::int};
+                 ^" in self::s13.call();
 static final field Never s15 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:49:19: Error: Can't throw a value of 'Null' since it is neither dynamic nor non-nullable.
 final s15 = throw null;
                   ^";
diff --git a/pkg/front_end/testcases/nnbd/issue41102.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41102.dart.weak.expect
index 76d99bf..9c7c798 100644
--- a/pkg/front_end/testcases/nnbd/issue41102.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41102.dart.weak.expect
@@ -67,9 +67,9 @@
 
 import "dart:async";
 
-static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data){(core::Object?) → void}), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}(){() → void}));
+static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data)), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}()));
 static final field core::List<dynamic> s1 = <dynamic>[];
-static final field core::int? s2 = let final core::List<dynamic> #t1 = self::s1 in #t1 == null ?{core::int?} null : #t1.{core::List::length}{core::int};
+static final field core::int? s2 = let final core::List<dynamic> #t1 = self::s1 in #t1.{core::List::==}(null) ?{core::int?} null : #t1.{core::List::length};
 static final field core::List<core::int> s3 = core::List::filled<core::int>(2, let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:17:36: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable.
 final s3 = new List<int>.filled(2, null);
                                    ^" in null as{TypeError,ForNonNullableByDefault} core::int);
@@ -86,38 +86,38 @@
     case #C3:
       {}
   }
-})(){() → Null};
+}).call();
 static field core::int? s5;
 static final field core::num s6 = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:31:15: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
 final s6 = s5 + 0;
-              ^" in self::s5.{core::num::+}(0){(core::num) → core::num};
+              ^" in self::s5.{core::num::+}(0);
 static field core::List<dynamic>? s7;
 static final field dynamic s8 = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:35:14: Error: Operator '[]' cannot be called on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 final s8 = s7[0];
-             ^" in self::s7.{core::List::[]}{<nullable>}.(0){(core::int) → dynamic};
+             ^" in self::s7.{core::List::[]}(0);
 static final field core::int s9 = let final core::List<dynamic>? #t5 = self::s7 in let final core::int #t6 = 0 in let final core::int #t7 = 0 in let final void #t8 = let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:37:14: Error: Operator '[]=' cannot be called on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 final s9 = s7[0] = 0;
-             ^" in #t5.{core::List::[]=}{<nullable>}.(#t6, #t7){(core::int, dynamic) → void} in #t7;
+             ^" in #t5.{core::List::[]=}(#t6, #t7) in #t7;
 static final field core::int s10 = let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:39:16: Error: Property 'length' cannot be accessed on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 Try accessing using ?. instead.
 final s10 = s7.length;
-               ^^^^^^" in self::s7.{core::List::length}{<nullable>}.{core::int};
+               ^^^^^^" in self::s7.{core::List::length};
 static final field core::int s11 = let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:41:16: Error: Property 'length' cannot be accessed on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 Try accessing using ?. instead.
 final s11 = s7.length = 0;
-               ^^^^^^" in self::s7.{core::List::length}{<nullable>}. = 0;
+               ^^^^^^" in self::s7.{core::List::length} = 0;
 static final field core::int s12 = let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:43:13: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
 final s12 = -s5;
-            ^" in self::s5.{core::int::unary-}(){() → core::int};
+            ^" in self::s5.{core::int::unary-}();
 static field () →? core::int s13;
 static final field core::int s14 = let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:47:18: Error: Can't use an expression of type 'int Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
 final s14 = (s13)();
-                 ^" in self::s13{<nullable>}.(){() →? core::int};
+                 ^" in self::s13.call();
 static final field Never s15 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:49:19: Error: Can't throw a value of 'Null' since it is neither dynamic nor non-nullable.
 final s15 = throw null;
                   ^" as{TypeError,ForDynamic,ForNonNullableByDefault} Never;
diff --git a/pkg/front_end/testcases/nnbd/issue41102.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41102.dart.weak.transformed.expect
index 9cdfa657..8bcc4d3 100644
--- a/pkg/front_end/testcases/nnbd/issue41102.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41102.dart.weak.transformed.expect
@@ -67,9 +67,9 @@
 
 import "dart:async";
 
-static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data){(core::Object?) → void}), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}(){() → void}));
+static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data)), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}()));
 static final field core::List<dynamic> s1 = core::_GrowableList::•<dynamic>(0);
-static final field core::int? s2 = let final core::List<dynamic> #t1 = self::s1 in #t1 == null ?{core::int?} null : #t1.{core::List::length}{core::int};
+static final field core::int? s2 = let final core::List<dynamic> #t1 = self::s1 in #t1.{core::List::==}(null) ?{core::int?} null : #t1.{core::List::length};
 static final field core::List<core::int> s3 = core::_List::filled<core::int>(2, let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:17:36: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable.
 final s3 = new List<int>.filled(2, null);
                                    ^" in null);
@@ -86,38 +86,38 @@
     case #C3:
       {}
   }
-})(){() → Null};
+}).call();
 static field core::int? s5;
 static final field core::num s6 = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:31:15: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
 final s6 = s5 + 0;
-              ^" in self::s5.{core::num::+}(0){(core::num) → core::num};
+              ^" in self::s5.{core::num::+}(0);
 static field core::List<dynamic>? s7;
 static final field dynamic s8 = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:35:14: Error: Operator '[]' cannot be called on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 final s8 = s7[0];
-             ^" in self::s7.{core::List::[]}{<nullable>}.(0){(core::int) → dynamic};
+             ^" in self::s7.{core::List::[]}(0);
 static final field core::int s9 = let final core::List<dynamic>? #t5 = self::s7 in let final core::int #t6 = 0 in let final core::int #t7 = 0 in let final void #t8 = let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:37:14: Error: Operator '[]=' cannot be called on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 final s9 = s7[0] = 0;
-             ^" in #t5.{core::List::[]=}{<nullable>}.(#t6, #t7){(core::int, dynamic) → void} in #t7;
+             ^" in #t5.{core::List::[]=}(#t6, #t7) in #t7;
 static final field core::int s10 = let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:39:16: Error: Property 'length' cannot be accessed on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 Try accessing using ?. instead.
 final s10 = s7.length;
-               ^^^^^^" in self::s7.{core::List::length}{<nullable>}.{core::int};
+               ^^^^^^" in self::s7.{core::List::length};
 static final field core::int s11 = let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:41:16: Error: Property 'length' cannot be accessed on 'List<dynamic>?' because it is potentially null.
  - 'List' is from 'dart:core'.
 Try accessing using ?. instead.
 final s11 = s7.length = 0;
-               ^^^^^^" in self::s7.{core::List::length}{<nullable>}. = 0;
+               ^^^^^^" in self::s7.{core::List::length} = 0;
 static final field core::int s12 = let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:43:13: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
 final s12 = -s5;
-            ^" in self::s5.{core::int::unary-}(){() → core::int};
+            ^" in self::s5.{core::int::unary-}();
 static field () →? core::int s13;
 static final field core::int s14 = let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:47:18: Error: Can't use an expression of type 'int Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
 final s14 = (s13)();
-                 ^" in self::s13{<nullable>}.(){() →? core::int};
+                 ^" in self::s13.call();
 static final field Never s15 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:49:19: Error: Can't throw a value of 'Null' since it is neither dynamic nor non-nullable.
 final s15 = throw null;
                   ^";
diff --git a/pkg/front_end/testcases/nnbd/issue41103.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41103.dart.strong.expect
index d5d245a..4b85f1c 100644
--- a/pkg/front_end/testcases/nnbd/issue41103.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41103.dart.strong.expect
@@ -5,5 +5,5 @@
 
 import "dart:async";
 
-static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data){(core::Object?) → void}), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}(){() → void}));
+static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data)), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}()));
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41103.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41103.dart.strong.transformed.expect
index d5d245a..4b85f1c 100644
--- a/pkg/front_end/testcases/nnbd/issue41103.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41103.dart.strong.transformed.expect
@@ -5,5 +5,5 @@
 
 import "dart:async";
 
-static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data){(core::Object?) → void}), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}(){() → void}));
+static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data)), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}()));
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41103.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41103.dart.weak.expect
index d5d245a..4b85f1c 100644
--- a/pkg/front_end/testcases/nnbd/issue41103.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41103.dart.weak.expect
@@ -5,5 +5,5 @@
 
 import "dart:async";
 
-static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data){(core::Object?) → void}), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}(){() → void}));
+static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data)), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}()));
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41103.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41103.dart.weak.transformed.expect
index d5d245a..4b85f1c 100644
--- a/pkg/front_end/testcases/nnbd/issue41103.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41103.dart.weak.transformed.expect
@@ -5,5 +5,5 @@
 
 import "dart:async";
 
-static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data){(core::Object?) → void}), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}(){() → void}));
+static final field asy::StreamTransformer<core::Object?, core::Object?> t = new asy::_StreamHandlerTransformer::•<core::Object?, core::Object?>(handleData: (core::Object? data, asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::add}(data)), handleDone: (asy::EventSink<core::Object?> sink) → void => asy::Future::microtask<void>(() → void => sink.{asy::EventSink::close}()));
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41114.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41114.dart.strong.expect
index 467d91a..6fb76f5 100644
--- a/pkg/front_end/testcases/nnbd/issue41114.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41114.dart.strong.expect
@@ -4,7 +4,7 @@
 
 static method main() → dynamic async {
   core::List<core::String>? a = <core::String>[] as{ForNonNullableByDefault} core::List<core::String>?;
-  core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1 == null ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e){((core::String) → core::String) → core::Iterable<core::String>};
-  core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2 == null ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
+  core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1.{core::List::==}(null) ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e);
+  core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2.{core::Object::==}(null) ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
   core::print(i);
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect
index a58c8e8..c611839 100644
--- a/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect
@@ -16,8 +16,8 @@
       #L1:
       {
         core::List<core::String>? a = core::_GrowableList::•<core::String>(0);
-        core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1 == null ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e){((core::String) → core::String) → core::Iterable<core::String>};
-        core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2 == null ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
+        core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1.{core::List::==}(null) ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e);
+        core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2.{core::Object::==}(null) ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
         core::print(i);
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
diff --git a/pkg/front_end/testcases/nnbd/issue41114.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41114.dart.weak.expect
index 467d91a..6fb76f5 100644
--- a/pkg/front_end/testcases/nnbd/issue41114.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41114.dart.weak.expect
@@ -4,7 +4,7 @@
 
 static method main() → dynamic async {
   core::List<core::String>? a = <core::String>[] as{ForNonNullableByDefault} core::List<core::String>?;
-  core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1 == null ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e){((core::String) → core::String) → core::Iterable<core::String>};
-  core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2 == null ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
+  core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1.{core::List::==}(null) ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e);
+  core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2.{core::Object::==}(null) ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
   core::print(i);
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect
index a58c8e8..c611839 100644
--- a/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect
@@ -16,8 +16,8 @@
       #L1:
       {
         core::List<core::String>? a = core::_GrowableList::•<core::String>(0);
-        core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1 == null ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e){((core::String) → core::String) → core::Iterable<core::String>};
-        core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2 == null ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
+        core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1.{core::List::==}(null) ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e);
+        core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2.{core::Object::==}(null) ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
         core::print(i);
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
diff --git a/pkg/front_end/testcases/nnbd/issue41273.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41273.dart.strong.expect
index dcb1f5b..6eef4f6 100644
--- a/pkg/front_end/testcases/nnbd/issue41273.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41273.dart.strong.expect
@@ -4,26 +4,26 @@
 
 static method test(dynamic x) → void {
   if(x is{ForNonNullableByDefault} Never) {
-    Never n1 = x{Never}{Never}.toString();
-    Never n2 = x{Never}{Never}.runtimeType;
-    Never n3 = x{Never}{Never}.someGetter;
-    Never n4 = x{Never}{Never}.someMethod();
-    Never n5 = x{Never}{Never}.+(x{Never});
-    Never n6 = x{Never}{Never}.[](x{Never});
-    Never n7 = x{Never}{Never}.call();
-    Never n8 = x{Never}{Never}.runtimeType();
-    Never n9 = x{Never}{Never}.toString;
-    x{Never}{Never}.runtimeType = #C1;
-    x{Never}{Never}.toString = () → core::String => "";
-    Never v1 = x{Never}{Never}.toString();
-    Never v2 = x{Never}{Never}.runtimeType;
-    Never v3 = x{Never}{Never}.someGetter;
-    Never v4 = x{Never}{Never}.someMethod();
-    Never v5 = x{Never}{Never}.+(x{Never});
-    Never v6 = x{Never}{Never}.[](x{Never});
-    Never v7 = x{Never}{Never}.call();
-    Never v8 = x{Never}{Never}.runtimeType();
-    Never v9 = x{Never}{Never}.toString;
+    Never n1 = x{Never}.toString();
+    Never n2 = x{Never}.runtimeType;
+    Never n3 = x{Never}.someGetter;
+    Never n4 = x{Never}.someMethod();
+    Never n5 = x{Never}.+(x{Never});
+    Never n6 = x{Never}.[](x{Never});
+    Never n7 = x{Never}.call();
+    Never n8 = x{Never}.runtimeType();
+    Never n9 = x{Never}.toString;
+    x{Never}.runtimeType = #C1;
+    x{Never}.toString = () → core::String => "";
+    Never v1 = x{Never}.toString();
+    Never v2 = x{Never}.runtimeType;
+    Never v3 = x{Never}.someGetter;
+    Never v4 = x{Never}.someMethod();
+    Never v5 = x{Never}.+(x{Never});
+    Never v6 = x{Never}.[](x{Never});
+    Never v7 = x{Never}.call();
+    Never v8 = x{Never}.runtimeType();
+    Never v9 = x{Never}.toString;
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue41273.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41273.dart.strong.transformed.expect
index dcb1f5b..6eef4f6 100644
--- a/pkg/front_end/testcases/nnbd/issue41273.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41273.dart.strong.transformed.expect
@@ -4,26 +4,26 @@
 
 static method test(dynamic x) → void {
   if(x is{ForNonNullableByDefault} Never) {
-    Never n1 = x{Never}{Never}.toString();
-    Never n2 = x{Never}{Never}.runtimeType;
-    Never n3 = x{Never}{Never}.someGetter;
-    Never n4 = x{Never}{Never}.someMethod();
-    Never n5 = x{Never}{Never}.+(x{Never});
-    Never n6 = x{Never}{Never}.[](x{Never});
-    Never n7 = x{Never}{Never}.call();
-    Never n8 = x{Never}{Never}.runtimeType();
-    Never n9 = x{Never}{Never}.toString;
-    x{Never}{Never}.runtimeType = #C1;
-    x{Never}{Never}.toString = () → core::String => "";
-    Never v1 = x{Never}{Never}.toString();
-    Never v2 = x{Never}{Never}.runtimeType;
-    Never v3 = x{Never}{Never}.someGetter;
-    Never v4 = x{Never}{Never}.someMethod();
-    Never v5 = x{Never}{Never}.+(x{Never});
-    Never v6 = x{Never}{Never}.[](x{Never});
-    Never v7 = x{Never}{Never}.call();
-    Never v8 = x{Never}{Never}.runtimeType();
-    Never v9 = x{Never}{Never}.toString;
+    Never n1 = x{Never}.toString();
+    Never n2 = x{Never}.runtimeType;
+    Never n3 = x{Never}.someGetter;
+    Never n4 = x{Never}.someMethod();
+    Never n5 = x{Never}.+(x{Never});
+    Never n6 = x{Never}.[](x{Never});
+    Never n7 = x{Never}.call();
+    Never n8 = x{Never}.runtimeType();
+    Never n9 = x{Never}.toString;
+    x{Never}.runtimeType = #C1;
+    x{Never}.toString = () → core::String => "";
+    Never v1 = x{Never}.toString();
+    Never v2 = x{Never}.runtimeType;
+    Never v3 = x{Never}.someGetter;
+    Never v4 = x{Never}.someMethod();
+    Never v5 = x{Never}.+(x{Never});
+    Never v6 = x{Never}.[](x{Never});
+    Never v7 = x{Never}.call();
+    Never v8 = x{Never}.runtimeType();
+    Never v9 = x{Never}.toString;
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue41273.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41273.dart.weak.expect
index 0bdfe20..e220d05 100644
--- a/pkg/front_end/testcases/nnbd/issue41273.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41273.dart.weak.expect
@@ -5,26 +5,26 @@
 
 static method test(dynamic x) → void {
   if(x is{ForNonNullableByDefault} Never) {
-    Never n1 = let final Never #t1 = (let final Never #t2 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n2 = let final Never #t3 = (let final Never #t4 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n3 = let final Never #t5 = (let final Never #t6 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.someGetter in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n4 = let final Never #t7 = (let final Never #t8 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.someMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n5 = let final Never #t9 = (let final Never #t10 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.+(let final Never #t11 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n6 = let final Never #t12 = (let final Never #t13 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[](let final Never #t14 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n7 = let final Never #t15 = (let final Never #t16 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n8 = let final Never #t17 = (let final Never #t18 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n9 = let final Never #t19 = (let final Never #t20 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    (let final Never #t21 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType = #C1;
-    (let final Never #t22 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString = () → core::String => "";
-    Never v1 = let final Never #t23 = (let final Never #t24 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v2 = let final Never #t25 = (let final Never #t26 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v3 = let final Never #t27 = (let final Never #t28 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.someGetter in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v4 = let final Never #t29 = (let final Never #t30 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.someMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v5 = let final Never #t31 = (let final Never #t32 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.+(let final Never #t33 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v6 = let final Never #t34 = (let final Never #t35 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[](let final Never #t36 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v7 = let final Never #t37 = (let final Never #t38 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v8 = let final Never #t39 = (let final Never #t40 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v9 = let final Never #t41 = (let final Never #t42 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n1 = let final Never #t1 = (let final Never #t2 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n2 = let final Never #t3 = (let final Never #t4 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n3 = let final Never #t5 = (let final Never #t6 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).someGetter in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n4 = let final Never #t7 = (let final Never #t8 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).someMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n5 = let final Never #t9 = (let final Never #t10 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).+(let final Never #t11 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n6 = let final Never #t12 = (let final Never #t13 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[](let final Never #t14 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n7 = let final Never #t15 = (let final Never #t16 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n8 = let final Never #t17 = (let final Never #t18 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n9 = let final Never #t19 = (let final Never #t20 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    (let final Never #t21 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType = #C1;
+    (let final Never #t22 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString = () → core::String => "";
+    Never v1 = let final Never #t23 = (let final Never #t24 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v2 = let final Never #t25 = (let final Never #t26 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v3 = let final Never #t27 = (let final Never #t28 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).someGetter in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v4 = let final Never #t29 = (let final Never #t30 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).someMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v5 = let final Never #t31 = (let final Never #t32 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).+(let final Never #t33 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v6 = let final Never #t34 = (let final Never #t35 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[](let final Never #t36 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v7 = let final Never #t37 = (let final Never #t38 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v8 = let final Never #t39 = (let final Never #t40 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v9 = let final Never #t41 = (let final Never #t42 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue41273.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41273.dart.weak.transformed.expect
index 0bdfe20..e220d05 100644
--- a/pkg/front_end/testcases/nnbd/issue41273.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41273.dart.weak.transformed.expect
@@ -5,26 +5,26 @@
 
 static method test(dynamic x) → void {
   if(x is{ForNonNullableByDefault} Never) {
-    Never n1 = let final Never #t1 = (let final Never #t2 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n2 = let final Never #t3 = (let final Never #t4 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n3 = let final Never #t5 = (let final Never #t6 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.someGetter in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n4 = let final Never #t7 = (let final Never #t8 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.someMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n5 = let final Never #t9 = (let final Never #t10 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.+(let final Never #t11 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n6 = let final Never #t12 = (let final Never #t13 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[](let final Never #t14 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n7 = let final Never #t15 = (let final Never #t16 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n8 = let final Never #t17 = (let final Never #t18 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never n9 = let final Never #t19 = (let final Never #t20 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    (let final Never #t21 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType = #C1;
-    (let final Never #t22 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString = () → core::String => "";
-    Never v1 = let final Never #t23 = (let final Never #t24 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v2 = let final Never #t25 = (let final Never #t26 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v3 = let final Never #t27 = (let final Never #t28 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.someGetter in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v4 = let final Never #t29 = (let final Never #t30 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.someMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v5 = let final Never #t31 = (let final Never #t32 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.+(let final Never #t33 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v6 = let final Never #t34 = (let final Never #t35 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[](let final Never #t36 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v7 = let final Never #t37 = (let final Never #t38 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v8 = let final Never #t39 = (let final Never #t40 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    Never v9 = let final Never #t41 = (let final Never #t42 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n1 = let final Never #t1 = (let final Never #t2 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n2 = let final Never #t3 = (let final Never #t4 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n3 = let final Never #t5 = (let final Never #t6 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).someGetter in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n4 = let final Never #t7 = (let final Never #t8 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).someMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n5 = let final Never #t9 = (let final Never #t10 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).+(let final Never #t11 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n6 = let final Never #t12 = (let final Never #t13 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[](let final Never #t14 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n7 = let final Never #t15 = (let final Never #t16 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n8 = let final Never #t17 = (let final Never #t18 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never n9 = let final Never #t19 = (let final Never #t20 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    (let final Never #t21 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType = #C1;
+    (let final Never #t22 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString = () → core::String => "";
+    Never v1 = let final Never #t23 = (let final Never #t24 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v2 = let final Never #t25 = (let final Never #t26 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v3 = let final Never #t27 = (let final Never #t28 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).someGetter in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v4 = let final Never #t29 = (let final Never #t30 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).someMethod() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v5 = let final Never #t31 = (let final Never #t32 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).+(let final Never #t33 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v6 = let final Never #t34 = (let final Never #t35 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[](let final Never #t36 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v7 = let final Never #t37 = (let final Never #t38 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v8 = let final Never #t39 = (let final Never #t40 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+    Never v9 = let final Never #t41 = (let final Never #t42 = x{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
   }
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue41349.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41349.dart.strong.expect
index 16cf6c9..e517198 100644
--- a/pkg/front_end/testcases/nnbd/issue41349.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41349.dart.strong.expect
@@ -44,16 +44,16 @@
   self::testFunction(() → core::int => 53);
 }
 static method testA(self::A? a) → dynamic {
-  self::expect(23, let final self::A? #t1 = a in #t1 == null ?{dynamic} null : #t1{self::A}.{self::A::foo}(){() → dynamic});
+  self::expect(23, let final self::A? #t1 = a in #t1.{core::Object::==}(null) ?{dynamic} null : #t1{self::A}.{self::A::foo}());
   self::expect(42, self::B|foo(a));
-  self::expect(123, let final self::A? #t2 = a in #t2 == null ?{dynamic} null : self::C|bar(#t2{self::A}));
+  self::expect(123, let final self::A? #t2 = a in #t2.{core::Object::==}(null) ?{dynamic} null : self::C|bar(#t2{self::A}));
   self::expect(87, self::B|bar(a));
 }
 static method testFunction(() →? core::int f) → dynamic {
-  self::expect(53, let final () →? core::int #t3 = f in #t3 == null ?{core::int?} null : #t3{() → core::int}(){() → core::int});
+  self::expect(53, let final () →? core::int #t3 = f in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{() → core::int}.call());
   self::expect(76, self::D|call(f));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41349.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41349.dart.strong.transformed.expect
index 16cf6c9..e517198 100644
--- a/pkg/front_end/testcases/nnbd/issue41349.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41349.dart.strong.transformed.expect
@@ -44,16 +44,16 @@
   self::testFunction(() → core::int => 53);
 }
 static method testA(self::A? a) → dynamic {
-  self::expect(23, let final self::A? #t1 = a in #t1 == null ?{dynamic} null : #t1{self::A}.{self::A::foo}(){() → dynamic});
+  self::expect(23, let final self::A? #t1 = a in #t1.{core::Object::==}(null) ?{dynamic} null : #t1{self::A}.{self::A::foo}());
   self::expect(42, self::B|foo(a));
-  self::expect(123, let final self::A? #t2 = a in #t2 == null ?{dynamic} null : self::C|bar(#t2{self::A}));
+  self::expect(123, let final self::A? #t2 = a in #t2.{core::Object::==}(null) ?{dynamic} null : self::C|bar(#t2{self::A}));
   self::expect(87, self::B|bar(a));
 }
 static method testFunction(() →? core::int f) → dynamic {
-  self::expect(53, let final () →? core::int #t3 = f in #t3 == null ?{core::int?} null : #t3{() → core::int}(){() → core::int});
+  self::expect(53, let final () →? core::int #t3 = f in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{() → core::int}.call());
   self::expect(76, self::D|call(f));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41349.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41349.dart.weak.expect
index 16cf6c9..e517198 100644
--- a/pkg/front_end/testcases/nnbd/issue41349.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41349.dart.weak.expect
@@ -44,16 +44,16 @@
   self::testFunction(() → core::int => 53);
 }
 static method testA(self::A? a) → dynamic {
-  self::expect(23, let final self::A? #t1 = a in #t1 == null ?{dynamic} null : #t1{self::A}.{self::A::foo}(){() → dynamic});
+  self::expect(23, let final self::A? #t1 = a in #t1.{core::Object::==}(null) ?{dynamic} null : #t1{self::A}.{self::A::foo}());
   self::expect(42, self::B|foo(a));
-  self::expect(123, let final self::A? #t2 = a in #t2 == null ?{dynamic} null : self::C|bar(#t2{self::A}));
+  self::expect(123, let final self::A? #t2 = a in #t2.{core::Object::==}(null) ?{dynamic} null : self::C|bar(#t2{self::A}));
   self::expect(87, self::B|bar(a));
 }
 static method testFunction(() →? core::int f) → dynamic {
-  self::expect(53, let final () →? core::int #t3 = f in #t3 == null ?{core::int?} null : #t3{() → core::int}(){() → core::int});
+  self::expect(53, let final () →? core::int #t3 = f in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{() → core::int}.call());
   self::expect(76, self::D|call(f));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41349.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41349.dart.weak.transformed.expect
index 16cf6c9..e517198 100644
--- a/pkg/front_end/testcases/nnbd/issue41349.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41349.dart.weak.transformed.expect
@@ -44,16 +44,16 @@
   self::testFunction(() → core::int => 53);
 }
 static method testA(self::A? a) → dynamic {
-  self::expect(23, let final self::A? #t1 = a in #t1 == null ?{dynamic} null : #t1{self::A}.{self::A::foo}(){() → dynamic});
+  self::expect(23, let final self::A? #t1 = a in #t1.{core::Object::==}(null) ?{dynamic} null : #t1{self::A}.{self::A::foo}());
   self::expect(42, self::B|foo(a));
-  self::expect(123, let final self::A? #t2 = a in #t2 == null ?{dynamic} null : self::C|bar(#t2{self::A}));
+  self::expect(123, let final self::A? #t2 = a in #t2.{core::Object::==}(null) ?{dynamic} null : self::C|bar(#t2{self::A}));
   self::expect(87, self::B|bar(a));
 }
 static method testFunction(() →? core::int f) → dynamic {
-  self::expect(53, let final () →? core::int #t3 = f in #t3 == null ?{core::int?} null : #t3{() → core::int}(){() → core::int});
+  self::expect(53, let final () →? core::int #t3 = f in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{() → core::int}.call());
   self::expect(76, self::D|call(f));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41386.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41386.dart.strong.expect
index b356950..6f63736 100644
--- a/pkg/front_end/testcases/nnbd/issue41386.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41386.dart.strong.expect
@@ -12,12 +12,12 @@
 import "dart:core" as core;
 
 static method predicate<T extends core::Object? = dynamic>((self::predicate::T%) → core::bool fn) → (self::predicate::T%) → core::bool
-  return (self::predicate::T% val) → core::bool => fn(val){(self::predicate::T%) → core::bool};
+  return (self::predicate::T% val) → core::bool => fn.call(val);
 static method test() → void {
   core::print(self::predicate<core::Object?>((core::Object? v) → core::bool => invalid-expression "pkg/front_end/testcases/nnbd/issue41386.dart:8:28: Error: The operator '%' isn't defined for the class 'Object?'.
  - 'Object' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '%' operator.
   print(predicate((v) => v % 2 == 1)(3));
-                           ^" =={core::Object::==}{(core::Object) → core::bool} 1)(3){(core::Object?) → core::bool});
+                           ^".{core::Object::==}(1)).call(3));
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41386.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41386.dart.strong.transformed.expect
index b356950..6f63736 100644
--- a/pkg/front_end/testcases/nnbd/issue41386.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41386.dart.strong.transformed.expect
@@ -12,12 +12,12 @@
 import "dart:core" as core;
 
 static method predicate<T extends core::Object? = dynamic>((self::predicate::T%) → core::bool fn) → (self::predicate::T%) → core::bool
-  return (self::predicate::T% val) → core::bool => fn(val){(self::predicate::T%) → core::bool};
+  return (self::predicate::T% val) → core::bool => fn.call(val);
 static method test() → void {
   core::print(self::predicate<core::Object?>((core::Object? v) → core::bool => invalid-expression "pkg/front_end/testcases/nnbd/issue41386.dart:8:28: Error: The operator '%' isn't defined for the class 'Object?'.
  - 'Object' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '%' operator.
   print(predicate((v) => v % 2 == 1)(3));
-                           ^" =={core::Object::==}{(core::Object) → core::bool} 1)(3){(core::Object?) → core::bool});
+                           ^".{core::Object::==}(1)).call(3));
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41386.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41386.dart.weak.expect
index b356950..6f63736 100644
--- a/pkg/front_end/testcases/nnbd/issue41386.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41386.dart.weak.expect
@@ -12,12 +12,12 @@
 import "dart:core" as core;
 
 static method predicate<T extends core::Object? = dynamic>((self::predicate::T%) → core::bool fn) → (self::predicate::T%) → core::bool
-  return (self::predicate::T% val) → core::bool => fn(val){(self::predicate::T%) → core::bool};
+  return (self::predicate::T% val) → core::bool => fn.call(val);
 static method test() → void {
   core::print(self::predicate<core::Object?>((core::Object? v) → core::bool => invalid-expression "pkg/front_end/testcases/nnbd/issue41386.dart:8:28: Error: The operator '%' isn't defined for the class 'Object?'.
  - 'Object' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '%' operator.
   print(predicate((v) => v % 2 == 1)(3));
-                           ^" =={core::Object::==}{(core::Object) → core::bool} 1)(3){(core::Object?) → core::bool});
+                           ^".{core::Object::==}(1)).call(3));
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41386.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41386.dart.weak.transformed.expect
index b356950..6f63736 100644
--- a/pkg/front_end/testcases/nnbd/issue41386.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41386.dart.weak.transformed.expect
@@ -12,12 +12,12 @@
 import "dart:core" as core;
 
 static method predicate<T extends core::Object? = dynamic>((self::predicate::T%) → core::bool fn) → (self::predicate::T%) → core::bool
-  return (self::predicate::T% val) → core::bool => fn(val){(self::predicate::T%) → core::bool};
+  return (self::predicate::T% val) → core::bool => fn.call(val);
 static method test() → void {
   core::print(self::predicate<core::Object?>((core::Object? v) → core::bool => invalid-expression "pkg/front_end/testcases/nnbd/issue41386.dart:8:28: Error: The operator '%' isn't defined for the class 'Object?'.
  - 'Object' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '%' operator.
   print(predicate((v) => v % 2 == 1)(3));
-                           ^" =={core::Object::==}{(core::Object) → core::bool} 1)(3){(core::Object?) → core::bool});
+                           ^".{core::Object::==}(1)).call(3));
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41386b.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41386b.dart.strong.expect
index 7223846..5e52bce 100644
--- a/pkg/front_end/testcases/nnbd/issue41386b.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41386b.dart.strong.expect
@@ -4,9 +4,9 @@
 
 static method test() → void {
   core::Map<dynamic, dynamic> map = <dynamic, dynamic>{};
-  map.{core::Map::[]}(0){(core::Object?) → dynamic}{dynamic}.foo;
+  map.{core::Map::[]}(0).foo;
   core::Iterable<core::String> elements = <core::String>[];
   core::List<dynamic> list = core::List::from<dynamic>(elements);
-  core::List::from<dynamic>(elements).{core::Iterable::forEach}((dynamic element) → void => element{dynamic}.foo){((dynamic) → void) → void};
+  core::List::from<dynamic>(elements).{core::Iterable::forEach}((dynamic element) → void => element.foo);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41386b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41386b.dart.strong.transformed.expect
index 3db24ca..240cc0d 100644
--- a/pkg/front_end/testcases/nnbd/issue41386b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41386b.dart.strong.transformed.expect
@@ -4,9 +4,9 @@
 
 static method test() → void {
   core::Map<dynamic, dynamic> map = <dynamic, dynamic>{};
-  map.{core::Map::[]}(0){(core::Object?) → dynamic}{dynamic}.foo;
+  map.{core::Map::[]}(0).foo;
   core::Iterable<core::String> elements = core::_GrowableList::•<core::String>(0);
   core::List<dynamic> list = core::List::from<dynamic>(elements);
-  core::List::from<dynamic>(elements).{core::Iterable::forEach}((dynamic element) → void => element{dynamic}.foo){((dynamic) → void) → void};
+  core::List::from<dynamic>(elements).{core::Iterable::forEach}((dynamic element) → void => element.foo);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41386b.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41386b.dart.weak.expect
index 7223846..5e52bce 100644
--- a/pkg/front_end/testcases/nnbd/issue41386b.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41386b.dart.weak.expect
@@ -4,9 +4,9 @@
 
 static method test() → void {
   core::Map<dynamic, dynamic> map = <dynamic, dynamic>{};
-  map.{core::Map::[]}(0){(core::Object?) → dynamic}{dynamic}.foo;
+  map.{core::Map::[]}(0).foo;
   core::Iterable<core::String> elements = <core::String>[];
   core::List<dynamic> list = core::List::from<dynamic>(elements);
-  core::List::from<dynamic>(elements).{core::Iterable::forEach}((dynamic element) → void => element{dynamic}.foo){((dynamic) → void) → void};
+  core::List::from<dynamic>(elements).{core::Iterable::forEach}((dynamic element) → void => element.foo);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41386b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41386b.dart.weak.transformed.expect
index 3db24ca..240cc0d 100644
--- a/pkg/front_end/testcases/nnbd/issue41386b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41386b.dart.weak.transformed.expect
@@ -4,9 +4,9 @@
 
 static method test() → void {
   core::Map<dynamic, dynamic> map = <dynamic, dynamic>{};
-  map.{core::Map::[]}(0){(core::Object?) → dynamic}{dynamic}.foo;
+  map.{core::Map::[]}(0).foo;
   core::Iterable<core::String> elements = core::_GrowableList::•<core::String>(0);
   core::List<dynamic> list = core::List::from<dynamic>(elements);
-  core::List::from<dynamic>(elements).{core::Iterable::forEach}((dynamic element) → void => element{dynamic}.foo){((dynamic) → void) → void};
+  core::List::from<dynamic>(elements).{core::Iterable::forEach}((dynamic element) → void => element.foo);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.expect
index 96bb085..7c85531 100644
--- a/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.expect
@@ -77,18 +77,18 @@
   asy::Future<core::bool> var1 = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:31:52: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
  - 'Future' is from 'dart:async'.
   Future<bool> var1 = (() async => await getNull())(); // error
-                                                   ^" in (() → asy::Future<dynamic> async => await self::getNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
-  asy::Future<core::bool> var2 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
-  core::bool var3 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+                                                   ^" in (() → asy::Future<dynamic> async => await self::getNull()).call() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+  asy::Future<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
+  core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
   asy::Future<core::bool> var4 = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:34:58: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
  - 'Future' is from 'dart:async'.
   Future<bool> var4 = (() async => await getFutureNull())(); // error
-                                                         ^" in (() → asy::Future<dynamic> async => await self::getFutureNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+                                                         ^" in (() → asy::Future<dynamic> async => await self::getFutureNull()).call() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
   asy::Future<core::bool> var5 = let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:35:46: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
  - 'Future' is from 'dart:async'.
   Future<bool> var5 = (() => getFutureNull())(); // error
-                                             ^" in (() → asy::Future<dynamic> => self::getFutureNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
-  asy::Future<core::bool> var6 = (() → asy::Future<core::bool> => self::getFutureBool())(){() → asy::Future<core::bool>};
-  asy::Future<core::bool> var7 = (() → asy::Future<core::bool> async => self::getFutureBool())(){() → asy::Future<core::bool>};
+                                             ^" in (() → asy::Future<dynamic> => self::getFutureNull()).call() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+  asy::Future<core::bool> var6 = (() → asy::Future<core::bool> => self::getFutureBool()).call();
+  asy::Future<core::bool> var7 = (() → asy::Future<core::bool> async => self::getFutureBool()).call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect
index d679fcc..3ffc279 100644
--- a/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect
@@ -322,9 +322,9 @@
           :async_op.call();
           :is_sync = true;
           return :async_future;
-        })(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
-        asy::Future<core::bool> var2 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
-        core::bool var3 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+        }).call() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+        asy::Future<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
+        core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
         asy::Future<core::bool> var4 = let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:34:58: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
  - 'Future' is from 'dart:async'.
   Future<bool> var4 = (() async => await getFutureNull())(); // error
@@ -356,12 +356,12 @@
           :async_op.call();
           :is_sync = true;
           return :async_future;
-        })(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+        }).call() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
         asy::Future<core::bool> var5 = let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:35:46: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
  - 'Future' is from 'dart:async'.
   Future<bool> var5 = (() => getFutureNull())(); // error
-                                             ^" in (() → asy::Future<dynamic> => self::getFutureNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
-        asy::Future<core::bool> var6 = (() → asy::Future<core::bool> => self::getFutureBool())(){() → asy::Future<core::bool>};
+                                             ^" in (() → asy::Future<dynamic> => self::getFutureNull()).call() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+        asy::Future<core::bool> var6 = (() → asy::Future<core::bool> => self::getFutureBool()).call();
         asy::Future<core::bool> var7 = (() → asy::Future<core::bool> /* originally async */ {
           final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
           core::bool* :is_sync = false;
@@ -388,7 +388,7 @@
           :async_op.call();
           :is_sync = true;
           return :async_future;
-        })(){() → asy::Future<core::bool>};
+        }).call();
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
       return;
diff --git a/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.expect
index 96bb085..7c85531 100644
--- a/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.expect
@@ -77,18 +77,18 @@
   asy::Future<core::bool> var1 = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:31:52: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
  - 'Future' is from 'dart:async'.
   Future<bool> var1 = (() async => await getNull())(); // error
-                                                   ^" in (() → asy::Future<dynamic> async => await self::getNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
-  asy::Future<core::bool> var2 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
-  core::bool var3 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+                                                   ^" in (() → asy::Future<dynamic> async => await self::getNull()).call() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+  asy::Future<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
+  core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
   asy::Future<core::bool> var4 = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:34:58: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
  - 'Future' is from 'dart:async'.
   Future<bool> var4 = (() async => await getFutureNull())(); // error
-                                                         ^" in (() → asy::Future<dynamic> async => await self::getFutureNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+                                                         ^" in (() → asy::Future<dynamic> async => await self::getFutureNull()).call() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
   asy::Future<core::bool> var5 = let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:35:46: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
  - 'Future' is from 'dart:async'.
   Future<bool> var5 = (() => getFutureNull())(); // error
-                                             ^" in (() → asy::Future<dynamic> => self::getFutureNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
-  asy::Future<core::bool> var6 = (() → asy::Future<core::bool> => self::getFutureBool())(){() → asy::Future<core::bool>};
-  asy::Future<core::bool> var7 = (() → asy::Future<core::bool> async => self::getFutureBool())(){() → asy::Future<core::bool>};
+                                             ^" in (() → asy::Future<dynamic> => self::getFutureNull()).call() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+  asy::Future<core::bool> var6 = (() → asy::Future<core::bool> => self::getFutureBool()).call();
+  asy::Future<core::bool> var7 = (() → asy::Future<core::bool> async => self::getFutureBool()).call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect
index d679fcc..3ffc279 100644
--- a/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect
@@ -322,9 +322,9 @@
           :async_op.call();
           :is_sync = true;
           return :async_future;
-        })(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
-        asy::Future<core::bool> var2 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
-        core::bool var3 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+        }).call() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+        asy::Future<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
+        core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
         asy::Future<core::bool> var4 = let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:34:58: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
  - 'Future' is from 'dart:async'.
   Future<bool> var4 = (() async => await getFutureNull())(); // error
@@ -356,12 +356,12 @@
           :async_op.call();
           :is_sync = true;
           return :async_future;
-        })(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+        }).call() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
         asy::Future<core::bool> var5 = let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:35:46: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
  - 'Future' is from 'dart:async'.
   Future<bool> var5 = (() => getFutureNull())(); // error
-                                             ^" in (() → asy::Future<dynamic> => self::getFutureNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
-        asy::Future<core::bool> var6 = (() → asy::Future<core::bool> => self::getFutureBool())(){() → asy::Future<core::bool>};
+                                             ^" in (() → asy::Future<dynamic> => self::getFutureNull()).call() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+        asy::Future<core::bool> var6 = (() → asy::Future<core::bool> => self::getFutureBool()).call();
         asy::Future<core::bool> var7 = (() → asy::Future<core::bool> /* originally async */ {
           final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
           core::bool* :is_sync = false;
@@ -388,7 +388,7 @@
           :async_op.call();
           :is_sync = true;
           return :async_future;
-        })(){() → asy::Future<core::bool>};
+        }).call();
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
       return;
diff --git a/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.expect
index 1fab4ae..fb11d34 100644
--- a/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.expect
@@ -100,22 +100,22 @@
   })(); // error
     ^" in (() → core::Iterable<dynamic> sync* {
     yield self::getNull();
-  })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
-  core::Iterable<core::bool> var2 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
-  core::bool var3 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+  }).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+  core::Iterable<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
+  core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
   core::Iterable<core::bool> var4 = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:54:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
   })(); // error
     ^" in (() → core::Iterable<dynamic> sync* {
     yield* self::getIterableNull();
-  })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+  }).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
   core::Iterable<core::bool> var5 = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:55:50: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
   Iterable<bool> var5 = (() => getIterableNull())(); // error
-                                                 ^" in (() → core::Iterable<dynamic> => self::getIterableNull())(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
-  core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool())(){() → core::Iterable<core::bool>};
+                                                 ^" in (() → core::Iterable<dynamic> => self::getIterableNull()).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+  core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool()).call();
   core::Iterable<core::bool> var7 = (() → core::Iterable<core::bool> sync* {
     yield* self::getIterableBool();
-  })(){() → core::Iterable<core::bool>};
+  }).call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
index ca992db..fa110f4 100644
--- a/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
@@ -238,9 +238,9 @@
             return :sync_op;
           }
           return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
-        })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
-        core::Iterable<core::bool> var2 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
-        core::bool var3 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+        }).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+        core::Iterable<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
+        core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
         core::Iterable<core::bool> var4 = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:54:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
   })(); // error
@@ -260,12 +260,12 @@
             return :sync_op;
           }
           return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
-        })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+        }).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
         core::Iterable<core::bool> var5 = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:55:50: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
   Iterable<bool> var5 = (() => getIterableNull())(); // error
-                                                 ^" in (() → core::Iterable<dynamic> => self::getIterableNull())(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
-        core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool())(){() → core::Iterable<core::bool>};
+                                                 ^" in (() → core::Iterable<dynamic> => self::getIterableNull()).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+        core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool()).call();
         core::Iterable<core::bool> var7 = (() → core::Iterable<core::bool> /* originally sync* */ {
           function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
             core::int :await_jump_var = 0;
@@ -282,7 +282,7 @@
             return :sync_op;
           }
           return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
-        })(){() → core::Iterable<core::bool>};
+        }).call();
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
       return;
diff --git a/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.expect
index 1fab4ae..fb11d34 100644
--- a/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.expect
@@ -100,22 +100,22 @@
   })(); // error
     ^" in (() → core::Iterable<dynamic> sync* {
     yield self::getNull();
-  })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
-  core::Iterable<core::bool> var2 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
-  core::bool var3 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+  }).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+  core::Iterable<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
+  core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
   core::Iterable<core::bool> var4 = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:54:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
   })(); // error
     ^" in (() → core::Iterable<dynamic> sync* {
     yield* self::getIterableNull();
-  })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+  }).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
   core::Iterable<core::bool> var5 = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:55:50: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
   Iterable<bool> var5 = (() => getIterableNull())(); // error
-                                                 ^" in (() → core::Iterable<dynamic> => self::getIterableNull())(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
-  core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool())(){() → core::Iterable<core::bool>};
+                                                 ^" in (() → core::Iterable<dynamic> => self::getIterableNull()).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+  core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool()).call();
   core::Iterable<core::bool> var7 = (() → core::Iterable<core::bool> sync* {
     yield* self::getIterableBool();
-  })(){() → core::Iterable<core::bool>};
+  }).call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
index ca992db..fa110f4 100644
--- a/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
@@ -238,9 +238,9 @@
             return :sync_op;
           }
           return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
-        })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
-        core::Iterable<core::bool> var2 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
-        core::bool var3 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+        }).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+        core::Iterable<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
+        core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
         core::Iterable<core::bool> var4 = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:54:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
   })(); // error
@@ -260,12 +260,12 @@
             return :sync_op;
           }
           return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
-        })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+        }).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
         core::Iterable<core::bool> var5 = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:55:50: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
   Iterable<bool> var5 = (() => getIterableNull())(); // error
-                                                 ^" in (() → core::Iterable<dynamic> => self::getIterableNull())(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
-        core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool())(){() → core::Iterable<core::bool>};
+                                                 ^" in (() → core::Iterable<dynamic> => self::getIterableNull()).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+        core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool()).call();
         core::Iterable<core::bool> var7 = (() → core::Iterable<core::bool> /* originally sync* */ {
           function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
             core::int :await_jump_var = 0;
@@ -282,7 +282,7 @@
             return :sync_op;
           }
           return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
-        })(){() → core::Iterable<core::bool>};
+        }).call();
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
       return;
diff --git a/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.expect
index 20ef075..1a6f68b 100644
--- a/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.expect
@@ -101,22 +101,22 @@
   })(); // error
     ^" in (() → asy::Stream<dynamic> async* {
     yield self::getNull();
-  })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
-  asy::Stream<core::bool> var2 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
-  core::bool var3 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+  }).call() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+  asy::Stream<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
+  core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
   asy::Stream<core::bool> var4 = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:54:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
  - 'Stream' is from 'dart:async'.
   })(); // error
     ^" in (() → asy::Stream<dynamic> async* {
     yield* self::getStreamNull();
-  })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+  }).call() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
   asy::Stream<core::bool> var5 = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:55:46: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
  - 'Stream' is from 'dart:async'.
   Stream<bool> var5 = (() => getStreamNull())(); // error
-                                             ^" in (() → asy::Stream<dynamic> => self::getStreamNull())(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
-  asy::Stream<core::bool> var6 = (() → asy::Stream<core::bool> => self::getStreamBool())(){() → asy::Stream<core::bool>};
+                                             ^" in (() → asy::Stream<dynamic> => self::getStreamNull()).call() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+  asy::Stream<core::bool> var6 = (() → asy::Stream<core::bool> => self::getStreamBool()).call();
   asy::Stream<core::bool> var7 = (() → asy::Stream<core::bool> async* {
     yield* self::getStreamBool();
-  })(){() → asy::Stream<core::bool>};
+  }).call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect
index 1fd1038..8aef3f8 100644
--- a/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect
@@ -382,9 +382,9 @@
           :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
           :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
           return :controller_stream;
-        })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
-        asy::Stream<core::bool> var2 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
-        core::bool var3 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+        }).call() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+        asy::Stream<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
+        core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
         asy::Stream<core::bool> var4 = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:54:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
  - 'Stream' is from 'dart:async'.
   })(); // error
@@ -420,12 +420,12 @@
           :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
           :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
           return :controller_stream;
-        })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+        }).call() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
         asy::Stream<core::bool> var5 = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:55:46: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
  - 'Stream' is from 'dart:async'.
   Stream<bool> var5 = (() => getStreamNull())(); // error
-                                             ^" in (() → asy::Stream<dynamic> => self::getStreamNull())(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
-        asy::Stream<core::bool> var6 = (() → asy::Stream<core::bool> => self::getStreamBool())(){() → asy::Stream<core::bool>};
+                                             ^" in (() → asy::Stream<dynamic> => self::getStreamNull()).call() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+        asy::Stream<core::bool> var6 = (() → asy::Stream<core::bool> => self::getStreamBool()).call();
         asy::Stream<core::bool> var7 = (() → asy::Stream<core::bool> /* originally async* */ {
           asy::_AsyncStarStreamController<core::bool>? :controller;
           dynamic :controller_stream;
@@ -458,7 +458,7 @@
           :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
           :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
           return :controller_stream;
-        })(){() → asy::Stream<core::bool>};
+        }).call();
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
       return;
diff --git a/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.expect
index 20ef075..1a6f68b 100644
--- a/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.expect
@@ -101,22 +101,22 @@
   })(); // error
     ^" in (() → asy::Stream<dynamic> async* {
     yield self::getNull();
-  })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
-  asy::Stream<core::bool> var2 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
-  core::bool var3 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+  }).call() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+  asy::Stream<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
+  core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
   asy::Stream<core::bool> var4 = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:54:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
  - 'Stream' is from 'dart:async'.
   })(); // error
     ^" in (() → asy::Stream<dynamic> async* {
     yield* self::getStreamNull();
-  })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+  }).call() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
   asy::Stream<core::bool> var5 = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:55:46: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
  - 'Stream' is from 'dart:async'.
   Stream<bool> var5 = (() => getStreamNull())(); // error
-                                             ^" in (() → asy::Stream<dynamic> => self::getStreamNull())(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
-  asy::Stream<core::bool> var6 = (() → asy::Stream<core::bool> => self::getStreamBool())(){() → asy::Stream<core::bool>};
+                                             ^" in (() → asy::Stream<dynamic> => self::getStreamNull()).call() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+  asy::Stream<core::bool> var6 = (() → asy::Stream<core::bool> => self::getStreamBool()).call();
   asy::Stream<core::bool> var7 = (() → asy::Stream<core::bool> async* {
     yield* self::getStreamBool();
-  })(){() → asy::Stream<core::bool>};
+  }).call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect
index 1fd1038..8aef3f8 100644
--- a/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect
@@ -382,9 +382,9 @@
           :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
           :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
           return :controller_stream;
-        })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
-        asy::Stream<core::bool> var2 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
-        core::bool var3 = (() → dynamic => self::getNull())() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+        }).call() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+        asy::Stream<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
+        core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
         asy::Stream<core::bool> var4 = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:54:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
  - 'Stream' is from 'dart:async'.
   })(); // error
@@ -420,12 +420,12 @@
           :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
           :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
           return :controller_stream;
-        })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+        }).call() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
         asy::Stream<core::bool> var5 = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:55:46: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
  - 'Stream' is from 'dart:async'.
   Stream<bool> var5 = (() => getStreamNull())(); // error
-                                             ^" in (() → asy::Stream<dynamic> => self::getStreamNull())(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
-        asy::Stream<core::bool> var6 = (() → asy::Stream<core::bool> => self::getStreamBool())(){() → asy::Stream<core::bool>};
+                                             ^" in (() → asy::Stream<dynamic> => self::getStreamNull()).call() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+        asy::Stream<core::bool> var6 = (() → asy::Stream<core::bool> => self::getStreamBool()).call();
         asy::Stream<core::bool> var7 = (() → asy::Stream<core::bool> /* originally async* */ {
           asy::_AsyncStarStreamController<core::bool>? :controller;
           dynamic :controller_stream;
@@ -458,7 +458,7 @@
           :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
           :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
           return :controller_stream;
-        })(){() → asy::Stream<core::bool>};
+        }).call();
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
       return;
diff --git a/pkg/front_end/testcases/nnbd/issue41495.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41495.dart.strong.expect
index 0341432..2191477 100644
--- a/pkg/front_end/testcases/nnbd/issue41495.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41495.dart.strong.expect
@@ -32,10 +32,10 @@
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue41495.dart'.
 Try accessing using ?. instead.
   a1.c1;
-     ^^" in a1.{self::A::c1}{<nullable>}.{core::int};
+     ^^" in a1.{self::A::c1};
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41495.dart:15:6: Error: Property 'test' cannot be accessed on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue41495.dart'.
 Try accessing using ?. instead.
   a1.test;
-     ^^^^" in a1.{self::A::test}{<nullable>}.{() → core::int};
+     ^^^^" in a1.{self::A::test};
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41495.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41495.dart.strong.transformed.expect
index 0ed1268..64e62d6 100644
--- a/pkg/front_end/testcases/nnbd/issue41495.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41495.dart.strong.transformed.expect
@@ -32,10 +32,10 @@
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue41495.dart'.
 Try accessing using ?. instead.
   a1.c1;
-     ^^" in a1.{self::A::c1}{<nullable>}.{core::int};
+     ^^" in a1.{self::A::c1};
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41495.dart:15:6: Error: Property 'test' cannot be accessed on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue41495.dart'.
 Try accessing using ?. instead.
   a1.test;
-     ^^^^" in a1.{self::A::test}{<nullable>}.{() → core::int};
+     ^^^^" in a1.{self::A::test};
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41495.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41495.dart.weak.expect
index 0341432..2191477 100644
--- a/pkg/front_end/testcases/nnbd/issue41495.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41495.dart.weak.expect
@@ -32,10 +32,10 @@
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue41495.dart'.
 Try accessing using ?. instead.
   a1.c1;
-     ^^" in a1.{self::A::c1}{<nullable>}.{core::int};
+     ^^" in a1.{self::A::c1};
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41495.dart:15:6: Error: Property 'test' cannot be accessed on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue41495.dart'.
 Try accessing using ?. instead.
   a1.test;
-     ^^^^" in a1.{self::A::test}{<nullable>}.{() → core::int};
+     ^^^^" in a1.{self::A::test};
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41495.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41495.dart.weak.transformed.expect
index 0ed1268..64e62d6 100644
--- a/pkg/front_end/testcases/nnbd/issue41495.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41495.dart.weak.transformed.expect
@@ -32,10 +32,10 @@
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue41495.dart'.
 Try accessing using ?. instead.
   a1.c1;
-     ^^" in a1.{self::A::c1}{<nullable>}.{core::int};
+     ^^" in a1.{self::A::c1};
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41495.dart:15:6: Error: Property 'test' cannot be accessed on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue41495.dart'.
 Try accessing using ?. instead.
   a1.test;
-     ^^^^" in a1.{self::A::test}{<nullable>}.{() → core::int};
+     ^^^^" in a1.{self::A::test};
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41657.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41657.dart.strong.expect
index 5ff7987..b2b28aa 100644
--- a/pkg/front_end/testcases/nnbd/issue41657.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41657.dart.strong.expect
@@ -40,7 +40,7 @@
   self::expect(self::isLegacySubtyping2a, #C1);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/issue41657.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41657.dart.strong.transformed.expect
index 0dd695c..0099f42 100644
--- a/pkg/front_end/testcases/nnbd/issue41657.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41657.dart.strong.transformed.expect
@@ -40,7 +40,7 @@
   self::expect(self::isLegacySubtyping2a, #C1);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/issue41657.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41657.dart.weak.expect
index d4bfe7f..574dddd 100644
--- a/pkg/front_end/testcases/nnbd/issue41657.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41657.dart.weak.expect
@@ -13,7 +13,7 @@
   self::expect(self::isLegacySubtyping2a, #C1);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/issue41657.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41657.dart.weak.transformed.expect
index cd01d76..c5fa19e 100644
--- a/pkg/front_end/testcases/nnbd/issue41657.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41657.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
   self::expect(self::isLegacySubtyping2a, #C1);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd/issue41697.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41697.dart.strong.expect
index c36ec72..f04b2c9 100644
--- a/pkg/front_end/testcases/nnbd/issue41697.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41697.dart.strong.expect
@@ -31,26 +31,26 @@
 }
 static method test1(self::C<core::num> c) → dynamic {
   <S extends core::num>(S) → core::num f1 = c.{self::C::field1} = <S extends core::num>(S s) → core::num {
-    return s.{core::num::+}(1){(core::num) → core::num};
+    return s.{core::num::+}(1);
   };
   <S extends FutureOr<core::num>>(S, FutureOr<core::num>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num>>(S s, FutureOr<core::num>t) → asy::Future<core::num> async {
-    return (await t).{core::num::+}(1){(core::num) → core::num};
+    return (await t).{core::num::+}(1);
   };
 }
 static method test2(self::C<core::num?> c) → dynamic {
   <S extends core::num?>(S%) → core::num f1 = c.{self::C::field1} = <S extends core::num?>(S% s) → core::num {
     return let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:33:14: Error: Operator '+' cannot be called on 'S' because it is potentially null.
     return s + 1; // error
-             ^" in s.{core::num::+}(1){(core::num) → core::num};
+             ^" in s.{core::num::+}(1);
   };
   <S extends FutureOr<core::num?>>(S%, FutureOr<core::num?>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num?>>(S% s, FutureOr<core::num?>t) → asy::Future<core::num> async {
     return let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:36:22: Error: Operator '+' cannot be called on 'num?' because it is potentially null.
     return (await t) + 1; // error
-                     ^" in (await t).{core::num::+}(1){(core::num) → core::num};
+                     ^" in (await t).{core::num::+}(1);
   };
 }
 static method test3<S extends core::num?>(self::test3::S% s) → dynamic
   return let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:40:33: Error: Operator '+' cannot be called on 'S' because it is potentially null.
 test3<S extends num?>(S s) => s + 1; // error
-                                ^" in s.{core::num::+}(1){(core::num) → core::num};
+                                ^" in s.{core::num::+}(1);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41697.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41697.dart.strong.transformed.expect
index aef590c..7d2ec63 100644
--- a/pkg/front_end/testcases/nnbd/issue41697.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41697.dart.strong.transformed.expect
@@ -32,7 +32,7 @@
 }
 static method test1(self::C<core::num> c) → dynamic {
   <S extends core::num>(S) → core::num f1 = c.{self::C::field1} = <S extends core::num>(S s) → core::num {
-    return s.{core::num::+}(1){(core::num) → core::num};
+    return s.{core::num::+}(1);
   };
   <S extends FutureOr<core::num>>(S, FutureOr<core::num>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num>>(S s, FutureOr<core::num>t) → asy::Future<core::num> /* originally async */ {
     final asy::_Future<core::num> :async_future = new asy::_Future::•<core::num>();
@@ -48,7 +48,7 @@
         #L1:
         {
           [yield] let dynamic #t1 = asy::_awaitHelper(t, :async_op_then, :async_op_error, :async_op) in null;
-          :return_value = _in::unsafeCast<core::num>(:result).{core::num::+}(1){(core::num) → core::num};
+          :return_value = _in::unsafeCast<core::num>(:result).{core::num::+}(1);
           break #L1;
         }
         asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
@@ -68,7 +68,7 @@
   <S extends core::num?>(S%) → core::num f1 = c.{self::C::field1} = <S extends core::num?>(S% s) → core::num {
     return let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:33:14: Error: Operator '+' cannot be called on 'S' because it is potentially null.
     return s + 1; // error
-             ^" in s.{core::num::+}(1){(core::num) → core::num};
+             ^" in s.{core::num::+}(1);
   };
   <S extends FutureOr<core::num?>>(S%, FutureOr<core::num?>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num?>>(S% s, FutureOr<core::num?>t) → asy::Future<core::num> /* originally async */ {
     final asy::_Future<core::num> :async_future = new asy::_Future::•<core::num>();
@@ -87,7 +87,7 @@
     return (await t) + 1; // error
                      ^";
           [yield] let dynamic #t4 = asy::_awaitHelper(t, :async_op_then, :async_op_error, :async_op) in null;
-          :return_value = _in::unsafeCast<core::num?>(:result).{core::num::+}(1){(core::num) → core::num};
+          :return_value = _in::unsafeCast<core::num?>(:result).{core::num::+}(1);
           break #L2;
         }
         asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
@@ -106,5 +106,5 @@
 static method test3<S extends core::num?>(self::test3::S% s) → dynamic
   return let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:40:33: Error: Operator '+' cannot be called on 'S' because it is potentially null.
 test3<S extends num?>(S s) => s + 1; // error
-                                ^" in s.{core::num::+}(1){(core::num) → core::num};
+                                ^" in s.{core::num::+}(1);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41697.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41697.dart.weak.expect
index c36ec72..f04b2c9 100644
--- a/pkg/front_end/testcases/nnbd/issue41697.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41697.dart.weak.expect
@@ -31,26 +31,26 @@
 }
 static method test1(self::C<core::num> c) → dynamic {
   <S extends core::num>(S) → core::num f1 = c.{self::C::field1} = <S extends core::num>(S s) → core::num {
-    return s.{core::num::+}(1){(core::num) → core::num};
+    return s.{core::num::+}(1);
   };
   <S extends FutureOr<core::num>>(S, FutureOr<core::num>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num>>(S s, FutureOr<core::num>t) → asy::Future<core::num> async {
-    return (await t).{core::num::+}(1){(core::num) → core::num};
+    return (await t).{core::num::+}(1);
   };
 }
 static method test2(self::C<core::num?> c) → dynamic {
   <S extends core::num?>(S%) → core::num f1 = c.{self::C::field1} = <S extends core::num?>(S% s) → core::num {
     return let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:33:14: Error: Operator '+' cannot be called on 'S' because it is potentially null.
     return s + 1; // error
-             ^" in s.{core::num::+}(1){(core::num) → core::num};
+             ^" in s.{core::num::+}(1);
   };
   <S extends FutureOr<core::num?>>(S%, FutureOr<core::num?>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num?>>(S% s, FutureOr<core::num?>t) → asy::Future<core::num> async {
     return let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:36:22: Error: Operator '+' cannot be called on 'num?' because it is potentially null.
     return (await t) + 1; // error
-                     ^" in (await t).{core::num::+}(1){(core::num) → core::num};
+                     ^" in (await t).{core::num::+}(1);
   };
 }
 static method test3<S extends core::num?>(self::test3::S% s) → dynamic
   return let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:40:33: Error: Operator '+' cannot be called on 'S' because it is potentially null.
 test3<S extends num?>(S s) => s + 1; // error
-                                ^" in s.{core::num::+}(1){(core::num) → core::num};
+                                ^" in s.{core::num::+}(1);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41697.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41697.dart.weak.transformed.expect
index aef590c..7d2ec63 100644
--- a/pkg/front_end/testcases/nnbd/issue41697.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41697.dart.weak.transformed.expect
@@ -32,7 +32,7 @@
 }
 static method test1(self::C<core::num> c) → dynamic {
   <S extends core::num>(S) → core::num f1 = c.{self::C::field1} = <S extends core::num>(S s) → core::num {
-    return s.{core::num::+}(1){(core::num) → core::num};
+    return s.{core::num::+}(1);
   };
   <S extends FutureOr<core::num>>(S, FutureOr<core::num>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num>>(S s, FutureOr<core::num>t) → asy::Future<core::num> /* originally async */ {
     final asy::_Future<core::num> :async_future = new asy::_Future::•<core::num>();
@@ -48,7 +48,7 @@
         #L1:
         {
           [yield] let dynamic #t1 = asy::_awaitHelper(t, :async_op_then, :async_op_error, :async_op) in null;
-          :return_value = _in::unsafeCast<core::num>(:result).{core::num::+}(1){(core::num) → core::num};
+          :return_value = _in::unsafeCast<core::num>(:result).{core::num::+}(1);
           break #L1;
         }
         asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
@@ -68,7 +68,7 @@
   <S extends core::num?>(S%) → core::num f1 = c.{self::C::field1} = <S extends core::num?>(S% s) → core::num {
     return let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:33:14: Error: Operator '+' cannot be called on 'S' because it is potentially null.
     return s + 1; // error
-             ^" in s.{core::num::+}(1){(core::num) → core::num};
+             ^" in s.{core::num::+}(1);
   };
   <S extends FutureOr<core::num?>>(S%, FutureOr<core::num?>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num?>>(S% s, FutureOr<core::num?>t) → asy::Future<core::num> /* originally async */ {
     final asy::_Future<core::num> :async_future = new asy::_Future::•<core::num>();
@@ -87,7 +87,7 @@
     return (await t) + 1; // error
                      ^";
           [yield] let dynamic #t4 = asy::_awaitHelper(t, :async_op_then, :async_op_error, :async_op) in null;
-          :return_value = _in::unsafeCast<core::num?>(:result).{core::num::+}(1){(core::num) → core::num};
+          :return_value = _in::unsafeCast<core::num?>(:result).{core::num::+}(1);
           break #L2;
         }
         asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
@@ -106,5 +106,5 @@
 static method test3<S extends core::num?>(self::test3::S% s) → dynamic
   return let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:40:33: Error: Operator '+' cannot be called on 'S' because it is potentially null.
 test3<S extends num?>(S s) => s + 1; // error
-                                ^" in s.{core::num::+}(1){(core::num) → core::num};
+                                ^" in s.{core::num::+}(1);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41697b.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41697b.dart.strong.expect
index 62b372d..588916e 100644
--- a/pkg/front_end/testcases/nnbd/issue41697b.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41697b.dart.strong.expect
@@ -14,19 +14,19 @@
 import "dart:core" as core;
 
 static method test1<S extends core::num>(self::test1::S s) → dynamic {
-  core::num t = s.{core::num::+}(1){(core::num) → core::num};
+  core::num t = s.{core::num::+}(1);
 }
 static method test2<S extends core::num?>(self::test2::S% s) → dynamic {
   core::num t = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697b.dart:10:13: Error: Operator '+' cannot be called on 'S' because it is potentially null.
   var t = s + 1; // error
-            ^" in s.{core::num::+}(1){(core::num) → core::num};
+            ^" in s.{core::num::+}(1);
 }
 static method test3<S extends core::int>(self::test3::S s) → dynamic {
-  core::int t = s.{core::num::+}(1){(core::num) → core::int};
+  core::int t = s.{core::num::+}(1);
 }
 static method test4<S extends core::int?>(self::test4::S% s) → dynamic {
   core::num t = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697b.dart:18:13: Error: Operator '+' cannot be called on 'S' because it is potentially null.
   var t = s + 1; // error
-            ^" in s.{core::num::+}(1){(core::num) → core::num};
+            ^" in s.{core::num::+}(1);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41697b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41697b.dart.strong.transformed.expect
index 62b372d..588916e 100644
--- a/pkg/front_end/testcases/nnbd/issue41697b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41697b.dart.strong.transformed.expect
@@ -14,19 +14,19 @@
 import "dart:core" as core;
 
 static method test1<S extends core::num>(self::test1::S s) → dynamic {
-  core::num t = s.{core::num::+}(1){(core::num) → core::num};
+  core::num t = s.{core::num::+}(1);
 }
 static method test2<S extends core::num?>(self::test2::S% s) → dynamic {
   core::num t = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697b.dart:10:13: Error: Operator '+' cannot be called on 'S' because it is potentially null.
   var t = s + 1; // error
-            ^" in s.{core::num::+}(1){(core::num) → core::num};
+            ^" in s.{core::num::+}(1);
 }
 static method test3<S extends core::int>(self::test3::S s) → dynamic {
-  core::int t = s.{core::num::+}(1){(core::num) → core::int};
+  core::int t = s.{core::num::+}(1);
 }
 static method test4<S extends core::int?>(self::test4::S% s) → dynamic {
   core::num t = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697b.dart:18:13: Error: Operator '+' cannot be called on 'S' because it is potentially null.
   var t = s + 1; // error
-            ^" in s.{core::num::+}(1){(core::num) → core::num};
+            ^" in s.{core::num::+}(1);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41697b.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41697b.dart.weak.expect
index 62b372d..588916e 100644
--- a/pkg/front_end/testcases/nnbd/issue41697b.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41697b.dart.weak.expect
@@ -14,19 +14,19 @@
 import "dart:core" as core;
 
 static method test1<S extends core::num>(self::test1::S s) → dynamic {
-  core::num t = s.{core::num::+}(1){(core::num) → core::num};
+  core::num t = s.{core::num::+}(1);
 }
 static method test2<S extends core::num?>(self::test2::S% s) → dynamic {
   core::num t = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697b.dart:10:13: Error: Operator '+' cannot be called on 'S' because it is potentially null.
   var t = s + 1; // error
-            ^" in s.{core::num::+}(1){(core::num) → core::num};
+            ^" in s.{core::num::+}(1);
 }
 static method test3<S extends core::int>(self::test3::S s) → dynamic {
-  core::int t = s.{core::num::+}(1){(core::num) → core::int};
+  core::int t = s.{core::num::+}(1);
 }
 static method test4<S extends core::int?>(self::test4::S% s) → dynamic {
   core::num t = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697b.dart:18:13: Error: Operator '+' cannot be called on 'S' because it is potentially null.
   var t = s + 1; // error
-            ^" in s.{core::num::+}(1){(core::num) → core::num};
+            ^" in s.{core::num::+}(1);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41697b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41697b.dart.weak.transformed.expect
index 62b372d..588916e 100644
--- a/pkg/front_end/testcases/nnbd/issue41697b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41697b.dart.weak.transformed.expect
@@ -14,19 +14,19 @@
 import "dart:core" as core;
 
 static method test1<S extends core::num>(self::test1::S s) → dynamic {
-  core::num t = s.{core::num::+}(1){(core::num) → core::num};
+  core::num t = s.{core::num::+}(1);
 }
 static method test2<S extends core::num?>(self::test2::S% s) → dynamic {
   core::num t = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697b.dart:10:13: Error: Operator '+' cannot be called on 'S' because it is potentially null.
   var t = s + 1; // error
-            ^" in s.{core::num::+}(1){(core::num) → core::num};
+            ^" in s.{core::num::+}(1);
 }
 static method test3<S extends core::int>(self::test3::S s) → dynamic {
-  core::int t = s.{core::num::+}(1){(core::num) → core::int};
+  core::int t = s.{core::num::+}(1);
 }
 static method test4<S extends core::int?>(self::test4::S% s) → dynamic {
   core::num t = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41697b.dart:18:13: Error: Operator '+' cannot be called on 'S' because it is potentially null.
   var t = s + 1; // error
-            ^" in s.{core::num::+}(1){(core::num) → core::num};
+            ^" in s.{core::num::+}(1);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42504.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42504.dart.strong.expect
index 62138bc..8c4ad4f 100644
--- a/pkg/front_end/testcases/nnbd/issue42504.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42504.dart.strong.expect
@@ -18,20 +18,20 @@
     ;
   abstract get _pendingImages() → dynamic;
   method putIfAbsent(core::Object key, () → self::ImageStreamCompleter loader) → self::ImageStreamCompleter? {
-    assert(!(key == null));
-    assert(!(loader == null));
-    self::ImageStreamCompleter? result = (let final dynamic #t1 = this.{self::Foo::_pendingImages}{dynamic}{dynamic}.[](key) in #t1 == null ?{dynamic} null : #t1{dynamic}.completer) as{TypeError,ForDynamic,ForNonNullableByDefault} self::ImageStreamCompleter?;
-    if(!(result == null)) {
+    assert(!key.{core::Object::==}(null));
+    assert(!loader.{core::Object::==}(null));
+    self::ImageStreamCompleter? result = (let final dynamic #t1 = this.{self::Foo::_pendingImages}.[](key) in #t1.{core::Object::==}(null) ?{dynamic} null : #t1.completer) as{TypeError,ForDynamic,ForNonNullableByDefault} self::ImageStreamCompleter?;
+    if(!result.{core::Object::==}(null)) {
       return result{self::ImageStreamCompleter};
     }
     try {
-      result = loader(){() → self::ImageStreamCompleter};
+      result = loader.call();
       self::_LiveImage::•(result{self::ImageStreamCompleter});
     }
     on core::Object catch(final core::Object error) {
       return null;
     }
-    result{self::ImageStreamCompleter}.{self::ImageStreamCompleter::addListener}(){() → void};
+    result{self::ImageStreamCompleter}.{self::ImageStreamCompleter::addListener}();
     return result{self::ImageStreamCompleter};
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue42504.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42504.dart.strong.transformed.expect
index 62138bc..8c4ad4f 100644
--- a/pkg/front_end/testcases/nnbd/issue42504.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42504.dart.strong.transformed.expect
@@ -18,20 +18,20 @@
     ;
   abstract get _pendingImages() → dynamic;
   method putIfAbsent(core::Object key, () → self::ImageStreamCompleter loader) → self::ImageStreamCompleter? {
-    assert(!(key == null));
-    assert(!(loader == null));
-    self::ImageStreamCompleter? result = (let final dynamic #t1 = this.{self::Foo::_pendingImages}{dynamic}{dynamic}.[](key) in #t1 == null ?{dynamic} null : #t1{dynamic}.completer) as{TypeError,ForDynamic,ForNonNullableByDefault} self::ImageStreamCompleter?;
-    if(!(result == null)) {
+    assert(!key.{core::Object::==}(null));
+    assert(!loader.{core::Object::==}(null));
+    self::ImageStreamCompleter? result = (let final dynamic #t1 = this.{self::Foo::_pendingImages}.[](key) in #t1.{core::Object::==}(null) ?{dynamic} null : #t1.completer) as{TypeError,ForDynamic,ForNonNullableByDefault} self::ImageStreamCompleter?;
+    if(!result.{core::Object::==}(null)) {
       return result{self::ImageStreamCompleter};
     }
     try {
-      result = loader(){() → self::ImageStreamCompleter};
+      result = loader.call();
       self::_LiveImage::•(result{self::ImageStreamCompleter});
     }
     on core::Object catch(final core::Object error) {
       return null;
     }
-    result{self::ImageStreamCompleter}.{self::ImageStreamCompleter::addListener}(){() → void};
+    result{self::ImageStreamCompleter}.{self::ImageStreamCompleter::addListener}();
     return result{self::ImageStreamCompleter};
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue42504.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42504.dart.weak.expect
index 62138bc..8c4ad4f 100644
--- a/pkg/front_end/testcases/nnbd/issue42504.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42504.dart.weak.expect
@@ -18,20 +18,20 @@
     ;
   abstract get _pendingImages() → dynamic;
   method putIfAbsent(core::Object key, () → self::ImageStreamCompleter loader) → self::ImageStreamCompleter? {
-    assert(!(key == null));
-    assert(!(loader == null));
-    self::ImageStreamCompleter? result = (let final dynamic #t1 = this.{self::Foo::_pendingImages}{dynamic}{dynamic}.[](key) in #t1 == null ?{dynamic} null : #t1{dynamic}.completer) as{TypeError,ForDynamic,ForNonNullableByDefault} self::ImageStreamCompleter?;
-    if(!(result == null)) {
+    assert(!key.{core::Object::==}(null));
+    assert(!loader.{core::Object::==}(null));
+    self::ImageStreamCompleter? result = (let final dynamic #t1 = this.{self::Foo::_pendingImages}.[](key) in #t1.{core::Object::==}(null) ?{dynamic} null : #t1.completer) as{TypeError,ForDynamic,ForNonNullableByDefault} self::ImageStreamCompleter?;
+    if(!result.{core::Object::==}(null)) {
       return result{self::ImageStreamCompleter};
     }
     try {
-      result = loader(){() → self::ImageStreamCompleter};
+      result = loader.call();
       self::_LiveImage::•(result{self::ImageStreamCompleter});
     }
     on core::Object catch(final core::Object error) {
       return null;
     }
-    result{self::ImageStreamCompleter}.{self::ImageStreamCompleter::addListener}(){() → void};
+    result{self::ImageStreamCompleter}.{self::ImageStreamCompleter::addListener}();
     return result{self::ImageStreamCompleter};
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue42504.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42504.dart.weak.transformed.expect
index 62138bc..8c4ad4f 100644
--- a/pkg/front_end/testcases/nnbd/issue42504.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42504.dart.weak.transformed.expect
@@ -18,20 +18,20 @@
     ;
   abstract get _pendingImages() → dynamic;
   method putIfAbsent(core::Object key, () → self::ImageStreamCompleter loader) → self::ImageStreamCompleter? {
-    assert(!(key == null));
-    assert(!(loader == null));
-    self::ImageStreamCompleter? result = (let final dynamic #t1 = this.{self::Foo::_pendingImages}{dynamic}{dynamic}.[](key) in #t1 == null ?{dynamic} null : #t1{dynamic}.completer) as{TypeError,ForDynamic,ForNonNullableByDefault} self::ImageStreamCompleter?;
-    if(!(result == null)) {
+    assert(!key.{core::Object::==}(null));
+    assert(!loader.{core::Object::==}(null));
+    self::ImageStreamCompleter? result = (let final dynamic #t1 = this.{self::Foo::_pendingImages}.[](key) in #t1.{core::Object::==}(null) ?{dynamic} null : #t1.completer) as{TypeError,ForDynamic,ForNonNullableByDefault} self::ImageStreamCompleter?;
+    if(!result.{core::Object::==}(null)) {
       return result{self::ImageStreamCompleter};
     }
     try {
-      result = loader(){() → self::ImageStreamCompleter};
+      result = loader.call();
       self::_LiveImage::•(result{self::ImageStreamCompleter});
     }
     on core::Object catch(final core::Object error) {
       return null;
     }
-    result{self::ImageStreamCompleter}.{self::ImageStreamCompleter::addListener}(){() → void};
+    result{self::ImageStreamCompleter}.{self::ImageStreamCompleter::addListener}();
     return result{self::ImageStreamCompleter};
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.strong.expect
index cb4208d..54202ea 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.strong.expect
@@ -27,15 +27,15 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   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::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::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,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → FutureOr<void>action) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () →? FutureOr<self::Divergent<self::Divergent<self::Divergent::T%>>>onTimeout = #C1}) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::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,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ then<R extends core::Object? = dynamic>((self::Divergent<self::Divergent<self::Divergent::T%>>) → FutureOr<self::Divergent::then::R%>onValue, {core::Function? onError = #C1}) → asy::Future<self::Divergent::then::R%>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, core::List::unmodifiable<core::Type*>(<core::Type*>[self::Divergent::then::R%]), core::List::unmodifiable<dynamic>(<dynamic>[onValue]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C11: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, core::List::unmodifiable<core::Type*>(<core::Type*>[self::Divergent::then::R%]), core::List::unmodifiable<dynamic>(<dynamic>[onValue]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C11: onError}))) as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
 }
 static method test() → dynamic async {
   asy::Future<self::Divergent<self::Divergent<core::int>>> x = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue42546.dart:14:75: Error: A value of type 'Future<Divergent<Divergent<Divergent<int>>>>' can't be assigned to a variable of type 'Future<Divergent<Divergent<int>>>'.
@@ -46,7 +46,7 @@
  - 'Divergent' is from 'pkg/front_end/testcases/nnbd/issue42546.dart'.
  - 'Future' is from 'dart:async'.
   Future<Divergent<Divergent<int>>> x = (() async => new Divergent<int>())();
-                                                         ^" in new self::Divergent::•<core::int>() as{TypeError,ForNonNullableByDefault} self::Divergent<self::Divergent<self::Divergent<core::int>>>)(){() → asy::Future<self::Divergent<self::Divergent<self::Divergent<core::int>>>>} as{TypeError,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<core::int>>>;
+                                                         ^" in new self::Divergent::•<core::int>() as{TypeError,ForNonNullableByDefault} self::Divergent<self::Divergent<self::Divergent<core::int>>>).call() as{TypeError,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<core::int>>>;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.expect
index cb4208d..54202ea 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.expect
@@ -27,15 +27,15 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   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::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::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,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → FutureOr<void>action) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () →? FutureOr<self::Divergent<self::Divergent<self::Divergent::T%>>>onTimeout = #C1}) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::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,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ then<R extends core::Object? = dynamic>((self::Divergent<self::Divergent<self::Divergent::T%>>) → FutureOr<self::Divergent::then::R%>onValue, {core::Function? onError = #C1}) → asy::Future<self::Divergent::then::R%>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, core::List::unmodifiable<core::Type*>(<core::Type*>[self::Divergent::then::R%]), core::List::unmodifiable<dynamic>(<dynamic>[onValue]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C11: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, core::List::unmodifiable<core::Type*>(<core::Type*>[self::Divergent::then::R%]), core::List::unmodifiable<dynamic>(<dynamic>[onValue]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C11: onError}))) as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
 }
 static method test() → dynamic async {
   asy::Future<self::Divergent<self::Divergent<core::int>>> x = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue42546.dart:14:75: Error: A value of type 'Future<Divergent<Divergent<Divergent<int>>>>' can't be assigned to a variable of type 'Future<Divergent<Divergent<int>>>'.
@@ -46,7 +46,7 @@
  - 'Divergent' is from 'pkg/front_end/testcases/nnbd/issue42546.dart'.
  - 'Future' is from 'dart:async'.
   Future<Divergent<Divergent<int>>> x = (() async => new Divergent<int>())();
-                                                         ^" in new self::Divergent::•<core::int>() as{TypeError,ForNonNullableByDefault} self::Divergent<self::Divergent<self::Divergent<core::int>>>)(){() → asy::Future<self::Divergent<self::Divergent<self::Divergent<core::int>>>>} as{TypeError,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<core::int>>>;
+                                                         ^" in new self::Divergent::•<core::int>() as{TypeError,ForNonNullableByDefault} self::Divergent<self::Divergent<self::Divergent<core::int>>>).call() as{TypeError,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<core::int>>>;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.outline.expect
index dd671d9..819fad7 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.outline.expect
@@ -11,15 +11,15 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) →? core::bool test}) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::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,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → FutureOr<void>action) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::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,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () →? FutureOr<self::Divergent<self::Divergent<self::Divergent::T%>>>onTimeout}) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::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,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ then<R extends core::Object? = dynamic>((self::Divergent<self::Divergent<self::Divergent::T%>>) → FutureOr<self::Divergent::then::R%>onValue, {core::Function? onError}) → asy::Future<self::Divergent::then::R%>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#then, 0, core::List::unmodifiable<core::Type*>(<core::Type*>[self::Divergent::then::R%]), core::List::unmodifiable<dynamic>(<dynamic>[onValue]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onError: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#then, 0, core::List::unmodifiable<core::Type*>(<core::Type*>[self::Divergent::then::R%]), core::List::unmodifiable<dynamic>(<dynamic>[onValue]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onError: onError}))) as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
 }
 static method test() → dynamic async 
   ;
diff --git a/pkg/front_end/testcases/nnbd/issue42579_2.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42579_2.dart.strong.expect
index 175a246..922a2af 100644
--- a/pkg/front_end/testcases/nnbd/issue42579_2.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42579_2.dart.strong.expect
@@ -23,13 +23,13 @@
 static method wrap<R extends core::Object? = dynamic>(() → self::wrap::R% f) → dynamic {}
 static method wrap2<R extends core::Object? = dynamic>(() → self::A<self::wrap2::R%> f) → dynamic {}
 static method bar() → dynamic {
-  new self::A::•<dynamic>().{self::A::property}{dynamic}{dynamic}.unknown();
-  self::foo<dynamic>(){dynamic}.unknown();
+  new self::A::•<dynamic>().{self::A::property}.unknown();
+  self::foo<dynamic>().unknown();
   self::wrap<dynamic>(() → dynamic => let final dynamic #t1 = self::foo<dynamic>() in block {
-    #t1{dynamic}.unknown();
+    #t1.unknown();
   } =>#t1);
   self::wrap2<core::Object?>(() → self::A<core::Object?> => let final self::A<core::Object?> #t2 = self::foo<self::A<core::Object?>>() in block {
-    let final core::Object? #t3 = #t2.{self::A::property}{core::Object?} in #t3 == null ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_2.dart:19:32: Error: The method 'unknown' isn't defined for the class 'Object'.
+    let final core::Object? #t3 = #t2.{self::A::property} in #t3.{core::Object::==}(null) ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_2.dart:19:32: Error: The method 'unknown' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'unknown'.
   wrap2(() => foo()..property?.unknown());
diff --git a/pkg/front_end/testcases/nnbd/issue42579_2.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42579_2.dart.strong.transformed.expect
index 175a246..922a2af 100644
--- a/pkg/front_end/testcases/nnbd/issue42579_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42579_2.dart.strong.transformed.expect
@@ -23,13 +23,13 @@
 static method wrap<R extends core::Object? = dynamic>(() → self::wrap::R% f) → dynamic {}
 static method wrap2<R extends core::Object? = dynamic>(() → self::A<self::wrap2::R%> f) → dynamic {}
 static method bar() → dynamic {
-  new self::A::•<dynamic>().{self::A::property}{dynamic}{dynamic}.unknown();
-  self::foo<dynamic>(){dynamic}.unknown();
+  new self::A::•<dynamic>().{self::A::property}.unknown();
+  self::foo<dynamic>().unknown();
   self::wrap<dynamic>(() → dynamic => let final dynamic #t1 = self::foo<dynamic>() in block {
-    #t1{dynamic}.unknown();
+    #t1.unknown();
   } =>#t1);
   self::wrap2<core::Object?>(() → self::A<core::Object?> => let final self::A<core::Object?> #t2 = self::foo<self::A<core::Object?>>() in block {
-    let final core::Object? #t3 = #t2.{self::A::property}{core::Object?} in #t3 == null ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_2.dart:19:32: Error: The method 'unknown' isn't defined for the class 'Object'.
+    let final core::Object? #t3 = #t2.{self::A::property} in #t3.{core::Object::==}(null) ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_2.dart:19:32: Error: The method 'unknown' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'unknown'.
   wrap2(() => foo()..property?.unknown());
diff --git a/pkg/front_end/testcases/nnbd/issue42579_2.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42579_2.dart.weak.expect
index 175a246..922a2af 100644
--- a/pkg/front_end/testcases/nnbd/issue42579_2.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42579_2.dart.weak.expect
@@ -23,13 +23,13 @@
 static method wrap<R extends core::Object? = dynamic>(() → self::wrap::R% f) → dynamic {}
 static method wrap2<R extends core::Object? = dynamic>(() → self::A<self::wrap2::R%> f) → dynamic {}
 static method bar() → dynamic {
-  new self::A::•<dynamic>().{self::A::property}{dynamic}{dynamic}.unknown();
-  self::foo<dynamic>(){dynamic}.unknown();
+  new self::A::•<dynamic>().{self::A::property}.unknown();
+  self::foo<dynamic>().unknown();
   self::wrap<dynamic>(() → dynamic => let final dynamic #t1 = self::foo<dynamic>() in block {
-    #t1{dynamic}.unknown();
+    #t1.unknown();
   } =>#t1);
   self::wrap2<core::Object?>(() → self::A<core::Object?> => let final self::A<core::Object?> #t2 = self::foo<self::A<core::Object?>>() in block {
-    let final core::Object? #t3 = #t2.{self::A::property}{core::Object?} in #t3 == null ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_2.dart:19:32: Error: The method 'unknown' isn't defined for the class 'Object'.
+    let final core::Object? #t3 = #t2.{self::A::property} in #t3.{core::Object::==}(null) ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_2.dart:19:32: Error: The method 'unknown' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'unknown'.
   wrap2(() => foo()..property?.unknown());
diff --git a/pkg/front_end/testcases/nnbd/issue42579_2.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42579_2.dart.weak.transformed.expect
index 175a246..922a2af 100644
--- a/pkg/front_end/testcases/nnbd/issue42579_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42579_2.dart.weak.transformed.expect
@@ -23,13 +23,13 @@
 static method wrap<R extends core::Object? = dynamic>(() → self::wrap::R% f) → dynamic {}
 static method wrap2<R extends core::Object? = dynamic>(() → self::A<self::wrap2::R%> f) → dynamic {}
 static method bar() → dynamic {
-  new self::A::•<dynamic>().{self::A::property}{dynamic}{dynamic}.unknown();
-  self::foo<dynamic>(){dynamic}.unknown();
+  new self::A::•<dynamic>().{self::A::property}.unknown();
+  self::foo<dynamic>().unknown();
   self::wrap<dynamic>(() → dynamic => let final dynamic #t1 = self::foo<dynamic>() in block {
-    #t1{dynamic}.unknown();
+    #t1.unknown();
   } =>#t1);
   self::wrap2<core::Object?>(() → self::A<core::Object?> => let final self::A<core::Object?> #t2 = self::foo<self::A<core::Object?>>() in block {
-    let final core::Object? #t3 = #t2.{self::A::property}{core::Object?} in #t3 == null ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_2.dart:19:32: Error: The method 'unknown' isn't defined for the class 'Object'.
+    let final core::Object? #t3 = #t2.{self::A::property} in #t3.{core::Object::==}(null) ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_2.dart:19:32: Error: The method 'unknown' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'unknown'.
   wrap2(() => foo()..property?.unknown());
diff --git a/pkg/front_end/testcases/nnbd/issue42579_3.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42579_3.dart.strong.expect
index ecf7395..9c59159 100644
--- a/pkg/front_end/testcases/nnbd/issue42579_3.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42579_3.dart.strong.expect
@@ -36,21 +36,21 @@
 static method foo<Z extends core::Object? = dynamic>(() → self::A<core::List<self::foo::Z%>> f) → dynamic {}
 static method bar() → dynamic {
   self::foo<core::Object?>(() → self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> => let final self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> #t1 = new self::B::•<core::List<core::Object?>, core::List<core::Object?>, dynamic>() in block {
-    let final core::Object? #t2 = #t1.{self::B::y1}{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?} in #t2 == null ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:16:25: Error: The method 'unknown' isn't defined for the class 'Object'.
+    let final core::Object? #t2 = #t1.{self::B::y1}.{core::List::[]}(0) in #t2.{core::Object::==}(null) ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:16:25: Error: The method 'unknown' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'unknown'.
   foo(() => B()..y1[0]?.unknown());
                         ^^^^^^^";
   } =>#t1);
   self::foo<core::Object?>(() → self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> => let final self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> #t3 = new self::B::•<core::List<core::Object?>, core::List<core::Object?>, dynamic>() in block {
-    let final core::Object? #t4 = #t3.{self::B::y2}{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?} in #t4 == null ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:17:25: Error: The method 'unknown' isn't defined for the class 'Object'.
+    let final core::Object? #t4 = #t3.{self::B::y2}.{core::List::[]}(0) in #t4.{core::Object::==}(null) ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:17:25: Error: The method 'unknown' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'unknown'.
   foo(() => B()..y2[0]?.unknown());
                         ^^^^^^^";
   } =>#t3);
   self::foo<core::Object?>(() → self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> => let final self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> #t5 = new self::B::•<core::List<core::Object?>, core::List<core::Object?>, dynamic>() in block {
-    let final dynamic #t6 = #t5.{self::B::y3}{dynamic} in #t6 == null ?{dynamic} null : #t6{dynamic}.unknown();
+    let final dynamic #t6 = #t5.{self::B::y3} in #t6.{core::Object::==}(null) ?{dynamic} null : #t6.unknown();
   } =>#t5);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42579_3.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42579_3.dart.strong.transformed.expect
index ecf7395..9c59159 100644
--- a/pkg/front_end/testcases/nnbd/issue42579_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42579_3.dart.strong.transformed.expect
@@ -36,21 +36,21 @@
 static method foo<Z extends core::Object? = dynamic>(() → self::A<core::List<self::foo::Z%>> f) → dynamic {}
 static method bar() → dynamic {
   self::foo<core::Object?>(() → self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> => let final self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> #t1 = new self::B::•<core::List<core::Object?>, core::List<core::Object?>, dynamic>() in block {
-    let final core::Object? #t2 = #t1.{self::B::y1}{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?} in #t2 == null ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:16:25: Error: The method 'unknown' isn't defined for the class 'Object'.
+    let final core::Object? #t2 = #t1.{self::B::y1}.{core::List::[]}(0) in #t2.{core::Object::==}(null) ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:16:25: Error: The method 'unknown' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'unknown'.
   foo(() => B()..y1[0]?.unknown());
                         ^^^^^^^";
   } =>#t1);
   self::foo<core::Object?>(() → self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> => let final self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> #t3 = new self::B::•<core::List<core::Object?>, core::List<core::Object?>, dynamic>() in block {
-    let final core::Object? #t4 = #t3.{self::B::y2}{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?} in #t4 == null ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:17:25: Error: The method 'unknown' isn't defined for the class 'Object'.
+    let final core::Object? #t4 = #t3.{self::B::y2}.{core::List::[]}(0) in #t4.{core::Object::==}(null) ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:17:25: Error: The method 'unknown' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'unknown'.
   foo(() => B()..y2[0]?.unknown());
                         ^^^^^^^";
   } =>#t3);
   self::foo<core::Object?>(() → self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> => let final self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> #t5 = new self::B::•<core::List<core::Object?>, core::List<core::Object?>, dynamic>() in block {
-    let final dynamic #t6 = #t5.{self::B::y3}{dynamic} in #t6 == null ?{dynamic} null : #t6{dynamic}.unknown();
+    let final dynamic #t6 = #t5.{self::B::y3} in #t6.{core::Object::==}(null) ?{dynamic} null : #t6.unknown();
   } =>#t5);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42579_3.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42579_3.dart.weak.expect
index ecf7395..9c59159 100644
--- a/pkg/front_end/testcases/nnbd/issue42579_3.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42579_3.dart.weak.expect
@@ -36,21 +36,21 @@
 static method foo<Z extends core::Object? = dynamic>(() → self::A<core::List<self::foo::Z%>> f) → dynamic {}
 static method bar() → dynamic {
   self::foo<core::Object?>(() → self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> => let final self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> #t1 = new self::B::•<core::List<core::Object?>, core::List<core::Object?>, dynamic>() in block {
-    let final core::Object? #t2 = #t1.{self::B::y1}{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?} in #t2 == null ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:16:25: Error: The method 'unknown' isn't defined for the class 'Object'.
+    let final core::Object? #t2 = #t1.{self::B::y1}.{core::List::[]}(0) in #t2.{core::Object::==}(null) ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:16:25: Error: The method 'unknown' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'unknown'.
   foo(() => B()..y1[0]?.unknown());
                         ^^^^^^^";
   } =>#t1);
   self::foo<core::Object?>(() → self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> => let final self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> #t3 = new self::B::•<core::List<core::Object?>, core::List<core::Object?>, dynamic>() in block {
-    let final core::Object? #t4 = #t3.{self::B::y2}{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?} in #t4 == null ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:17:25: Error: The method 'unknown' isn't defined for the class 'Object'.
+    let final core::Object? #t4 = #t3.{self::B::y2}.{core::List::[]}(0) in #t4.{core::Object::==}(null) ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:17:25: Error: The method 'unknown' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'unknown'.
   foo(() => B()..y2[0]?.unknown());
                         ^^^^^^^";
   } =>#t3);
   self::foo<core::Object?>(() → self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> => let final self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> #t5 = new self::B::•<core::List<core::Object?>, core::List<core::Object?>, dynamic>() in block {
-    let final dynamic #t6 = #t5.{self::B::y3}{dynamic} in #t6 == null ?{dynamic} null : #t6{dynamic}.unknown();
+    let final dynamic #t6 = #t5.{self::B::y3} in #t6.{core::Object::==}(null) ?{dynamic} null : #t6.unknown();
   } =>#t5);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42579_3.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42579_3.dart.weak.transformed.expect
index ecf7395..9c59159 100644
--- a/pkg/front_end/testcases/nnbd/issue42579_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42579_3.dart.weak.transformed.expect
@@ -36,21 +36,21 @@
 static method foo<Z extends core::Object? = dynamic>(() → self::A<core::List<self::foo::Z%>> f) → dynamic {}
 static method bar() → dynamic {
   self::foo<core::Object?>(() → self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> => let final self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> #t1 = new self::B::•<core::List<core::Object?>, core::List<core::Object?>, dynamic>() in block {
-    let final core::Object? #t2 = #t1.{self::B::y1}{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?} in #t2 == null ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:16:25: Error: The method 'unknown' isn't defined for the class 'Object'.
+    let final core::Object? #t2 = #t1.{self::B::y1}.{core::List::[]}(0) in #t2.{core::Object::==}(null) ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:16:25: Error: The method 'unknown' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'unknown'.
   foo(() => B()..y1[0]?.unknown());
                         ^^^^^^^";
   } =>#t1);
   self::foo<core::Object?>(() → self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> => let final self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> #t3 = new self::B::•<core::List<core::Object?>, core::List<core::Object?>, dynamic>() in block {
-    let final core::Object? #t4 = #t3.{self::B::y2}{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?} in #t4 == null ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:17:25: Error: The method 'unknown' isn't defined for the class 'Object'.
+    let final core::Object? #t4 = #t3.{self::B::y2}.{core::List::[]}(0) in #t4.{core::Object::==}(null) ?{dynamic} null : invalid-expression "pkg/front_end/testcases/nnbd/issue42579_3.dart:17:25: Error: The method 'unknown' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'unknown'.
   foo(() => B()..y2[0]?.unknown());
                         ^^^^^^^";
   } =>#t3);
   self::foo<core::Object?>(() → self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> => let final self::B<core::List<core::Object?>, core::List<core::Object?>, dynamic> #t5 = new self::B::•<core::List<core::Object?>, core::List<core::Object?>, dynamic>() in block {
-    let final dynamic #t6 = #t5.{self::B::y3}{dynamic} in #t6 == null ?{dynamic} null : #t6{dynamic}.unknown();
+    let final dynamic #t6 = #t5.{self::B::y3} in #t6.{core::Object::==}(null) ?{dynamic} null : #t6.unknown();
   } =>#t5);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42603.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42603.dart.strong.expect
index 06403e2..734823f 100644
--- a/pkg/front_end/testcases/nnbd/issue42603.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42603.dart.strong.expect
@@ -64,11 +64,11 @@
                                            ^" in super.{self::E::==}(other);
 }
 static method main() → dynamic {
-  self::expect(true, new self::D::•() =={self::D::==}{(core::Object?) → core::bool} new self::D::•());
-  self::expect(false, new self::D::•().{self::D::method1}(null){(dynamic) → core::bool});
-  self::expect(false, new self::D::•().{self::D::method2}(null){(Null) → core::bool});
+  self::expect(true, new self::D::•().{self::D::==}(new self::D::•()));
+  self::expect(false, new self::D::•().{self::D::method1}(null));
+  self::expect(false, new self::D::•().{self::D::method2}(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/issue42603.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42603.dart.weak.expect
index 06403e2..734823f 100644
--- a/pkg/front_end/testcases/nnbd/issue42603.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42603.dart.weak.expect
@@ -64,11 +64,11 @@
                                            ^" in super.{self::E::==}(other);
 }
 static method main() → dynamic {
-  self::expect(true, new self::D::•() =={self::D::==}{(core::Object?) → core::bool} new self::D::•());
-  self::expect(false, new self::D::•().{self::D::method1}(null){(dynamic) → core::bool});
-  self::expect(false, new self::D::•().{self::D::method2}(null){(Null) → core::bool});
+  self::expect(true, new self::D::•().{self::D::==}(new self::D::•()));
+  self::expect(false, new self::D::•().{self::D::method1}(null));
+  self::expect(false, new self::D::•().{self::D::method2}(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/issue42607.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42607.dart.strong.expect
index bedfed7..f1a2bdd 100644
--- a/pkg/front_end/testcases/nnbd/issue42607.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42607.dart.strong.expect
@@ -11,7 +11,7 @@
 
 static method test() → dynamic {
   core::int* x = 3;
-  let final core::int* #t1 = x in #t1 == null ?{core::bool*} null : #t1.{core::int::isEven}{core::bool*};
+  let final core::int* #t1 = x in #t1.{core::num::==}(null) ?{core::bool*} null : #t1.{core::int::isEven};
   x = null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42607.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42607.dart.strong.transformed.expect
index bedfed7..f1a2bdd 100644
--- a/pkg/front_end/testcases/nnbd/issue42607.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42607.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
 
 static method test() → dynamic {
   core::int* x = 3;
-  let final core::int* #t1 = x in #t1 == null ?{core::bool*} null : #t1.{core::int::isEven}{core::bool*};
+  let final core::int* #t1 = x in #t1.{core::num::==}(null) ?{core::bool*} null : #t1.{core::int::isEven};
   x = null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42607.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42607.dart.weak.expect
index 47b797f..2678d44 100644
--- a/pkg/front_end/testcases/nnbd/issue42607.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42607.dart.weak.expect
@@ -4,7 +4,7 @@
 
 static method test() → dynamic {
   core::int* x = 3;
-  let final core::int* #t1 = x in #t1 == null ?{core::bool*} null : #t1.{core::int::isEven}{core::bool*};
+  let final core::int* #t1 = x in #t1.{core::num::==}(null) ?{core::bool*} null : #t1.{core::int::isEven};
   x = null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42607.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42607.dart.weak.transformed.expect
index 47b797f..2678d44 100644
--- a/pkg/front_end/testcases/nnbd/issue42607.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42607.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 
 static method test() → dynamic {
   core::int* x = 3;
-  let final core::int* #t1 = x in #t1 == null ?{core::bool*} null : #t1.{core::int::isEven}{core::bool*};
+  let final core::int* #t1 = x in #t1.{core::num::==}(null) ?{core::bool*} null : #t1.{core::int::isEven};
   x = null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42743.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42743.dart.strong.expect
index 3e6d749..1d21b07 100644
--- a/pkg/front_end/testcases/nnbd/issue42743.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42743.dart.strong.expect
@@ -4,7 +4,7 @@
 import "dart:async" as asy;
 
 static method main() → dynamic async {
-  core::bool b = (() → core::bool => true)(){() → core::bool};
+  core::bool b = (() → core::bool => true).call();
   (dynamic _) → core::int? {
     if(b)
       return 42;
diff --git a/pkg/front_end/testcases/nnbd/issue42743.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42743.dart.strong.transformed.expect
index 69395db..0ab4a75 100644
--- a/pkg/front_end/testcases/nnbd/issue42743.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42743.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
     try {
       #L1:
       {
-        core::bool b = (() → core::bool => true)(){() → core::bool};
+        core::bool b = (() → core::bool => true).call();
         (dynamic _) → core::int? {
           if(b)
             return 42;
diff --git a/pkg/front_end/testcases/nnbd/issue42743.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42743.dart.weak.expect
index 3e6d749..1d21b07 100644
--- a/pkg/front_end/testcases/nnbd/issue42743.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42743.dart.weak.expect
@@ -4,7 +4,7 @@
 import "dart:async" as asy;
 
 static method main() → dynamic async {
-  core::bool b = (() → core::bool => true)(){() → core::bool};
+  core::bool b = (() → core::bool => true).call();
   (dynamic _) → core::int? {
     if(b)
       return 42;
diff --git a/pkg/front_end/testcases/nnbd/issue42743.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42743.dart.weak.transformed.expect
index 69395db..0ab4a75 100644
--- a/pkg/front_end/testcases/nnbd/issue42743.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42743.dart.weak.transformed.expect
@@ -15,7 +15,7 @@
     try {
       #L1:
       {
-        core::bool b = (() → core::bool => true)(){() → core::bool};
+        core::bool b = (() → core::bool => true).call();
         (dynamic _) → core::int? {
           if(b)
             return 42;
diff --git a/pkg/front_end/testcases/nnbd/issue42758.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42758.dart.strong.expect
index 0eaff8b..d04548d 100644
--- a/pkg/front_end/testcases/nnbd/issue42758.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42758.dart.strong.expect
@@ -85,8 +85,8 @@
   core::List<Never> l2 = block {
     final core::List<Never> #t2 = <Never>[];
     final core::Iterable<Never>? #t3 = n1;
-    if(!(#t3 == null))
-      #t2.{core::List::addAll}(#t3{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t3.{core::Object::==}(null))
+      #t2.{core::List::addAll}{Invariant}(#t3{core::Iterable<Never>});
   } =>#t2;
   core::List<dynamic> l3 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:8:16: Error: Can't spread a value with static type 'Never?'.
   var l3 = [...n2];
@@ -94,8 +94,8 @@
   core::List<Never> l4 = block {
     final core::List<Never> #t4 = <Never>[];
     final core::Iterable<Never>? #t5 = n2;
-    if(!(#t5 == null))
-      #t4.{core::List::addAll}(#t5{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t5.{core::Object::==}(null))
+      #t4.{core::List::addAll}{Invariant}(#t5{core::Iterable<Never>});
   } =>#t4;
   core::List<dynamic> l5 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:10:16: Error: Can't spread a value with static type 'Null'.
   var l5 = [...n3];
@@ -103,61 +103,61 @@
   core::List<Never> l6 = block {
     final core::List<Never> #t6 = <Never>[];
     final core::Iterable<Never>? #t7 = n3;
-    if(!(#t7 == null))
-      #t6.{core::List::addAll}(#t7{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t7.{core::Object::==}(null))
+      #t6.{core::List::addAll}{Invariant}(#t7{core::Iterable<Never>});
   } =>#t6;
   core::Set<Never> s1 = block {
     final core::Set<Never> #t8 = col::LinkedHashSet::of<Never>(n1);
-    #t8.{core::Set::add}(n1){(Never) → core::bool};
+    #t8.{core::Set::add}{Invariant}(n1);
   } =>#t8;
   core::Set<Never> s2 = block {
     final core::Set<Never> #t9 = col::LinkedHashSet::•<Never>();
     final core::Iterable<Never>? #t10 = n1;
-    if(!(#t10 == null))
-      #t9.{core::Set::addAll}(#t10{core::Iterable<Never>}){(core::Iterable<Never>) → void};
-    #t9.{core::Set::add}(n1){(Never) → core::bool};
+    if(!#t10.{core::Object::==}(null))
+      #t9.{core::Set::addAll}{Invariant}(#t10{core::Iterable<Never>});
+    #t9.{core::Set::add}{Invariant}(n1);
   } =>#t9;
   core::Set<dynamic> s3 = block {
     final core::Set<dynamic> #t11 = col::LinkedHashSet::•<dynamic>();
-    #t11.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
+    #t11.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
   var s3 = {...n2, n1};
-               ^"){(dynamic) → core::bool};
-    #t11.{core::Set::add}(n1){(dynamic) → core::bool};
+               ^");
+    #t11.{core::Set::add}{Invariant}(n1);
   } =>#t11;
   core::Set<Never> s4 = block {
     final core::Set<Never> #t12 = col::LinkedHashSet::•<Never>();
     final core::Iterable<Never>? #t13 = n2;
-    if(!(#t13 == null))
-      #t12.{core::Set::addAll}(#t13{core::Iterable<Never>}){(core::Iterable<Never>) → void};
-    #t12.{core::Set::add}(n1){(Never) → core::bool};
+    if(!#t13.{core::Object::==}(null))
+      #t12.{core::Set::addAll}{Invariant}(#t13{core::Iterable<Never>});
+    #t12.{core::Set::add}{Invariant}(n1);
   } =>#t12;
   core::Set<dynamic> s5 = block {
     final core::Set<dynamic> #t14 = col::LinkedHashSet::•<dynamic>();
-    #t14.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
+    #t14.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
   var s5 = {...n3, n1};
-               ^"){(dynamic) → core::bool};
-    #t14.{core::Set::add}(n1){(dynamic) → core::bool};
+               ^");
+    #t14.{core::Set::add}{Invariant}(n1);
   } =>#t14;
   core::Set<Never> s6 = block {
     final core::Set<Never> #t15 = col::LinkedHashSet::•<Never>();
     final core::Iterable<Never>? #t16 = n3;
-    if(!(#t16 == null))
-      #t15.{core::Set::addAll}(#t16{core::Iterable<Never>}){(core::Iterable<Never>) → void};
-    #t15.{core::Set::add}(n1){(Never) → core::bool};
+    if(!#t16.{core::Object::==}(null))
+      #t15.{core::Set::addAll}{Invariant}(#t16{core::Iterable<Never>});
+    #t15.{core::Set::add}{Invariant}(n1);
   } =>#t15;
   core::Map<Never, Never> m1 = block {
     final core::Map<Never, Never> #t17 = <Never, Never>{};
     for (final core::MapEntry<Never, Never> #t18 in n1.{core::Map::entries})
-      #t17.{core::Map::[]=}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value}){(Never, Never) → void};
-    #t17.{core::Map::[]=}(n1, n1){(Never, Never) → void};
+      #t17.{core::Map::[]=}{Invariant}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value});
+    #t17.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t17;
   core::Map<Never, Never> m2 = block {
     final core::Map<Never, Never> #t19 = <Never, Never>{};
     final core::Map<Never, Never>? #t20 = n1;
-    if(!(#t20 == null))
+    if(!#t20.{core::Object::==}(null))
       for (final core::MapEntry<Never, Never> #t21 in #t20{core::Map<Never, Never>}.{core::Map::entries})
-        #t19.{core::Map::[]=}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value}){(Never, Never) → void};
-    #t19.{core::Map::[]=}(n1, n1){(Never, Never) → void};
+        #t19.{core::Map::[]=}{Invariant}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value});
+    #t19.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t19;
   core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:20:16: Error: Can't spread a value with static type 'Never?'.
   var m3 = {...n2, n1: n1};
@@ -165,10 +165,10 @@
   core::Map<Never, Never> m4 = block {
     final core::Map<Never, Never> #t22 = <Never, Never>{};
     final core::Map<Never, Never>? #t23 = n2;
-    if(!(#t23 == null))
+    if(!#t23.{core::Object::==}(null))
       for (final core::MapEntry<Never, Never> #t24 in #t23{core::Map<Never, Never>}.{core::Map::entries})
-        #t22.{core::Map::[]=}(#t24.{core::MapEntry::key}, #t24.{core::MapEntry::value}){(Never, Never) → void};
-    #t22.{core::Map::[]=}(n1, n1){(Never, Never) → void};
+        #t22.{core::Map::[]=}{Invariant}(#t24.{core::MapEntry::key}, #t24.{core::MapEntry::value});
+    #t22.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t22;
   core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:22:16: Error: Can't spread a value with static type 'Null'.
   var m5 = {...n3, n1: n1};
@@ -176,10 +176,10 @@
   core::Map<Never, Never> m6 = block {
     final core::Map<Never, Never> #t25 = <Never, Never>{};
     final core::Map<Never, Never>? #t26 = n3;
-    if(!(#t26 == null))
+    if(!#t26.{core::Object::==}(null))
       for (final core::MapEntry<Never, Never> #t27 in #t26{core::Map<Never, Never>}.{core::Map::entries})
-        #t25.{core::Map::[]=}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value}){(Never, Never) → void};
-    #t25.{core::Map::[]=}(n1, n1){(Never, Never) → void};
+        #t25.{core::Map::[]=}{Invariant}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value});
+    #t25.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t25;
 }
 static method test2<N1 extends Never, N2 extends Never?, N3 extends Null>(self::test2::N1 n1, self::test2::N2% n2, self::test2::N3% n3) → dynamic {
@@ -189,8 +189,8 @@
   core::List<Never> l2 = block {
     final core::List<Never> #t29 = <Never>[];
     final core::Iterable<Never>? #t30 = n1;
-    if(!(#t30 == null))
-      #t29.{core::List::addAll}(#t30{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t30.{core::Object::==}(null))
+      #t29.{core::List::addAll}{Invariant}(#t30{core::Iterable<Never>});
   } =>#t29;
   core::List<dynamic> l3 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:30:16: Error: Can't spread a value with static type 'N2'.
   var l3 = [...n2];
@@ -198,8 +198,8 @@
   core::List<Never> l4 = block {
     final core::List<Never> #t31 = <Never>[];
     final core::Iterable<Never>? #t32 = n2;
-    if(!(#t32 == null))
-      #t31.{core::List::addAll}(#t32{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t32.{core::Object::==}(null))
+      #t31.{core::List::addAll}{Invariant}(#t32{core::Iterable<Never>});
   } =>#t31;
   core::List<dynamic> l5 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:32:16: Error: Can't spread a value with static type 'N3'.
   var l5 = [...n3];
@@ -207,61 +207,61 @@
   core::List<Never> l6 = block {
     final core::List<Never> #t33 = <Never>[];
     final core::Iterable<Never>? #t34 = n3;
-    if(!(#t34 == null))
-      #t33.{core::List::addAll}(#t34{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t34.{core::Object::==}(null))
+      #t33.{core::List::addAll}{Invariant}(#t34{core::Iterable<Never>});
   } =>#t33;
   core::Set<self::test2::N1> s1 = block {
     final core::Set<self::test2::N1> #t35 = col::LinkedHashSet::of<self::test2::N1>(n1);
-    #t35.{core::Set::add}(n1){(self::test2::N1) → core::bool};
+    #t35.{core::Set::add}{Invariant}(n1);
   } =>#t35;
   core::Set<self::test2::N1> s2 = block {
     final core::Set<self::test2::N1> #t36 = col::LinkedHashSet::•<self::test2::N1>();
     final core::Iterable<self::test2::N1>? #t37 = n1;
-    if(!(#t37 == null))
-      #t36.{core::Set::addAll}(#t37{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
-    #t36.{core::Set::add}(n1){(self::test2::N1) → core::bool};
+    if(!#t37.{core::Object::==}(null))
+      #t36.{core::Set::addAll}{Invariant}(#t37{core::Iterable<self::test2::N1>});
+    #t36.{core::Set::add}{Invariant}(n1);
   } =>#t36;
   core::Set<dynamic> s3 = block {
     final core::Set<dynamic> #t38 = col::LinkedHashSet::•<dynamic>();
-    #t38.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
+    #t38.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
   var s3 = {...n2, n1};
-               ^"){(dynamic) → core::bool};
-    #t38.{core::Set::add}(n1){(dynamic) → core::bool};
+               ^");
+    #t38.{core::Set::add}{Invariant}(n1);
   } =>#t38;
   core::Set<self::test2::N1> s4 = block {
     final core::Set<self::test2::N1> #t39 = col::LinkedHashSet::•<self::test2::N1>();
     final core::Iterable<self::test2::N1>? #t40 = n2;
-    if(!(#t40 == null))
-      #t39.{core::Set::addAll}(#t40{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
-    #t39.{core::Set::add}(n1){(self::test2::N1) → core::bool};
+    if(!#t40.{core::Object::==}(null))
+      #t39.{core::Set::addAll}{Invariant}(#t40{core::Iterable<self::test2::N1>});
+    #t39.{core::Set::add}{Invariant}(n1);
   } =>#t39;
   core::Set<dynamic> s5 = block {
     final core::Set<dynamic> #t41 = col::LinkedHashSet::•<dynamic>();
-    #t41.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
+    #t41.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
   var s5 = {...n3, n1};
-               ^"){(dynamic) → core::bool};
-    #t41.{core::Set::add}(n1){(dynamic) → core::bool};
+               ^");
+    #t41.{core::Set::add}{Invariant}(n1);
   } =>#t41;
   core::Set<self::test2::N1> s6 = block {
     final core::Set<self::test2::N1> #t42 = col::LinkedHashSet::•<self::test2::N1>();
     final core::Iterable<self::test2::N1>? #t43 = n3;
-    if(!(#t43 == null))
-      #t42.{core::Set::addAll}(#t43{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
-    #t42.{core::Set::add}(n1){(self::test2::N1) → core::bool};
+    if(!#t43.{core::Object::==}(null))
+      #t42.{core::Set::addAll}{Invariant}(#t43{core::Iterable<self::test2::N1>});
+    #t42.{core::Set::add}{Invariant}(n1);
   } =>#t42;
   core::Map<self::test2::N1, self::test2::N1> m1 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t44 = <self::test2::N1, self::test2::N1>{};
     for (final core::MapEntry<self::test2::N1, self::test2::N1> #t45 in n1.{core::Map::entries})
-      #t44.{core::Map::[]=}(#t45.{core::MapEntry::key}, #t45.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
-    #t44.{core::Map::[]=}(n1, n1){(self::test2::N1, self::test2::N1) → void};
+      #t44.{core::Map::[]=}{Invariant}(#t45.{core::MapEntry::key}, #t45.{core::MapEntry::value});
+    #t44.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t44;
   core::Map<self::test2::N1, self::test2::N1> m2 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t46 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t47 = n1;
-    if(!(#t47 == null))
+    if(!#t47.{core::Object::==}(null))
       for (final core::MapEntry<self::test2::N1, self::test2::N1> #t48 in #t47{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries})
-        #t46.{core::Map::[]=}(#t48.{core::MapEntry::key}, #t48.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
-    #t46.{core::Map::[]=}(n1, n1){(self::test2::N1, self::test2::N1) → void};
+        #t46.{core::Map::[]=}{Invariant}(#t48.{core::MapEntry::key}, #t48.{core::MapEntry::value});
+    #t46.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t46;
   core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:42:16: Error: Can't spread a value with static type 'N2'.
   var m3 = {...n2, n1: n1};
@@ -269,10 +269,10 @@
   core::Map<self::test2::N1, self::test2::N1> m4 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t49 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t50 = n2;
-    if(!(#t50 == null))
+    if(!#t50.{core::Object::==}(null))
       for (final core::MapEntry<self::test2::N1, self::test2::N1> #t51 in #t50{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries})
-        #t49.{core::Map::[]=}(#t51.{core::MapEntry::key}, #t51.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
-    #t49.{core::Map::[]=}(n1, n1){(self::test2::N1, self::test2::N1) → void};
+        #t49.{core::Map::[]=}{Invariant}(#t51.{core::MapEntry::key}, #t51.{core::MapEntry::value});
+    #t49.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t49;
   core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:44:16: Error: Can't spread a value with static type 'N3'.
   var m5 = {...n3, n1: n1};
@@ -280,10 +280,10 @@
   core::Map<self::test2::N1, self::test2::N1> m6 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t52 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t53 = n3;
-    if(!(#t53 == null))
+    if(!#t53.{core::Object::==}(null))
       for (final core::MapEntry<self::test2::N1, self::test2::N1> #t54 in #t53{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries})
-        #t52.{core::Map::[]=}(#t54.{core::MapEntry::key}, #t54.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
-    #t52.{core::Map::[]=}(n1, n1){(self::test2::N1, self::test2::N1) → void};
+        #t52.{core::Map::[]=}{Invariant}(#t54.{core::MapEntry::key}, #t54.{core::MapEntry::value});
+    #t52.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t52;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42758.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42758.dart.strong.transformed.expect
index e8d1842..57f8fe1 100644
--- a/pkg/front_end/testcases/nnbd/issue42758.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42758.dart.strong.transformed.expect
@@ -85,8 +85,8 @@
   core::List<Never> l2 = block {
     final core::List<Never> #t2 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t3 = n1;
-    if(!(#t3 == null))
-      #t2.{core::List::addAll}(#t3{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t3.{core::Object::==}(null))
+      #t2.{core::List::addAll}{Invariant}(#t3{core::Iterable<Never>});
   } =>#t2;
   core::List<dynamic> l3 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:8:16: Error: Can't spread a value with static type 'Never?'.
   var l3 = [...n2];
@@ -94,8 +94,8 @@
   core::List<Never> l4 = block {
     final core::List<Never> #t4 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t5 = n2;
-    if(!(#t5 == null))
-      #t4.{core::List::addAll}(#t5{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t5.{core::Object::==}(null))
+      #t4.{core::List::addAll}{Invariant}(#t5{core::Iterable<Never>});
   } =>#t4;
   core::List<dynamic> l5 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:10:16: Error: Can't spread a value with static type 'Null'.
   var l5 = [...n3];
@@ -103,47 +103,47 @@
   core::List<Never> l6 = block {
     final core::List<Never> #t6 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t7 = n3;
-    if(!(#t7 == null))
-      #t6.{core::List::addAll}(#t7{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t7.{core::Object::==}(null))
+      #t6.{core::List::addAll}{Invariant}(#t7{core::Iterable<Never>});
   } =>#t6;
   core::Set<Never> s1 = block {
     final core::Set<Never> #t8 = col::LinkedHashSet::of<Never>(n1);
-    #t8.{core::Set::add}(n1){(Never) → core::bool};
+    #t8.{core::Set::add}{Invariant}(n1);
   } =>#t8;
   core::Set<Never> s2 = block {
     final core::Set<Never> #t9 = new col::_CompactLinkedHashSet::•<Never>();
     final core::Iterable<Never>? #t10 = n1;
-    if(!(#t10 == null))
-      #t9.{core::Set::addAll}(#t10{core::Iterable<Never>}){(core::Iterable<Never>) → void};
-    #t9.{core::Set::add}(n1){(Never) → core::bool};
+    if(!#t10.{core::Object::==}(null))
+      #t9.{core::Set::addAll}{Invariant}(#t10{core::Iterable<Never>});
+    #t9.{core::Set::add}{Invariant}(n1);
   } =>#t9;
   core::Set<dynamic> s3 = block {
     final core::Set<dynamic> #t11 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t11.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
+    #t11.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
   var s3 = {...n2, n1};
-               ^"){(dynamic) → core::bool};
-    #t11.{core::Set::add}(n1){(dynamic) → core::bool};
+               ^");
+    #t11.{core::Set::add}{Invariant}(n1);
   } =>#t11;
   core::Set<Never> s4 = block {
     final core::Set<Never> #t12 = new col::_CompactLinkedHashSet::•<Never>();
     final core::Iterable<Never>? #t13 = n2;
-    if(!(#t13 == null))
-      #t12.{core::Set::addAll}(#t13{core::Iterable<Never>}){(core::Iterable<Never>) → void};
-    #t12.{core::Set::add}(n1){(Never) → core::bool};
+    if(!#t13.{core::Object::==}(null))
+      #t12.{core::Set::addAll}{Invariant}(#t13{core::Iterable<Never>});
+    #t12.{core::Set::add}{Invariant}(n1);
   } =>#t12;
   core::Set<dynamic> s5 = block {
     final core::Set<dynamic> #t14 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t14.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
+    #t14.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
   var s5 = {...n3, n1};
-               ^"){(dynamic) → core::bool};
-    #t14.{core::Set::add}(n1){(dynamic) → core::bool};
+               ^");
+    #t14.{core::Set::add}{Invariant}(n1);
   } =>#t14;
   core::Set<Never> s6 = block {
     final core::Set<Never> #t15 = new col::_CompactLinkedHashSet::•<Never>();
     final core::Iterable<Never>? #t16 = n3;
-    if(!(#t16 == null))
-      #t15.{core::Set::addAll}(#t16{core::Iterable<Never>}){(core::Iterable<Never>) → void};
-    #t15.{core::Set::add}(n1){(Never) → core::bool};
+    if(!#t16.{core::Object::==}(null))
+      #t15.{core::Set::addAll}{Invariant}(#t16{core::Iterable<Never>});
+    #t15.{core::Set::add}{Invariant}(n1);
   } =>#t15;
   core::Map<Never, Never> m1 = block {
     final core::Map<Never, Never> #t17 = <Never, Never>{};
@@ -151,22 +151,22 @@
       core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = n1.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<Never, Never> #t18 = :sync-for-iterator.{core::Iterator::current};
-        #t17.{core::Map::[]=}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value}){(Never, Never) → void};
+        #t17.{core::Map::[]=}{Invariant}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value});
       }
     }
-    #t17.{core::Map::[]=}(n1, n1){(Never, Never) → void};
+    #t17.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t17;
   core::Map<Never, Never> m2 = block {
     final core::Map<Never, Never> #t19 = <Never, Never>{};
     final core::Map<Never, Never>? #t20 = n1;
-    if(!(#t20 == null)) {
+    if(!#t20.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t20{core::Map<Never, Never>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<Never, Never> #t21 = :sync-for-iterator.{core::Iterator::current};
-        #t19.{core::Map::[]=}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value}){(Never, Never) → void};
+        #t19.{core::Map::[]=}{Invariant}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value});
       }
     }
-    #t19.{core::Map::[]=}(n1, n1){(Never, Never) → void};
+    #t19.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t19;
   core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:20:16: Error: Can't spread a value with static type 'Never?'.
   var m3 = {...n2, n1: n1};
@@ -174,14 +174,14 @@
   core::Map<Never, Never> m4 = block {
     final core::Map<Never, Never> #t22 = <Never, Never>{};
     final core::Map<Never, Never>? #t23 = n2;
-    if(!(#t23 == null)) {
+    if(!#t23.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t23{core::Map<Never, Never>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<Never, Never> #t24 = :sync-for-iterator.{core::Iterator::current};
-        #t22.{core::Map::[]=}(#t24.{core::MapEntry::key}, #t24.{core::MapEntry::value}){(Never, Never) → void};
+        #t22.{core::Map::[]=}{Invariant}(#t24.{core::MapEntry::key}, #t24.{core::MapEntry::value});
       }
     }
-    #t22.{core::Map::[]=}(n1, n1){(Never, Never) → void};
+    #t22.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t22;
   core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:22:16: Error: Can't spread a value with static type 'Null'.
   var m5 = {...n3, n1: n1};
@@ -189,14 +189,14 @@
   core::Map<Never, Never> m6 = block {
     final core::Map<Never, Never> #t25 = <Never, Never>{};
     final core::Map<Never, Never>? #t26 = n3;
-    if(!(#t26 == null)) {
+    if(!#t26.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t26{core::Map<Never, Never>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<Never, Never> #t27 = :sync-for-iterator.{core::Iterator::current};
-        #t25.{core::Map::[]=}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value}){(Never, Never) → void};
+        #t25.{core::Map::[]=}{Invariant}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value});
       }
     }
-    #t25.{core::Map::[]=}(n1, n1){(Never, Never) → void};
+    #t25.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t25;
 }
 static method test2<N1 extends Never, N2 extends Never?, N3 extends Null>(self::test2::N1 n1, self::test2::N2% n2, self::test2::N3% n3) → dynamic {
@@ -206,8 +206,8 @@
   core::List<Never> l2 = block {
     final core::List<Never> #t29 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t30 = n1;
-    if(!(#t30 == null))
-      #t29.{core::List::addAll}(#t30{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t30.{core::Object::==}(null))
+      #t29.{core::List::addAll}{Invariant}(#t30{core::Iterable<Never>});
   } =>#t29;
   core::List<dynamic> l3 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:30:16: Error: Can't spread a value with static type 'N2'.
   var l3 = [...n2];
@@ -215,8 +215,8 @@
   core::List<Never> l4 = block {
     final core::List<Never> #t31 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t32 = n2;
-    if(!(#t32 == null))
-      #t31.{core::List::addAll}(#t32{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t32.{core::Object::==}(null))
+      #t31.{core::List::addAll}{Invariant}(#t32{core::Iterable<Never>});
   } =>#t31;
   core::List<dynamic> l5 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:32:16: Error: Can't spread a value with static type 'N3'.
   var l5 = [...n3];
@@ -224,47 +224,47 @@
   core::List<Never> l6 = block {
     final core::List<Never> #t33 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t34 = n3;
-    if(!(#t34 == null))
-      #t33.{core::List::addAll}(#t34{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t34.{core::Object::==}(null))
+      #t33.{core::List::addAll}{Invariant}(#t34{core::Iterable<Never>});
   } =>#t33;
   core::Set<self::test2::N1> s1 = block {
     final core::Set<self::test2::N1> #t35 = col::LinkedHashSet::of<self::test2::N1>(n1);
-    #t35.{core::Set::add}(n1){(self::test2::N1) → core::bool};
+    #t35.{core::Set::add}{Invariant}(n1);
   } =>#t35;
   core::Set<self::test2::N1> s2 = block {
     final core::Set<self::test2::N1> #t36 = new col::_CompactLinkedHashSet::•<self::test2::N1>();
     final core::Iterable<self::test2::N1>? #t37 = n1;
-    if(!(#t37 == null))
-      #t36.{core::Set::addAll}(#t37{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
-    #t36.{core::Set::add}(n1){(self::test2::N1) → core::bool};
+    if(!#t37.{core::Object::==}(null))
+      #t36.{core::Set::addAll}{Invariant}(#t37{core::Iterable<self::test2::N1>});
+    #t36.{core::Set::add}{Invariant}(n1);
   } =>#t36;
   core::Set<dynamic> s3 = block {
     final core::Set<dynamic> #t38 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t38.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
+    #t38.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
   var s3 = {...n2, n1};
-               ^"){(dynamic) → core::bool};
-    #t38.{core::Set::add}(n1){(dynamic) → core::bool};
+               ^");
+    #t38.{core::Set::add}{Invariant}(n1);
   } =>#t38;
   core::Set<self::test2::N1> s4 = block {
     final core::Set<self::test2::N1> #t39 = new col::_CompactLinkedHashSet::•<self::test2::N1>();
     final core::Iterable<self::test2::N1>? #t40 = n2;
-    if(!(#t40 == null))
-      #t39.{core::Set::addAll}(#t40{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
-    #t39.{core::Set::add}(n1){(self::test2::N1) → core::bool};
+    if(!#t40.{core::Object::==}(null))
+      #t39.{core::Set::addAll}{Invariant}(#t40{core::Iterable<self::test2::N1>});
+    #t39.{core::Set::add}{Invariant}(n1);
   } =>#t39;
   core::Set<dynamic> s5 = block {
     final core::Set<dynamic> #t41 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t41.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
+    #t41.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
   var s5 = {...n3, n1};
-               ^"){(dynamic) → core::bool};
-    #t41.{core::Set::add}(n1){(dynamic) → core::bool};
+               ^");
+    #t41.{core::Set::add}{Invariant}(n1);
   } =>#t41;
   core::Set<self::test2::N1> s6 = block {
     final core::Set<self::test2::N1> #t42 = new col::_CompactLinkedHashSet::•<self::test2::N1>();
     final core::Iterable<self::test2::N1>? #t43 = n3;
-    if(!(#t43 == null))
-      #t42.{core::Set::addAll}(#t43{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
-    #t42.{core::Set::add}(n1){(self::test2::N1) → core::bool};
+    if(!#t43.{core::Object::==}(null))
+      #t42.{core::Set::addAll}{Invariant}(#t43{core::Iterable<self::test2::N1>});
+    #t42.{core::Set::add}{Invariant}(n1);
   } =>#t42;
   core::Map<self::test2::N1, self::test2::N1> m1 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t44 = <self::test2::N1, self::test2::N1>{};
@@ -272,22 +272,22 @@
       core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = n1.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<self::test2::N1, self::test2::N1> #t45 = :sync-for-iterator.{core::Iterator::current};
-        #t44.{core::Map::[]=}(#t45.{core::MapEntry::key}, #t45.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
+        #t44.{core::Map::[]=}{Invariant}(#t45.{core::MapEntry::key}, #t45.{core::MapEntry::value});
       }
     }
-    #t44.{core::Map::[]=}(n1, n1){(self::test2::N1, self::test2::N1) → void};
+    #t44.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t44;
   core::Map<self::test2::N1, self::test2::N1> m2 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t46 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t47 = n1;
-    if(!(#t47 == null)) {
+    if(!#t47.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t47{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<self::test2::N1, self::test2::N1> #t48 = :sync-for-iterator.{core::Iterator::current};
-        #t46.{core::Map::[]=}(#t48.{core::MapEntry::key}, #t48.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
+        #t46.{core::Map::[]=}{Invariant}(#t48.{core::MapEntry::key}, #t48.{core::MapEntry::value});
       }
     }
-    #t46.{core::Map::[]=}(n1, n1){(self::test2::N1, self::test2::N1) → void};
+    #t46.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t46;
   core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:42:16: Error: Can't spread a value with static type 'N2'.
   var m3 = {...n2, n1: n1};
@@ -295,14 +295,14 @@
   core::Map<self::test2::N1, self::test2::N1> m4 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t49 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t50 = n2;
-    if(!(#t50 == null)) {
+    if(!#t50.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t50{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<self::test2::N1, self::test2::N1> #t51 = :sync-for-iterator.{core::Iterator::current};
-        #t49.{core::Map::[]=}(#t51.{core::MapEntry::key}, #t51.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
+        #t49.{core::Map::[]=}{Invariant}(#t51.{core::MapEntry::key}, #t51.{core::MapEntry::value});
       }
     }
-    #t49.{core::Map::[]=}(n1, n1){(self::test2::N1, self::test2::N1) → void};
+    #t49.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t49;
   core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:44:16: Error: Can't spread a value with static type 'N3'.
   var m5 = {...n3, n1: n1};
@@ -310,14 +310,14 @@
   core::Map<self::test2::N1, self::test2::N1> m6 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t52 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t53 = n3;
-    if(!(#t53 == null)) {
+    if(!#t53.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t53{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<self::test2::N1, self::test2::N1> #t54 = :sync-for-iterator.{core::Iterator::current};
-        #t52.{core::Map::[]=}(#t54.{core::MapEntry::key}, #t54.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
+        #t52.{core::Map::[]=}{Invariant}(#t54.{core::MapEntry::key}, #t54.{core::MapEntry::value});
       }
     }
-    #t52.{core::Map::[]=}(n1, n1){(self::test2::N1, self::test2::N1) → void};
+    #t52.{core::Map::[]=}{Invariant}(n1, n1);
   } =>#t52;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42758.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42758.dart.weak.expect
index 0f8df8e..0eb909b 100644
--- a/pkg/front_end/testcases/nnbd/issue42758.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42758.dart.weak.expect
@@ -86,8 +86,8 @@
   core::List<Never> l2 = block {
     final core::List<Never> #t3 = <Never>[];
     final core::Iterable<Never>? #t4 = let final Never #t5 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    if(!(#t4 == null))
-      #t3.{core::List::addAll}(#t4{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t4.{core::Object::==}(null))
+      #t3.{core::List::addAll}{Invariant}(#t4{core::Iterable<Never>});
   } =>#t3;
   core::List<dynamic> l3 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:8:16: Error: Can't spread a value with static type 'Never?'.
   var l3 = [...n2];
@@ -95,8 +95,8 @@
   core::List<Never> l4 = block {
     final core::List<Never> #t6 = <Never>[];
     final core::Iterable<Never>? #t7 = n2;
-    if(!(#t7 == null))
-      #t6.{core::List::addAll}(#t7{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t7.{core::Object::==}(null))
+      #t6.{core::List::addAll}{Invariant}(#t7{core::Iterable<Never>});
   } =>#t6;
   core::List<dynamic> l5 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:10:16: Error: Can't spread a value with static type 'Null'.
   var l5 = [...n3];
@@ -104,61 +104,61 @@
   core::List<Never> l6 = block {
     final core::List<Never> #t8 = <Never>[];
     final core::Iterable<Never>? #t9 = n3;
-    if(!(#t9 == null))
-      #t8.{core::List::addAll}(#t9{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t9.{core::Object::==}(null))
+      #t8.{core::List::addAll}{Invariant}(#t9{core::Iterable<Never>});
   } =>#t8;
   core::Set<Never> s1 = block {
     final core::Set<Never> #t10 = col::LinkedHashSet::of<Never>(let final Never #t11 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
-    #t10.{core::Set::add}(let final Never #t12 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never) → core::bool};
+    #t10.{core::Set::add}{Invariant}(let final Never #t12 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t10;
   core::Set<Never> s2 = block {
     final core::Set<Never> #t13 = col::LinkedHashSet::•<Never>();
     final core::Iterable<Never>? #t14 = let final Never #t15 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    if(!(#t14 == null))
-      #t13.{core::Set::addAll}(#t14{core::Iterable<Never>}){(core::Iterable<Never>) → void};
-    #t13.{core::Set::add}(let final Never #t16 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never) → core::bool};
+    if(!#t14.{core::Object::==}(null))
+      #t13.{core::Set::addAll}{Invariant}(#t14{core::Iterable<Never>});
+    #t13.{core::Set::add}{Invariant}(let final Never #t16 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t13;
   core::Set<dynamic> s3 = block {
     final core::Set<dynamic> #t17 = col::LinkedHashSet::•<dynamic>();
-    #t17.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
+    #t17.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
   var s3 = {...n2, n1};
-               ^"){(dynamic) → core::bool};
-    #t17.{core::Set::add}(let final Never #t18 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(dynamic) → core::bool};
+               ^");
+    #t17.{core::Set::add}{Invariant}(let final Never #t18 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t17;
   core::Set<Never> s4 = block {
     final core::Set<Never> #t19 = col::LinkedHashSet::•<Never>();
     final core::Iterable<Never>? #t20 = n2;
-    if(!(#t20 == null))
-      #t19.{core::Set::addAll}(#t20{core::Iterable<Never>}){(core::Iterable<Never>) → void};
-    #t19.{core::Set::add}(let final Never #t21 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never) → core::bool};
+    if(!#t20.{core::Object::==}(null))
+      #t19.{core::Set::addAll}{Invariant}(#t20{core::Iterable<Never>});
+    #t19.{core::Set::add}{Invariant}(let final Never #t21 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t19;
   core::Set<dynamic> s5 = block {
     final core::Set<dynamic> #t22 = col::LinkedHashSet::•<dynamic>();
-    #t22.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
+    #t22.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
   var s5 = {...n3, n1};
-               ^"){(dynamic) → core::bool};
-    #t22.{core::Set::add}(let final Never #t23 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(dynamic) → core::bool};
+               ^");
+    #t22.{core::Set::add}{Invariant}(let final Never #t23 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t22;
   core::Set<Never> s6 = block {
     final core::Set<Never> #t24 = col::LinkedHashSet::•<Never>();
     final core::Iterable<Never>? #t25 = n3;
-    if(!(#t25 == null))
-      #t24.{core::Set::addAll}(#t25{core::Iterable<Never>}){(core::Iterable<Never>) → void};
-    #t24.{core::Set::add}(let final Never #t26 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never) → core::bool};
+    if(!#t25.{core::Object::==}(null))
+      #t24.{core::Set::addAll}{Invariant}(#t25{core::Iterable<Never>});
+    #t24.{core::Set::add}{Invariant}(let final Never #t26 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t24;
   core::Map<Never, Never> m1 = block {
     final core::Map<Never, Never> #t27 = <Never, Never>{};
     for (final core::MapEntry<Never, Never> #t28 in (let final Never #t29 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).{core::Map::entries})
-      #t27.{core::Map::[]=}(#t28.{core::MapEntry::key}, #t28.{core::MapEntry::value}){(Never, Never) → void};
-    #t27.{core::Map::[]=}(let final Never #t30 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t31 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never, Never) → void};
+      #t27.{core::Map::[]=}{Invariant}(#t28.{core::MapEntry::key}, #t28.{core::MapEntry::value});
+    #t27.{core::Map::[]=}{Invariant}(let final Never #t30 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t31 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t27;
   core::Map<Never, Never> m2 = block {
     final core::Map<Never, Never> #t32 = <Never, Never>{};
     final core::Map<Never, Never>? #t33 = let final Never #t34 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    if(!(#t33 == null))
+    if(!#t33.{core::Object::==}(null))
       for (final core::MapEntry<Never, Never> #t35 in #t33{core::Map<Never, Never>}.{core::Map::entries})
-        #t32.{core::Map::[]=}(#t35.{core::MapEntry::key}, #t35.{core::MapEntry::value}){(Never, Never) → void};
-    #t32.{core::Map::[]=}(let final Never #t36 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t37 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never, Never) → void};
+        #t32.{core::Map::[]=}{Invariant}(#t35.{core::MapEntry::key}, #t35.{core::MapEntry::value});
+    #t32.{core::Map::[]=}{Invariant}(let final Never #t36 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t37 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t32;
   core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:20:16: Error: Can't spread a value with static type 'Never?'.
   var m3 = {...n2, n1: n1};
@@ -166,10 +166,10 @@
   core::Map<Never, Never> m4 = block {
     final core::Map<Never, Never> #t40 = <Never, Never>{};
     final core::Map<Never, Never>? #t41 = n2;
-    if(!(#t41 == null))
+    if(!#t41.{core::Object::==}(null))
       for (final core::MapEntry<Never, Never> #t42 in #t41{core::Map<Never, Never>}.{core::Map::entries})
-        #t40.{core::Map::[]=}(#t42.{core::MapEntry::key}, #t42.{core::MapEntry::value}){(Never, Never) → void};
-    #t40.{core::Map::[]=}(let final Never #t43 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t44 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never, Never) → void};
+        #t40.{core::Map::[]=}{Invariant}(#t42.{core::MapEntry::key}, #t42.{core::MapEntry::value});
+    #t40.{core::Map::[]=}{Invariant}(let final Never #t43 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t44 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t40;
   core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:22:16: Error: Can't spread a value with static type 'Null'.
   var m5 = {...n3, n1: n1};
@@ -177,10 +177,10 @@
   core::Map<Never, Never> m6 = block {
     final core::Map<Never, Never> #t47 = <Never, Never>{};
     final core::Map<Never, Never>? #t48 = n3;
-    if(!(#t48 == null))
+    if(!#t48.{core::Object::==}(null))
       for (final core::MapEntry<Never, Never> #t49 in #t48{core::Map<Never, Never>}.{core::Map::entries})
-        #t47.{core::Map::[]=}(#t49.{core::MapEntry::key}, #t49.{core::MapEntry::value}){(Never, Never) → void};
-    #t47.{core::Map::[]=}(let final Never #t50 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t51 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never, Never) → void};
+        #t47.{core::Map::[]=}{Invariant}(#t49.{core::MapEntry::key}, #t49.{core::MapEntry::value});
+    #t47.{core::Map::[]=}{Invariant}(let final Never #t50 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t51 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t47;
 }
 static method test2<N1 extends Never, N2 extends Never?, N3 extends Null>(self::test2::N1 n1, self::test2::N2% n2, self::test2::N3% n3) → dynamic {
@@ -190,8 +190,8 @@
   core::List<Never> l2 = block {
     final core::List<Never> #t54 = <Never>[];
     final core::Iterable<Never>? #t55 = let final self::test2::N1 #t56 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    if(!(#t55 == null))
-      #t54.{core::List::addAll}(#t55{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t55.{core::Object::==}(null))
+      #t54.{core::List::addAll}{Invariant}(#t55{core::Iterable<Never>});
   } =>#t54;
   core::List<dynamic> l3 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:30:16: Error: Can't spread a value with static type 'N2'.
   var l3 = [...n2];
@@ -199,8 +199,8 @@
   core::List<Never> l4 = block {
     final core::List<Never> #t57 = <Never>[];
     final core::Iterable<Never>? #t58 = n2;
-    if(!(#t58 == null))
-      #t57.{core::List::addAll}(#t58{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t58.{core::Object::==}(null))
+      #t57.{core::List::addAll}{Invariant}(#t58{core::Iterable<Never>});
   } =>#t57;
   core::List<dynamic> l5 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:32:16: Error: Can't spread a value with static type 'N3'.
   var l5 = [...n3];
@@ -208,61 +208,61 @@
   core::List<Never> l6 = block {
     final core::List<Never> #t59 = <Never>[];
     final core::Iterable<Never>? #t60 = n3;
-    if(!(#t60 == null))
-      #t59.{core::List::addAll}(#t60{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t60.{core::Object::==}(null))
+      #t59.{core::List::addAll}{Invariant}(#t60{core::Iterable<Never>});
   } =>#t59;
   core::Set<self::test2::N1> s1 = block {
     final core::Set<self::test2::N1> #t61 = col::LinkedHashSet::of<self::test2::N1>(let final self::test2::N1 #t62 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
-    #t61.{core::Set::add}(let final self::test2::N1 #t63 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1) → core::bool};
+    #t61.{core::Set::add}{Invariant}(let final self::test2::N1 #t63 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t61;
   core::Set<self::test2::N1> s2 = block {
     final core::Set<self::test2::N1> #t64 = col::LinkedHashSet::•<self::test2::N1>();
     final core::Iterable<self::test2::N1>? #t65 = let final self::test2::N1 #t66 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    if(!(#t65 == null))
-      #t64.{core::Set::addAll}(#t65{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
-    #t64.{core::Set::add}(let final self::test2::N1 #t67 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1) → core::bool};
+    if(!#t65.{core::Object::==}(null))
+      #t64.{core::Set::addAll}{Invariant}(#t65{core::Iterable<self::test2::N1>});
+    #t64.{core::Set::add}{Invariant}(let final self::test2::N1 #t67 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t64;
   core::Set<dynamic> s3 = block {
     final core::Set<dynamic> #t68 = col::LinkedHashSet::•<dynamic>();
-    #t68.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
+    #t68.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
   var s3 = {...n2, n1};
-               ^"){(dynamic) → core::bool};
-    #t68.{core::Set::add}(let final self::test2::N1 #t69 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(dynamic) → core::bool};
+               ^");
+    #t68.{core::Set::add}{Invariant}(let final self::test2::N1 #t69 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t68;
   core::Set<self::test2::N1> s4 = block {
     final core::Set<self::test2::N1> #t70 = col::LinkedHashSet::•<self::test2::N1>();
     final core::Iterable<self::test2::N1>? #t71 = n2;
-    if(!(#t71 == null))
-      #t70.{core::Set::addAll}(#t71{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
-    #t70.{core::Set::add}(let final self::test2::N1 #t72 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1) → core::bool};
+    if(!#t71.{core::Object::==}(null))
+      #t70.{core::Set::addAll}{Invariant}(#t71{core::Iterable<self::test2::N1>});
+    #t70.{core::Set::add}{Invariant}(let final self::test2::N1 #t72 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t70;
   core::Set<dynamic> s5 = block {
     final core::Set<dynamic> #t73 = col::LinkedHashSet::•<dynamic>();
-    #t73.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
+    #t73.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
   var s5 = {...n3, n1};
-               ^"){(dynamic) → core::bool};
-    #t73.{core::Set::add}(let final self::test2::N1 #t74 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(dynamic) → core::bool};
+               ^");
+    #t73.{core::Set::add}{Invariant}(let final self::test2::N1 #t74 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t73;
   core::Set<self::test2::N1> s6 = block {
     final core::Set<self::test2::N1> #t75 = col::LinkedHashSet::•<self::test2::N1>();
     final core::Iterable<self::test2::N1>? #t76 = n3;
-    if(!(#t76 == null))
-      #t75.{core::Set::addAll}(#t76{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
-    #t75.{core::Set::add}(let final self::test2::N1 #t77 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1) → core::bool};
+    if(!#t76.{core::Object::==}(null))
+      #t75.{core::Set::addAll}{Invariant}(#t76{core::Iterable<self::test2::N1>});
+    #t75.{core::Set::add}{Invariant}(let final self::test2::N1 #t77 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t75;
   core::Map<self::test2::N1, self::test2::N1> m1 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t78 = <self::test2::N1, self::test2::N1>{};
     for (final core::MapEntry<self::test2::N1, self::test2::N1> #t79 in (let final self::test2::N1 #t80 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).{core::Map::entries})
-      #t78.{core::Map::[]=}(#t79.{core::MapEntry::key}, #t79.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
-    #t78.{core::Map::[]=}(let final self::test2::N1 #t81 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t82 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1, self::test2::N1) → void};
+      #t78.{core::Map::[]=}{Invariant}(#t79.{core::MapEntry::key}, #t79.{core::MapEntry::value});
+    #t78.{core::Map::[]=}{Invariant}(let final self::test2::N1 #t81 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t82 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t78;
   core::Map<self::test2::N1, self::test2::N1> m2 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t83 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t84 = let final self::test2::N1 #t85 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    if(!(#t84 == null))
+    if(!#t84.{core::Object::==}(null))
       for (final core::MapEntry<self::test2::N1, self::test2::N1> #t86 in #t84{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries})
-        #t83.{core::Map::[]=}(#t86.{core::MapEntry::key}, #t86.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
-    #t83.{core::Map::[]=}(let final self::test2::N1 #t87 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t88 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1, self::test2::N1) → void};
+        #t83.{core::Map::[]=}{Invariant}(#t86.{core::MapEntry::key}, #t86.{core::MapEntry::value});
+    #t83.{core::Map::[]=}{Invariant}(let final self::test2::N1 #t87 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t88 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t83;
   core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:42:16: Error: Can't spread a value with static type 'N2'.
   var m3 = {...n2, n1: n1};
@@ -270,10 +270,10 @@
   core::Map<self::test2::N1, self::test2::N1> m4 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t91 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t92 = n2;
-    if(!(#t92 == null))
+    if(!#t92.{core::Object::==}(null))
       for (final core::MapEntry<self::test2::N1, self::test2::N1> #t93 in #t92{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries})
-        #t91.{core::Map::[]=}(#t93.{core::MapEntry::key}, #t93.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
-    #t91.{core::Map::[]=}(let final self::test2::N1 #t94 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t95 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1, self::test2::N1) → void};
+        #t91.{core::Map::[]=}{Invariant}(#t93.{core::MapEntry::key}, #t93.{core::MapEntry::value});
+    #t91.{core::Map::[]=}{Invariant}(let final self::test2::N1 #t94 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t95 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t91;
   core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:44:16: Error: Can't spread a value with static type 'N3'.
   var m5 = {...n3, n1: n1};
@@ -281,10 +281,10 @@
   core::Map<self::test2::N1, self::test2::N1> m6 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t98 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t99 = n3;
-    if(!(#t99 == null))
+    if(!#t99.{core::Object::==}(null))
       for (final core::MapEntry<self::test2::N1, self::test2::N1> #t100 in #t99{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries})
-        #t98.{core::Map::[]=}(#t100.{core::MapEntry::key}, #t100.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
-    #t98.{core::Map::[]=}(let final self::test2::N1 #t101 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t102 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1, self::test2::N1) → void};
+        #t98.{core::Map::[]=}{Invariant}(#t100.{core::MapEntry::key}, #t100.{core::MapEntry::value});
+    #t98.{core::Map::[]=}{Invariant}(let final self::test2::N1 #t101 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t102 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t98;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42758.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42758.dart.weak.transformed.expect
index 669f826..645b792 100644
--- a/pkg/front_end/testcases/nnbd/issue42758.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42758.dart.weak.transformed.expect
@@ -86,8 +86,8 @@
   core::List<Never> l2 = block {
     final core::List<Never> #t3 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t4 = let final Never #t5 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    if(!(#t4 == null))
-      #t3.{core::List::addAll}(#t4{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t4.{core::Object::==}(null))
+      #t3.{core::List::addAll}{Invariant}(#t4{core::Iterable<Never>});
   } =>#t3;
   core::List<dynamic> l3 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:8:16: Error: Can't spread a value with static type 'Never?'.
   var l3 = [...n2];
@@ -95,8 +95,8 @@
   core::List<Never> l4 = block {
     final core::List<Never> #t6 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t7 = n2;
-    if(!(#t7 == null))
-      #t6.{core::List::addAll}(#t7{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t7.{core::Object::==}(null))
+      #t6.{core::List::addAll}{Invariant}(#t7{core::Iterable<Never>});
   } =>#t6;
   core::List<dynamic> l5 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:10:16: Error: Can't spread a value with static type 'Null'.
   var l5 = [...n3];
@@ -104,47 +104,47 @@
   core::List<Never> l6 = block {
     final core::List<Never> #t8 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t9 = n3;
-    if(!(#t9 == null))
-      #t8.{core::List::addAll}(#t9{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t9.{core::Object::==}(null))
+      #t8.{core::List::addAll}{Invariant}(#t9{core::Iterable<Never>});
   } =>#t8;
   core::Set<Never> s1 = block {
     final core::Set<Never> #t10 = col::LinkedHashSet::of<Never>(let final Never #t11 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
-    #t10.{core::Set::add}(let final Never #t12 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never) → core::bool};
+    #t10.{core::Set::add}{Invariant}(let final Never #t12 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t10;
   core::Set<Never> s2 = block {
     final core::Set<Never> #t13 = new col::_CompactLinkedHashSet::•<Never>();
     final core::Iterable<Never>? #t14 = let final Never #t15 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    if(!(#t14 == null))
-      #t13.{core::Set::addAll}(#t14{core::Iterable<Never>}){(core::Iterable<Never>) → void};
-    #t13.{core::Set::add}(let final Never #t16 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never) → core::bool};
+    if(!#t14.{core::Object::==}(null))
+      #t13.{core::Set::addAll}{Invariant}(#t14{core::Iterable<Never>});
+    #t13.{core::Set::add}{Invariant}(let final Never #t16 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t13;
   core::Set<dynamic> s3 = block {
     final core::Set<dynamic> #t17 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t17.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
+    #t17.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
   var s3 = {...n2, n1};
-               ^"){(dynamic) → core::bool};
-    #t17.{core::Set::add}(let final Never #t18 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(dynamic) → core::bool};
+               ^");
+    #t17.{core::Set::add}{Invariant}(let final Never #t18 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t17;
   core::Set<Never> s4 = block {
     final core::Set<Never> #t19 = new col::_CompactLinkedHashSet::•<Never>();
     final core::Iterable<Never>? #t20 = n2;
-    if(!(#t20 == null))
-      #t19.{core::Set::addAll}(#t20{core::Iterable<Never>}){(core::Iterable<Never>) → void};
-    #t19.{core::Set::add}(let final Never #t21 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never) → core::bool};
+    if(!#t20.{core::Object::==}(null))
+      #t19.{core::Set::addAll}{Invariant}(#t20{core::Iterable<Never>});
+    #t19.{core::Set::add}{Invariant}(let final Never #t21 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t19;
   core::Set<dynamic> s5 = block {
     final core::Set<dynamic> #t22 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t22.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
+    #t22.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
   var s5 = {...n3, n1};
-               ^"){(dynamic) → core::bool};
-    #t22.{core::Set::add}(let final Never #t23 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(dynamic) → core::bool};
+               ^");
+    #t22.{core::Set::add}{Invariant}(let final Never #t23 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t22;
   core::Set<Never> s6 = block {
     final core::Set<Never> #t24 = new col::_CompactLinkedHashSet::•<Never>();
     final core::Iterable<Never>? #t25 = n3;
-    if(!(#t25 == null))
-      #t24.{core::Set::addAll}(#t25{core::Iterable<Never>}){(core::Iterable<Never>) → void};
-    #t24.{core::Set::add}(let final Never #t26 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never) → core::bool};
+    if(!#t25.{core::Object::==}(null))
+      #t24.{core::Set::addAll}{Invariant}(#t25{core::Iterable<Never>});
+    #t24.{core::Set::add}{Invariant}(let final Never #t26 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t24;
   core::Map<Never, Never> m1 = block {
     final core::Map<Never, Never> #t27 = <Never, Never>{};
@@ -152,22 +152,22 @@
       core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = (let final Never #t28 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<Never, Never> #t29 = :sync-for-iterator.{core::Iterator::current};
-        #t27.{core::Map::[]=}(#t29.{core::MapEntry::key}, #t29.{core::MapEntry::value}){(Never, Never) → void};
+        #t27.{core::Map::[]=}{Invariant}(#t29.{core::MapEntry::key}, #t29.{core::MapEntry::value});
       }
     }
-    #t27.{core::Map::[]=}(let final Never #t30 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t31 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never, Never) → void};
+    #t27.{core::Map::[]=}{Invariant}(let final Never #t30 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t31 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t27;
   core::Map<Never, Never> m2 = block {
     final core::Map<Never, Never> #t32 = <Never, Never>{};
     final core::Map<Never, Never>? #t33 = let final Never #t34 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    if(!(#t33 == null)) {
+    if(!#t33.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t33{core::Map<Never, Never>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<Never, Never> #t35 = :sync-for-iterator.{core::Iterator::current};
-        #t32.{core::Map::[]=}(#t35.{core::MapEntry::key}, #t35.{core::MapEntry::value}){(Never, Never) → void};
+        #t32.{core::Map::[]=}{Invariant}(#t35.{core::MapEntry::key}, #t35.{core::MapEntry::value});
       }
     }
-    #t32.{core::Map::[]=}(let final Never #t36 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t37 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never, Never) → void};
+    #t32.{core::Map::[]=}{Invariant}(let final Never #t36 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t37 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t32;
   core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:20:16: Error: Can't spread a value with static type 'Never?'.
   var m3 = {...n2, n1: n1};
@@ -175,14 +175,14 @@
   core::Map<Never, Never> m4 = block {
     final core::Map<Never, Never> #t40 = <Never, Never>{};
     final core::Map<Never, Never>? #t41 = n2;
-    if(!(#t41 == null)) {
+    if(!#t41.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t41{core::Map<Never, Never>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<Never, Never> #t42 = :sync-for-iterator.{core::Iterator::current};
-        #t40.{core::Map::[]=}(#t42.{core::MapEntry::key}, #t42.{core::MapEntry::value}){(Never, Never) → void};
+        #t40.{core::Map::[]=}{Invariant}(#t42.{core::MapEntry::key}, #t42.{core::MapEntry::value});
       }
     }
-    #t40.{core::Map::[]=}(let final Never #t43 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t44 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never, Never) → void};
+    #t40.{core::Map::[]=}{Invariant}(let final Never #t43 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t44 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t40;
   core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:22:16: Error: Can't spread a value with static type 'Null'.
   var m5 = {...n3, n1: n1};
@@ -190,14 +190,14 @@
   core::Map<Never, Never> m6 = block {
     final core::Map<Never, Never> #t47 = <Never, Never>{};
     final core::Map<Never, Never>? #t48 = n3;
-    if(!(#t48 == null)) {
+    if(!#t48.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t48{core::Map<Never, Never>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<Never, Never> #t49 = :sync-for-iterator.{core::Iterator::current};
-        #t47.{core::Map::[]=}(#t49.{core::MapEntry::key}, #t49.{core::MapEntry::value}){(Never, Never) → void};
+        #t47.{core::Map::[]=}{Invariant}(#t49.{core::MapEntry::key}, #t49.{core::MapEntry::value});
       }
     }
-    #t47.{core::Map::[]=}(let final Never #t50 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t51 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(Never, Never) → void};
+    #t47.{core::Map::[]=}{Invariant}(let final Never #t50 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final Never #t51 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t47;
 }
 static method test2<N1 extends Never, N2 extends Never?, N3 extends Null>(self::test2::N1 n1, self::test2::N2% n2, self::test2::N3% n3) → dynamic {
@@ -207,8 +207,8 @@
   core::List<Never> l2 = block {
     final core::List<Never> #t54 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t55 = let final self::test2::N1 #t56 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    if(!(#t55 == null))
-      #t54.{core::List::addAll}(#t55{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t55.{core::Object::==}(null))
+      #t54.{core::List::addAll}{Invariant}(#t55{core::Iterable<Never>});
   } =>#t54;
   core::List<dynamic> l3 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:30:16: Error: Can't spread a value with static type 'N2'.
   var l3 = [...n2];
@@ -216,8 +216,8 @@
   core::List<Never> l4 = block {
     final core::List<Never> #t57 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t58 = n2;
-    if(!(#t58 == null))
-      #t57.{core::List::addAll}(#t58{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t58.{core::Object::==}(null))
+      #t57.{core::List::addAll}{Invariant}(#t58{core::Iterable<Never>});
   } =>#t57;
   core::List<dynamic> l5 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:32:16: Error: Can't spread a value with static type 'N3'.
   var l5 = [...n3];
@@ -225,47 +225,47 @@
   core::List<Never> l6 = block {
     final core::List<Never> #t59 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t60 = n3;
-    if(!(#t60 == null))
-      #t59.{core::List::addAll}(#t60{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t60.{core::Object::==}(null))
+      #t59.{core::List::addAll}{Invariant}(#t60{core::Iterable<Never>});
   } =>#t59;
   core::Set<self::test2::N1> s1 = block {
     final core::Set<self::test2::N1> #t61 = col::LinkedHashSet::of<self::test2::N1>(let final self::test2::N1 #t62 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
-    #t61.{core::Set::add}(let final self::test2::N1 #t63 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1) → core::bool};
+    #t61.{core::Set::add}{Invariant}(let final self::test2::N1 #t63 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t61;
   core::Set<self::test2::N1> s2 = block {
     final core::Set<self::test2::N1> #t64 = new col::_CompactLinkedHashSet::•<self::test2::N1>();
     final core::Iterable<self::test2::N1>? #t65 = let final self::test2::N1 #t66 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    if(!(#t65 == null))
-      #t64.{core::Set::addAll}(#t65{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
-    #t64.{core::Set::add}(let final self::test2::N1 #t67 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1) → core::bool};
+    if(!#t65.{core::Object::==}(null))
+      #t64.{core::Set::addAll}{Invariant}(#t65{core::Iterable<self::test2::N1>});
+    #t64.{core::Set::add}{Invariant}(let final self::test2::N1 #t67 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t64;
   core::Set<dynamic> s3 = block {
     final core::Set<dynamic> #t68 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t68.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
+    #t68.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
   var s3 = {...n2, n1};
-               ^"){(dynamic) → core::bool};
-    #t68.{core::Set::add}(let final self::test2::N1 #t69 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(dynamic) → core::bool};
+               ^");
+    #t68.{core::Set::add}{Invariant}(let final self::test2::N1 #t69 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t68;
   core::Set<self::test2::N1> s4 = block {
     final core::Set<self::test2::N1> #t70 = new col::_CompactLinkedHashSet::•<self::test2::N1>();
     final core::Iterable<self::test2::N1>? #t71 = n2;
-    if(!(#t71 == null))
-      #t70.{core::Set::addAll}(#t71{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
-    #t70.{core::Set::add}(let final self::test2::N1 #t72 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1) → core::bool};
+    if(!#t71.{core::Object::==}(null))
+      #t70.{core::Set::addAll}{Invariant}(#t71{core::Iterable<self::test2::N1>});
+    #t70.{core::Set::add}{Invariant}(let final self::test2::N1 #t72 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t70;
   core::Set<dynamic> s5 = block {
     final core::Set<dynamic> #t73 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t73.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
+    #t73.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
   var s5 = {...n3, n1};
-               ^"){(dynamic) → core::bool};
-    #t73.{core::Set::add}(let final self::test2::N1 #t74 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(dynamic) → core::bool};
+               ^");
+    #t73.{core::Set::add}{Invariant}(let final self::test2::N1 #t74 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t73;
   core::Set<self::test2::N1> s6 = block {
     final core::Set<self::test2::N1> #t75 = new col::_CompactLinkedHashSet::•<self::test2::N1>();
     final core::Iterable<self::test2::N1>? #t76 = n3;
-    if(!(#t76 == null))
-      #t75.{core::Set::addAll}(#t76{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
-    #t75.{core::Set::add}(let final self::test2::N1 #t77 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1) → core::bool};
+    if(!#t76.{core::Object::==}(null))
+      #t75.{core::Set::addAll}{Invariant}(#t76{core::Iterable<self::test2::N1>});
+    #t75.{core::Set::add}{Invariant}(let final self::test2::N1 #t77 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t75;
   core::Map<self::test2::N1, self::test2::N1> m1 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t78 = <self::test2::N1, self::test2::N1>{};
@@ -273,22 +273,22 @@
       core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = (let final self::test2::N1 #t79 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<self::test2::N1, self::test2::N1> #t80 = :sync-for-iterator.{core::Iterator::current};
-        #t78.{core::Map::[]=}(#t80.{core::MapEntry::key}, #t80.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
+        #t78.{core::Map::[]=}{Invariant}(#t80.{core::MapEntry::key}, #t80.{core::MapEntry::value});
       }
     }
-    #t78.{core::Map::[]=}(let final self::test2::N1 #t81 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t82 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1, self::test2::N1) → void};
+    #t78.{core::Map::[]=}{Invariant}(let final self::test2::N1 #t81 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t82 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t78;
   core::Map<self::test2::N1, self::test2::N1> m2 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t83 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t84 = let final self::test2::N1 #t85 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-    if(!(#t84 == null)) {
+    if(!#t84.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t84{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<self::test2::N1, self::test2::N1> #t86 = :sync-for-iterator.{core::Iterator::current};
-        #t83.{core::Map::[]=}(#t86.{core::MapEntry::key}, #t86.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
+        #t83.{core::Map::[]=}{Invariant}(#t86.{core::MapEntry::key}, #t86.{core::MapEntry::value});
       }
     }
-    #t83.{core::Map::[]=}(let final self::test2::N1 #t87 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t88 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1, self::test2::N1) → void};
+    #t83.{core::Map::[]=}{Invariant}(let final self::test2::N1 #t87 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t88 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t83;
   core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:42:16: Error: Can't spread a value with static type 'N2'.
   var m3 = {...n2, n1: n1};
@@ -296,14 +296,14 @@
   core::Map<self::test2::N1, self::test2::N1> m4 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t91 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t92 = n2;
-    if(!(#t92 == null)) {
+    if(!#t92.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t92{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<self::test2::N1, self::test2::N1> #t93 = :sync-for-iterator.{core::Iterator::current};
-        #t91.{core::Map::[]=}(#t93.{core::MapEntry::key}, #t93.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
+        #t91.{core::Map::[]=}{Invariant}(#t93.{core::MapEntry::key}, #t93.{core::MapEntry::value});
       }
     }
-    #t91.{core::Map::[]=}(let final self::test2::N1 #t94 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t95 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1, self::test2::N1) → void};
+    #t91.{core::Map::[]=}{Invariant}(let final self::test2::N1 #t94 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t95 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t91;
   core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:44:16: Error: Can't spread a value with static type 'N3'.
   var m5 = {...n3, n1: n1};
@@ -311,14 +311,14 @@
   core::Map<self::test2::N1, self::test2::N1> m6 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t98 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t99 = n3;
-    if(!(#t99 == null)) {
+    if(!#t99.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t99{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<self::test2::N1, self::test2::N1> #t100 = :sync-for-iterator.{core::Iterator::current};
-        #t98.{core::Map::[]=}(#t100.{core::MapEntry::key}, #t100.{core::MapEntry::value}){(self::test2::N1, self::test2::N1) → void};
+        #t98.{core::Map::[]=}{Invariant}(#t100.{core::MapEntry::key}, #t100.{core::MapEntry::value});
       }
     }
-    #t98.{core::Map::[]=}(let final self::test2::N1 #t101 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t102 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){(self::test2::N1, self::test2::N1) → void};
+    #t98.{core::Map::[]=}{Invariant}(let final self::test2::N1 #t101 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."), let final self::test2::N1 #t102 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`."));
   } =>#t98;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue43174.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43174.dart.strong.expect
index 1954bc8..2a0b346 100644
--- a/pkg/front_end/testcases/nnbd/issue43174.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43174.dart.strong.expect
@@ -12,10 +12,10 @@
 import "dart:async";
 
 static method method(() → void f) → dynamic {
-  f(){() → void};
+  f.call();
 }
 static method method2(() → FutureOr<void>f) → dynamic {
-  f(){() → FutureOr<void>};
+  f.call();
 }
 static method test() → dynamic {
   self::method(() → void {
diff --git a/pkg/front_end/testcases/nnbd/issue43174.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43174.dart.strong.transformed.expect
index 1954bc8..2a0b346 100644
--- a/pkg/front_end/testcases/nnbd/issue43174.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43174.dart.strong.transformed.expect
@@ -12,10 +12,10 @@
 import "dart:async";
 
 static method method(() → void f) → dynamic {
-  f(){() → void};
+  f.call();
 }
 static method method2(() → FutureOr<void>f) → dynamic {
-  f(){() → FutureOr<void>};
+  f.call();
 }
 static method test() → dynamic {
   self::method(() → void {
diff --git a/pkg/front_end/testcases/nnbd/issue43174.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43174.dart.weak.expect
index 1954bc8..2a0b346 100644
--- a/pkg/front_end/testcases/nnbd/issue43174.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43174.dart.weak.expect
@@ -12,10 +12,10 @@
 import "dart:async";
 
 static method method(() → void f) → dynamic {
-  f(){() → void};
+  f.call();
 }
 static method method2(() → FutureOr<void>f) → dynamic {
-  f(){() → FutureOr<void>};
+  f.call();
 }
 static method test() → dynamic {
   self::method(() → void {
diff --git a/pkg/front_end/testcases/nnbd/issue43174.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43174.dart.weak.transformed.expect
index 1954bc8..2a0b346 100644
--- a/pkg/front_end/testcases/nnbd/issue43174.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43174.dart.weak.transformed.expect
@@ -12,10 +12,10 @@
 import "dart:async";
 
 static method method(() → void f) → dynamic {
-  f(){() → void};
+  f.call();
 }
 static method method2(() → FutureOr<void>f) → dynamic {
-  f(){() → FutureOr<void>};
+  f.call();
 }
 static method test() → dynamic {
   self::method(() → void {
diff --git a/pkg/front_end/testcases/nnbd/issue43256.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43256.dart.strong.expect
index 68bc324..a77f5c0 100644
--- a/pkg/front_end/testcases/nnbd/issue43256.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43256.dart.strong.expect
@@ -57,86 +57,86 @@
 static field dynamic dynamicList = <core::int>[1, 2, 3];
 static field core::Map<dynamic, dynamic> map1 = block {
   final core::Map<dynamic, dynamic> #t1 = <dynamic, dynamic>{};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t1.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:16:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+  if(self::i.{core::num::>}(0))
+    #t1.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:16:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   if (i > 0) ...nullableMap, // error
-                ^", null){(dynamic, dynamic) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
+                ^", null);
+  if(self::i.{core::num::>}(0))
     for (final core::MapEntry<dynamic, dynamic> #t2 in (self::dynamicMap as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries})
-      #t1.{core::Map::[]=}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value}){(dynamic, dynamic) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
+      #t1.{core::Map::[]=}{Invariant}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value});
+  if(self::i.{core::num::>}(0))
     for (final core::MapEntry<dynamic, dynamic> #t3 in self::nullableMap!.{core::Map::entries})
-      #t1.{core::Map::[]=}(#t3.{core::MapEntry::key}, #t3.{core::MapEntry::value}){(dynamic, dynamic) → void};
+      #t1.{core::Map::[]=}{Invariant}(#t3.{core::MapEntry::key}, #t3.{core::MapEntry::value});
 } =>#t1;
 static field core::Set<dynamic> set1 = block {
   final core::Set<dynamic> #t4 = col::LinkedHashSet::•<dynamic>();
-  #t4.{core::Set::add}(0){(dynamic) → core::bool};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t4.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:23:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+  #t4.{core::Set::add}{Invariant}(0);
+  if(self::i.{core::num::>}(0))
+    #t4.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:23:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   if (i > 0) ...nullableList, // error
-                ^"){(dynamic) → core::bool};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t4.{core::Set::addAll}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>){(core::Iterable<dynamic>) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t4.{core::Set::addAll}(self::nullableList!){(core::Iterable<dynamic>) → void};
+                ^");
+  if(self::i.{core::num::>}(0))
+    #t4.{core::Set::addAll}{Invariant}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+  if(self::i.{core::num::>}(0))
+    #t4.{core::Set::addAll}{Invariant}(self::nullableList!);
 } =>#t4;
 static field core::List<dynamic> list1 = block {
   final core::List<dynamic> #t5 = <dynamic>[];
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t5.{core::List::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:29:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+  if(self::i.{core::num::>}(0))
+    #t5.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:29:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   if (i > 0) ...nullableList, // error
-                ^"){(dynamic) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t5.{core::List::addAll}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>){(core::Iterable<dynamic>) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t5.{core::List::addAll}(self::nullableList!){(core::Iterable<dynamic>) → void};
+                ^");
+  if(self::i.{core::num::>}(0))
+    #t5.{core::List::addAll}{Invariant}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+  if(self::i.{core::num::>}(0))
+    #t5.{core::List::addAll}{Invariant}(self::nullableList!);
 } =>#t5;
 static method testMap<X extends dynamic, Y extends core::Map<core::int, core::String>?, Z extends core::Map<core::int, core::String>>(self::testMap::X% x, self::testMap::Y% y, self::testMap::Z z) → dynamic {
   core::Map<dynamic, dynamic> map2 = block {
     final core::Map<dynamic, dynamic> #t6 = <dynamic, dynamic>{};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t6.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:37:19: Error: Unexpected type 'X' of a map spread entry.  Expected 'dynamic' or a Map.
+    if(self::i.{core::num::>}(0))
+      #t6.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:37:19: Error: Unexpected type 'X' of a map spread entry.  Expected 'dynamic' or a Map.
     if (i > 0) ...x, // error
-                  ^", null){(dynamic, dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t6.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:38:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+                  ^", null);
+    if(self::i.{core::num::>}(0))
+      #t6.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:38:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     if (i > 0) ...y, // error
-                  ^", null){(dynamic, dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
+                  ^", null);
+    if(self::i.{core::num::>}(0))
       for (final core::MapEntry<dynamic, dynamic> #t7 in z.{core::Map::entries})
-        #t6.{core::Map::[]=}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value}){(dynamic, dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
+        #t6.{core::Map::[]=}{Invariant}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value});
+    if(self::i.{core::num::>}(0))
       for (final core::MapEntry<dynamic, dynamic> #t8 in y!.{core::Map::entries})
-        #t6.{core::Map::[]=}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value}){(dynamic, dynamic) → void};
+        #t6.{core::Map::[]=}{Invariant}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value});
   } =>#t6;
 }
 static method testIterables<X extends dynamic, Y extends core::List<core::int>?, Z extends core::List<core::int>>(self::testIterables::X% x, self::testIterables::Y% y, self::testIterables::Z z) → dynamic {
   core::Set<dynamic> set2 = block {
     final core::Set<dynamic> #t9 = col::LinkedHashSet::•<dynamic>();
-    #t9.{core::Set::add}(0){(dynamic) → core::bool};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t9.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:48:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
+    #t9.{core::Set::add}{Invariant}(0);
+    if(self::i.{core::num::>}(0))
+      #t9.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:48:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
     if (i > 0) ...x, // error
-                  ^"){(dynamic) → core::bool};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t9.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:49:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t9.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:49:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     if (i > 0) ...y, // error
-                  ^"){(dynamic) → core::bool};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t9.{core::Set::addAll}(z){(core::Iterable<dynamic>) → void};
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t9.{core::Set::addAll}{Invariant}(z);
   } =>#t9;
   core::List<dynamic> list2 = block {
     final core::List<dynamic> #t10 = <dynamic>[];
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t10.{core::List::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:53:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
+    if(self::i.{core::num::>}(0))
+      #t10.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:53:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
     if (i > 0) ...x, // error
-                  ^"){(dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t10.{core::List::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:54:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t10.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:54:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     if (i > 0) ...y, // error
-                  ^"){(dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t10.{core::List::addAll}(z){(core::Iterable<dynamic>) → void};
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t10.{core::List::addAll}{Invariant}(z);
   } =>#t10;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue43256.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43256.dart.strong.transformed.expect
index 6a80c4b..04e38068 100644
--- a/pkg/front_end/testcases/nnbd/issue43256.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43256.dart.strong.transformed.expect
@@ -57,71 +57,71 @@
 static field dynamic dynamicList = core::_GrowableList::_literal3<core::int>(1, 2, 3);
 static field core::Map<dynamic, dynamic> map1 = block {
   final core::Map<dynamic, dynamic> #t1 = <dynamic, dynamic>{};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t1.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:16:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+  if(self::i.{core::num::>}(0))
+    #t1.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:16:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   if (i > 0) ...nullableMap, // error
-                ^", null){(dynamic, dynamic) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
+                ^", null);
+  if(self::i.{core::num::>}(0)) {
     core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = (self::dynamicMap as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       final core::MapEntry<dynamic, dynamic> #t2 = :sync-for-iterator.{core::Iterator::current};
-      #t1.{core::Map::[]=}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value}){(dynamic, dynamic) → void};
+      #t1.{core::Map::[]=}{Invariant}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value});
     }
   }
-  if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
+  if(self::i.{core::num::>}(0)) {
     core::Iterator<core::MapEntry<core::int, core::String>> :sync-for-iterator = self::nullableMap!.{core::Map::entries}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       final core::MapEntry<dynamic, dynamic> #t3 = :sync-for-iterator.{core::Iterator::current};
-      #t1.{core::Map::[]=}(#t3.{core::MapEntry::key}, #t3.{core::MapEntry::value}){(dynamic, dynamic) → void};
+      #t1.{core::Map::[]=}{Invariant}(#t3.{core::MapEntry::key}, #t3.{core::MapEntry::value});
     }
   }
 } =>#t1;
 static field core::Set<dynamic> set1 = block {
   final core::Set<dynamic> #t4 = new col::_CompactLinkedHashSet::•<dynamic>();
-  #t4.{core::Set::add}(0){(dynamic) → core::bool};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t4.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:23:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+  #t4.{core::Set::add}{Invariant}(0);
+  if(self::i.{core::num::>}(0))
+    #t4.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:23:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   if (i > 0) ...nullableList, // error
-                ^"){(dynamic) → core::bool};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t4.{core::Set::addAll}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>){(core::Iterable<dynamic>) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t4.{core::Set::addAll}(self::nullableList!){(core::Iterable<dynamic>) → void};
+                ^");
+  if(self::i.{core::num::>}(0))
+    #t4.{core::Set::addAll}{Invariant}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+  if(self::i.{core::num::>}(0))
+    #t4.{core::Set::addAll}{Invariant}(self::nullableList!);
 } =>#t4;
 static field core::List<dynamic> list1 = block {
   final core::List<dynamic> #t5 = core::_GrowableList::•<dynamic>(0);
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t5.{core::List::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:29:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+  if(self::i.{core::num::>}(0))
+    #t5.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:29:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   if (i > 0) ...nullableList, // error
-                ^"){(dynamic) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t5.{core::List::addAll}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>){(core::Iterable<dynamic>) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t5.{core::List::addAll}(self::nullableList!){(core::Iterable<dynamic>) → void};
+                ^");
+  if(self::i.{core::num::>}(0))
+    #t5.{core::List::addAll}{Invariant}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+  if(self::i.{core::num::>}(0))
+    #t5.{core::List::addAll}{Invariant}(self::nullableList!);
 } =>#t5;
 static method testMap<X extends dynamic, Y extends core::Map<core::int, core::String>?, Z extends core::Map<core::int, core::String>>(self::testMap::X% x, self::testMap::Y% y, self::testMap::Z z) → dynamic {
   core::Map<dynamic, dynamic> map2 = block {
     final core::Map<dynamic, dynamic> #t6 = <dynamic, dynamic>{};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t6.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:37:19: Error: Unexpected type 'X' of a map spread entry.  Expected 'dynamic' or a Map.
+    if(self::i.{core::num::>}(0))
+      #t6.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:37:19: Error: Unexpected type 'X' of a map spread entry.  Expected 'dynamic' or a Map.
     if (i > 0) ...x, // error
-                  ^", null){(dynamic, dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t6.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:38:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+                  ^", null);
+    if(self::i.{core::num::>}(0))
+      #t6.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:38:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     if (i > 0) ...y, // error
-                  ^", null){(dynamic, dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
+                  ^", null);
+    if(self::i.{core::num::>}(0)) {
       core::Iterator<core::MapEntry<core::int, core::String>> :sync-for-iterator = z.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic> #t7 = :sync-for-iterator.{core::Iterator::current};
-        #t6.{core::Map::[]=}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value}){(dynamic, dynamic) → void};
+        #t6.{core::Map::[]=}{Invariant}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value});
       }
     }
-    if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
+    if(self::i.{core::num::>}(0)) {
       core::Iterator<core::MapEntry<core::int, core::String>> :sync-for-iterator = y!.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic> #t8 = :sync-for-iterator.{core::Iterator::current};
-        #t6.{core::Map::[]=}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value}){(dynamic, dynamic) → void};
+        #t6.{core::Map::[]=}{Invariant}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value});
       }
     }
   } =>#t6;
@@ -129,30 +129,30 @@
 static method testIterables<X extends dynamic, Y extends core::List<core::int>?, Z extends core::List<core::int>>(self::testIterables::X% x, self::testIterables::Y% y, self::testIterables::Z z) → dynamic {
   core::Set<dynamic> set2 = block {
     final core::Set<dynamic> #t9 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t9.{core::Set::add}(0){(dynamic) → core::bool};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t9.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:48:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
+    #t9.{core::Set::add}{Invariant}(0);
+    if(self::i.{core::num::>}(0))
+      #t9.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:48:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
     if (i > 0) ...x, // error
-                  ^"){(dynamic) → core::bool};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t9.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:49:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t9.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:49:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     if (i > 0) ...y, // error
-                  ^"){(dynamic) → core::bool};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t9.{core::Set::addAll}(z){(core::Iterable<dynamic>) → void};
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t9.{core::Set::addAll}{Invariant}(z);
   } =>#t9;
   core::List<dynamic> list2 = block {
     final core::List<dynamic> #t10 = core::_GrowableList::•<dynamic>(0);
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t10.{core::List::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:53:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
+    if(self::i.{core::num::>}(0))
+      #t10.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:53:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
     if (i > 0) ...x, // error
-                  ^"){(dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t10.{core::List::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:54:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t10.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:54:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     if (i > 0) ...y, // error
-                  ^"){(dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t10.{core::List::addAll}(z){(core::Iterable<dynamic>) → void};
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t10.{core::List::addAll}{Invariant}(z);
   } =>#t10;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue43256.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43256.dart.weak.expect
index 68bc324..a77f5c0 100644
--- a/pkg/front_end/testcases/nnbd/issue43256.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43256.dart.weak.expect
@@ -57,86 +57,86 @@
 static field dynamic dynamicList = <core::int>[1, 2, 3];
 static field core::Map<dynamic, dynamic> map1 = block {
   final core::Map<dynamic, dynamic> #t1 = <dynamic, dynamic>{};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t1.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:16:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+  if(self::i.{core::num::>}(0))
+    #t1.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:16:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   if (i > 0) ...nullableMap, // error
-                ^", null){(dynamic, dynamic) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
+                ^", null);
+  if(self::i.{core::num::>}(0))
     for (final core::MapEntry<dynamic, dynamic> #t2 in (self::dynamicMap as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries})
-      #t1.{core::Map::[]=}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value}){(dynamic, dynamic) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
+      #t1.{core::Map::[]=}{Invariant}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value});
+  if(self::i.{core::num::>}(0))
     for (final core::MapEntry<dynamic, dynamic> #t3 in self::nullableMap!.{core::Map::entries})
-      #t1.{core::Map::[]=}(#t3.{core::MapEntry::key}, #t3.{core::MapEntry::value}){(dynamic, dynamic) → void};
+      #t1.{core::Map::[]=}{Invariant}(#t3.{core::MapEntry::key}, #t3.{core::MapEntry::value});
 } =>#t1;
 static field core::Set<dynamic> set1 = block {
   final core::Set<dynamic> #t4 = col::LinkedHashSet::•<dynamic>();
-  #t4.{core::Set::add}(0){(dynamic) → core::bool};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t4.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:23:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+  #t4.{core::Set::add}{Invariant}(0);
+  if(self::i.{core::num::>}(0))
+    #t4.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:23:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   if (i > 0) ...nullableList, // error
-                ^"){(dynamic) → core::bool};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t4.{core::Set::addAll}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>){(core::Iterable<dynamic>) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t4.{core::Set::addAll}(self::nullableList!){(core::Iterable<dynamic>) → void};
+                ^");
+  if(self::i.{core::num::>}(0))
+    #t4.{core::Set::addAll}{Invariant}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+  if(self::i.{core::num::>}(0))
+    #t4.{core::Set::addAll}{Invariant}(self::nullableList!);
 } =>#t4;
 static field core::List<dynamic> list1 = block {
   final core::List<dynamic> #t5 = <dynamic>[];
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t5.{core::List::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:29:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+  if(self::i.{core::num::>}(0))
+    #t5.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:29:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   if (i > 0) ...nullableList, // error
-                ^"){(dynamic) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t5.{core::List::addAll}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>){(core::Iterable<dynamic>) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t5.{core::List::addAll}(self::nullableList!){(core::Iterable<dynamic>) → void};
+                ^");
+  if(self::i.{core::num::>}(0))
+    #t5.{core::List::addAll}{Invariant}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+  if(self::i.{core::num::>}(0))
+    #t5.{core::List::addAll}{Invariant}(self::nullableList!);
 } =>#t5;
 static method testMap<X extends dynamic, Y extends core::Map<core::int, core::String>?, Z extends core::Map<core::int, core::String>>(self::testMap::X% x, self::testMap::Y% y, self::testMap::Z z) → dynamic {
   core::Map<dynamic, dynamic> map2 = block {
     final core::Map<dynamic, dynamic> #t6 = <dynamic, dynamic>{};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t6.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:37:19: Error: Unexpected type 'X' of a map spread entry.  Expected 'dynamic' or a Map.
+    if(self::i.{core::num::>}(0))
+      #t6.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:37:19: Error: Unexpected type 'X' of a map spread entry.  Expected 'dynamic' or a Map.
     if (i > 0) ...x, // error
-                  ^", null){(dynamic, dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t6.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:38:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+                  ^", null);
+    if(self::i.{core::num::>}(0))
+      #t6.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:38:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     if (i > 0) ...y, // error
-                  ^", null){(dynamic, dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
+                  ^", null);
+    if(self::i.{core::num::>}(0))
       for (final core::MapEntry<dynamic, dynamic> #t7 in z.{core::Map::entries})
-        #t6.{core::Map::[]=}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value}){(dynamic, dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
+        #t6.{core::Map::[]=}{Invariant}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value});
+    if(self::i.{core::num::>}(0))
       for (final core::MapEntry<dynamic, dynamic> #t8 in y!.{core::Map::entries})
-        #t6.{core::Map::[]=}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value}){(dynamic, dynamic) → void};
+        #t6.{core::Map::[]=}{Invariant}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value});
   } =>#t6;
 }
 static method testIterables<X extends dynamic, Y extends core::List<core::int>?, Z extends core::List<core::int>>(self::testIterables::X% x, self::testIterables::Y% y, self::testIterables::Z z) → dynamic {
   core::Set<dynamic> set2 = block {
     final core::Set<dynamic> #t9 = col::LinkedHashSet::•<dynamic>();
-    #t9.{core::Set::add}(0){(dynamic) → core::bool};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t9.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:48:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
+    #t9.{core::Set::add}{Invariant}(0);
+    if(self::i.{core::num::>}(0))
+      #t9.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:48:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
     if (i > 0) ...x, // error
-                  ^"){(dynamic) → core::bool};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t9.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:49:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t9.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:49:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     if (i > 0) ...y, // error
-                  ^"){(dynamic) → core::bool};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t9.{core::Set::addAll}(z){(core::Iterable<dynamic>) → void};
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t9.{core::Set::addAll}{Invariant}(z);
   } =>#t9;
   core::List<dynamic> list2 = block {
     final core::List<dynamic> #t10 = <dynamic>[];
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t10.{core::List::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:53:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
+    if(self::i.{core::num::>}(0))
+      #t10.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:53:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
     if (i > 0) ...x, // error
-                  ^"){(dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t10.{core::List::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:54:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t10.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:54:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     if (i > 0) ...y, // error
-                  ^"){(dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t10.{core::List::addAll}(z){(core::Iterable<dynamic>) → void};
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t10.{core::List::addAll}{Invariant}(z);
   } =>#t10;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue43256.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43256.dart.weak.transformed.expect
index 6a80c4b..04e38068 100644
--- a/pkg/front_end/testcases/nnbd/issue43256.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43256.dart.weak.transformed.expect
@@ -57,71 +57,71 @@
 static field dynamic dynamicList = core::_GrowableList::_literal3<core::int>(1, 2, 3);
 static field core::Map<dynamic, dynamic> map1 = block {
   final core::Map<dynamic, dynamic> #t1 = <dynamic, dynamic>{};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t1.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:16:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+  if(self::i.{core::num::>}(0))
+    #t1.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:16:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   if (i > 0) ...nullableMap, // error
-                ^", null){(dynamic, dynamic) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
+                ^", null);
+  if(self::i.{core::num::>}(0)) {
     core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = (self::dynamicMap as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       final core::MapEntry<dynamic, dynamic> #t2 = :sync-for-iterator.{core::Iterator::current};
-      #t1.{core::Map::[]=}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value}){(dynamic, dynamic) → void};
+      #t1.{core::Map::[]=}{Invariant}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value});
     }
   }
-  if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
+  if(self::i.{core::num::>}(0)) {
     core::Iterator<core::MapEntry<core::int, core::String>> :sync-for-iterator = self::nullableMap!.{core::Map::entries}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       final core::MapEntry<dynamic, dynamic> #t3 = :sync-for-iterator.{core::Iterator::current};
-      #t1.{core::Map::[]=}(#t3.{core::MapEntry::key}, #t3.{core::MapEntry::value}){(dynamic, dynamic) → void};
+      #t1.{core::Map::[]=}{Invariant}(#t3.{core::MapEntry::key}, #t3.{core::MapEntry::value});
     }
   }
 } =>#t1;
 static field core::Set<dynamic> set1 = block {
   final core::Set<dynamic> #t4 = new col::_CompactLinkedHashSet::•<dynamic>();
-  #t4.{core::Set::add}(0){(dynamic) → core::bool};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t4.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:23:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+  #t4.{core::Set::add}{Invariant}(0);
+  if(self::i.{core::num::>}(0))
+    #t4.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:23:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   if (i > 0) ...nullableList, // error
-                ^"){(dynamic) → core::bool};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t4.{core::Set::addAll}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>){(core::Iterable<dynamic>) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t4.{core::Set::addAll}(self::nullableList!){(core::Iterable<dynamic>) → void};
+                ^");
+  if(self::i.{core::num::>}(0))
+    #t4.{core::Set::addAll}{Invariant}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+  if(self::i.{core::num::>}(0))
+    #t4.{core::Set::addAll}{Invariant}(self::nullableList!);
 } =>#t4;
 static field core::List<dynamic> list1 = block {
   final core::List<dynamic> #t5 = core::_GrowableList::•<dynamic>(0);
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t5.{core::List::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:29:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+  if(self::i.{core::num::>}(0))
+    #t5.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:29:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   if (i > 0) ...nullableList, // error
-                ^"){(dynamic) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t5.{core::List::addAll}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>){(core::Iterable<dynamic>) → void};
-  if(self::i.{core::num::>}(0){(core::num) → core::bool})
-    #t5.{core::List::addAll}(self::nullableList!){(core::Iterable<dynamic>) → void};
+                ^");
+  if(self::i.{core::num::>}(0))
+    #t5.{core::List::addAll}{Invariant}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+  if(self::i.{core::num::>}(0))
+    #t5.{core::List::addAll}{Invariant}(self::nullableList!);
 } =>#t5;
 static method testMap<X extends dynamic, Y extends core::Map<core::int, core::String>?, Z extends core::Map<core::int, core::String>>(self::testMap::X% x, self::testMap::Y% y, self::testMap::Z z) → dynamic {
   core::Map<dynamic, dynamic> map2 = block {
     final core::Map<dynamic, dynamic> #t6 = <dynamic, dynamic>{};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t6.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:37:19: Error: Unexpected type 'X' of a map spread entry.  Expected 'dynamic' or a Map.
+    if(self::i.{core::num::>}(0))
+      #t6.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:37:19: Error: Unexpected type 'X' of a map spread entry.  Expected 'dynamic' or a Map.
     if (i > 0) ...x, // error
-                  ^", null){(dynamic, dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t6.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:38:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+                  ^", null);
+    if(self::i.{core::num::>}(0))
+      #t6.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:38:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     if (i > 0) ...y, // error
-                  ^", null){(dynamic, dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
+                  ^", null);
+    if(self::i.{core::num::>}(0)) {
       core::Iterator<core::MapEntry<core::int, core::String>> :sync-for-iterator = z.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic> #t7 = :sync-for-iterator.{core::Iterator::current};
-        #t6.{core::Map::[]=}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value}){(dynamic, dynamic) → void};
+        #t6.{core::Map::[]=}{Invariant}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value});
       }
     }
-    if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
+    if(self::i.{core::num::>}(0)) {
       core::Iterator<core::MapEntry<core::int, core::String>> :sync-for-iterator = y!.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic> #t8 = :sync-for-iterator.{core::Iterator::current};
-        #t6.{core::Map::[]=}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value}){(dynamic, dynamic) → void};
+        #t6.{core::Map::[]=}{Invariant}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value});
       }
     }
   } =>#t6;
@@ -129,30 +129,30 @@
 static method testIterables<X extends dynamic, Y extends core::List<core::int>?, Z extends core::List<core::int>>(self::testIterables::X% x, self::testIterables::Y% y, self::testIterables::Z z) → dynamic {
   core::Set<dynamic> set2 = block {
     final core::Set<dynamic> #t9 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t9.{core::Set::add}(0){(dynamic) → core::bool};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t9.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:48:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
+    #t9.{core::Set::add}{Invariant}(0);
+    if(self::i.{core::num::>}(0))
+      #t9.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:48:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
     if (i > 0) ...x, // error
-                  ^"){(dynamic) → core::bool};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t9.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:49:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t9.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:49:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     if (i > 0) ...y, // error
-                  ^"){(dynamic) → core::bool};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t9.{core::Set::addAll}(z){(core::Iterable<dynamic>) → void};
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t9.{core::Set::addAll}{Invariant}(z);
   } =>#t9;
   core::List<dynamic> list2 = block {
     final core::List<dynamic> #t10 = core::_GrowableList::•<dynamic>(0);
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t10.{core::List::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:53:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
+    if(self::i.{core::num::>}(0))
+      #t10.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:53:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
     if (i > 0) ...x, // error
-                  ^"){(dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t10.{core::List::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:54:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t10.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:54:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     if (i > 0) ...y, // error
-                  ^"){(dynamic) → void};
-    if(self::i.{core::num::>}(0){(core::num) → core::bool})
-      #t10.{core::List::addAll}(z){(core::Iterable<dynamic>) → void};
+                  ^");
+    if(self::i.{core::num::>}(0))
+      #t10.{core::List::addAll}{Invariant}(z);
   } =>#t10;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue43278.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43278.dart.strong.expect
index 3de5c65..cd83b1e 100644
--- a/pkg/front_end/testcases/nnbd/issue43278.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43278.dart.strong.expect
@@ -49,20 +49,20 @@
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   a.foo ??= x; // Error.
-    ^^^" in #t1.{self::A::foo}{<nullable>}.{core::int?}) == null ?{core::int} let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null.
+    ^^^" in #t1.{self::A::foo}).{core::num::==}(null) ?{core::int} let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   a.foo ??= x; // Error.
-    ^^^" in #t1.{self::A::foo}{<nullable>}. = x : null;
+    ^^^" in #t1.{self::A::foo} = x : null;
   let final self::test::T% #t4 = t in (let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.foo ??= x; // Error.
-    ^^^" in #t4.{self::A::foo}{<nullable>}.{core::int?}) == null ?{core::int} let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null.
+    ^^^" in #t4.{self::A::foo}).{core::num::==}(null) ?{core::int} let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.foo ??= x; // Error.
-    ^^^" in #t4.{self::A::foo}{<nullable>}. = x : null;
-  let final dynamic #t7 = d in #t7{dynamic}.foo == null ?{dynamic} #t7{dynamic}.foo = x : null;
-  let final self::A? #t8 = a in #t8 == null ?{core::int?} null : let final self::A #t9 = #t8{self::A}.{self::A::bar}{self::A} in #t9.{self::A::foo}{core::int?} == null ?{core::int} #t9.{self::A::foo} = x : null;
+    ^^^" in #t4.{self::A::foo} = x : null;
+  let final dynamic #t7 = d in #t7.foo.{core::Object::==}(null) ?{dynamic} #t7.foo = x : null;
+  let final self::A? #t8 = a in #t8.{core::Object::==}(null) ?{core::int?} null : let final self::A #t9 = #t8{self::A}.{self::A::bar} in #t9.{self::A::foo}.{core::num::==}(null) ?{core::int} #t9.{self::A::foo} = x : null;
 }
 static method Extension|get#fooExtension(lowered final self::B #this) → core::int?
   return null;
@@ -74,7 +74,7 @@
  - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   b.fooExtension ??= x; // Error.
-    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t10)) == null ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null.
+    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t10)).{core::num::==}(null) ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null.
  - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   b.fooExtension ??= x; // Error.
@@ -82,10 +82,10 @@
   let final self::testExtension::T% #t13 = t in (let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.fooExtension ??= x; // Error.
-    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t13)) == null ?{core::int} let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null.
+    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t13)).{core::num::==}(null) ?{core::int} let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.fooExtension ??= x; // Error.
     ^^^^^^^^^^^^" in self::Extension|set#fooExtension(#t13, x) : null;
-  let final self::B? #t16 = b in #t16 == null ?{core::int?} null : let final self::B #t17 = self::Extension|get#barExtension(#t16{self::B}) in self::Extension|get#fooExtension(#t17) == null ?{core::int} self::Extension|set#fooExtension(#t17, x) : null;
+  let final self::B? #t16 = b in #t16.{core::Object::==}(null) ?{core::int?} null : let final self::B #t17 = self::Extension|get#barExtension(#t16{self::B}) in self::Extension|get#fooExtension(#t17).{core::num::==}(null) ?{core::int} self::Extension|set#fooExtension(#t17, x) : null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue43278.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43278.dart.strong.transformed.expect
index 3de5c65..cd83b1e 100644
--- a/pkg/front_end/testcases/nnbd/issue43278.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43278.dart.strong.transformed.expect
@@ -49,20 +49,20 @@
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   a.foo ??= x; // Error.
-    ^^^" in #t1.{self::A::foo}{<nullable>}.{core::int?}) == null ?{core::int} let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null.
+    ^^^" in #t1.{self::A::foo}).{core::num::==}(null) ?{core::int} let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   a.foo ??= x; // Error.
-    ^^^" in #t1.{self::A::foo}{<nullable>}. = x : null;
+    ^^^" in #t1.{self::A::foo} = x : null;
   let final self::test::T% #t4 = t in (let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.foo ??= x; // Error.
-    ^^^" in #t4.{self::A::foo}{<nullable>}.{core::int?}) == null ?{core::int} let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null.
+    ^^^" in #t4.{self::A::foo}).{core::num::==}(null) ?{core::int} let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.foo ??= x; // Error.
-    ^^^" in #t4.{self::A::foo}{<nullable>}. = x : null;
-  let final dynamic #t7 = d in #t7{dynamic}.foo == null ?{dynamic} #t7{dynamic}.foo = x : null;
-  let final self::A? #t8 = a in #t8 == null ?{core::int?} null : let final self::A #t9 = #t8{self::A}.{self::A::bar}{self::A} in #t9.{self::A::foo}{core::int?} == null ?{core::int} #t9.{self::A::foo} = x : null;
+    ^^^" in #t4.{self::A::foo} = x : null;
+  let final dynamic #t7 = d in #t7.foo.{core::Object::==}(null) ?{dynamic} #t7.foo = x : null;
+  let final self::A? #t8 = a in #t8.{core::Object::==}(null) ?{core::int?} null : let final self::A #t9 = #t8{self::A}.{self::A::bar} in #t9.{self::A::foo}.{core::num::==}(null) ?{core::int} #t9.{self::A::foo} = x : null;
 }
 static method Extension|get#fooExtension(lowered final self::B #this) → core::int?
   return null;
@@ -74,7 +74,7 @@
  - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   b.fooExtension ??= x; // Error.
-    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t10)) == null ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null.
+    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t10)).{core::num::==}(null) ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null.
  - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   b.fooExtension ??= x; // Error.
@@ -82,10 +82,10 @@
   let final self::testExtension::T% #t13 = t in (let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.fooExtension ??= x; // Error.
-    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t13)) == null ?{core::int} let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null.
+    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t13)).{core::num::==}(null) ?{core::int} let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.fooExtension ??= x; // Error.
     ^^^^^^^^^^^^" in self::Extension|set#fooExtension(#t13, x) : null;
-  let final self::B? #t16 = b in #t16 == null ?{core::int?} null : let final self::B #t17 = self::Extension|get#barExtension(#t16{self::B}) in self::Extension|get#fooExtension(#t17) == null ?{core::int} self::Extension|set#fooExtension(#t17, x) : null;
+  let final self::B? #t16 = b in #t16.{core::Object::==}(null) ?{core::int?} null : let final self::B #t17 = self::Extension|get#barExtension(#t16{self::B}) in self::Extension|get#fooExtension(#t17).{core::num::==}(null) ?{core::int} self::Extension|set#fooExtension(#t17, x) : null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue43278.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43278.dart.weak.expect
index 3de5c65..cd83b1e 100644
--- a/pkg/front_end/testcases/nnbd/issue43278.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43278.dart.weak.expect
@@ -49,20 +49,20 @@
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   a.foo ??= x; // Error.
-    ^^^" in #t1.{self::A::foo}{<nullable>}.{core::int?}) == null ?{core::int} let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null.
+    ^^^" in #t1.{self::A::foo}).{core::num::==}(null) ?{core::int} let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   a.foo ??= x; // Error.
-    ^^^" in #t1.{self::A::foo}{<nullable>}. = x : null;
+    ^^^" in #t1.{self::A::foo} = x : null;
   let final self::test::T% #t4 = t in (let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.foo ??= x; // Error.
-    ^^^" in #t4.{self::A::foo}{<nullable>}.{core::int?}) == null ?{core::int} let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null.
+    ^^^" in #t4.{self::A::foo}).{core::num::==}(null) ?{core::int} let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.foo ??= x; // Error.
-    ^^^" in #t4.{self::A::foo}{<nullable>}. = x : null;
-  let final dynamic #t7 = d in #t7{dynamic}.foo == null ?{dynamic} #t7{dynamic}.foo = x : null;
-  let final self::A? #t8 = a in #t8 == null ?{core::int?} null : let final self::A #t9 = #t8{self::A}.{self::A::bar}{self::A} in #t9.{self::A::foo}{core::int?} == null ?{core::int} #t9.{self::A::foo} = x : null;
+    ^^^" in #t4.{self::A::foo} = x : null;
+  let final dynamic #t7 = d in #t7.foo.{core::Object::==}(null) ?{dynamic} #t7.foo = x : null;
+  let final self::A? #t8 = a in #t8.{core::Object::==}(null) ?{core::int?} null : let final self::A #t9 = #t8{self::A}.{self::A::bar} in #t9.{self::A::foo}.{core::num::==}(null) ?{core::int} #t9.{self::A::foo} = x : null;
 }
 static method Extension|get#fooExtension(lowered final self::B #this) → core::int?
   return null;
@@ -74,7 +74,7 @@
  - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   b.fooExtension ??= x; // Error.
-    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t10)) == null ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null.
+    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t10)).{core::num::==}(null) ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null.
  - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   b.fooExtension ??= x; // Error.
@@ -82,10 +82,10 @@
   let final self::testExtension::T% #t13 = t in (let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.fooExtension ??= x; // Error.
-    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t13)) == null ?{core::int} let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null.
+    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t13)).{core::num::==}(null) ?{core::int} let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.fooExtension ??= x; // Error.
     ^^^^^^^^^^^^" in self::Extension|set#fooExtension(#t13, x) : null;
-  let final self::B? #t16 = b in #t16 == null ?{core::int?} null : let final self::B #t17 = self::Extension|get#barExtension(#t16{self::B}) in self::Extension|get#fooExtension(#t17) == null ?{core::int} self::Extension|set#fooExtension(#t17, x) : null;
+  let final self::B? #t16 = b in #t16.{core::Object::==}(null) ?{core::int?} null : let final self::B #t17 = self::Extension|get#barExtension(#t16{self::B}) in self::Extension|get#fooExtension(#t17).{core::num::==}(null) ?{core::int} self::Extension|set#fooExtension(#t17, x) : null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue43278.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43278.dart.weak.transformed.expect
index 3de5c65..cd83b1e 100644
--- a/pkg/front_end/testcases/nnbd/issue43278.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43278.dart.weak.transformed.expect
@@ -49,20 +49,20 @@
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   a.foo ??= x; // Error.
-    ^^^" in #t1.{self::A::foo}{<nullable>}.{core::int?}) == null ?{core::int} let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null.
+    ^^^" in #t1.{self::A::foo}).{core::num::==}(null) ?{core::int} let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   a.foo ??= x; // Error.
-    ^^^" in #t1.{self::A::foo}{<nullable>}. = x : null;
+    ^^^" in #t1.{self::A::foo} = x : null;
   let final self::test::T% #t4 = t in (let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.foo ??= x; // Error.
-    ^^^" in #t4.{self::A::foo}{<nullable>}.{core::int?}) == null ?{core::int} let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null.
+    ^^^" in #t4.{self::A::foo}).{core::num::==}(null) ?{core::int} let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.foo ??= x; // Error.
-    ^^^" in #t4.{self::A::foo}{<nullable>}. = x : null;
-  let final dynamic #t7 = d in #t7{dynamic}.foo == null ?{dynamic} #t7{dynamic}.foo = x : null;
-  let final self::A? #t8 = a in #t8 == null ?{core::int?} null : let final self::A #t9 = #t8{self::A}.{self::A::bar}{self::A} in #t9.{self::A::foo}{core::int?} == null ?{core::int} #t9.{self::A::foo} = x : null;
+    ^^^" in #t4.{self::A::foo} = x : null;
+  let final dynamic #t7 = d in #t7.foo.{core::Object::==}(null) ?{dynamic} #t7.foo = x : null;
+  let final self::A? #t8 = a in #t8.{core::Object::==}(null) ?{core::int?} null : let final self::A #t9 = #t8{self::A}.{self::A::bar} in #t9.{self::A::foo}.{core::num::==}(null) ?{core::int} #t9.{self::A::foo} = x : null;
 }
 static method Extension|get#fooExtension(lowered final self::B #this) → core::int?
   return null;
@@ -74,7 +74,7 @@
  - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   b.fooExtension ??= x; // Error.
-    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t10)) == null ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null.
+    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t10)).{core::num::==}(null) ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null.
  - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'.
 Try accessing using ?. instead.
   b.fooExtension ??= x; // Error.
@@ -82,10 +82,10 @@
   let final self::testExtension::T% #t13 = t in (let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.fooExtension ??= x; // Error.
-    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t13)) == null ?{core::int} let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null.
+    ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t13)).{core::num::==}(null) ?{core::int} let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null.
 Try accessing using ?. instead.
   t.fooExtension ??= x; // Error.
     ^^^^^^^^^^^^" in self::Extension|set#fooExtension(#t13, x) : null;
-  let final self::B? #t16 = b in #t16 == null ?{core::int?} null : let final self::B #t17 = self::Extension|get#barExtension(#t16{self::B}) in self::Extension|get#fooExtension(#t17) == null ?{core::int} self::Extension|set#fooExtension(#t17, x) : null;
+  let final self::B? #t16 = b in #t16.{core::Object::==}(null) ?{core::int?} null : let final self::B #t17 = self::Extension|get#barExtension(#t16{self::B}) in self::Extension|get#fooExtension(#t17).{core::num::==}(null) ?{core::int} self::Extension|set#fooExtension(#t17, x) : null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue43455.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43455.dart.strong.expect
index bdb5c97..9a0b8b5 100644
--- a/pkg/front_end/testcases/nnbd/issue43455.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43455.dart.strong.expect
@@ -10,23 +10,23 @@
   method test(generic-covariant-impl self::C::X% x, generic-covariant-impl self::C::Y? y) → dynamic {
     core::Set<core::Object?> v = block {
       final core::Set<core::Object?> #t1 = col::LinkedHashSet::•<core::Object?>();
-      #t1.{core::Set::add}(x){(core::Object?) → core::bool};
-      #t1.{core::Set::add}(42){(core::Object?) → core::bool};
+      #t1.{core::Set::add}{Invariant}(x);
+      #t1.{core::Set::add}{Invariant}(42);
     } =>#t1;
     core::Set<core::Object?> w = block {
       final core::Set<core::Object?> #t2 = col::LinkedHashSet::•<core::Object?>();
-      #t2.{core::Set::add}(42){(core::Object?) → core::bool};
-      #t2.{core::Set::add}(x){(core::Object?) → core::bool};
+      #t2.{core::Set::add}{Invariant}(42);
+      #t2.{core::Set::add}{Invariant}(x);
     } =>#t2;
     core::Set<core::Object?> p = block {
       final core::Set<core::Object?> #t3 = col::LinkedHashSet::•<core::Object?>();
-      #t3.{core::Set::add}(y){(core::Object?) → core::bool};
-      #t3.{core::Set::add}(42){(core::Object?) → core::bool};
+      #t3.{core::Set::add}{Invariant}(y);
+      #t3.{core::Set::add}{Invariant}(42);
     } =>#t3;
     core::Set<core::Object?> q = block {
       final core::Set<core::Object?> #t4 = col::LinkedHashSet::•<core::Object?>();
-      #t4.{core::Set::add}(42){(core::Object?) → core::bool};
-      #t4.{core::Set::add}(y){(core::Object?) → core::bool};
+      #t4.{core::Set::add}{Invariant}(42);
+      #t4.{core::Set::add}{Invariant}(y);
     } =>#t4;
     self::assertRightSubtype(v);
     self::assertLeftSubtype<core::Set<core::Object?>>(v);
@@ -39,13 +39,13 @@
     if(x is{ForNonNullableByDefault} core::Object?) {
       core::Set<core::Object?> v = block {
         final core::Set<core::Object?> #t5 = col::LinkedHashSet::•<core::Object?>();
-        #t5.{core::Set::add}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */}){(core::Object?) → core::bool};
-        #t5.{core::Set::add}(42){(core::Object?) → core::bool};
+        #t5.{core::Set::add}{Invariant}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */});
+        #t5.{core::Set::add}{Invariant}(42);
       } =>#t5;
       core::Set<core::Object?> w = block {
         final core::Set<core::Object?> #t6 = col::LinkedHashSet::•<core::Object?>();
-        #t6.{core::Set::add}(42){(core::Object?) → core::bool};
-        #t6.{core::Set::add}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */}){(core::Object?) → core::bool};
+        #t6.{core::Set::add}{Invariant}(42);
+        #t6.{core::Set::add}{Invariant}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */});
       } =>#t6;
       self::assertRightSubtype(v);
       self::assertLeftSubtype<core::Set<core::Object?>>(v);
@@ -61,6 +61,6 @@
   col::LinkedHashSet::•<core::Object?>() as{ForNonNullableByDefault} self::assertLeftSubtype::X%;
 }
 static method main() → dynamic {
-  new self::C::•<core::int?, core::int>().{self::C::test}(42, null){(core::int?, core::int?) → dynamic};
-  new self::C::•<core::int?, core::int>().{self::C::test}(null, null){(core::int?, core::int?) → dynamic};
+  new self::C::•<core::int?, core::int>().{self::C::test}(42, null);
+  new self::C::•<core::int?, core::int>().{self::C::test}(null, null);
 }
diff --git a/pkg/front_end/testcases/nnbd/issue43455.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43455.dart.strong.transformed.expect
index 75bcc24..ceddbed 100644
--- a/pkg/front_end/testcases/nnbd/issue43455.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43455.dart.strong.transformed.expect
@@ -10,23 +10,23 @@
   method test(generic-covariant-impl self::C::X% x, generic-covariant-impl self::C::Y? y) → dynamic {
     core::Set<core::Object?> v = block {
       final core::Set<core::Object?> #t1 = new col::_CompactLinkedHashSet::•<core::Object?>();
-      #t1.{core::Set::add}(x){(core::Object?) → core::bool};
-      #t1.{core::Set::add}(42){(core::Object?) → core::bool};
+      #t1.{core::Set::add}{Invariant}(x);
+      #t1.{core::Set::add}{Invariant}(42);
     } =>#t1;
     core::Set<core::Object?> w = block {
       final core::Set<core::Object?> #t2 = new col::_CompactLinkedHashSet::•<core::Object?>();
-      #t2.{core::Set::add}(42){(core::Object?) → core::bool};
-      #t2.{core::Set::add}(x){(core::Object?) → core::bool};
+      #t2.{core::Set::add}{Invariant}(42);
+      #t2.{core::Set::add}{Invariant}(x);
     } =>#t2;
     core::Set<core::Object?> p = block {
       final core::Set<core::Object?> #t3 = new col::_CompactLinkedHashSet::•<core::Object?>();
-      #t3.{core::Set::add}(y){(core::Object?) → core::bool};
-      #t3.{core::Set::add}(42){(core::Object?) → core::bool};
+      #t3.{core::Set::add}{Invariant}(y);
+      #t3.{core::Set::add}{Invariant}(42);
     } =>#t3;
     core::Set<core::Object?> q = block {
       final core::Set<core::Object?> #t4 = new col::_CompactLinkedHashSet::•<core::Object?>();
-      #t4.{core::Set::add}(42){(core::Object?) → core::bool};
-      #t4.{core::Set::add}(y){(core::Object?) → core::bool};
+      #t4.{core::Set::add}{Invariant}(42);
+      #t4.{core::Set::add}{Invariant}(y);
     } =>#t4;
     self::assertRightSubtype(v);
     self::assertLeftSubtype<core::Set<core::Object?>>(v);
@@ -39,13 +39,13 @@
     if(x is{ForNonNullableByDefault} core::Object?) {
       core::Set<core::Object?> v = block {
         final core::Set<core::Object?> #t5 = new col::_CompactLinkedHashSet::•<core::Object?>();
-        #t5.{core::Set::add}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */}){(core::Object?) → core::bool};
-        #t5.{core::Set::add}(42){(core::Object?) → core::bool};
+        #t5.{core::Set::add}{Invariant}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */});
+        #t5.{core::Set::add}{Invariant}(42);
       } =>#t5;
       core::Set<core::Object?> w = block {
         final core::Set<core::Object?> #t6 = new col::_CompactLinkedHashSet::•<core::Object?>();
-        #t6.{core::Set::add}(42){(core::Object?) → core::bool};
-        #t6.{core::Set::add}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */}){(core::Object?) → core::bool};
+        #t6.{core::Set::add}{Invariant}(42);
+        #t6.{core::Set::add}{Invariant}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */});
       } =>#t6;
       self::assertRightSubtype(v);
       self::assertLeftSubtype<core::Set<core::Object?>>(v);
@@ -61,6 +61,6 @@
   new col::_CompactLinkedHashSet::•<core::Object?>() as{ForNonNullableByDefault} self::assertLeftSubtype::X%;
 }
 static method main() → dynamic {
-  new self::C::•<core::int?, core::int>().{self::C::test}(42, null){(core::int?, core::int?) → dynamic};
-  new self::C::•<core::int?, core::int>().{self::C::test}(null, null){(core::int?, core::int?) → dynamic};
+  new self::C::•<core::int?, core::int>().{self::C::test}(42, null);
+  new self::C::•<core::int?, core::int>().{self::C::test}(null, null);
 }
diff --git a/pkg/front_end/testcases/nnbd/issue43455.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43455.dart.weak.expect
index bdb5c97..9a0b8b5 100644
--- a/pkg/front_end/testcases/nnbd/issue43455.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43455.dart.weak.expect
@@ -10,23 +10,23 @@
   method test(generic-covariant-impl self::C::X% x, generic-covariant-impl self::C::Y? y) → dynamic {
     core::Set<core::Object?> v = block {
       final core::Set<core::Object?> #t1 = col::LinkedHashSet::•<core::Object?>();
-      #t1.{core::Set::add}(x){(core::Object?) → core::bool};
-      #t1.{core::Set::add}(42){(core::Object?) → core::bool};
+      #t1.{core::Set::add}{Invariant}(x);
+      #t1.{core::Set::add}{Invariant}(42);
     } =>#t1;
     core::Set<core::Object?> w = block {
       final core::Set<core::Object?> #t2 = col::LinkedHashSet::•<core::Object?>();
-      #t2.{core::Set::add}(42){(core::Object?) → core::bool};
-      #t2.{core::Set::add}(x){(core::Object?) → core::bool};
+      #t2.{core::Set::add}{Invariant}(42);
+      #t2.{core::Set::add}{Invariant}(x);
     } =>#t2;
     core::Set<core::Object?> p = block {
       final core::Set<core::Object?> #t3 = col::LinkedHashSet::•<core::Object?>();
-      #t3.{core::Set::add}(y){(core::Object?) → core::bool};
-      #t3.{core::Set::add}(42){(core::Object?) → core::bool};
+      #t3.{core::Set::add}{Invariant}(y);
+      #t3.{core::Set::add}{Invariant}(42);
     } =>#t3;
     core::Set<core::Object?> q = block {
       final core::Set<core::Object?> #t4 = col::LinkedHashSet::•<core::Object?>();
-      #t4.{core::Set::add}(42){(core::Object?) → core::bool};
-      #t4.{core::Set::add}(y){(core::Object?) → core::bool};
+      #t4.{core::Set::add}{Invariant}(42);
+      #t4.{core::Set::add}{Invariant}(y);
     } =>#t4;
     self::assertRightSubtype(v);
     self::assertLeftSubtype<core::Set<core::Object?>>(v);
@@ -39,13 +39,13 @@
     if(x is{ForNonNullableByDefault} core::Object?) {
       core::Set<core::Object?> v = block {
         final core::Set<core::Object?> #t5 = col::LinkedHashSet::•<core::Object?>();
-        #t5.{core::Set::add}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */}){(core::Object?) → core::bool};
-        #t5.{core::Set::add}(42){(core::Object?) → core::bool};
+        #t5.{core::Set::add}{Invariant}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */});
+        #t5.{core::Set::add}{Invariant}(42);
       } =>#t5;
       core::Set<core::Object?> w = block {
         final core::Set<core::Object?> #t6 = col::LinkedHashSet::•<core::Object?>();
-        #t6.{core::Set::add}(42){(core::Object?) → core::bool};
-        #t6.{core::Set::add}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */}){(core::Object?) → core::bool};
+        #t6.{core::Set::add}{Invariant}(42);
+        #t6.{core::Set::add}{Invariant}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */});
       } =>#t6;
       self::assertRightSubtype(v);
       self::assertLeftSubtype<core::Set<core::Object?>>(v);
@@ -61,6 +61,6 @@
   col::LinkedHashSet::•<core::Object?>() as{ForNonNullableByDefault} self::assertLeftSubtype::X%;
 }
 static method main() → dynamic {
-  new self::C::•<core::int?, core::int>().{self::C::test}(42, null){(core::int?, core::int?) → dynamic};
-  new self::C::•<core::int?, core::int>().{self::C::test}(null, null){(core::int?, core::int?) → dynamic};
+  new self::C::•<core::int?, core::int>().{self::C::test}(42, null);
+  new self::C::•<core::int?, core::int>().{self::C::test}(null, null);
 }
diff --git a/pkg/front_end/testcases/nnbd/issue43455.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43455.dart.weak.transformed.expect
index 75bcc24..ceddbed 100644
--- a/pkg/front_end/testcases/nnbd/issue43455.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43455.dart.weak.transformed.expect
@@ -10,23 +10,23 @@
   method test(generic-covariant-impl self::C::X% x, generic-covariant-impl self::C::Y? y) → dynamic {
     core::Set<core::Object?> v = block {
       final core::Set<core::Object?> #t1 = new col::_CompactLinkedHashSet::•<core::Object?>();
-      #t1.{core::Set::add}(x){(core::Object?) → core::bool};
-      #t1.{core::Set::add}(42){(core::Object?) → core::bool};
+      #t1.{core::Set::add}{Invariant}(x);
+      #t1.{core::Set::add}{Invariant}(42);
     } =>#t1;
     core::Set<core::Object?> w = block {
       final core::Set<core::Object?> #t2 = new col::_CompactLinkedHashSet::•<core::Object?>();
-      #t2.{core::Set::add}(42){(core::Object?) → core::bool};
-      #t2.{core::Set::add}(x){(core::Object?) → core::bool};
+      #t2.{core::Set::add}{Invariant}(42);
+      #t2.{core::Set::add}{Invariant}(x);
     } =>#t2;
     core::Set<core::Object?> p = block {
       final core::Set<core::Object?> #t3 = new col::_CompactLinkedHashSet::•<core::Object?>();
-      #t3.{core::Set::add}(y){(core::Object?) → core::bool};
-      #t3.{core::Set::add}(42){(core::Object?) → core::bool};
+      #t3.{core::Set::add}{Invariant}(y);
+      #t3.{core::Set::add}{Invariant}(42);
     } =>#t3;
     core::Set<core::Object?> q = block {
       final core::Set<core::Object?> #t4 = new col::_CompactLinkedHashSet::•<core::Object?>();
-      #t4.{core::Set::add}(42){(core::Object?) → core::bool};
-      #t4.{core::Set::add}(y){(core::Object?) → core::bool};
+      #t4.{core::Set::add}{Invariant}(42);
+      #t4.{core::Set::add}{Invariant}(y);
     } =>#t4;
     self::assertRightSubtype(v);
     self::assertLeftSubtype<core::Set<core::Object?>>(v);
@@ -39,13 +39,13 @@
     if(x is{ForNonNullableByDefault} core::Object?) {
       core::Set<core::Object?> v = block {
         final core::Set<core::Object?> #t5 = new col::_CompactLinkedHashSet::•<core::Object?>();
-        #t5.{core::Set::add}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */}){(core::Object?) → core::bool};
-        #t5.{core::Set::add}(42){(core::Object?) → core::bool};
+        #t5.{core::Set::add}{Invariant}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */});
+        #t5.{core::Set::add}{Invariant}(42);
       } =>#t5;
       core::Set<core::Object?> w = block {
         final core::Set<core::Object?> #t6 = new col::_CompactLinkedHashSet::•<core::Object?>();
-        #t6.{core::Set::add}(42){(core::Object?) → core::bool};
-        #t6.{core::Set::add}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */}){(core::Object?) → core::bool};
+        #t6.{core::Set::add}{Invariant}(42);
+        #t6.{core::Set::add}{Invariant}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */});
       } =>#t6;
       self::assertRightSubtype(v);
       self::assertLeftSubtype<core::Set<core::Object?>>(v);
@@ -61,6 +61,6 @@
   new col::_CompactLinkedHashSet::•<core::Object?>() as{ForNonNullableByDefault} self::assertLeftSubtype::X%;
 }
 static method main() → dynamic {
-  new self::C::•<core::int?, core::int>().{self::C::test}(42, null){(core::int?, core::int?) → dynamic};
-  new self::C::•<core::int?, core::int>().{self::C::test}(null, null){(core::int?, core::int?) → dynamic};
+  new self::C::•<core::int?, core::int>().{self::C::test}(42, null);
+  new self::C::•<core::int?, core::int>().{self::C::test}(null, null);
 }
diff --git a/pkg/front_end/testcases/nnbd/issue43495.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43495.dart.strong.expect
index 778487e..e5985d6 100644
--- a/pkg/front_end/testcases/nnbd/issue43495.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43495.dart.strong.expect
@@ -175,7 +175,7 @@
     {...a}, // Error.
         ^") {
       final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
-      #t1.{core::Set::add}(#t3){(core::int) → core::bool};
+      #t1.{core::Set::add}{Invariant}(#t3);
     }
   } =>#t1, block {
     final core::Set<core::int> #t4 = col::LinkedHashSet::•<core::int>();
@@ -183,7 +183,7 @@
     {...b}, // Error.
         ^") {
       final core::int #t6 = #t5 as{TypeError,ForNonNullableByDefault} core::int;
-      #t4.{core::Set::add}(#t6){(core::int) → core::bool};
+      #t4.{core::Set::add}{Invariant}(#t6);
     }
   } =>#t4, block {
     final core::Set<core::int> #t7 = col::LinkedHashSet::•<core::int>();
@@ -191,7 +191,7 @@
     {...c}, // Error.
         ^") {
       final core::int #t9 = #t8 as{TypeError,ForNonNullableByDefault} core::int;
-      #t7.{core::Set::add}(#t9){(core::int) → core::bool};
+      #t7.{core::Set::add}{Invariant}(#t9);
     }
   } =>#t7, <core::int, core::int>{invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:11:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...d}, // Error.
@@ -200,10 +200,10 @@
     <int, int>{...a}, // Error.
                   ^": null}, block {
     final core::Set<core::int> #t10 = col::LinkedHashSet::•<core::int>();
-    #t10.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:13:14: Error: Unexpected type 'Map<int, int>?' of a spread.  Expected 'dynamic' or an Iterable.
+    #t10.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:13:14: Error: Unexpected type 'Map<int, int>?' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
     <int>{...d}, // Error.
-             ^"){(core::int) → core::bool};
+             ^");
   } =>#t10, block {
     final core::Set<core::int> #t11 = col::LinkedHashSet::•<core::int>();
     if(condition)
@@ -211,7 +211,7 @@
     {if (condition) ...a}, // Error.
                        ^") {
         final core::int #t13 = #t12 as{TypeError,ForNonNullableByDefault} core::int;
-        #t11.{core::Set::add}(#t13){(core::int) → core::bool};
+        #t11.{core::Set::add}{Invariant}(#t13);
       }
   } =>#t11, block {
     final core::Set<core::int> #t14 = col::LinkedHashSet::•<core::int>();
@@ -220,7 +220,7 @@
     {if (condition) ...b}, // Error.
                        ^") {
         final core::int #t16 = #t15 as{TypeError,ForNonNullableByDefault} core::int;
-        #t14.{core::Set::add}(#t16){(core::int) → core::bool};
+        #t14.{core::Set::add}{Invariant}(#t16);
       }
   } =>#t14, block {
     final core::Set<core::int> #t17 = col::LinkedHashSet::•<core::int>();
@@ -229,14 +229,14 @@
     {if (condition) ...c}, // Error.
                        ^") {
         final core::int #t19 = #t18 as{TypeError,ForNonNullableByDefault} core::int;
-        #t17.{core::Set::add}(#t19){(core::int) → core::bool};
+        #t17.{core::Set::add}{Invariant}(#t19);
       }
   } =>#t17, block {
     final core::Map<core::int, core::int> #t20 = <core::int, core::int>{};
     if(condition)
-      #t20.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:17:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+      #t20.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:17:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...d}, // Error.
-                       ^", null){(core::int, core::int) → void};
+                       ^", null);
   } =>#t20, block {
     final core::Set<core::int> #t21 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable)
@@ -244,7 +244,7 @@
     {for (dynamic e in iterable) ...a}, // Error.
                                     ^") {
         final core::int #t23 = #t22 as{TypeError,ForNonNullableByDefault} core::int;
-        #t21.{core::Set::add}(#t23){(core::int) → core::bool};
+        #t21.{core::Set::add}{Invariant}(#t23);
       }
   } =>#t21, block {
     final core::Set<core::int> #t24 = col::LinkedHashSet::•<core::int>();
@@ -253,7 +253,7 @@
     {for (dynamic e in iterable) ...b}, // Error.
                                     ^") {
         final core::int #t26 = #t25 as{TypeError,ForNonNullableByDefault} core::int;
-        #t24.{core::Set::add}(#t26){(core::int) → core::bool};
+        #t24.{core::Set::add}{Invariant}(#t26);
       }
   } =>#t24, block {
     final core::Set<core::int> #t27 = col::LinkedHashSet::•<core::int>();
@@ -262,190 +262,190 @@
     {for (dynamic e in iterable) ...c}, // Error.
                                     ^") {
         final core::int #t29 = #t28 as{TypeError,ForNonNullableByDefault} core::int;
-        #t27.{core::Set::add}(#t29){(core::int) → core::bool};
+        #t27.{core::Set::add}{Invariant}(#t29);
       }
   } =>#t27, block {
     final core::Map<core::int, core::int> #t30 = <core::int, core::int>{};
     for (dynamic e in iterable)
-      #t30.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:21:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+      #t30.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:21:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...d}, // Error.
-                                    ^", null){(core::int, core::int) → void};
+                                    ^", null);
   } =>#t30, block {
     final core::Set<core::int> #t31 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
       for (final dynamic #t32 in invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:22:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...a}, // Error.
                                      ^") {
         final core::int #t33 = #t32 as{TypeError,ForNonNullableByDefault} core::int;
-        #t31.{core::Set::add}(#t33){(core::int) → core::bool};
+        #t31.{core::Set::add}{Invariant}(#t33);
       }
   } =>#t31, block {
     final core::Set<core::int> #t34 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
       for (final dynamic #t35 in invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:23:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...b}, // Error.
                                      ^") {
         final core::int #t36 = #t35 as{TypeError,ForNonNullableByDefault} core::int;
-        #t34.{core::Set::add}(#t36){(core::int) → core::bool};
+        #t34.{core::Set::add}{Invariant}(#t36);
       }
   } =>#t34, block {
     final core::Set<core::int> #t37 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
       for (final dynamic #t38 in invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:24:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...c}, // Error.
                                      ^") {
         final core::int #t39 = #t38 as{TypeError,ForNonNullableByDefault} core::int;
-        #t37.{core::Set::add}(#t39){(core::int) → core::bool};
+        #t37.{core::Set::add}{Invariant}(#t39);
       }
   } =>#t37, block {
     final core::Map<core::int, core::int> #t40 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t40.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:25:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
+      #t40.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:25:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...d}, // Error.
-                                     ^", null){(core::int, core::int) → void};
+                                     ^", null);
   } =>#t40, block {
     final core::Set<core::int> #t41 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t42 = a;
-    if(!(#t42 == null))
+    if(!#t42.{core::Object::==}(null))
       for (final dynamic #t43 in #t42{core::Iterable<dynamic>}) {
         final core::int #t44 = #t43 as{TypeError,ForNonNullableByDefault} core::int;
-        #t41.{core::Set::add}(#t44){(core::int) → core::bool};
+        #t41.{core::Set::add}{Invariant}(#t44);
       }
   } =>#t41, block {
     final core::Set<core::int> #t45 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t46 = b;
-    if(!(#t46 == null))
+    if(!#t46.{core::Object::==}(null))
       for (final dynamic #t47 in #t46{core::Iterable<dynamic>}) {
         final core::int #t48 = #t47 as{TypeError,ForNonNullableByDefault} core::int;
-        #t45.{core::Set::add}(#t48){(core::int) → core::bool};
+        #t45.{core::Set::add}{Invariant}(#t48);
       }
   } =>#t45, block {
     final core::Set<core::int> #t49 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t50 = c;
-    if(!(#t50 == null))
+    if(!#t50.{core::Object::==}(null))
       for (final dynamic #t51 in #t50{core::Iterable<dynamic>}) {
         final core::int #t52 = #t51 as{TypeError,ForNonNullableByDefault} core::int;
-        #t49.{core::Set::add}(#t52){(core::int) → core::bool};
+        #t49.{core::Set::add}{Invariant}(#t52);
       }
   } =>#t49, block {
     final core::Map<core::int, core::int> #t53 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t54 = d;
-    if(!(#t54 == null))
+    if(!#t54.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t55 in #t54{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t53.{core::Map::[]=}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t53.{core::Map::[]=}{Invariant}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value});
   } =>#t53, block {
     final core::Set<core::int> #t56 = col::LinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t57 = a;
-      if(!(#t57 == null))
+      if(!#t57.{core::Object::==}(null))
         for (final dynamic #t58 in #t57{core::Iterable<dynamic>}) {
           final core::int #t59 = #t58 as{TypeError,ForNonNullableByDefault} core::int;
-          #t56.{core::Set::add}(#t59){(core::int) → core::bool};
+          #t56.{core::Set::add}{Invariant}(#t59);
         }
     }
   } =>#t56, block {
     final core::Set<core::int> #t60 = col::LinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t61 = b;
-      if(!(#t61 == null))
+      if(!#t61.{core::Object::==}(null))
         for (final dynamic #t62 in #t61{core::Iterable<dynamic>}) {
           final core::int #t63 = #t62 as{TypeError,ForNonNullableByDefault} core::int;
-          #t60.{core::Set::add}(#t63){(core::int) → core::bool};
+          #t60.{core::Set::add}{Invariant}(#t63);
         }
     }
   } =>#t60, block {
     final core::Set<core::int> #t64 = col::LinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t65 = c;
-      if(!(#t65 == null))
+      if(!#t65.{core::Object::==}(null))
         for (final dynamic #t66 in #t65{core::Iterable<dynamic>}) {
           final core::int #t67 = #t66 as{TypeError,ForNonNullableByDefault} core::int;
-          #t64.{core::Set::add}(#t67){(core::int) → core::bool};
+          #t64.{core::Set::add}{Invariant}(#t67);
         }
     }
   } =>#t64, block {
     final core::Map<core::int, core::int> #t68 = <core::int, core::int>{};
     if(condition) {
       final core::Map<core::int, core::int>? #t69 = d;
-      if(!(#t69 == null))
+      if(!#t69.{core::Object::==}(null))
         for (final core::MapEntry<core::int, core::int> #t70 in #t69{core::Map<core::int, core::int>}.{core::Map::entries})
-          #t68.{core::Map::[]=}(#t70.{core::MapEntry::key}, #t70.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t68.{core::Map::[]=}{Invariant}(#t70.{core::MapEntry::key}, #t70.{core::MapEntry::value});
     }
   } =>#t68, block {
     final core::Set<core::int> #t71 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable) {
       final core::Iterable<dynamic>? #t72 = a;
-      if(!(#t72 == null))
+      if(!#t72.{core::Object::==}(null))
         for (final dynamic #t73 in #t72{core::Iterable<dynamic>}) {
           final core::int #t74 = #t73 as{TypeError,ForNonNullableByDefault} core::int;
-          #t71.{core::Set::add}(#t74){(core::int) → core::bool};
+          #t71.{core::Set::add}{Invariant}(#t74);
         }
     }
   } =>#t71, block {
     final core::Set<core::int> #t75 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable) {
       final core::Iterable<dynamic>? #t76 = b;
-      if(!(#t76 == null))
+      if(!#t76.{core::Object::==}(null))
         for (final dynamic #t77 in #t76{core::Iterable<dynamic>}) {
           final core::int #t78 = #t77 as{TypeError,ForNonNullableByDefault} core::int;
-          #t75.{core::Set::add}(#t78){(core::int) → core::bool};
+          #t75.{core::Set::add}{Invariant}(#t78);
         }
     }
   } =>#t75, block {
     final core::Set<core::int> #t79 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable) {
       final core::Iterable<dynamic>? #t80 = c;
-      if(!(#t80 == null))
+      if(!#t80.{core::Object::==}(null))
         for (final dynamic #t81 in #t80{core::Iterable<dynamic>}) {
           final core::int #t82 = #t81 as{TypeError,ForNonNullableByDefault} core::int;
-          #t79.{core::Set::add}(#t82){(core::int) → core::bool};
+          #t79.{core::Set::add}{Invariant}(#t82);
         }
     }
   } =>#t79, block {
     final core::Map<core::int, core::int> #t83 = <core::int, core::int>{};
     for (dynamic e in iterable) {
       final core::Map<core::int, core::int>? #t84 = d;
-      if(!(#t84 == null))
+      if(!#t84.{core::Object::==}(null))
         for (final core::MapEntry<core::int, core::int> #t85 in #t84{core::Map<core::int, core::int>}.{core::Map::entries})
-          #t83.{core::Map::[]=}(#t85.{core::MapEntry::key}, #t85.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t83.{core::Map::[]=}{Invariant}(#t85.{core::MapEntry::key}, #t85.{core::MapEntry::value});
     }
   } =>#t83, block {
     final core::Set<core::int> #t86 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t87 = a;
-      if(!(#t87 == null))
+      if(!#t87.{core::Object::==}(null))
         for (final dynamic #t88 in #t87{core::Iterable<dynamic>}) {
           final core::int #t89 = #t88 as{TypeError,ForNonNullableByDefault} core::int;
-          #t86.{core::Set::add}(#t89){(core::int) → core::bool};
+          #t86.{core::Set::add}{Invariant}(#t89);
         }
     }
   } =>#t86, block {
     final core::Set<core::int> #t90 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t91 = b;
-      if(!(#t91 == null))
+      if(!#t91.{core::Object::==}(null))
         for (final dynamic #t92 in #t91{core::Iterable<dynamic>}) {
           final core::int #t93 = #t92 as{TypeError,ForNonNullableByDefault} core::int;
-          #t90.{core::Set::add}(#t93){(core::int) → core::bool};
+          #t90.{core::Set::add}{Invariant}(#t93);
         }
     }
   } =>#t90, block {
     final core::Set<core::int> #t94 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t95 = c;
-      if(!(#t95 == null))
+      if(!#t95.{core::Object::==}(null))
         for (final dynamic #t96 in #t95{core::Iterable<dynamic>}) {
           final core::int #t97 = #t96 as{TypeError,ForNonNullableByDefault} core::int;
-          #t94.{core::Set::add}(#t97){(core::int) → core::bool};
+          #t94.{core::Set::add}{Invariant}(#t97);
         }
     }
   } =>#t94, block {
     final core::Map<core::int, core::int> #t98 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Map<core::int, core::int>? #t99 = d;
-      if(!(#t99 == null))
+      if(!#t99.{core::Object::==}(null))
         for (final core::MapEntry<core::int, core::int> #t100 in #t99{core::Map<core::int, core::int>}.{core::Map::entries})
-          #t98.{core::Map::[]=}(#t100.{core::MapEntry::key}, #t100.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t98.{core::Map::[]=}{Invariant}(#t100.{core::MapEntry::key}, #t100.{core::MapEntry::value});
     }
   } =>#t98];
 }
@@ -456,7 +456,7 @@
     {...x}, // Error.
         ^") {
       final core::int #t103 = #t102 as{TypeError,ForNonNullableByDefault} core::int;
-      #t101.{core::Set::add}(#t103){(core::int) → core::bool};
+      #t101.{core::Set::add}{Invariant}(#t103);
     }
   } =>#t101, block {
     final core::Set<core::int> #t104 = col::LinkedHashSet::•<core::int>();
@@ -464,7 +464,7 @@
     {...y}, // Error.
         ^") {
       final core::int #t106 = #t105 as{TypeError,ForNonNullableByDefault} core::int;
-      #t104.{core::Set::add}(#t106){(core::int) → core::bool};
+      #t104.{core::Set::add}{Invariant}(#t106);
     }
   } =>#t104, block {
     final core::Set<core::int> #t107 = col::LinkedHashSet::•<core::int>();
@@ -472,7 +472,7 @@
     {...z}, // Error.
         ^") {
       final core::int #t109 = #t108 as{TypeError,ForNonNullableByDefault} core::int;
-      #t107.{core::Set::add}(#t109){(core::int) → core::bool};
+      #t107.{core::Set::add}{Invariant}(#t109);
     }
   } =>#t107, <core::int, core::int>{invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:53:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...w}, // Error.
@@ -480,9 +480,9 @@
     <int, int>{...x}, // Error.
                   ^": null}, block {
     final core::Set<core::int> #t110 = col::LinkedHashSet::•<core::int>();
-    #t110.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:55:14: Error: Unexpected type 'W' of a spread.  Expected 'dynamic' or an Iterable.
+    #t110.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:55:14: Error: Unexpected type 'W' of a spread.  Expected 'dynamic' or an Iterable.
     <int>{...w}, // Error.
-             ^"){(core::int) → core::bool};
+             ^");
   } =>#t110, block {
     final core::Set<core::int> #t111 = col::LinkedHashSet::•<core::int>();
     if(condition)
@@ -490,7 +490,7 @@
     {if (condition) ...x}, // Error.
                        ^") {
         final core::int #t113 = #t112 as{TypeError,ForNonNullableByDefault} core::int;
-        #t111.{core::Set::add}(#t113){(core::int) → core::bool};
+        #t111.{core::Set::add}{Invariant}(#t113);
       }
   } =>#t111, block {
     final core::Set<core::int> #t114 = col::LinkedHashSet::•<core::int>();
@@ -499,7 +499,7 @@
     {if (condition) ...y}, // Error.
                        ^") {
         final core::int #t116 = #t115 as{TypeError,ForNonNullableByDefault} core::int;
-        #t114.{core::Set::add}(#t116){(core::int) → core::bool};
+        #t114.{core::Set::add}{Invariant}(#t116);
       }
   } =>#t114, block {
     final core::Set<core::int> #t117 = col::LinkedHashSet::•<core::int>();
@@ -508,14 +508,14 @@
     {if (condition) ...z}, // Error.
                        ^") {
         final core::int #t119 = #t118 as{TypeError,ForNonNullableByDefault} core::int;
-        #t117.{core::Set::add}(#t119){(core::int) → core::bool};
+        #t117.{core::Set::add}{Invariant}(#t119);
       }
   } =>#t117, block {
     final core::Map<core::int, core::int> #t120 = <core::int, core::int>{};
     if(condition)
-      #t120.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:59:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+      #t120.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:59:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...w}, // Error.
-                       ^", null){(core::int, core::int) → void};
+                       ^", null);
   } =>#t120, block {
     final core::Set<core::int> #t121 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable)
@@ -523,7 +523,7 @@
     {for (dynamic e in iterable) ...x}, // Error.
                                     ^") {
         final core::int #t123 = #t122 as{TypeError,ForNonNullableByDefault} core::int;
-        #t121.{core::Set::add}(#t123){(core::int) → core::bool};
+        #t121.{core::Set::add}{Invariant}(#t123);
       }
   } =>#t121, block {
     final core::Set<core::int> #t124 = col::LinkedHashSet::•<core::int>();
@@ -532,7 +532,7 @@
     {for (dynamic e in iterable) ...y}, // Error.
                                     ^") {
         final core::int #t126 = #t125 as{TypeError,ForNonNullableByDefault} core::int;
-        #t124.{core::Set::add}(#t126){(core::int) → core::bool};
+        #t124.{core::Set::add}{Invariant}(#t126);
       }
   } =>#t124, block {
     final core::Set<core::int> #t127 = col::LinkedHashSet::•<core::int>();
@@ -541,190 +541,190 @@
     {for (dynamic e in iterable) ...z}, // Error.
                                     ^") {
         final core::int #t129 = #t128 as{TypeError,ForNonNullableByDefault} core::int;
-        #t127.{core::Set::add}(#t129){(core::int) → core::bool};
+        #t127.{core::Set::add}{Invariant}(#t129);
       }
   } =>#t127, block {
     final core::Map<core::int, core::int> #t130 = <core::int, core::int>{};
     for (dynamic e in iterable)
-      #t130.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:63:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+      #t130.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:63:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...w}, // Error.
-                                    ^", null){(core::int, core::int) → void};
+                                    ^", null);
   } =>#t130, block {
     final core::Set<core::int> #t131 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
       for (final dynamic #t132 in invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:64:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...x}, // Error.
                                      ^") {
         final core::int #t133 = #t132 as{TypeError,ForNonNullableByDefault} core::int;
-        #t131.{core::Set::add}(#t133){(core::int) → core::bool};
+        #t131.{core::Set::add}{Invariant}(#t133);
       }
   } =>#t131, block {
     final core::Set<core::int> #t134 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
       for (final dynamic #t135 in invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:65:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...y}, // Error.
                                      ^") {
         final core::int #t136 = #t135 as{TypeError,ForNonNullableByDefault} core::int;
-        #t134.{core::Set::add}(#t136){(core::int) → core::bool};
+        #t134.{core::Set::add}{Invariant}(#t136);
       }
   } =>#t134, block {
     final core::Set<core::int> #t137 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
       for (final dynamic #t138 in invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:66:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...z}, // Error.
                                      ^") {
         final core::int #t139 = #t138 as{TypeError,ForNonNullableByDefault} core::int;
-        #t137.{core::Set::add}(#t139){(core::int) → core::bool};
+        #t137.{core::Set::add}{Invariant}(#t139);
       }
   } =>#t137, block {
     final core::Map<core::int, core::int> #t140 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t140.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:67:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
+      #t140.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:67:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...w}, // Error.
-                                     ^", null){(core::int, core::int) → void};
+                                     ^", null);
   } =>#t140, block {
     final core::Set<core::int> #t141 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t142 = x;
-    if(!(#t142 == null))
+    if(!#t142.{core::Object::==}(null))
       for (final dynamic #t143 in #t142{core::Iterable<dynamic>}) {
         final core::int #t144 = #t143 as{TypeError,ForNonNullableByDefault} core::int;
-        #t141.{core::Set::add}(#t144){(core::int) → core::bool};
+        #t141.{core::Set::add}{Invariant}(#t144);
       }
   } =>#t141, block {
     final core::Set<core::int> #t145 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t146 = y;
-    if(!(#t146 == null))
+    if(!#t146.{core::Object::==}(null))
       for (final dynamic #t147 in #t146{core::Iterable<dynamic>}) {
         final core::int #t148 = #t147 as{TypeError,ForNonNullableByDefault} core::int;
-        #t145.{core::Set::add}(#t148){(core::int) → core::bool};
+        #t145.{core::Set::add}{Invariant}(#t148);
       }
   } =>#t145, block {
     final core::Set<core::int> #t149 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t150 = z;
-    if(!(#t150 == null))
+    if(!#t150.{core::Object::==}(null))
       for (final dynamic #t151 in #t150{core::Iterable<dynamic>}) {
         final core::int #t152 = #t151 as{TypeError,ForNonNullableByDefault} core::int;
-        #t149.{core::Set::add}(#t152){(core::int) → core::bool};
+        #t149.{core::Set::add}{Invariant}(#t152);
       }
   } =>#t149, block {
     final core::Map<core::int, core::int> #t153 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t154 = w;
-    if(!(#t154 == null))
+    if(!#t154.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t155 in #t154{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t153.{core::Map::[]=}(#t155.{core::MapEntry::key}, #t155.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t153.{core::Map::[]=}{Invariant}(#t155.{core::MapEntry::key}, #t155.{core::MapEntry::value});
   } =>#t153, block {
     final core::Set<core::int> #t156 = col::LinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t157 = x;
-      if(!(#t157 == null))
+      if(!#t157.{core::Object::==}(null))
         for (final dynamic #t158 in #t157{core::Iterable<dynamic>}) {
           final core::int #t159 = #t158 as{TypeError,ForNonNullableByDefault} core::int;
-          #t156.{core::Set::add}(#t159){(core::int) → core::bool};
+          #t156.{core::Set::add}{Invariant}(#t159);
         }
     }
   } =>#t156, block {
     final core::Set<core::int> #t160 = col::LinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t161 = y;
-      if(!(#t161 == null))
+      if(!#t161.{core::Object::==}(null))
         for (final dynamic #t162 in #t161{core::Iterable<dynamic>}) {
           final core::int #t163 = #t162 as{TypeError,ForNonNullableByDefault} core::int;
-          #t160.{core::Set::add}(#t163){(core::int) → core::bool};
+          #t160.{core::Set::add}{Invariant}(#t163);
         }
     }
   } =>#t160, block {
     final core::Set<core::int> #t164 = col::LinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t165 = z;
-      if(!(#t165 == null))
+      if(!#t165.{core::Object::==}(null))
         for (final dynamic #t166 in #t165{core::Iterable<dynamic>}) {
           final core::int #t167 = #t166 as{TypeError,ForNonNullableByDefault} core::int;
-          #t164.{core::Set::add}(#t167){(core::int) → core::bool};
+          #t164.{core::Set::add}{Invariant}(#t167);
         }
     }
   } =>#t164, block {
     final core::Map<core::int, core::int> #t168 = <core::int, core::int>{};
     if(condition) {
       final core::Map<core::int, core::int>? #t169 = w;
-      if(!(#t169 == null))
+      if(!#t169.{core::Object::==}(null))
         for (final core::MapEntry<core::int, core::int> #t170 in #t169{core::Map<core::int, core::int>}.{core::Map::entries})
-          #t168.{core::Map::[]=}(#t170.{core::MapEntry::key}, #t170.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t168.{core::Map::[]=}{Invariant}(#t170.{core::MapEntry::key}, #t170.{core::MapEntry::value});
     }
   } =>#t168, block {
     final core::Set<core::int> #t171 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable) {
       final core::Iterable<dynamic>? #t172 = x;
-      if(!(#t172 == null))
+      if(!#t172.{core::Object::==}(null))
         for (final dynamic #t173 in #t172{core::Iterable<dynamic>}) {
           final core::int #t174 = #t173 as{TypeError,ForNonNullableByDefault} core::int;
-          #t171.{core::Set::add}(#t174){(core::int) → core::bool};
+          #t171.{core::Set::add}{Invariant}(#t174);
         }
     }
   } =>#t171, block {
     final core::Set<core::int> #t175 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable) {
       final core::Iterable<dynamic>? #t176 = y;
-      if(!(#t176 == null))
+      if(!#t176.{core::Object::==}(null))
         for (final dynamic #t177 in #t176{core::Iterable<dynamic>}) {
           final core::int #t178 = #t177 as{TypeError,ForNonNullableByDefault} core::int;
-          #t175.{core::Set::add}(#t178){(core::int) → core::bool};
+          #t175.{core::Set::add}{Invariant}(#t178);
         }
     }
   } =>#t175, block {
     final core::Set<core::int> #t179 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable) {
       final core::Iterable<dynamic>? #t180 = z;
-      if(!(#t180 == null))
+      if(!#t180.{core::Object::==}(null))
         for (final dynamic #t181 in #t180{core::Iterable<dynamic>}) {
           final core::int #t182 = #t181 as{TypeError,ForNonNullableByDefault} core::int;
-          #t179.{core::Set::add}(#t182){(core::int) → core::bool};
+          #t179.{core::Set::add}{Invariant}(#t182);
         }
     }
   } =>#t179, block {
     final core::Map<core::int, core::int> #t183 = <core::int, core::int>{};
     for (dynamic e in iterable) {
       final core::Map<core::int, core::int>? #t184 = w;
-      if(!(#t184 == null))
+      if(!#t184.{core::Object::==}(null))
         for (final core::MapEntry<core::int, core::int> #t185 in #t184{core::Map<core::int, core::int>}.{core::Map::entries})
-          #t183.{core::Map::[]=}(#t185.{core::MapEntry::key}, #t185.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t183.{core::Map::[]=}{Invariant}(#t185.{core::MapEntry::key}, #t185.{core::MapEntry::value});
     }
   } =>#t183, block {
     final core::Set<core::int> #t186 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t187 = x;
-      if(!(#t187 == null))
+      if(!#t187.{core::Object::==}(null))
         for (final dynamic #t188 in #t187{core::Iterable<dynamic>}) {
           final core::int #t189 = #t188 as{TypeError,ForNonNullableByDefault} core::int;
-          #t186.{core::Set::add}(#t189){(core::int) → core::bool};
+          #t186.{core::Set::add}{Invariant}(#t189);
         }
     }
   } =>#t186, block {
     final core::Set<core::int> #t190 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t191 = y;
-      if(!(#t191 == null))
+      if(!#t191.{core::Object::==}(null))
         for (final dynamic #t192 in #t191{core::Iterable<dynamic>}) {
           final core::int #t193 = #t192 as{TypeError,ForNonNullableByDefault} core::int;
-          #t190.{core::Set::add}(#t193){(core::int) → core::bool};
+          #t190.{core::Set::add}{Invariant}(#t193);
         }
     }
   } =>#t190, block {
     final core::Set<core::int> #t194 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t195 = z;
-      if(!(#t195 == null))
+      if(!#t195.{core::Object::==}(null))
         for (final dynamic #t196 in #t195{core::Iterable<dynamic>}) {
           final core::int #t197 = #t196 as{TypeError,ForNonNullableByDefault} core::int;
-          #t194.{core::Set::add}(#t197){(core::int) → core::bool};
+          #t194.{core::Set::add}{Invariant}(#t197);
         }
     }
   } =>#t194, block {
     final core::Map<core::int, core::int> #t198 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Map<core::int, core::int>? #t199 = w;
-      if(!(#t199 == null))
+      if(!#t199.{core::Object::==}(null))
         for (final core::MapEntry<core::int, core::int> #t200 in #t199{core::Map<core::int, core::int>}.{core::Map::entries})
-          #t198.{core::Map::[]=}(#t200.{core::MapEntry::key}, #t200.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t198.{core::Map::[]=}{Invariant}(#t200.{core::MapEntry::key}, #t200.{core::MapEntry::value});
     }
   } =>#t198];
 }
diff --git a/pkg/front_end/testcases/nnbd/issue43495.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43495.dart.strong.transformed.expect
index d59e085..7d89db1 100644
--- a/pkg/front_end/testcases/nnbd/issue43495.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43495.dart.strong.transformed.expect
@@ -179,7 +179,7 @@
         final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
-          #t1.{core::Set::add}(#t3){(core::int) → core::bool};
+          #t1.{core::Set::add}{Invariant}(#t3);
         }
       }
     }
@@ -193,7 +193,7 @@
         final dynamic #t5 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t6 = #t5 as{TypeError,ForNonNullableByDefault} core::int;
-          #t4.{core::Set::add}(#t6){(core::int) → core::bool};
+          #t4.{core::Set::add}{Invariant}(#t6);
         }
       }
     }
@@ -207,7 +207,7 @@
         final dynamic #t8 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t9 = #t8 as{TypeError,ForNonNullableByDefault} core::int;
-          #t7.{core::Set::add}(#t9){(core::int) → core::bool};
+          #t7.{core::Set::add}{Invariant}(#t9);
         }
       }
     }
@@ -218,10 +218,10 @@
     <int, int>{...a}, // Error.
                   ^": null}, block {
     final core::Set<core::int> #t10 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t10.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:13:14: Error: Unexpected type 'Map<int, int>?' of a spread.  Expected 'dynamic' or an Iterable.
+    #t10.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:13:14: Error: Unexpected type 'Map<int, int>?' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
     <int>{...d}, // Error.
-             ^"){(core::int) → core::bool};
+             ^");
   } =>#t10, block {
     final core::Set<core::int> #t11 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
@@ -232,7 +232,7 @@
         final dynamic #t12 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t13 = #t12 as{TypeError,ForNonNullableByDefault} core::int;
-          #t11.{core::Set::add}(#t13){(core::int) → core::bool};
+          #t11.{core::Set::add}{Invariant}(#t13);
         }
       }
     }
@@ -246,7 +246,7 @@
         final dynamic #t15 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t16 = #t15 as{TypeError,ForNonNullableByDefault} core::int;
-          #t14.{core::Set::add}(#t16){(core::int) → core::bool};
+          #t14.{core::Set::add}{Invariant}(#t16);
         }
       }
     }
@@ -260,16 +260,16 @@
         final dynamic #t18 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t19 = #t18 as{TypeError,ForNonNullableByDefault} core::int;
-          #t17.{core::Set::add}(#t19){(core::int) → core::bool};
+          #t17.{core::Set::add}{Invariant}(#t19);
         }
       }
     }
   } =>#t17, block {
     final core::Map<core::int, core::int> #t20 = <core::int, core::int>{};
     if(condition)
-      #t20.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:17:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+      #t20.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:17:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...d}, // Error.
-                       ^", null){(core::int, core::int) → void};
+                       ^", null);
   } =>#t20, block {
     final core::Set<core::int> #t21 = new col::_CompactLinkedHashSet::•<core::int>();
     {
@@ -284,7 +284,7 @@
             final dynamic #t22 = :sync-for-iterator.{core::Iterator::current};
             {
               final core::int #t23 = #t22 as{TypeError,ForNonNullableByDefault} core::int;
-              #t21.{core::Set::add}(#t23){(core::int) → core::bool};
+              #t21.{core::Set::add}{Invariant}(#t23);
             }
           }
         }
@@ -304,7 +304,7 @@
             final dynamic #t25 = :sync-for-iterator.{core::Iterator::current};
             {
               final core::int #t26 = #t25 as{TypeError,ForNonNullableByDefault} core::int;
-              #t24.{core::Set::add}(#t26){(core::int) → core::bool};
+              #t24.{core::Set::add}{Invariant}(#t26);
             }
           }
         }
@@ -324,7 +324,7 @@
             final dynamic #t28 = :sync-for-iterator.{core::Iterator::current};
             {
               final core::int #t29 = #t28 as{TypeError,ForNonNullableByDefault} core::int;
-              #t27.{core::Set::add}(#t29){(core::int) → core::bool};
+              #t27.{core::Set::add}{Invariant}(#t29);
             }
           }
         }
@@ -336,14 +336,14 @@
       core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         dynamic e = :sync-for-iterator.{core::Iterator::current};
-        #t30.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:21:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+        #t30.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:21:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...d}, // Error.
-                                    ^", null){(core::int, core::int) → void};
+                                    ^", null);
       }
     }
   } =>#t30, block {
     final core::Set<core::int> #t31 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:22:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...a}, // Error.
                                      ^".{core::Iterable::iterator};
@@ -351,13 +351,13 @@
         final dynamic #t32 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t33 = #t32 as{TypeError,ForNonNullableByDefault} core::int;
-          #t31.{core::Set::add}(#t33){(core::int) → core::bool};
+          #t31.{core::Set::add}{Invariant}(#t33);
         }
       }
     }
   } =>#t31, block {
     final core::Set<core::int> #t34 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:23:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...b}, // Error.
                                      ^".{core::Iterable::iterator};
@@ -365,13 +365,13 @@
         final dynamic #t35 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t36 = #t35 as{TypeError,ForNonNullableByDefault} core::int;
-          #t34.{core::Set::add}(#t36){(core::int) → core::bool};
+          #t34.{core::Set::add}{Invariant}(#t36);
         }
       }
     }
   } =>#t34, block {
     final core::Set<core::int> #t37 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:24:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...c}, // Error.
                                      ^".{core::Iterable::iterator};
@@ -379,76 +379,76 @@
         final dynamic #t38 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t39 = #t38 as{TypeError,ForNonNullableByDefault} core::int;
-          #t37.{core::Set::add}(#t39){(core::int) → core::bool};
+          #t37.{core::Set::add}{Invariant}(#t39);
         }
       }
     }
   } =>#t37, block {
     final core::Map<core::int, core::int> #t40 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t40.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:25:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
+      #t40.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:25:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...d}, // Error.
-                                     ^", null){(core::int, core::int) → void};
+                                     ^", null);
   } =>#t40, block {
     final core::Set<core::int> #t41 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t42 = a;
-    if(!(#t42 == null)) {
+    if(!#t42.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t42{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t43 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t44 = #t43 as{TypeError,ForNonNullableByDefault} core::int;
-          #t41.{core::Set::add}(#t44){(core::int) → core::bool};
+          #t41.{core::Set::add}{Invariant}(#t44);
         }
       }
     }
   } =>#t41, block {
     final core::Set<core::int> #t45 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t46 = b;
-    if(!(#t46 == null)) {
+    if(!#t46.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t46{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t47 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t48 = #t47 as{TypeError,ForNonNullableByDefault} core::int;
-          #t45.{core::Set::add}(#t48){(core::int) → core::bool};
+          #t45.{core::Set::add}{Invariant}(#t48);
         }
       }
     }
   } =>#t45, block {
     final core::Set<core::int> #t49 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t50 = c;
-    if(!(#t50 == null)) {
+    if(!#t50.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t50{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t51 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t52 = #t51 as{TypeError,ForNonNullableByDefault} core::int;
-          #t49.{core::Set::add}(#t52){(core::int) → core::bool};
+          #t49.{core::Set::add}{Invariant}(#t52);
         }
       }
     }
   } =>#t49, block {
     final core::Map<core::int, core::int> #t53 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t54 = d;
-    if(!(#t54 == null)) {
+    if(!#t54.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t54{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t55 = :sync-for-iterator.{core::Iterator::current};
-        #t53.{core::Map::[]=}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t53.{core::Map::[]=}{Invariant}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value});
       }
     }
   } =>#t53, block {
     final core::Set<core::int> #t56 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t57 = a;
-      if(!(#t57 == null)) {
+      if(!#t57.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t57{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t58 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t59 = #t58 as{TypeError,ForNonNullableByDefault} core::int;
-            #t56.{core::Set::add}(#t59){(core::int) → core::bool};
+            #t56.{core::Set::add}{Invariant}(#t59);
           }
         }
       }
@@ -457,13 +457,13 @@
     final core::Set<core::int> #t60 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t61 = b;
-      if(!(#t61 == null)) {
+      if(!#t61.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t61{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t62 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t63 = #t62 as{TypeError,ForNonNullableByDefault} core::int;
-            #t60.{core::Set::add}(#t63){(core::int) → core::bool};
+            #t60.{core::Set::add}{Invariant}(#t63);
           }
         }
       }
@@ -472,13 +472,13 @@
     final core::Set<core::int> #t64 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t65 = c;
-      if(!(#t65 == null)) {
+      if(!#t65.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t65{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t66 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t67 = #t66 as{TypeError,ForNonNullableByDefault} core::int;
-            #t64.{core::Set::add}(#t67){(core::int) → core::bool};
+            #t64.{core::Set::add}{Invariant}(#t67);
           }
         }
       }
@@ -487,11 +487,11 @@
     final core::Map<core::int, core::int> #t68 = <core::int, core::int>{};
     if(condition) {
       final core::Map<core::int, core::int>? #t69 = d;
-      if(!(#t69 == null)) {
+      if(!#t69.{core::Object::==}(null)) {
         core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t69{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::int, core::int> #t70 = :sync-for-iterator.{core::Iterator::current};
-          #t68.{core::Map::[]=}(#t70.{core::MapEntry::key}, #t70.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t68.{core::Map::[]=}{Invariant}(#t70.{core::MapEntry::key}, #t70.{core::MapEntry::value});
         }
       }
     }
@@ -503,13 +503,13 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Iterable<dynamic>? #t72 = a;
-          if(!(#t72 == null)) {
+          if(!#t72.{core::Object::==}(null)) {
             core::Iterator<dynamic> :sync-for-iterator = #t72{core::Iterable<dynamic>}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final dynamic #t73 = :sync-for-iterator.{core::Iterator::current};
               {
                 final core::int #t74 = #t73 as{TypeError,ForNonNullableByDefault} core::int;
-                #t71.{core::Set::add}(#t74){(core::int) → core::bool};
+                #t71.{core::Set::add}{Invariant}(#t74);
               }
             }
           }
@@ -524,13 +524,13 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Iterable<dynamic>? #t76 = b;
-          if(!(#t76 == null)) {
+          if(!#t76.{core::Object::==}(null)) {
             core::Iterator<dynamic> :sync-for-iterator = #t76{core::Iterable<dynamic>}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final dynamic #t77 = :sync-for-iterator.{core::Iterator::current};
               {
                 final core::int #t78 = #t77 as{TypeError,ForNonNullableByDefault} core::int;
-                #t75.{core::Set::add}(#t78){(core::int) → core::bool};
+                #t75.{core::Set::add}{Invariant}(#t78);
               }
             }
           }
@@ -545,13 +545,13 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Iterable<dynamic>? #t80 = c;
-          if(!(#t80 == null)) {
+          if(!#t80.{core::Object::==}(null)) {
             core::Iterator<dynamic> :sync-for-iterator = #t80{core::Iterable<dynamic>}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final dynamic #t81 = :sync-for-iterator.{core::Iterator::current};
               {
                 final core::int #t82 = #t81 as{TypeError,ForNonNullableByDefault} core::int;
-                #t79.{core::Set::add}(#t82){(core::int) → core::bool};
+                #t79.{core::Set::add}{Invariant}(#t82);
               }
             }
           }
@@ -566,11 +566,11 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Map<core::int, core::int>? #t84 = d;
-          if(!(#t84 == null)) {
+          if(!#t84.{core::Object::==}(null)) {
             core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t84{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final core::MapEntry<core::int, core::int> #t85 = :sync-for-iterator.{core::Iterator::current};
-              #t83.{core::Map::[]=}(#t85.{core::MapEntry::key}, #t85.{core::MapEntry::value}){(core::int, core::int) → void};
+              #t83.{core::Map::[]=}{Invariant}(#t85.{core::MapEntry::key}, #t85.{core::MapEntry::value});
             }
           }
         }
@@ -578,58 +578,58 @@
     }
   } =>#t83, block {
     final core::Set<core::int> #t86 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t87 = a;
-      if(!(#t87 == null)) {
+      if(!#t87.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t87{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t88 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t89 = #t88 as{TypeError,ForNonNullableByDefault} core::int;
-            #t86.{core::Set::add}(#t89){(core::int) → core::bool};
+            #t86.{core::Set::add}{Invariant}(#t89);
           }
         }
       }
     }
   } =>#t86, block {
     final core::Set<core::int> #t90 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t91 = b;
-      if(!(#t91 == null)) {
+      if(!#t91.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t91{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t92 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t93 = #t92 as{TypeError,ForNonNullableByDefault} core::int;
-            #t90.{core::Set::add}(#t93){(core::int) → core::bool};
+            #t90.{core::Set::add}{Invariant}(#t93);
           }
         }
       }
     }
   } =>#t90, block {
     final core::Set<core::int> #t94 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t95 = c;
-      if(!(#t95 == null)) {
+      if(!#t95.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t95{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t96 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t97 = #t96 as{TypeError,ForNonNullableByDefault} core::int;
-            #t94.{core::Set::add}(#t97){(core::int) → core::bool};
+            #t94.{core::Set::add}{Invariant}(#t97);
           }
         }
       }
     }
   } =>#t94, block {
     final core::Map<core::int, core::int> #t98 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Map<core::int, core::int>? #t99 = d;
-      if(!(#t99 == null)) {
+      if(!#t99.{core::Object::==}(null)) {
         core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t99{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::int, core::int> #t100 = :sync-for-iterator.{core::Iterator::current};
-          #t98.{core::Map::[]=}(#t100.{core::MapEntry::key}, #t100.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t98.{core::Map::[]=}{Invariant}(#t100.{core::MapEntry::key}, #t100.{core::MapEntry::value});
         }
       }
     }
@@ -646,7 +646,7 @@
         final dynamic #t102 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t103 = #t102 as{TypeError,ForNonNullableByDefault} core::int;
-          #t101.{core::Set::add}(#t103){(core::int) → core::bool};
+          #t101.{core::Set::add}{Invariant}(#t103);
         }
       }
     }
@@ -660,7 +660,7 @@
         final dynamic #t105 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t106 = #t105 as{TypeError,ForNonNullableByDefault} core::int;
-          #t104.{core::Set::add}(#t106){(core::int) → core::bool};
+          #t104.{core::Set::add}{Invariant}(#t106);
         }
       }
     }
@@ -674,7 +674,7 @@
         final dynamic #t108 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t109 = #t108 as{TypeError,ForNonNullableByDefault} core::int;
-          #t107.{core::Set::add}(#t109){(core::int) → core::bool};
+          #t107.{core::Set::add}{Invariant}(#t109);
         }
       }
     }
@@ -684,9 +684,9 @@
     <int, int>{...x}, // Error.
                   ^": null}, block {
     final core::Set<core::int> #t110 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t110.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:55:14: Error: Unexpected type 'W' of a spread.  Expected 'dynamic' or an Iterable.
+    #t110.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:55:14: Error: Unexpected type 'W' of a spread.  Expected 'dynamic' or an Iterable.
     <int>{...w}, // Error.
-             ^"){(core::int) → core::bool};
+             ^");
   } =>#t110, block {
     final core::Set<core::int> #t111 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
@@ -697,7 +697,7 @@
         final dynamic #t112 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t113 = #t112 as{TypeError,ForNonNullableByDefault} core::int;
-          #t111.{core::Set::add}(#t113){(core::int) → core::bool};
+          #t111.{core::Set::add}{Invariant}(#t113);
         }
       }
     }
@@ -711,7 +711,7 @@
         final dynamic #t115 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t116 = #t115 as{TypeError,ForNonNullableByDefault} core::int;
-          #t114.{core::Set::add}(#t116){(core::int) → core::bool};
+          #t114.{core::Set::add}{Invariant}(#t116);
         }
       }
     }
@@ -725,16 +725,16 @@
         final dynamic #t118 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t119 = #t118 as{TypeError,ForNonNullableByDefault} core::int;
-          #t117.{core::Set::add}(#t119){(core::int) → core::bool};
+          #t117.{core::Set::add}{Invariant}(#t119);
         }
       }
     }
   } =>#t117, block {
     final core::Map<core::int, core::int> #t120 = <core::int, core::int>{};
     if(condition)
-      #t120.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:59:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+      #t120.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:59:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...w}, // Error.
-                       ^", null){(core::int, core::int) → void};
+                       ^", null);
   } =>#t120, block {
     final core::Set<core::int> #t121 = new col::_CompactLinkedHashSet::•<core::int>();
     {
@@ -749,7 +749,7 @@
             final dynamic #t122 = :sync-for-iterator.{core::Iterator::current};
             {
               final core::int #t123 = #t122 as{TypeError,ForNonNullableByDefault} core::int;
-              #t121.{core::Set::add}(#t123){(core::int) → core::bool};
+              #t121.{core::Set::add}{Invariant}(#t123);
             }
           }
         }
@@ -769,7 +769,7 @@
             final dynamic #t125 = :sync-for-iterator.{core::Iterator::current};
             {
               final core::int #t126 = #t125 as{TypeError,ForNonNullableByDefault} core::int;
-              #t124.{core::Set::add}(#t126){(core::int) → core::bool};
+              #t124.{core::Set::add}{Invariant}(#t126);
             }
           }
         }
@@ -789,7 +789,7 @@
             final dynamic #t128 = :sync-for-iterator.{core::Iterator::current};
             {
               final core::int #t129 = #t128 as{TypeError,ForNonNullableByDefault} core::int;
-              #t127.{core::Set::add}(#t129){(core::int) → core::bool};
+              #t127.{core::Set::add}{Invariant}(#t129);
             }
           }
         }
@@ -801,14 +801,14 @@
       core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         dynamic e = :sync-for-iterator.{core::Iterator::current};
-        #t130.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:63:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+        #t130.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:63:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...w}, // Error.
-                                    ^", null){(core::int, core::int) → void};
+                                    ^", null);
       }
     }
   } =>#t130, block {
     final core::Set<core::int> #t131 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:64:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...x}, // Error.
                                      ^".{core::Iterable::iterator};
@@ -816,13 +816,13 @@
         final dynamic #t132 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t133 = #t132 as{TypeError,ForNonNullableByDefault} core::int;
-          #t131.{core::Set::add}(#t133){(core::int) → core::bool};
+          #t131.{core::Set::add}{Invariant}(#t133);
         }
       }
     }
   } =>#t131, block {
     final core::Set<core::int> #t134 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:65:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...y}, // Error.
                                      ^".{core::Iterable::iterator};
@@ -830,13 +830,13 @@
         final dynamic #t135 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t136 = #t135 as{TypeError,ForNonNullableByDefault} core::int;
-          #t134.{core::Set::add}(#t136){(core::int) → core::bool};
+          #t134.{core::Set::add}{Invariant}(#t136);
         }
       }
     }
   } =>#t134, block {
     final core::Set<core::int> #t137 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:66:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...z}, // Error.
                                      ^".{core::Iterable::iterator};
@@ -844,76 +844,76 @@
         final dynamic #t138 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t139 = #t138 as{TypeError,ForNonNullableByDefault} core::int;
-          #t137.{core::Set::add}(#t139){(core::int) → core::bool};
+          #t137.{core::Set::add}{Invariant}(#t139);
         }
       }
     }
   } =>#t137, block {
     final core::Map<core::int, core::int> #t140 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t140.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:67:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
+      #t140.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:67:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...w}, // Error.
-                                     ^", null){(core::int, core::int) → void};
+                                     ^", null);
   } =>#t140, block {
     final core::Set<core::int> #t141 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t142 = x;
-    if(!(#t142 == null)) {
+    if(!#t142.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t142{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t143 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t144 = #t143 as{TypeError,ForNonNullableByDefault} core::int;
-          #t141.{core::Set::add}(#t144){(core::int) → core::bool};
+          #t141.{core::Set::add}{Invariant}(#t144);
         }
       }
     }
   } =>#t141, block {
     final core::Set<core::int> #t145 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t146 = y;
-    if(!(#t146 == null)) {
+    if(!#t146.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t146{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t147 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t148 = #t147 as{TypeError,ForNonNullableByDefault} core::int;
-          #t145.{core::Set::add}(#t148){(core::int) → core::bool};
+          #t145.{core::Set::add}{Invariant}(#t148);
         }
       }
     }
   } =>#t145, block {
     final core::Set<core::int> #t149 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t150 = z;
-    if(!(#t150 == null)) {
+    if(!#t150.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t150{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t151 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t152 = #t151 as{TypeError,ForNonNullableByDefault} core::int;
-          #t149.{core::Set::add}(#t152){(core::int) → core::bool};
+          #t149.{core::Set::add}{Invariant}(#t152);
         }
       }
     }
   } =>#t149, block {
     final core::Map<core::int, core::int> #t153 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t154 = w;
-    if(!(#t154 == null)) {
+    if(!#t154.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t154{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t155 = :sync-for-iterator.{core::Iterator::current};
-        #t153.{core::Map::[]=}(#t155.{core::MapEntry::key}, #t155.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t153.{core::Map::[]=}{Invariant}(#t155.{core::MapEntry::key}, #t155.{core::MapEntry::value});
       }
     }
   } =>#t153, block {
     final core::Set<core::int> #t156 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t157 = x;
-      if(!(#t157 == null)) {
+      if(!#t157.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t157{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t158 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t159 = #t158 as{TypeError,ForNonNullableByDefault} core::int;
-            #t156.{core::Set::add}(#t159){(core::int) → core::bool};
+            #t156.{core::Set::add}{Invariant}(#t159);
           }
         }
       }
@@ -922,13 +922,13 @@
     final core::Set<core::int> #t160 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t161 = y;
-      if(!(#t161 == null)) {
+      if(!#t161.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t161{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t162 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t163 = #t162 as{TypeError,ForNonNullableByDefault} core::int;
-            #t160.{core::Set::add}(#t163){(core::int) → core::bool};
+            #t160.{core::Set::add}{Invariant}(#t163);
           }
         }
       }
@@ -937,13 +937,13 @@
     final core::Set<core::int> #t164 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t165 = z;
-      if(!(#t165 == null)) {
+      if(!#t165.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t165{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t166 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t167 = #t166 as{TypeError,ForNonNullableByDefault} core::int;
-            #t164.{core::Set::add}(#t167){(core::int) → core::bool};
+            #t164.{core::Set::add}{Invariant}(#t167);
           }
         }
       }
@@ -952,11 +952,11 @@
     final core::Map<core::int, core::int> #t168 = <core::int, core::int>{};
     if(condition) {
       final core::Map<core::int, core::int>? #t169 = w;
-      if(!(#t169 == null)) {
+      if(!#t169.{core::Object::==}(null)) {
         core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t169{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::int, core::int> #t170 = :sync-for-iterator.{core::Iterator::current};
-          #t168.{core::Map::[]=}(#t170.{core::MapEntry::key}, #t170.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t168.{core::Map::[]=}{Invariant}(#t170.{core::MapEntry::key}, #t170.{core::MapEntry::value});
         }
       }
     }
@@ -968,13 +968,13 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Iterable<dynamic>? #t172 = x;
-          if(!(#t172 == null)) {
+          if(!#t172.{core::Object::==}(null)) {
             core::Iterator<dynamic> :sync-for-iterator = #t172{core::Iterable<dynamic>}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final dynamic #t173 = :sync-for-iterator.{core::Iterator::current};
               {
                 final core::int #t174 = #t173 as{TypeError,ForNonNullableByDefault} core::int;
-                #t171.{core::Set::add}(#t174){(core::int) → core::bool};
+                #t171.{core::Set::add}{Invariant}(#t174);
               }
             }
           }
@@ -989,13 +989,13 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Iterable<dynamic>? #t176 = y;
-          if(!(#t176 == null)) {
+          if(!#t176.{core::Object::==}(null)) {
             core::Iterator<dynamic> :sync-for-iterator = #t176{core::Iterable<dynamic>}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final dynamic #t177 = :sync-for-iterator.{core::Iterator::current};
               {
                 final core::int #t178 = #t177 as{TypeError,ForNonNullableByDefault} core::int;
-                #t175.{core::Set::add}(#t178){(core::int) → core::bool};
+                #t175.{core::Set::add}{Invariant}(#t178);
               }
             }
           }
@@ -1010,13 +1010,13 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Iterable<dynamic>? #t180 = z;
-          if(!(#t180 == null)) {
+          if(!#t180.{core::Object::==}(null)) {
             core::Iterator<dynamic> :sync-for-iterator = #t180{core::Iterable<dynamic>}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final dynamic #t181 = :sync-for-iterator.{core::Iterator::current};
               {
                 final core::int #t182 = #t181 as{TypeError,ForNonNullableByDefault} core::int;
-                #t179.{core::Set::add}(#t182){(core::int) → core::bool};
+                #t179.{core::Set::add}{Invariant}(#t182);
               }
             }
           }
@@ -1031,11 +1031,11 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Map<core::int, core::int>? #t184 = w;
-          if(!(#t184 == null)) {
+          if(!#t184.{core::Object::==}(null)) {
             core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t184{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final core::MapEntry<core::int, core::int> #t185 = :sync-for-iterator.{core::Iterator::current};
-              #t183.{core::Map::[]=}(#t185.{core::MapEntry::key}, #t185.{core::MapEntry::value}){(core::int, core::int) → void};
+              #t183.{core::Map::[]=}{Invariant}(#t185.{core::MapEntry::key}, #t185.{core::MapEntry::value});
             }
           }
         }
@@ -1043,58 +1043,58 @@
     }
   } =>#t183, block {
     final core::Set<core::int> #t186 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t187 = x;
-      if(!(#t187 == null)) {
+      if(!#t187.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t187{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t188 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t189 = #t188 as{TypeError,ForNonNullableByDefault} core::int;
-            #t186.{core::Set::add}(#t189){(core::int) → core::bool};
+            #t186.{core::Set::add}{Invariant}(#t189);
           }
         }
       }
     }
   } =>#t186, block {
     final core::Set<core::int> #t190 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t191 = y;
-      if(!(#t191 == null)) {
+      if(!#t191.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t191{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t192 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t193 = #t192 as{TypeError,ForNonNullableByDefault} core::int;
-            #t190.{core::Set::add}(#t193){(core::int) → core::bool};
+            #t190.{core::Set::add}{Invariant}(#t193);
           }
         }
       }
     }
   } =>#t190, block {
     final core::Set<core::int> #t194 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t195 = z;
-      if(!(#t195 == null)) {
+      if(!#t195.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t195{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t196 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t197 = #t196 as{TypeError,ForNonNullableByDefault} core::int;
-            #t194.{core::Set::add}(#t197){(core::int) → core::bool};
+            #t194.{core::Set::add}{Invariant}(#t197);
           }
         }
       }
     }
   } =>#t194, block {
     final core::Map<core::int, core::int> #t198 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Map<core::int, core::int>? #t199 = w;
-      if(!(#t199 == null)) {
+      if(!#t199.{core::Object::==}(null)) {
         core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t199{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::int, core::int> #t200 = :sync-for-iterator.{core::Iterator::current};
-          #t198.{core::Map::[]=}(#t200.{core::MapEntry::key}, #t200.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t198.{core::Map::[]=}{Invariant}(#t200.{core::MapEntry::key}, #t200.{core::MapEntry::value});
         }
       }
     }
diff --git a/pkg/front_end/testcases/nnbd/issue43495.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43495.dart.weak.expect
index 778487e..e5985d6 100644
--- a/pkg/front_end/testcases/nnbd/issue43495.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43495.dart.weak.expect
@@ -175,7 +175,7 @@
     {...a}, // Error.
         ^") {
       final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
-      #t1.{core::Set::add}(#t3){(core::int) → core::bool};
+      #t1.{core::Set::add}{Invariant}(#t3);
     }
   } =>#t1, block {
     final core::Set<core::int> #t4 = col::LinkedHashSet::•<core::int>();
@@ -183,7 +183,7 @@
     {...b}, // Error.
         ^") {
       final core::int #t6 = #t5 as{TypeError,ForNonNullableByDefault} core::int;
-      #t4.{core::Set::add}(#t6){(core::int) → core::bool};
+      #t4.{core::Set::add}{Invariant}(#t6);
     }
   } =>#t4, block {
     final core::Set<core::int> #t7 = col::LinkedHashSet::•<core::int>();
@@ -191,7 +191,7 @@
     {...c}, // Error.
         ^") {
       final core::int #t9 = #t8 as{TypeError,ForNonNullableByDefault} core::int;
-      #t7.{core::Set::add}(#t9){(core::int) → core::bool};
+      #t7.{core::Set::add}{Invariant}(#t9);
     }
   } =>#t7, <core::int, core::int>{invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:11:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...d}, // Error.
@@ -200,10 +200,10 @@
     <int, int>{...a}, // Error.
                   ^": null}, block {
     final core::Set<core::int> #t10 = col::LinkedHashSet::•<core::int>();
-    #t10.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:13:14: Error: Unexpected type 'Map<int, int>?' of a spread.  Expected 'dynamic' or an Iterable.
+    #t10.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:13:14: Error: Unexpected type 'Map<int, int>?' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
     <int>{...d}, // Error.
-             ^"){(core::int) → core::bool};
+             ^");
   } =>#t10, block {
     final core::Set<core::int> #t11 = col::LinkedHashSet::•<core::int>();
     if(condition)
@@ -211,7 +211,7 @@
     {if (condition) ...a}, // Error.
                        ^") {
         final core::int #t13 = #t12 as{TypeError,ForNonNullableByDefault} core::int;
-        #t11.{core::Set::add}(#t13){(core::int) → core::bool};
+        #t11.{core::Set::add}{Invariant}(#t13);
       }
   } =>#t11, block {
     final core::Set<core::int> #t14 = col::LinkedHashSet::•<core::int>();
@@ -220,7 +220,7 @@
     {if (condition) ...b}, // Error.
                        ^") {
         final core::int #t16 = #t15 as{TypeError,ForNonNullableByDefault} core::int;
-        #t14.{core::Set::add}(#t16){(core::int) → core::bool};
+        #t14.{core::Set::add}{Invariant}(#t16);
       }
   } =>#t14, block {
     final core::Set<core::int> #t17 = col::LinkedHashSet::•<core::int>();
@@ -229,14 +229,14 @@
     {if (condition) ...c}, // Error.
                        ^") {
         final core::int #t19 = #t18 as{TypeError,ForNonNullableByDefault} core::int;
-        #t17.{core::Set::add}(#t19){(core::int) → core::bool};
+        #t17.{core::Set::add}{Invariant}(#t19);
       }
   } =>#t17, block {
     final core::Map<core::int, core::int> #t20 = <core::int, core::int>{};
     if(condition)
-      #t20.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:17:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+      #t20.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:17:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...d}, // Error.
-                       ^", null){(core::int, core::int) → void};
+                       ^", null);
   } =>#t20, block {
     final core::Set<core::int> #t21 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable)
@@ -244,7 +244,7 @@
     {for (dynamic e in iterable) ...a}, // Error.
                                     ^") {
         final core::int #t23 = #t22 as{TypeError,ForNonNullableByDefault} core::int;
-        #t21.{core::Set::add}(#t23){(core::int) → core::bool};
+        #t21.{core::Set::add}{Invariant}(#t23);
       }
   } =>#t21, block {
     final core::Set<core::int> #t24 = col::LinkedHashSet::•<core::int>();
@@ -253,7 +253,7 @@
     {for (dynamic e in iterable) ...b}, // Error.
                                     ^") {
         final core::int #t26 = #t25 as{TypeError,ForNonNullableByDefault} core::int;
-        #t24.{core::Set::add}(#t26){(core::int) → core::bool};
+        #t24.{core::Set::add}{Invariant}(#t26);
       }
   } =>#t24, block {
     final core::Set<core::int> #t27 = col::LinkedHashSet::•<core::int>();
@@ -262,190 +262,190 @@
     {for (dynamic e in iterable) ...c}, // Error.
                                     ^") {
         final core::int #t29 = #t28 as{TypeError,ForNonNullableByDefault} core::int;
-        #t27.{core::Set::add}(#t29){(core::int) → core::bool};
+        #t27.{core::Set::add}{Invariant}(#t29);
       }
   } =>#t27, block {
     final core::Map<core::int, core::int> #t30 = <core::int, core::int>{};
     for (dynamic e in iterable)
-      #t30.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:21:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+      #t30.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:21:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...d}, // Error.
-                                    ^", null){(core::int, core::int) → void};
+                                    ^", null);
   } =>#t30, block {
     final core::Set<core::int> #t31 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
       for (final dynamic #t32 in invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:22:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...a}, // Error.
                                      ^") {
         final core::int #t33 = #t32 as{TypeError,ForNonNullableByDefault} core::int;
-        #t31.{core::Set::add}(#t33){(core::int) → core::bool};
+        #t31.{core::Set::add}{Invariant}(#t33);
       }
   } =>#t31, block {
     final core::Set<core::int> #t34 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
       for (final dynamic #t35 in invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:23:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...b}, // Error.
                                      ^") {
         final core::int #t36 = #t35 as{TypeError,ForNonNullableByDefault} core::int;
-        #t34.{core::Set::add}(#t36){(core::int) → core::bool};
+        #t34.{core::Set::add}{Invariant}(#t36);
       }
   } =>#t34, block {
     final core::Set<core::int> #t37 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
       for (final dynamic #t38 in invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:24:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...c}, // Error.
                                      ^") {
         final core::int #t39 = #t38 as{TypeError,ForNonNullableByDefault} core::int;
-        #t37.{core::Set::add}(#t39){(core::int) → core::bool};
+        #t37.{core::Set::add}{Invariant}(#t39);
       }
   } =>#t37, block {
     final core::Map<core::int, core::int> #t40 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t40.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:25:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
+      #t40.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:25:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...d}, // Error.
-                                     ^", null){(core::int, core::int) → void};
+                                     ^", null);
   } =>#t40, block {
     final core::Set<core::int> #t41 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t42 = a;
-    if(!(#t42 == null))
+    if(!#t42.{core::Object::==}(null))
       for (final dynamic #t43 in #t42{core::Iterable<dynamic>}) {
         final core::int #t44 = #t43 as{TypeError,ForNonNullableByDefault} core::int;
-        #t41.{core::Set::add}(#t44){(core::int) → core::bool};
+        #t41.{core::Set::add}{Invariant}(#t44);
       }
   } =>#t41, block {
     final core::Set<core::int> #t45 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t46 = b;
-    if(!(#t46 == null))
+    if(!#t46.{core::Object::==}(null))
       for (final dynamic #t47 in #t46{core::Iterable<dynamic>}) {
         final core::int #t48 = #t47 as{TypeError,ForNonNullableByDefault} core::int;
-        #t45.{core::Set::add}(#t48){(core::int) → core::bool};
+        #t45.{core::Set::add}{Invariant}(#t48);
       }
   } =>#t45, block {
     final core::Set<core::int> #t49 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t50 = c;
-    if(!(#t50 == null))
+    if(!#t50.{core::Object::==}(null))
       for (final dynamic #t51 in #t50{core::Iterable<dynamic>}) {
         final core::int #t52 = #t51 as{TypeError,ForNonNullableByDefault} core::int;
-        #t49.{core::Set::add}(#t52){(core::int) → core::bool};
+        #t49.{core::Set::add}{Invariant}(#t52);
       }
   } =>#t49, block {
     final core::Map<core::int, core::int> #t53 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t54 = d;
-    if(!(#t54 == null))
+    if(!#t54.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t55 in #t54{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t53.{core::Map::[]=}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t53.{core::Map::[]=}{Invariant}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value});
   } =>#t53, block {
     final core::Set<core::int> #t56 = col::LinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t57 = a;
-      if(!(#t57 == null))
+      if(!#t57.{core::Object::==}(null))
         for (final dynamic #t58 in #t57{core::Iterable<dynamic>}) {
           final core::int #t59 = #t58 as{TypeError,ForNonNullableByDefault} core::int;
-          #t56.{core::Set::add}(#t59){(core::int) → core::bool};
+          #t56.{core::Set::add}{Invariant}(#t59);
         }
     }
   } =>#t56, block {
     final core::Set<core::int> #t60 = col::LinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t61 = b;
-      if(!(#t61 == null))
+      if(!#t61.{core::Object::==}(null))
         for (final dynamic #t62 in #t61{core::Iterable<dynamic>}) {
           final core::int #t63 = #t62 as{TypeError,ForNonNullableByDefault} core::int;
-          #t60.{core::Set::add}(#t63){(core::int) → core::bool};
+          #t60.{core::Set::add}{Invariant}(#t63);
         }
     }
   } =>#t60, block {
     final core::Set<core::int> #t64 = col::LinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t65 = c;
-      if(!(#t65 == null))
+      if(!#t65.{core::Object::==}(null))
         for (final dynamic #t66 in #t65{core::Iterable<dynamic>}) {
           final core::int #t67 = #t66 as{TypeError,ForNonNullableByDefault} core::int;
-          #t64.{core::Set::add}(#t67){(core::int) → core::bool};
+          #t64.{core::Set::add}{Invariant}(#t67);
         }
     }
   } =>#t64, block {
     final core::Map<core::int, core::int> #t68 = <core::int, core::int>{};
     if(condition) {
       final core::Map<core::int, core::int>? #t69 = d;
-      if(!(#t69 == null))
+      if(!#t69.{core::Object::==}(null))
         for (final core::MapEntry<core::int, core::int> #t70 in #t69{core::Map<core::int, core::int>}.{core::Map::entries})
-          #t68.{core::Map::[]=}(#t70.{core::MapEntry::key}, #t70.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t68.{core::Map::[]=}{Invariant}(#t70.{core::MapEntry::key}, #t70.{core::MapEntry::value});
     }
   } =>#t68, block {
     final core::Set<core::int> #t71 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable) {
       final core::Iterable<dynamic>? #t72 = a;
-      if(!(#t72 == null))
+      if(!#t72.{core::Object::==}(null))
         for (final dynamic #t73 in #t72{core::Iterable<dynamic>}) {
           final core::int #t74 = #t73 as{TypeError,ForNonNullableByDefault} core::int;
-          #t71.{core::Set::add}(#t74){(core::int) → core::bool};
+          #t71.{core::Set::add}{Invariant}(#t74);
         }
     }
   } =>#t71, block {
     final core::Set<core::int> #t75 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable) {
       final core::Iterable<dynamic>? #t76 = b;
-      if(!(#t76 == null))
+      if(!#t76.{core::Object::==}(null))
         for (final dynamic #t77 in #t76{core::Iterable<dynamic>}) {
           final core::int #t78 = #t77 as{TypeError,ForNonNullableByDefault} core::int;
-          #t75.{core::Set::add}(#t78){(core::int) → core::bool};
+          #t75.{core::Set::add}{Invariant}(#t78);
         }
     }
   } =>#t75, block {
     final core::Set<core::int> #t79 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable) {
       final core::Iterable<dynamic>? #t80 = c;
-      if(!(#t80 == null))
+      if(!#t80.{core::Object::==}(null))
         for (final dynamic #t81 in #t80{core::Iterable<dynamic>}) {
           final core::int #t82 = #t81 as{TypeError,ForNonNullableByDefault} core::int;
-          #t79.{core::Set::add}(#t82){(core::int) → core::bool};
+          #t79.{core::Set::add}{Invariant}(#t82);
         }
     }
   } =>#t79, block {
     final core::Map<core::int, core::int> #t83 = <core::int, core::int>{};
     for (dynamic e in iterable) {
       final core::Map<core::int, core::int>? #t84 = d;
-      if(!(#t84 == null))
+      if(!#t84.{core::Object::==}(null))
         for (final core::MapEntry<core::int, core::int> #t85 in #t84{core::Map<core::int, core::int>}.{core::Map::entries})
-          #t83.{core::Map::[]=}(#t85.{core::MapEntry::key}, #t85.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t83.{core::Map::[]=}{Invariant}(#t85.{core::MapEntry::key}, #t85.{core::MapEntry::value});
     }
   } =>#t83, block {
     final core::Set<core::int> #t86 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t87 = a;
-      if(!(#t87 == null))
+      if(!#t87.{core::Object::==}(null))
         for (final dynamic #t88 in #t87{core::Iterable<dynamic>}) {
           final core::int #t89 = #t88 as{TypeError,ForNonNullableByDefault} core::int;
-          #t86.{core::Set::add}(#t89){(core::int) → core::bool};
+          #t86.{core::Set::add}{Invariant}(#t89);
         }
     }
   } =>#t86, block {
     final core::Set<core::int> #t90 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t91 = b;
-      if(!(#t91 == null))
+      if(!#t91.{core::Object::==}(null))
         for (final dynamic #t92 in #t91{core::Iterable<dynamic>}) {
           final core::int #t93 = #t92 as{TypeError,ForNonNullableByDefault} core::int;
-          #t90.{core::Set::add}(#t93){(core::int) → core::bool};
+          #t90.{core::Set::add}{Invariant}(#t93);
         }
     }
   } =>#t90, block {
     final core::Set<core::int> #t94 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t95 = c;
-      if(!(#t95 == null))
+      if(!#t95.{core::Object::==}(null))
         for (final dynamic #t96 in #t95{core::Iterable<dynamic>}) {
           final core::int #t97 = #t96 as{TypeError,ForNonNullableByDefault} core::int;
-          #t94.{core::Set::add}(#t97){(core::int) → core::bool};
+          #t94.{core::Set::add}{Invariant}(#t97);
         }
     }
   } =>#t94, block {
     final core::Map<core::int, core::int> #t98 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Map<core::int, core::int>? #t99 = d;
-      if(!(#t99 == null))
+      if(!#t99.{core::Object::==}(null))
         for (final core::MapEntry<core::int, core::int> #t100 in #t99{core::Map<core::int, core::int>}.{core::Map::entries})
-          #t98.{core::Map::[]=}(#t100.{core::MapEntry::key}, #t100.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t98.{core::Map::[]=}{Invariant}(#t100.{core::MapEntry::key}, #t100.{core::MapEntry::value});
     }
   } =>#t98];
 }
@@ -456,7 +456,7 @@
     {...x}, // Error.
         ^") {
       final core::int #t103 = #t102 as{TypeError,ForNonNullableByDefault} core::int;
-      #t101.{core::Set::add}(#t103){(core::int) → core::bool};
+      #t101.{core::Set::add}{Invariant}(#t103);
     }
   } =>#t101, block {
     final core::Set<core::int> #t104 = col::LinkedHashSet::•<core::int>();
@@ -464,7 +464,7 @@
     {...y}, // Error.
         ^") {
       final core::int #t106 = #t105 as{TypeError,ForNonNullableByDefault} core::int;
-      #t104.{core::Set::add}(#t106){(core::int) → core::bool};
+      #t104.{core::Set::add}{Invariant}(#t106);
     }
   } =>#t104, block {
     final core::Set<core::int> #t107 = col::LinkedHashSet::•<core::int>();
@@ -472,7 +472,7 @@
     {...z}, // Error.
         ^") {
       final core::int #t109 = #t108 as{TypeError,ForNonNullableByDefault} core::int;
-      #t107.{core::Set::add}(#t109){(core::int) → core::bool};
+      #t107.{core::Set::add}{Invariant}(#t109);
     }
   } =>#t107, <core::int, core::int>{invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:53:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...w}, // Error.
@@ -480,9 +480,9 @@
     <int, int>{...x}, // Error.
                   ^": null}, block {
     final core::Set<core::int> #t110 = col::LinkedHashSet::•<core::int>();
-    #t110.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:55:14: Error: Unexpected type 'W' of a spread.  Expected 'dynamic' or an Iterable.
+    #t110.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:55:14: Error: Unexpected type 'W' of a spread.  Expected 'dynamic' or an Iterable.
     <int>{...w}, // Error.
-             ^"){(core::int) → core::bool};
+             ^");
   } =>#t110, block {
     final core::Set<core::int> #t111 = col::LinkedHashSet::•<core::int>();
     if(condition)
@@ -490,7 +490,7 @@
     {if (condition) ...x}, // Error.
                        ^") {
         final core::int #t113 = #t112 as{TypeError,ForNonNullableByDefault} core::int;
-        #t111.{core::Set::add}(#t113){(core::int) → core::bool};
+        #t111.{core::Set::add}{Invariant}(#t113);
       }
   } =>#t111, block {
     final core::Set<core::int> #t114 = col::LinkedHashSet::•<core::int>();
@@ -499,7 +499,7 @@
     {if (condition) ...y}, // Error.
                        ^") {
         final core::int #t116 = #t115 as{TypeError,ForNonNullableByDefault} core::int;
-        #t114.{core::Set::add}(#t116){(core::int) → core::bool};
+        #t114.{core::Set::add}{Invariant}(#t116);
       }
   } =>#t114, block {
     final core::Set<core::int> #t117 = col::LinkedHashSet::•<core::int>();
@@ -508,14 +508,14 @@
     {if (condition) ...z}, // Error.
                        ^") {
         final core::int #t119 = #t118 as{TypeError,ForNonNullableByDefault} core::int;
-        #t117.{core::Set::add}(#t119){(core::int) → core::bool};
+        #t117.{core::Set::add}{Invariant}(#t119);
       }
   } =>#t117, block {
     final core::Map<core::int, core::int> #t120 = <core::int, core::int>{};
     if(condition)
-      #t120.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:59:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+      #t120.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:59:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...w}, // Error.
-                       ^", null){(core::int, core::int) → void};
+                       ^", null);
   } =>#t120, block {
     final core::Set<core::int> #t121 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable)
@@ -523,7 +523,7 @@
     {for (dynamic e in iterable) ...x}, // Error.
                                     ^") {
         final core::int #t123 = #t122 as{TypeError,ForNonNullableByDefault} core::int;
-        #t121.{core::Set::add}(#t123){(core::int) → core::bool};
+        #t121.{core::Set::add}{Invariant}(#t123);
       }
   } =>#t121, block {
     final core::Set<core::int> #t124 = col::LinkedHashSet::•<core::int>();
@@ -532,7 +532,7 @@
     {for (dynamic e in iterable) ...y}, // Error.
                                     ^") {
         final core::int #t126 = #t125 as{TypeError,ForNonNullableByDefault} core::int;
-        #t124.{core::Set::add}(#t126){(core::int) → core::bool};
+        #t124.{core::Set::add}{Invariant}(#t126);
       }
   } =>#t124, block {
     final core::Set<core::int> #t127 = col::LinkedHashSet::•<core::int>();
@@ -541,190 +541,190 @@
     {for (dynamic e in iterable) ...z}, // Error.
                                     ^") {
         final core::int #t129 = #t128 as{TypeError,ForNonNullableByDefault} core::int;
-        #t127.{core::Set::add}(#t129){(core::int) → core::bool};
+        #t127.{core::Set::add}{Invariant}(#t129);
       }
   } =>#t127, block {
     final core::Map<core::int, core::int> #t130 = <core::int, core::int>{};
     for (dynamic e in iterable)
-      #t130.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:63:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+      #t130.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:63:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...w}, // Error.
-                                    ^", null){(core::int, core::int) → void};
+                                    ^", null);
   } =>#t130, block {
     final core::Set<core::int> #t131 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
       for (final dynamic #t132 in invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:64:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...x}, // Error.
                                      ^") {
         final core::int #t133 = #t132 as{TypeError,ForNonNullableByDefault} core::int;
-        #t131.{core::Set::add}(#t133){(core::int) → core::bool};
+        #t131.{core::Set::add}{Invariant}(#t133);
       }
   } =>#t131, block {
     final core::Set<core::int> #t134 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
       for (final dynamic #t135 in invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:65:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...y}, // Error.
                                      ^") {
         final core::int #t136 = #t135 as{TypeError,ForNonNullableByDefault} core::int;
-        #t134.{core::Set::add}(#t136){(core::int) → core::bool};
+        #t134.{core::Set::add}{Invariant}(#t136);
       }
   } =>#t134, block {
     final core::Set<core::int> #t137 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
       for (final dynamic #t138 in invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:66:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...z}, // Error.
                                      ^") {
         final core::int #t139 = #t138 as{TypeError,ForNonNullableByDefault} core::int;
-        #t137.{core::Set::add}(#t139){(core::int) → core::bool};
+        #t137.{core::Set::add}{Invariant}(#t139);
       }
   } =>#t137, block {
     final core::Map<core::int, core::int> #t140 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t140.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:67:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
+      #t140.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:67:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...w}, // Error.
-                                     ^", null){(core::int, core::int) → void};
+                                     ^", null);
   } =>#t140, block {
     final core::Set<core::int> #t141 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t142 = x;
-    if(!(#t142 == null))
+    if(!#t142.{core::Object::==}(null))
       for (final dynamic #t143 in #t142{core::Iterable<dynamic>}) {
         final core::int #t144 = #t143 as{TypeError,ForNonNullableByDefault} core::int;
-        #t141.{core::Set::add}(#t144){(core::int) → core::bool};
+        #t141.{core::Set::add}{Invariant}(#t144);
       }
   } =>#t141, block {
     final core::Set<core::int> #t145 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t146 = y;
-    if(!(#t146 == null))
+    if(!#t146.{core::Object::==}(null))
       for (final dynamic #t147 in #t146{core::Iterable<dynamic>}) {
         final core::int #t148 = #t147 as{TypeError,ForNonNullableByDefault} core::int;
-        #t145.{core::Set::add}(#t148){(core::int) → core::bool};
+        #t145.{core::Set::add}{Invariant}(#t148);
       }
   } =>#t145, block {
     final core::Set<core::int> #t149 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t150 = z;
-    if(!(#t150 == null))
+    if(!#t150.{core::Object::==}(null))
       for (final dynamic #t151 in #t150{core::Iterable<dynamic>}) {
         final core::int #t152 = #t151 as{TypeError,ForNonNullableByDefault} core::int;
-        #t149.{core::Set::add}(#t152){(core::int) → core::bool};
+        #t149.{core::Set::add}{Invariant}(#t152);
       }
   } =>#t149, block {
     final core::Map<core::int, core::int> #t153 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t154 = w;
-    if(!(#t154 == null))
+    if(!#t154.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t155 in #t154{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t153.{core::Map::[]=}(#t155.{core::MapEntry::key}, #t155.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t153.{core::Map::[]=}{Invariant}(#t155.{core::MapEntry::key}, #t155.{core::MapEntry::value});
   } =>#t153, block {
     final core::Set<core::int> #t156 = col::LinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t157 = x;
-      if(!(#t157 == null))
+      if(!#t157.{core::Object::==}(null))
         for (final dynamic #t158 in #t157{core::Iterable<dynamic>}) {
           final core::int #t159 = #t158 as{TypeError,ForNonNullableByDefault} core::int;
-          #t156.{core::Set::add}(#t159){(core::int) → core::bool};
+          #t156.{core::Set::add}{Invariant}(#t159);
         }
     }
   } =>#t156, block {
     final core::Set<core::int> #t160 = col::LinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t161 = y;
-      if(!(#t161 == null))
+      if(!#t161.{core::Object::==}(null))
         for (final dynamic #t162 in #t161{core::Iterable<dynamic>}) {
           final core::int #t163 = #t162 as{TypeError,ForNonNullableByDefault} core::int;
-          #t160.{core::Set::add}(#t163){(core::int) → core::bool};
+          #t160.{core::Set::add}{Invariant}(#t163);
         }
     }
   } =>#t160, block {
     final core::Set<core::int> #t164 = col::LinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t165 = z;
-      if(!(#t165 == null))
+      if(!#t165.{core::Object::==}(null))
         for (final dynamic #t166 in #t165{core::Iterable<dynamic>}) {
           final core::int #t167 = #t166 as{TypeError,ForNonNullableByDefault} core::int;
-          #t164.{core::Set::add}(#t167){(core::int) → core::bool};
+          #t164.{core::Set::add}{Invariant}(#t167);
         }
     }
   } =>#t164, block {
     final core::Map<core::int, core::int> #t168 = <core::int, core::int>{};
     if(condition) {
       final core::Map<core::int, core::int>? #t169 = w;
-      if(!(#t169 == null))
+      if(!#t169.{core::Object::==}(null))
         for (final core::MapEntry<core::int, core::int> #t170 in #t169{core::Map<core::int, core::int>}.{core::Map::entries})
-          #t168.{core::Map::[]=}(#t170.{core::MapEntry::key}, #t170.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t168.{core::Map::[]=}{Invariant}(#t170.{core::MapEntry::key}, #t170.{core::MapEntry::value});
     }
   } =>#t168, block {
     final core::Set<core::int> #t171 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable) {
       final core::Iterable<dynamic>? #t172 = x;
-      if(!(#t172 == null))
+      if(!#t172.{core::Object::==}(null))
         for (final dynamic #t173 in #t172{core::Iterable<dynamic>}) {
           final core::int #t174 = #t173 as{TypeError,ForNonNullableByDefault} core::int;
-          #t171.{core::Set::add}(#t174){(core::int) → core::bool};
+          #t171.{core::Set::add}{Invariant}(#t174);
         }
     }
   } =>#t171, block {
     final core::Set<core::int> #t175 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable) {
       final core::Iterable<dynamic>? #t176 = y;
-      if(!(#t176 == null))
+      if(!#t176.{core::Object::==}(null))
         for (final dynamic #t177 in #t176{core::Iterable<dynamic>}) {
           final core::int #t178 = #t177 as{TypeError,ForNonNullableByDefault} core::int;
-          #t175.{core::Set::add}(#t178){(core::int) → core::bool};
+          #t175.{core::Set::add}{Invariant}(#t178);
         }
     }
   } =>#t175, block {
     final core::Set<core::int> #t179 = col::LinkedHashSet::•<core::int>();
     for (dynamic e in iterable) {
       final core::Iterable<dynamic>? #t180 = z;
-      if(!(#t180 == null))
+      if(!#t180.{core::Object::==}(null))
         for (final dynamic #t181 in #t180{core::Iterable<dynamic>}) {
           final core::int #t182 = #t181 as{TypeError,ForNonNullableByDefault} core::int;
-          #t179.{core::Set::add}(#t182){(core::int) → core::bool};
+          #t179.{core::Set::add}{Invariant}(#t182);
         }
     }
   } =>#t179, block {
     final core::Map<core::int, core::int> #t183 = <core::int, core::int>{};
     for (dynamic e in iterable) {
       final core::Map<core::int, core::int>? #t184 = w;
-      if(!(#t184 == null))
+      if(!#t184.{core::Object::==}(null))
         for (final core::MapEntry<core::int, core::int> #t185 in #t184{core::Map<core::int, core::int>}.{core::Map::entries})
-          #t183.{core::Map::[]=}(#t185.{core::MapEntry::key}, #t185.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t183.{core::Map::[]=}{Invariant}(#t185.{core::MapEntry::key}, #t185.{core::MapEntry::value});
     }
   } =>#t183, block {
     final core::Set<core::int> #t186 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t187 = x;
-      if(!(#t187 == null))
+      if(!#t187.{core::Object::==}(null))
         for (final dynamic #t188 in #t187{core::Iterable<dynamic>}) {
           final core::int #t189 = #t188 as{TypeError,ForNonNullableByDefault} core::int;
-          #t186.{core::Set::add}(#t189){(core::int) → core::bool};
+          #t186.{core::Set::add}{Invariant}(#t189);
         }
     }
   } =>#t186, block {
     final core::Set<core::int> #t190 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t191 = y;
-      if(!(#t191 == null))
+      if(!#t191.{core::Object::==}(null))
         for (final dynamic #t192 in #t191{core::Iterable<dynamic>}) {
           final core::int #t193 = #t192 as{TypeError,ForNonNullableByDefault} core::int;
-          #t190.{core::Set::add}(#t193){(core::int) → core::bool};
+          #t190.{core::Set::add}{Invariant}(#t193);
         }
     }
   } =>#t190, block {
     final core::Set<core::int> #t194 = col::LinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t195 = z;
-      if(!(#t195 == null))
+      if(!#t195.{core::Object::==}(null))
         for (final dynamic #t196 in #t195{core::Iterable<dynamic>}) {
           final core::int #t197 = #t196 as{TypeError,ForNonNullableByDefault} core::int;
-          #t194.{core::Set::add}(#t197){(core::int) → core::bool};
+          #t194.{core::Set::add}{Invariant}(#t197);
         }
     }
   } =>#t194, block {
     final core::Map<core::int, core::int> #t198 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Map<core::int, core::int>? #t199 = w;
-      if(!(#t199 == null))
+      if(!#t199.{core::Object::==}(null))
         for (final core::MapEntry<core::int, core::int> #t200 in #t199{core::Map<core::int, core::int>}.{core::Map::entries})
-          #t198.{core::Map::[]=}(#t200.{core::MapEntry::key}, #t200.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t198.{core::Map::[]=}{Invariant}(#t200.{core::MapEntry::key}, #t200.{core::MapEntry::value});
     }
   } =>#t198];
 }
diff --git a/pkg/front_end/testcases/nnbd/issue43495.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43495.dart.weak.transformed.expect
index d59e085..7d89db1 100644
--- a/pkg/front_end/testcases/nnbd/issue43495.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43495.dart.weak.transformed.expect
@@ -179,7 +179,7 @@
         final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
-          #t1.{core::Set::add}(#t3){(core::int) → core::bool};
+          #t1.{core::Set::add}{Invariant}(#t3);
         }
       }
     }
@@ -193,7 +193,7 @@
         final dynamic #t5 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t6 = #t5 as{TypeError,ForNonNullableByDefault} core::int;
-          #t4.{core::Set::add}(#t6){(core::int) → core::bool};
+          #t4.{core::Set::add}{Invariant}(#t6);
         }
       }
     }
@@ -207,7 +207,7 @@
         final dynamic #t8 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t9 = #t8 as{TypeError,ForNonNullableByDefault} core::int;
-          #t7.{core::Set::add}(#t9){(core::int) → core::bool};
+          #t7.{core::Set::add}{Invariant}(#t9);
         }
       }
     }
@@ -218,10 +218,10 @@
     <int, int>{...a}, // Error.
                   ^": null}, block {
     final core::Set<core::int> #t10 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t10.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:13:14: Error: Unexpected type 'Map<int, int>?' of a spread.  Expected 'dynamic' or an Iterable.
+    #t10.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:13:14: Error: Unexpected type 'Map<int, int>?' of a spread.  Expected 'dynamic' or an Iterable.
  - 'Map' is from 'dart:core'.
     <int>{...d}, // Error.
-             ^"){(core::int) → core::bool};
+             ^");
   } =>#t10, block {
     final core::Set<core::int> #t11 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
@@ -232,7 +232,7 @@
         final dynamic #t12 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t13 = #t12 as{TypeError,ForNonNullableByDefault} core::int;
-          #t11.{core::Set::add}(#t13){(core::int) → core::bool};
+          #t11.{core::Set::add}{Invariant}(#t13);
         }
       }
     }
@@ -246,7 +246,7 @@
         final dynamic #t15 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t16 = #t15 as{TypeError,ForNonNullableByDefault} core::int;
-          #t14.{core::Set::add}(#t16){(core::int) → core::bool};
+          #t14.{core::Set::add}{Invariant}(#t16);
         }
       }
     }
@@ -260,16 +260,16 @@
         final dynamic #t18 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t19 = #t18 as{TypeError,ForNonNullableByDefault} core::int;
-          #t17.{core::Set::add}(#t19){(core::int) → core::bool};
+          #t17.{core::Set::add}{Invariant}(#t19);
         }
       }
     }
   } =>#t17, block {
     final core::Map<core::int, core::int> #t20 = <core::int, core::int>{};
     if(condition)
-      #t20.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:17:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+      #t20.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:17:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...d}, // Error.
-                       ^", null){(core::int, core::int) → void};
+                       ^", null);
   } =>#t20, block {
     final core::Set<core::int> #t21 = new col::_CompactLinkedHashSet::•<core::int>();
     {
@@ -284,7 +284,7 @@
             final dynamic #t22 = :sync-for-iterator.{core::Iterator::current};
             {
               final core::int #t23 = #t22 as{TypeError,ForNonNullableByDefault} core::int;
-              #t21.{core::Set::add}(#t23){(core::int) → core::bool};
+              #t21.{core::Set::add}{Invariant}(#t23);
             }
           }
         }
@@ -304,7 +304,7 @@
             final dynamic #t25 = :sync-for-iterator.{core::Iterator::current};
             {
               final core::int #t26 = #t25 as{TypeError,ForNonNullableByDefault} core::int;
-              #t24.{core::Set::add}(#t26){(core::int) → core::bool};
+              #t24.{core::Set::add}{Invariant}(#t26);
             }
           }
         }
@@ -324,7 +324,7 @@
             final dynamic #t28 = :sync-for-iterator.{core::Iterator::current};
             {
               final core::int #t29 = #t28 as{TypeError,ForNonNullableByDefault} core::int;
-              #t27.{core::Set::add}(#t29){(core::int) → core::bool};
+              #t27.{core::Set::add}{Invariant}(#t29);
             }
           }
         }
@@ -336,14 +336,14 @@
       core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         dynamic e = :sync-for-iterator.{core::Iterator::current};
-        #t30.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:21:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+        #t30.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:21:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...d}, // Error.
-                                    ^", null){(core::int, core::int) → void};
+                                    ^", null);
       }
     }
   } =>#t30, block {
     final core::Set<core::int> #t31 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:22:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...a}, // Error.
                                      ^".{core::Iterable::iterator};
@@ -351,13 +351,13 @@
         final dynamic #t32 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t33 = #t32 as{TypeError,ForNonNullableByDefault} core::int;
-          #t31.{core::Set::add}(#t33){(core::int) → core::bool};
+          #t31.{core::Set::add}{Invariant}(#t33);
         }
       }
     }
   } =>#t31, block {
     final core::Set<core::int> #t34 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:23:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...b}, // Error.
                                      ^".{core::Iterable::iterator};
@@ -365,13 +365,13 @@
         final dynamic #t35 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t36 = #t35 as{TypeError,ForNonNullableByDefault} core::int;
-          #t34.{core::Set::add}(#t36){(core::int) → core::bool};
+          #t34.{core::Set::add}{Invariant}(#t36);
         }
       }
     }
   } =>#t34, block {
     final core::Set<core::int> #t37 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:24:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...c}, // Error.
                                      ^".{core::Iterable::iterator};
@@ -379,76 +379,76 @@
         final dynamic #t38 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t39 = #t38 as{TypeError,ForNonNullableByDefault} core::int;
-          #t37.{core::Set::add}(#t39){(core::int) → core::bool};
+          #t37.{core::Set::add}{Invariant}(#t39);
         }
       }
     }
   } =>#t37, block {
     final core::Map<core::int, core::int> #t40 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t40.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:25:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
+      #t40.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:25:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...d}, // Error.
-                                     ^", null){(core::int, core::int) → void};
+                                     ^", null);
   } =>#t40, block {
     final core::Set<core::int> #t41 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t42 = a;
-    if(!(#t42 == null)) {
+    if(!#t42.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t42{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t43 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t44 = #t43 as{TypeError,ForNonNullableByDefault} core::int;
-          #t41.{core::Set::add}(#t44){(core::int) → core::bool};
+          #t41.{core::Set::add}{Invariant}(#t44);
         }
       }
     }
   } =>#t41, block {
     final core::Set<core::int> #t45 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t46 = b;
-    if(!(#t46 == null)) {
+    if(!#t46.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t46{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t47 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t48 = #t47 as{TypeError,ForNonNullableByDefault} core::int;
-          #t45.{core::Set::add}(#t48){(core::int) → core::bool};
+          #t45.{core::Set::add}{Invariant}(#t48);
         }
       }
     }
   } =>#t45, block {
     final core::Set<core::int> #t49 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t50 = c;
-    if(!(#t50 == null)) {
+    if(!#t50.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t50{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t51 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t52 = #t51 as{TypeError,ForNonNullableByDefault} core::int;
-          #t49.{core::Set::add}(#t52){(core::int) → core::bool};
+          #t49.{core::Set::add}{Invariant}(#t52);
         }
       }
     }
   } =>#t49, block {
     final core::Map<core::int, core::int> #t53 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t54 = d;
-    if(!(#t54 == null)) {
+    if(!#t54.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t54{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t55 = :sync-for-iterator.{core::Iterator::current};
-        #t53.{core::Map::[]=}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t53.{core::Map::[]=}{Invariant}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value});
       }
     }
   } =>#t53, block {
     final core::Set<core::int> #t56 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t57 = a;
-      if(!(#t57 == null)) {
+      if(!#t57.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t57{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t58 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t59 = #t58 as{TypeError,ForNonNullableByDefault} core::int;
-            #t56.{core::Set::add}(#t59){(core::int) → core::bool};
+            #t56.{core::Set::add}{Invariant}(#t59);
           }
         }
       }
@@ -457,13 +457,13 @@
     final core::Set<core::int> #t60 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t61 = b;
-      if(!(#t61 == null)) {
+      if(!#t61.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t61{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t62 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t63 = #t62 as{TypeError,ForNonNullableByDefault} core::int;
-            #t60.{core::Set::add}(#t63){(core::int) → core::bool};
+            #t60.{core::Set::add}{Invariant}(#t63);
           }
         }
       }
@@ -472,13 +472,13 @@
     final core::Set<core::int> #t64 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t65 = c;
-      if(!(#t65 == null)) {
+      if(!#t65.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t65{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t66 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t67 = #t66 as{TypeError,ForNonNullableByDefault} core::int;
-            #t64.{core::Set::add}(#t67){(core::int) → core::bool};
+            #t64.{core::Set::add}{Invariant}(#t67);
           }
         }
       }
@@ -487,11 +487,11 @@
     final core::Map<core::int, core::int> #t68 = <core::int, core::int>{};
     if(condition) {
       final core::Map<core::int, core::int>? #t69 = d;
-      if(!(#t69 == null)) {
+      if(!#t69.{core::Object::==}(null)) {
         core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t69{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::int, core::int> #t70 = :sync-for-iterator.{core::Iterator::current};
-          #t68.{core::Map::[]=}(#t70.{core::MapEntry::key}, #t70.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t68.{core::Map::[]=}{Invariant}(#t70.{core::MapEntry::key}, #t70.{core::MapEntry::value});
         }
       }
     }
@@ -503,13 +503,13 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Iterable<dynamic>? #t72 = a;
-          if(!(#t72 == null)) {
+          if(!#t72.{core::Object::==}(null)) {
             core::Iterator<dynamic> :sync-for-iterator = #t72{core::Iterable<dynamic>}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final dynamic #t73 = :sync-for-iterator.{core::Iterator::current};
               {
                 final core::int #t74 = #t73 as{TypeError,ForNonNullableByDefault} core::int;
-                #t71.{core::Set::add}(#t74){(core::int) → core::bool};
+                #t71.{core::Set::add}{Invariant}(#t74);
               }
             }
           }
@@ -524,13 +524,13 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Iterable<dynamic>? #t76 = b;
-          if(!(#t76 == null)) {
+          if(!#t76.{core::Object::==}(null)) {
             core::Iterator<dynamic> :sync-for-iterator = #t76{core::Iterable<dynamic>}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final dynamic #t77 = :sync-for-iterator.{core::Iterator::current};
               {
                 final core::int #t78 = #t77 as{TypeError,ForNonNullableByDefault} core::int;
-                #t75.{core::Set::add}(#t78){(core::int) → core::bool};
+                #t75.{core::Set::add}{Invariant}(#t78);
               }
             }
           }
@@ -545,13 +545,13 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Iterable<dynamic>? #t80 = c;
-          if(!(#t80 == null)) {
+          if(!#t80.{core::Object::==}(null)) {
             core::Iterator<dynamic> :sync-for-iterator = #t80{core::Iterable<dynamic>}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final dynamic #t81 = :sync-for-iterator.{core::Iterator::current};
               {
                 final core::int #t82 = #t81 as{TypeError,ForNonNullableByDefault} core::int;
-                #t79.{core::Set::add}(#t82){(core::int) → core::bool};
+                #t79.{core::Set::add}{Invariant}(#t82);
               }
             }
           }
@@ -566,11 +566,11 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Map<core::int, core::int>? #t84 = d;
-          if(!(#t84 == null)) {
+          if(!#t84.{core::Object::==}(null)) {
             core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t84{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final core::MapEntry<core::int, core::int> #t85 = :sync-for-iterator.{core::Iterator::current};
-              #t83.{core::Map::[]=}(#t85.{core::MapEntry::key}, #t85.{core::MapEntry::value}){(core::int, core::int) → void};
+              #t83.{core::Map::[]=}{Invariant}(#t85.{core::MapEntry::key}, #t85.{core::MapEntry::value});
             }
           }
         }
@@ -578,58 +578,58 @@
     }
   } =>#t83, block {
     final core::Set<core::int> #t86 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t87 = a;
-      if(!(#t87 == null)) {
+      if(!#t87.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t87{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t88 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t89 = #t88 as{TypeError,ForNonNullableByDefault} core::int;
-            #t86.{core::Set::add}(#t89){(core::int) → core::bool};
+            #t86.{core::Set::add}{Invariant}(#t89);
           }
         }
       }
     }
   } =>#t86, block {
     final core::Set<core::int> #t90 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t91 = b;
-      if(!(#t91 == null)) {
+      if(!#t91.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t91{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t92 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t93 = #t92 as{TypeError,ForNonNullableByDefault} core::int;
-            #t90.{core::Set::add}(#t93){(core::int) → core::bool};
+            #t90.{core::Set::add}{Invariant}(#t93);
           }
         }
       }
     }
   } =>#t90, block {
     final core::Set<core::int> #t94 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t95 = c;
-      if(!(#t95 == null)) {
+      if(!#t95.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t95{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t96 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t97 = #t96 as{TypeError,ForNonNullableByDefault} core::int;
-            #t94.{core::Set::add}(#t97){(core::int) → core::bool};
+            #t94.{core::Set::add}{Invariant}(#t97);
           }
         }
       }
     }
   } =>#t94, block {
     final core::Map<core::int, core::int> #t98 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Map<core::int, core::int>? #t99 = d;
-      if(!(#t99 == null)) {
+      if(!#t99.{core::Object::==}(null)) {
         core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t99{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::int, core::int> #t100 = :sync-for-iterator.{core::Iterator::current};
-          #t98.{core::Map::[]=}(#t100.{core::MapEntry::key}, #t100.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t98.{core::Map::[]=}{Invariant}(#t100.{core::MapEntry::key}, #t100.{core::MapEntry::value});
         }
       }
     }
@@ -646,7 +646,7 @@
         final dynamic #t102 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t103 = #t102 as{TypeError,ForNonNullableByDefault} core::int;
-          #t101.{core::Set::add}(#t103){(core::int) → core::bool};
+          #t101.{core::Set::add}{Invariant}(#t103);
         }
       }
     }
@@ -660,7 +660,7 @@
         final dynamic #t105 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t106 = #t105 as{TypeError,ForNonNullableByDefault} core::int;
-          #t104.{core::Set::add}(#t106){(core::int) → core::bool};
+          #t104.{core::Set::add}{Invariant}(#t106);
         }
       }
     }
@@ -674,7 +674,7 @@
         final dynamic #t108 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t109 = #t108 as{TypeError,ForNonNullableByDefault} core::int;
-          #t107.{core::Set::add}(#t109){(core::int) → core::bool};
+          #t107.{core::Set::add}{Invariant}(#t109);
         }
       }
     }
@@ -684,9 +684,9 @@
     <int, int>{...x}, // Error.
                   ^": null}, block {
     final core::Set<core::int> #t110 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t110.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:55:14: Error: Unexpected type 'W' of a spread.  Expected 'dynamic' or an Iterable.
+    #t110.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:55:14: Error: Unexpected type 'W' of a spread.  Expected 'dynamic' or an Iterable.
     <int>{...w}, // Error.
-             ^"){(core::int) → core::bool};
+             ^");
   } =>#t110, block {
     final core::Set<core::int> #t111 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
@@ -697,7 +697,7 @@
         final dynamic #t112 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t113 = #t112 as{TypeError,ForNonNullableByDefault} core::int;
-          #t111.{core::Set::add}(#t113){(core::int) → core::bool};
+          #t111.{core::Set::add}{Invariant}(#t113);
         }
       }
     }
@@ -711,7 +711,7 @@
         final dynamic #t115 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t116 = #t115 as{TypeError,ForNonNullableByDefault} core::int;
-          #t114.{core::Set::add}(#t116){(core::int) → core::bool};
+          #t114.{core::Set::add}{Invariant}(#t116);
         }
       }
     }
@@ -725,16 +725,16 @@
         final dynamic #t118 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t119 = #t118 as{TypeError,ForNonNullableByDefault} core::int;
-          #t117.{core::Set::add}(#t119){(core::int) → core::bool};
+          #t117.{core::Set::add}{Invariant}(#t119);
         }
       }
     }
   } =>#t117, block {
     final core::Map<core::int, core::int> #t120 = <core::int, core::int>{};
     if(condition)
-      #t120.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:59:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+      #t120.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:59:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...w}, // Error.
-                       ^", null){(core::int, core::int) → void};
+                       ^", null);
   } =>#t120, block {
     final core::Set<core::int> #t121 = new col::_CompactLinkedHashSet::•<core::int>();
     {
@@ -749,7 +749,7 @@
             final dynamic #t122 = :sync-for-iterator.{core::Iterator::current};
             {
               final core::int #t123 = #t122 as{TypeError,ForNonNullableByDefault} core::int;
-              #t121.{core::Set::add}(#t123){(core::int) → core::bool};
+              #t121.{core::Set::add}{Invariant}(#t123);
             }
           }
         }
@@ -769,7 +769,7 @@
             final dynamic #t125 = :sync-for-iterator.{core::Iterator::current};
             {
               final core::int #t126 = #t125 as{TypeError,ForNonNullableByDefault} core::int;
-              #t124.{core::Set::add}(#t126){(core::int) → core::bool};
+              #t124.{core::Set::add}{Invariant}(#t126);
             }
           }
         }
@@ -789,7 +789,7 @@
             final dynamic #t128 = :sync-for-iterator.{core::Iterator::current};
             {
               final core::int #t129 = #t128 as{TypeError,ForNonNullableByDefault} core::int;
-              #t127.{core::Set::add}(#t129){(core::int) → core::bool};
+              #t127.{core::Set::add}{Invariant}(#t129);
             }
           }
         }
@@ -801,14 +801,14 @@
       core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         dynamic e = :sync-for-iterator.{core::Iterator::current};
-        #t130.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:63:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+        #t130.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:63:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...w}, // Error.
-                                    ^", null){(core::int, core::int) → void};
+                                    ^", null);
       }
     }
   } =>#t130, block {
     final core::Set<core::int> #t131 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:64:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...x}, // Error.
                                      ^".{core::Iterable::iterator};
@@ -816,13 +816,13 @@
         final dynamic #t132 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t133 = #t132 as{TypeError,ForNonNullableByDefault} core::int;
-          #t131.{core::Set::add}(#t133){(core::int) → core::bool};
+          #t131.{core::Set::add}{Invariant}(#t133);
         }
       }
     }
   } =>#t131, block {
     final core::Set<core::int> #t134 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:65:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...y}, // Error.
                                      ^".{core::Iterable::iterator};
@@ -830,13 +830,13 @@
         final dynamic #t135 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t136 = #t135 as{TypeError,ForNonNullableByDefault} core::int;
-          #t134.{core::Set::add}(#t136){(core::int) → core::bool};
+          #t134.{core::Set::add}{Invariant}(#t136);
         }
       }
     }
   } =>#t134, block {
     final core::Set<core::int> #t137 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:66:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...z}, // Error.
                                      ^".{core::Iterable::iterator};
@@ -844,76 +844,76 @@
         final dynamic #t138 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t139 = #t138 as{TypeError,ForNonNullableByDefault} core::int;
-          #t137.{core::Set::add}(#t139){(core::int) → core::bool};
+          #t137.{core::Set::add}{Invariant}(#t139);
         }
       }
     }
   } =>#t137, block {
     final core::Map<core::int, core::int> #t140 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t140.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:67:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1))
+      #t140.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:67:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...w}, // Error.
-                                     ^", null){(core::int, core::int) → void};
+                                     ^", null);
   } =>#t140, block {
     final core::Set<core::int> #t141 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t142 = x;
-    if(!(#t142 == null)) {
+    if(!#t142.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t142{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t143 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t144 = #t143 as{TypeError,ForNonNullableByDefault} core::int;
-          #t141.{core::Set::add}(#t144){(core::int) → core::bool};
+          #t141.{core::Set::add}{Invariant}(#t144);
         }
       }
     }
   } =>#t141, block {
     final core::Set<core::int> #t145 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t146 = y;
-    if(!(#t146 == null)) {
+    if(!#t146.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t146{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t147 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t148 = #t147 as{TypeError,ForNonNullableByDefault} core::int;
-          #t145.{core::Set::add}(#t148){(core::int) → core::bool};
+          #t145.{core::Set::add}{Invariant}(#t148);
         }
       }
     }
   } =>#t145, block {
     final core::Set<core::int> #t149 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t150 = z;
-    if(!(#t150 == null)) {
+    if(!#t150.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t150{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t151 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t152 = #t151 as{TypeError,ForNonNullableByDefault} core::int;
-          #t149.{core::Set::add}(#t152){(core::int) → core::bool};
+          #t149.{core::Set::add}{Invariant}(#t152);
         }
       }
     }
   } =>#t149, block {
     final core::Map<core::int, core::int> #t153 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t154 = w;
-    if(!(#t154 == null)) {
+    if(!#t154.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t154{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t155 = :sync-for-iterator.{core::Iterator::current};
-        #t153.{core::Map::[]=}(#t155.{core::MapEntry::key}, #t155.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t153.{core::Map::[]=}{Invariant}(#t155.{core::MapEntry::key}, #t155.{core::MapEntry::value});
       }
     }
   } =>#t153, block {
     final core::Set<core::int> #t156 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t157 = x;
-      if(!(#t157 == null)) {
+      if(!#t157.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t157{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t158 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t159 = #t158 as{TypeError,ForNonNullableByDefault} core::int;
-            #t156.{core::Set::add}(#t159){(core::int) → core::bool};
+            #t156.{core::Set::add}{Invariant}(#t159);
           }
         }
       }
@@ -922,13 +922,13 @@
     final core::Set<core::int> #t160 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t161 = y;
-      if(!(#t161 == null)) {
+      if(!#t161.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t161{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t162 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t163 = #t162 as{TypeError,ForNonNullableByDefault} core::int;
-            #t160.{core::Set::add}(#t163){(core::int) → core::bool};
+            #t160.{core::Set::add}{Invariant}(#t163);
           }
         }
       }
@@ -937,13 +937,13 @@
     final core::Set<core::int> #t164 = new col::_CompactLinkedHashSet::•<core::int>();
     if(condition) {
       final core::Iterable<dynamic>? #t165 = z;
-      if(!(#t165 == null)) {
+      if(!#t165.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t165{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t166 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t167 = #t166 as{TypeError,ForNonNullableByDefault} core::int;
-            #t164.{core::Set::add}(#t167){(core::int) → core::bool};
+            #t164.{core::Set::add}{Invariant}(#t167);
           }
         }
       }
@@ -952,11 +952,11 @@
     final core::Map<core::int, core::int> #t168 = <core::int, core::int>{};
     if(condition) {
       final core::Map<core::int, core::int>? #t169 = w;
-      if(!(#t169 == null)) {
+      if(!#t169.{core::Object::==}(null)) {
         core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t169{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::int, core::int> #t170 = :sync-for-iterator.{core::Iterator::current};
-          #t168.{core::Map::[]=}(#t170.{core::MapEntry::key}, #t170.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t168.{core::Map::[]=}{Invariant}(#t170.{core::MapEntry::key}, #t170.{core::MapEntry::value});
         }
       }
     }
@@ -968,13 +968,13 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Iterable<dynamic>? #t172 = x;
-          if(!(#t172 == null)) {
+          if(!#t172.{core::Object::==}(null)) {
             core::Iterator<dynamic> :sync-for-iterator = #t172{core::Iterable<dynamic>}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final dynamic #t173 = :sync-for-iterator.{core::Iterator::current};
               {
                 final core::int #t174 = #t173 as{TypeError,ForNonNullableByDefault} core::int;
-                #t171.{core::Set::add}(#t174){(core::int) → core::bool};
+                #t171.{core::Set::add}{Invariant}(#t174);
               }
             }
           }
@@ -989,13 +989,13 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Iterable<dynamic>? #t176 = y;
-          if(!(#t176 == null)) {
+          if(!#t176.{core::Object::==}(null)) {
             core::Iterator<dynamic> :sync-for-iterator = #t176{core::Iterable<dynamic>}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final dynamic #t177 = :sync-for-iterator.{core::Iterator::current};
               {
                 final core::int #t178 = #t177 as{TypeError,ForNonNullableByDefault} core::int;
-                #t175.{core::Set::add}(#t178){(core::int) → core::bool};
+                #t175.{core::Set::add}{Invariant}(#t178);
               }
             }
           }
@@ -1010,13 +1010,13 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Iterable<dynamic>? #t180 = z;
-          if(!(#t180 == null)) {
+          if(!#t180.{core::Object::==}(null)) {
             core::Iterator<dynamic> :sync-for-iterator = #t180{core::Iterable<dynamic>}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final dynamic #t181 = :sync-for-iterator.{core::Iterator::current};
               {
                 final core::int #t182 = #t181 as{TypeError,ForNonNullableByDefault} core::int;
-                #t179.{core::Set::add}(#t182){(core::int) → core::bool};
+                #t179.{core::Set::add}{Invariant}(#t182);
               }
             }
           }
@@ -1031,11 +1031,11 @@
         dynamic e = :sync-for-iterator.{core::Iterator::current};
         {
           final core::Map<core::int, core::int>? #t184 = w;
-          if(!(#t184 == null)) {
+          if(!#t184.{core::Object::==}(null)) {
             core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t184{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
             for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
               final core::MapEntry<core::int, core::int> #t185 = :sync-for-iterator.{core::Iterator::current};
-              #t183.{core::Map::[]=}(#t185.{core::MapEntry::key}, #t185.{core::MapEntry::value}){(core::int, core::int) → void};
+              #t183.{core::Map::[]=}{Invariant}(#t185.{core::MapEntry::key}, #t185.{core::MapEntry::value});
             }
           }
         }
@@ -1043,58 +1043,58 @@
     }
   } =>#t183, block {
     final core::Set<core::int> #t186 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t187 = x;
-      if(!(#t187 == null)) {
+      if(!#t187.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t187{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t188 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t189 = #t188 as{TypeError,ForNonNullableByDefault} core::int;
-            #t186.{core::Set::add}(#t189){(core::int) → core::bool};
+            #t186.{core::Set::add}{Invariant}(#t189);
           }
         }
       }
     }
   } =>#t186, block {
     final core::Set<core::int> #t190 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t191 = y;
-      if(!(#t191 == null)) {
+      if(!#t191.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t191{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t192 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t193 = #t192 as{TypeError,ForNonNullableByDefault} core::int;
-            #t190.{core::Set::add}(#t193){(core::int) → core::bool};
+            #t190.{core::Set::add}{Invariant}(#t193);
           }
         }
       }
     }
   } =>#t190, block {
     final core::Set<core::int> #t194 = new col::_CompactLinkedHashSet::•<core::int>();
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Iterable<dynamic>? #t195 = z;
-      if(!(#t195 == null)) {
+      if(!#t195.{core::Object::==}(null)) {
         core::Iterator<dynamic> :sync-for-iterator = #t195{core::Iterable<dynamic>}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final dynamic #t196 = :sync-for-iterator.{core::Iterator::current};
           {
             final core::int #t197 = #t196 as{TypeError,ForNonNullableByDefault} core::int;
-            #t194.{core::Set::add}(#t197){(core::int) → core::bool};
+            #t194.{core::Set::add}{Invariant}(#t197);
           }
         }
       }
     }
   } =>#t194, block {
     final core::Map<core::int, core::int> #t198 = <core::int, core::int>{};
-    for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+    for (core::int i = 0; i.{core::num::<}(42); i = i.{core::num::+}(1)) {
       final core::Map<core::int, core::int>? #t199 = w;
-      if(!(#t199 == null)) {
+      if(!#t199.{core::Object::==}(null)) {
         core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t199{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::int, core::int> #t200 = :sync-for-iterator.{core::Iterator::current};
-          #t198.{core::Map::[]=}(#t200.{core::MapEntry::key}, #t200.{core::MapEntry::value}){(core::int, core::int) → void};
+          #t198.{core::Map::[]=}{Invariant}(#t200.{core::MapEntry::key}, #t200.{core::MapEntry::value});
         }
       }
     }
diff --git a/pkg/front_end/testcases/nnbd/issue43536.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43536.dart.strong.expect
index acf5d78..de6fdb8 100644
--- a/pkg/front_end/testcases/nnbd/issue43536.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43536.dart.strong.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method foo<generic-covariant-impl E extends self::C::T%>(core::List<self::C::foo::E%> list) → dynamic {
-    core::List<self::C::foo::E%> variable = this.{self::C::method}<self::C::foo::E%>(list){(core::List<self::C::foo::E%>) → core::List<self::C::foo::E%>};
+    core::List<self::C::foo::E%> variable = this.{self::C::method}<self::C::foo::E%>(list);
   }
   method method<generic-covariant-impl F extends self::C::T%>(core::List<self::C::method::F%> list) → core::List<self::C::method::F%>
     return list;
diff --git a/pkg/front_end/testcases/nnbd/issue43536.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43536.dart.strong.transformed.expect
index acf5d78..de6fdb8 100644
--- a/pkg/front_end/testcases/nnbd/issue43536.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43536.dart.strong.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method foo<generic-covariant-impl E extends self::C::T%>(core::List<self::C::foo::E%> list) → dynamic {
-    core::List<self::C::foo::E%> variable = this.{self::C::method}<self::C::foo::E%>(list){(core::List<self::C::foo::E%>) → core::List<self::C::foo::E%>};
+    core::List<self::C::foo::E%> variable = this.{self::C::method}<self::C::foo::E%>(list);
   }
   method method<generic-covariant-impl F extends self::C::T%>(core::List<self::C::method::F%> list) → core::List<self::C::method::F%>
     return list;
diff --git a/pkg/front_end/testcases/nnbd/issue43536.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43536.dart.weak.expect
index acf5d78..de6fdb8 100644
--- a/pkg/front_end/testcases/nnbd/issue43536.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43536.dart.weak.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method foo<generic-covariant-impl E extends self::C::T%>(core::List<self::C::foo::E%> list) → dynamic {
-    core::List<self::C::foo::E%> variable = this.{self::C::method}<self::C::foo::E%>(list){(core::List<self::C::foo::E%>) → core::List<self::C::foo::E%>};
+    core::List<self::C::foo::E%> variable = this.{self::C::method}<self::C::foo::E%>(list);
   }
   method method<generic-covariant-impl F extends self::C::T%>(core::List<self::C::method::F%> list) → core::List<self::C::method::F%>
     return list;
diff --git a/pkg/front_end/testcases/nnbd/issue43536.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43536.dart.weak.transformed.expect
index acf5d78..de6fdb8 100644
--- a/pkg/front_end/testcases/nnbd/issue43536.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43536.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method foo<generic-covariant-impl E extends self::C::T%>(core::List<self::C::foo::E%> list) → dynamic {
-    core::List<self::C::foo::E%> variable = this.{self::C::method}<self::C::foo::E%>(list){(core::List<self::C::foo::E%>) → core::List<self::C::foo::E%>};
+    core::List<self::C::foo::E%> variable = this.{self::C::method}<self::C::foo::E%>(list);
   }
   method method<generic-covariant-impl F extends self::C::T%>(core::List<self::C::method::F%> list) → core::List<self::C::method::F%>
     return list;
diff --git a/pkg/front_end/testcases/nnbd/issue43591.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43591.dart.strong.expect
index 7bb6ecb..c09bec5 100644
--- a/pkg/front_end/testcases/nnbd/issue43591.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43591.dart.strong.expect
@@ -11,12 +11,12 @@
   (self::method1::S%) → self::method1::S% f = self::E|get#f<self::method1::S%>(s);
 }
 static method method2<S extends dynamic>(self::method2::S% s) → dynamic {
-  self::throws(() → void => s{dynamic}.f);
+  self::throws(() → void => s.f);
 }
 static method main() → dynamic {}
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/issue43591.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43591.dart.strong.transformed.expect
index 7bb6ecb..c09bec5 100644
--- a/pkg/front_end/testcases/nnbd/issue43591.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43591.dart.strong.transformed.expect
@@ -11,12 +11,12 @@
   (self::method1::S%) → self::method1::S% f = self::E|get#f<self::method1::S%>(s);
 }
 static method method2<S extends dynamic>(self::method2::S% s) → dynamic {
-  self::throws(() → void => s{dynamic}.f);
+  self::throws(() → void => s.f);
 }
 static method main() → dynamic {}
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/issue43591.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43591.dart.weak.expect
index 7bb6ecb..c09bec5 100644
--- a/pkg/front_end/testcases/nnbd/issue43591.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43591.dart.weak.expect
@@ -11,12 +11,12 @@
   (self::method1::S%) → self::method1::S% f = self::E|get#f<self::method1::S%>(s);
 }
 static method method2<S extends dynamic>(self::method2::S% s) → dynamic {
-  self::throws(() → void => s{dynamic}.f);
+  self::throws(() → void => s.f);
 }
 static method main() → dynamic {}
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/issue43591.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43591.dart.weak.transformed.expect
index 7bb6ecb..c09bec5 100644
--- a/pkg/front_end/testcases/nnbd/issue43591.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43591.dart.weak.transformed.expect
@@ -11,12 +11,12 @@
   (self::method1::S%) → self::method1::S% f = self::E|get#f<self::method1::S%>(s);
 }
 static method method2<S extends dynamic>(self::method2::S% s) → dynamic {
-  self::throws(() → void => s{dynamic}.f);
+  self::throws(() → void => s.f);
 }
 static method main() → dynamic {}
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/issue43716a.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43716a.dart.strong.expect
index ac73263..6482203 100644
--- a/pkg/front_end/testcases/nnbd/issue43716a.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43716a.dart.strong.expect
@@ -17,12 +17,12 @@
     ;
   method m(generic-covariant-impl self::C::X% x, generic-covariant-impl self::C::Y% y) → core::Object {
     self::C<core::Object?, core::Object?>? z = self::b ?{self::C<core::Object?, core::Object?>?} x : y;
-    if(z == null)
+    if(z.{core::Object::==}(null))
       throw 0;
     return let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue43716a.dart:15:14: Error: A value of type 'Object?' can't be returned from a function with return type 'Object' because 'Object?' is nullable and 'Object' isn't.
  - 'Object' is from 'dart:core'.
     return z.x; // Error.
-             ^" in z{self::C<core::Object?, core::Object?>}.{self::C::x}{core::Object?} as{TypeError,ForNonNullableByDefault} core::Object;
+             ^" in z{self::C<core::Object?, core::Object?>}.{self::C::x} as{TypeError,ForNonNullableByDefault} core::Object;
   }
 }
 static field core::bool b = true;
diff --git a/pkg/front_end/testcases/nnbd/issue43716a.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43716a.dart.strong.transformed.expect
index 03d87ee..144101c 100644
--- a/pkg/front_end/testcases/nnbd/issue43716a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43716a.dart.strong.transformed.expect
@@ -17,12 +17,12 @@
     ;
   method m(generic-covariant-impl self::C::X% x, generic-covariant-impl self::C::Y% y) → core::Object {
     self::C<core::Object?, core::Object?>? z = self::b ?{self::C<core::Object?, core::Object?>?} x : y;
-    if(z == null)
+    if(z.{core::Object::==}(null))
       throw 0;
     return let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue43716a.dart:15:14: Error: A value of type 'Object?' can't be returned from a function with return type 'Object' because 'Object?' is nullable and 'Object' isn't.
  - 'Object' is from 'dart:core'.
     return z.x; // Error.
-             ^" in let core::Object? #t2 = z{self::C<core::Object?, core::Object?>}.{self::C::x}{core::Object?} in #t2.==(null) ?{core::Object} #t2 as{TypeError,ForNonNullableByDefault} core::Object : #t2{core::Object};
+             ^" in let core::Object? #t2 = z{self::C<core::Object?, core::Object?>}.{self::C::x} in #t2.==(null) ?{core::Object} #t2 as{TypeError,ForNonNullableByDefault} core::Object : #t2{core::Object};
   }
 }
 static field core::bool b = true;
diff --git a/pkg/front_end/testcases/nnbd/issue43716a.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43716a.dart.weak.expect
index ac73263..6482203 100644
--- a/pkg/front_end/testcases/nnbd/issue43716a.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43716a.dart.weak.expect
@@ -17,12 +17,12 @@
     ;
   method m(generic-covariant-impl self::C::X% x, generic-covariant-impl self::C::Y% y) → core::Object {
     self::C<core::Object?, core::Object?>? z = self::b ?{self::C<core::Object?, core::Object?>?} x : y;
-    if(z == null)
+    if(z.{core::Object::==}(null))
       throw 0;
     return let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue43716a.dart:15:14: Error: A value of type 'Object?' can't be returned from a function with return type 'Object' because 'Object?' is nullable and 'Object' isn't.
  - 'Object' is from 'dart:core'.
     return z.x; // Error.
-             ^" in z{self::C<core::Object?, core::Object?>}.{self::C::x}{core::Object?} as{TypeError,ForNonNullableByDefault} core::Object;
+             ^" in z{self::C<core::Object?, core::Object?>}.{self::C::x} as{TypeError,ForNonNullableByDefault} core::Object;
   }
 }
 static field core::bool b = true;
diff --git a/pkg/front_end/testcases/nnbd/issue43716a.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43716a.dart.weak.transformed.expect
index 3c0963d..efcc89c 100644
--- a/pkg/front_end/testcases/nnbd/issue43716a.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43716a.dart.weak.transformed.expect
@@ -17,12 +17,12 @@
     ;
   method m(generic-covariant-impl self::C::X% x, generic-covariant-impl self::C::Y% y) → core::Object {
     self::C<core::Object?, core::Object?>? z = self::b ?{self::C<core::Object?, core::Object?>?} x : y;
-    if(z == null)
+    if(z.{core::Object::==}(null))
       throw 0;
     return let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue43716a.dart:15:14: Error: A value of type 'Object?' can't be returned from a function with return type 'Object' because 'Object?' is nullable and 'Object' isn't.
  - 'Object' is from 'dart:core'.
     return z.x; // Error.
-             ^" in z{self::C<core::Object?, core::Object?>}.{self::C::x}{core::Object?};
+             ^" in z{self::C<core::Object?, core::Object?>}.{self::C::x};
   }
 }
 static field core::bool b = true;
diff --git a/pkg/front_end/testcases/nnbd/issue43716b.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43716b.dart.strong.expect
index 0bba0ad..eb2e00a 100644
--- a/pkg/front_end/testcases/nnbd/issue43716b.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43716b.dart.strong.expect
@@ -15,12 +15,12 @@
     : self::C::x = x, super core::Object::•()
     ;
   method m() → void {
-    (Never) →? void z = self::b ?{(Never) →? void} this.{self::C::x}{self::C::X%} : #C1;
-    if(z == null)
+    (Never) →? void z = self::b ?{(Never) →? void} this.{self::C::x} : #C1;
+    if(z.{core::Object::==}(null))
       return;
-    z{(Never) → void}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue43716b.dart:17:7: Error: The argument type 'int' can't be assigned to the parameter type 'Never'.
+    z{(Never) → void}.call(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue43716b.dart:17:7: Error: The argument type 'int' can't be assigned to the parameter type 'Never'.
     z(42); // Error.
-      ^" in 42 as{TypeError,ForNonNullableByDefault} Never){(Never) → void};
+      ^" in 42 as{TypeError,ForNonNullableByDefault} Never);
   }
 }
 static field core::bool b = true;
diff --git a/pkg/front_end/testcases/nnbd/issue43716b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43716b.dart.strong.transformed.expect
index 0bba0ad..eb2e00a 100644
--- a/pkg/front_end/testcases/nnbd/issue43716b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43716b.dart.strong.transformed.expect
@@ -15,12 +15,12 @@
     : self::C::x = x, super core::Object::•()
     ;
   method m() → void {
-    (Never) →? void z = self::b ?{(Never) →? void} this.{self::C::x}{self::C::X%} : #C1;
-    if(z == null)
+    (Never) →? void z = self::b ?{(Never) →? void} this.{self::C::x} : #C1;
+    if(z.{core::Object::==}(null))
       return;
-    z{(Never) → void}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue43716b.dart:17:7: Error: The argument type 'int' can't be assigned to the parameter type 'Never'.
+    z{(Never) → void}.call(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue43716b.dart:17:7: Error: The argument type 'int' can't be assigned to the parameter type 'Never'.
     z(42); // Error.
-      ^" in 42 as{TypeError,ForNonNullableByDefault} Never){(Never) → void};
+      ^" in 42 as{TypeError,ForNonNullableByDefault} Never);
   }
 }
 static field core::bool b = true;
diff --git a/pkg/front_end/testcases/nnbd/issue43716b.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43716b.dart.weak.expect
index 0bba0ad..eb2e00a 100644
--- a/pkg/front_end/testcases/nnbd/issue43716b.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43716b.dart.weak.expect
@@ -15,12 +15,12 @@
     : self::C::x = x, super core::Object::•()
     ;
   method m() → void {
-    (Never) →? void z = self::b ?{(Never) →? void} this.{self::C::x}{self::C::X%} : #C1;
-    if(z == null)
+    (Never) →? void z = self::b ?{(Never) →? void} this.{self::C::x} : #C1;
+    if(z.{core::Object::==}(null))
       return;
-    z{(Never) → void}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue43716b.dart:17:7: Error: The argument type 'int' can't be assigned to the parameter type 'Never'.
+    z{(Never) → void}.call(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue43716b.dart:17:7: Error: The argument type 'int' can't be assigned to the parameter type 'Never'.
     z(42); // Error.
-      ^" in 42 as{TypeError,ForNonNullableByDefault} Never){(Never) → void};
+      ^" in 42 as{TypeError,ForNonNullableByDefault} Never);
   }
 }
 static field core::bool b = true;
diff --git a/pkg/front_end/testcases/nnbd/issue43716b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43716b.dart.weak.transformed.expect
index 0bba0ad..eb2e00a 100644
--- a/pkg/front_end/testcases/nnbd/issue43716b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43716b.dart.weak.transformed.expect
@@ -15,12 +15,12 @@
     : self::C::x = x, super core::Object::•()
     ;
   method m() → void {
-    (Never) →? void z = self::b ?{(Never) →? void} this.{self::C::x}{self::C::X%} : #C1;
-    if(z == null)
+    (Never) →? void z = self::b ?{(Never) →? void} this.{self::C::x} : #C1;
+    if(z.{core::Object::==}(null))
       return;
-    z{(Never) → void}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue43716b.dart:17:7: Error: The argument type 'int' can't be assigned to the parameter type 'Never'.
+    z{(Never) → void}.call(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue43716b.dart:17:7: Error: The argument type 'int' can't be assigned to the parameter type 'Never'.
     z(42); // Error.
-      ^" in 42 as{TypeError,ForNonNullableByDefault} Never){(Never) → void};
+      ^" in 42 as{TypeError,ForNonNullableByDefault} Never);
   }
 }
 static field core::bool b = true;
diff --git a/pkg/front_end/testcases/nnbd/issue44276.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue44276.dart.strong.expect
index ce89c73..9f8c187 100644
--- a/pkg/front_end/testcases/nnbd/issue44276.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue44276.dart.strong.expect
@@ -14,6 +14,6 @@
 }
 static method fun() → core::int? {
   self::Base? a;
-  final core::int? b = let final core::int? #t1 = let final self::Base? #t2 = a in #t2 == null ?{core::int?} null : #t2{self::Base}.{self::Base::value1}{core::int?} in #t1 == null ?{core::int?} let final self::Base? #t3 = a in #t3 == null ?{core::int?} null : #t3{self::Base}.{self::Base::value2}{core::int?} : #t1{core::int};
+  final core::int? b = let final core::int? #t1 = let final self::Base? #t2 = a in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{self::Base}.{self::Base::value1} in #t1.{core::num::==}(null) ?{core::int?} let final self::Base? #t3 = a in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{self::Base}.{self::Base::value2} : #t1{core::int};
   return b;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue44276.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue44276.dart.strong.transformed.expect
index ce89c73..9f8c187 100644
--- a/pkg/front_end/testcases/nnbd/issue44276.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue44276.dart.strong.transformed.expect
@@ -14,6 +14,6 @@
 }
 static method fun() → core::int? {
   self::Base? a;
-  final core::int? b = let final core::int? #t1 = let final self::Base? #t2 = a in #t2 == null ?{core::int?} null : #t2{self::Base}.{self::Base::value1}{core::int?} in #t1 == null ?{core::int?} let final self::Base? #t3 = a in #t3 == null ?{core::int?} null : #t3{self::Base}.{self::Base::value2}{core::int?} : #t1{core::int};
+  final core::int? b = let final core::int? #t1 = let final self::Base? #t2 = a in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{self::Base}.{self::Base::value1} in #t1.{core::num::==}(null) ?{core::int?} let final self::Base? #t3 = a in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{self::Base}.{self::Base::value2} : #t1{core::int};
   return b;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue44276.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue44276.dart.weak.expect
index ce89c73..9f8c187 100644
--- a/pkg/front_end/testcases/nnbd/issue44276.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue44276.dart.weak.expect
@@ -14,6 +14,6 @@
 }
 static method fun() → core::int? {
   self::Base? a;
-  final core::int? b = let final core::int? #t1 = let final self::Base? #t2 = a in #t2 == null ?{core::int?} null : #t2{self::Base}.{self::Base::value1}{core::int?} in #t1 == null ?{core::int?} let final self::Base? #t3 = a in #t3 == null ?{core::int?} null : #t3{self::Base}.{self::Base::value2}{core::int?} : #t1{core::int};
+  final core::int? b = let final core::int? #t1 = let final self::Base? #t2 = a in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{self::Base}.{self::Base::value1} in #t1.{core::num::==}(null) ?{core::int?} let final self::Base? #t3 = a in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{self::Base}.{self::Base::value2} : #t1{core::int};
   return b;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue44276.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue44276.dart.weak.transformed.expect
index ce89c73..9f8c187 100644
--- a/pkg/front_end/testcases/nnbd/issue44276.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue44276.dart.weak.transformed.expect
@@ -14,6 +14,6 @@
 }
 static method fun() → core::int? {
   self::Base? a;
-  final core::int? b = let final core::int? #t1 = let final self::Base? #t2 = a in #t2 == null ?{core::int?} null : #t2{self::Base}.{self::Base::value1}{core::int?} in #t1 == null ?{core::int?} let final self::Base? #t3 = a in #t3 == null ?{core::int?} null : #t3{self::Base}.{self::Base::value2}{core::int?} : #t1{core::int};
+  final core::int? b = let final core::int? #t1 = let final self::Base? #t2 = a in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{self::Base}.{self::Base::value1} in #t1.{core::num::==}(null) ?{core::int?} let final self::Base? #t3 = a in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{self::Base}.{self::Base::value2} : #t1{core::int};
   return b;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.strong.expect
index 150af53..e9cfab0 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.strong.expect
@@ -12,11 +12,11 @@
 static method id<T extends core::Object? = dynamic>(self::id::T% value) → self::id::T%
   return value;
 static method main() → dynamic async {
-  FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int};
-  FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int} in block {
+  FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1));
+  FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)) in block {
     self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t1);
   } =>#t1;
-  FutureOr<core::int>z = let final core::int #t2 = 1.{core::num::+}(self::contextType<core::int>(1)){(core::num) → core::int} in block {
+  FutureOr<core::int>z = let final core::int #t2 = 1.{core::num::+}(self::contextType<core::int>(1)) in block {
     self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t2);
   } =>#t2;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect
index e08b045..ef34905 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect
@@ -24,11 +24,11 @@
     try {
       #L1:
       {
-        FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int};
-        FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int} in block {
+        FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1));
+        FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)) in block {
           self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t1);
         } =>#t1;
-        FutureOr<core::int>z = let final core::int #t2 = 1.{core::num::+}(self::contextType<core::int>(1)){(core::num) → core::int} in block {
+        FutureOr<core::int>z = let final core::int #t2 = 1.{core::num::+}(self::contextType<core::int>(1)) in block {
           self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t2);
         } =>#t2;
       }
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.weak.expect
index 150af53..e9cfab0 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.weak.expect
@@ -12,11 +12,11 @@
 static method id<T extends core::Object? = dynamic>(self::id::T% value) → self::id::T%
   return value;
 static method main() → dynamic async {
-  FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int};
-  FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int} in block {
+  FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1));
+  FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)) in block {
     self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t1);
   } =>#t1;
-  FutureOr<core::int>z = let final core::int #t2 = 1.{core::num::+}(self::contextType<core::int>(1)){(core::num) → core::int} in block {
+  FutureOr<core::int>z = let final core::int #t2 = 1.{core::num::+}(self::contextType<core::int>(1)) in block {
     self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t2);
   } =>#t2;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect
index e08b045..ef34905 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect
@@ -24,11 +24,11 @@
     try {
       #L1:
       {
-        FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int};
-        FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int} in block {
+        FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1));
+        FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)) in block {
           self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t1);
         } =>#t1;
-        FutureOr<core::int>z = let final core::int #t2 = 1.{core::num::+}(self::contextType<core::int>(1)){(core::num) → core::int} in block {
+        FutureOr<core::int>z = let final core::int #t2 = 1.{core::num::+}(self::contextType<core::int>(1)) in block {
           self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t2);
         } =>#t2;
       }
diff --git a/pkg/front_end/testcases/nnbd/issue45598.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue45598.dart.strong.expect
index b03a7ab..a1055bf 100644
--- a/pkg/front_end/testcases/nnbd/issue45598.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue45598.dart.strong.expect
@@ -3,6 +3,6 @@
 import "dart:core" as core;
 
 static method foo(<X extends Z% = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic>({m: core::Map<Y%, Z%>}) → dynamic bar, core::Map<core::String, core::String> m) → dynamic {
-  bar<core::String, core::String, core::String>(m: m){({m: core::Map<core::String, core::String>}) → dynamic};
+  bar.call<core::String, core::String, core::String>(m: m);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue45598.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue45598.dart.strong.transformed.expect
index b03a7ab..a1055bf 100644
--- a/pkg/front_end/testcases/nnbd/issue45598.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue45598.dart.strong.transformed.expect
@@ -3,6 +3,6 @@
 import "dart:core" as core;
 
 static method foo(<X extends Z% = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic>({m: core::Map<Y%, Z%>}) → dynamic bar, core::Map<core::String, core::String> m) → dynamic {
-  bar<core::String, core::String, core::String>(m: m){({m: core::Map<core::String, core::String>}) → dynamic};
+  bar.call<core::String, core::String, core::String>(m: m);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue45598.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue45598.dart.weak.expect
index b03a7ab..a1055bf 100644
--- a/pkg/front_end/testcases/nnbd/issue45598.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue45598.dart.weak.expect
@@ -3,6 +3,6 @@
 import "dart:core" as core;
 
 static method foo(<X extends Z% = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic>({m: core::Map<Y%, Z%>}) → dynamic bar, core::Map<core::String, core::String> m) → dynamic {
-  bar<core::String, core::String, core::String>(m: m){({m: core::Map<core::String, core::String>}) → dynamic};
+  bar.call<core::String, core::String, core::String>(m: m);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue45598.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue45598.dart.weak.transformed.expect
index b03a7ab..a1055bf 100644
--- a/pkg/front_end/testcases/nnbd/issue45598.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue45598.dart.weak.transformed.expect
@@ -3,6 +3,6 @@
 import "dart:core" as core;
 
 static method foo(<X extends Z% = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic>({m: core::Map<Y%, Z%>}) → dynamic bar, core::Map<core::String, core::String> m) → dynamic {
-  bar<core::String, core::String, core::String>(m: m){({m: core::Map<core::String, core::String>}) → dynamic};
+  bar.call<core::String, core::String, core::String>(m: m);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue45598_2.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue45598_2.dart.strong.expect
index f0813ae..9c145d3 100644
--- a/pkg/front_end/testcases/nnbd/issue45598_2.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue45598_2.dart.strong.expect
@@ -4,7 +4,7 @@
 
 static method foo(core::Map<core::String, core::String> m) → dynamic {
   function bar<X extends Z% = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic>({required core::Map<Y%, Z%> m = #C1}) → void {}
-  bar<core::String, core::String, core::String>(m: m){({required m: core::Map<core::String, core::String>}) → void};
+  bar.call<core::String, core::String, core::String>(m: m);
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/issue45598_2.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue45598_2.dart.strong.transformed.expect
index f0813ae..9c145d3 100644
--- a/pkg/front_end/testcases/nnbd/issue45598_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue45598_2.dart.strong.transformed.expect
@@ -4,7 +4,7 @@
 
 static method foo(core::Map<core::String, core::String> m) → dynamic {
   function bar<X extends Z% = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic>({required core::Map<Y%, Z%> m = #C1}) → void {}
-  bar<core::String, core::String, core::String>(m: m){({required m: core::Map<core::String, core::String>}) → void};
+  bar.call<core::String, core::String, core::String>(m: m);
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/issue45598_2.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue45598_2.dart.weak.expect
index f0813ae..9c145d3 100644
--- a/pkg/front_end/testcases/nnbd/issue45598_2.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue45598_2.dart.weak.expect
@@ -4,7 +4,7 @@
 
 static method foo(core::Map<core::String, core::String> m) → dynamic {
   function bar<X extends Z% = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic>({required core::Map<Y%, Z%> m = #C1}) → void {}
-  bar<core::String, core::String, core::String>(m: m){({required m: core::Map<core::String, core::String>}) → void};
+  bar.call<core::String, core::String, core::String>(m: m);
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/issue45598_2.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue45598_2.dart.weak.transformed.expect
index f0813ae..9c145d3 100644
--- a/pkg/front_end/testcases/nnbd/issue45598_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue45598_2.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 
 static method foo(core::Map<core::String, core::String> m) → dynamic {
   function bar<X extends Z% = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic>({required core::Map<Y%, Z%> m = #C1}) → void {}
-  bar<core::String, core::String, core::String>(m: m){({required m: core::Map<core::String, core::String>}) → void};
+  bar.call<core::String, core::String, core::String>(m: m);
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/issue_39286.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue_39286.dart.strong.expect
index ebe9eae..95a3402 100644
--- a/pkg/front_end/testcases/nnbd/issue_39286.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue_39286.dart.strong.expect
@@ -18,8 +18,8 @@
 }
 static method test(self::C x) → void {
   let final self::C #t1 = x in block {
-    #t1.{self::C::f}(){() → self::D?}!.{self::D::g}(){() → void};
-    #t1.{self::C::h}(){() → void};
+    #t1.{self::C::f}()!.{self::D::g}();
+    #t1.{self::C::h}();
   } =>#t1;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue_39286.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue_39286.dart.strong.transformed.expect
index ebe9eae..95a3402 100644
--- a/pkg/front_end/testcases/nnbd/issue_39286.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue_39286.dart.strong.transformed.expect
@@ -18,8 +18,8 @@
 }
 static method test(self::C x) → void {
   let final self::C #t1 = x in block {
-    #t1.{self::C::f}(){() → self::D?}!.{self::D::g}(){() → void};
-    #t1.{self::C::h}(){() → void};
+    #t1.{self::C::f}()!.{self::D::g}();
+    #t1.{self::C::h}();
   } =>#t1;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue_39286.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue_39286.dart.weak.expect
index ebe9eae..95a3402 100644
--- a/pkg/front_end/testcases/nnbd/issue_39286.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue_39286.dart.weak.expect
@@ -18,8 +18,8 @@
 }
 static method test(self::C x) → void {
   let final self::C #t1 = x in block {
-    #t1.{self::C::f}(){() → self::D?}!.{self::D::g}(){() → void};
-    #t1.{self::C::h}(){() → void};
+    #t1.{self::C::f}()!.{self::D::g}();
+    #t1.{self::C::h}();
   } =>#t1;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue_39286.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue_39286.dart.weak.transformed.expect
index ebe9eae..95a3402 100644
--- a/pkg/front_end/testcases/nnbd/issue_39286.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue_39286.dart.weak.transformed.expect
@@ -18,8 +18,8 @@
 }
 static method test(self::C x) → void {
   let final self::C #t1 = x in block {
-    #t1.{self::C::f}(){() → self::D?}!.{self::D::g}(){() → void};
-    #t1.{self::C::h}(){() → void};
+    #t1.{self::C::f}()!.{self::D::g}();
+    #t1.{self::C::h}();
   } =>#t1;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue_39286_2.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue_39286_2.dart.strong.expect
index 261dcc1..b21ab32 100644
--- a/pkg/front_end/testcases/nnbd/issue_39286_2.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue_39286_2.dart.strong.expect
@@ -36,8 +36,8 @@
 }
 static method test(self::C x) → void {
   let final self::C #t1 = x in block {
-    #t1.{self::C::f}(){() → self::D?}!.{self::D::g}(){() → self::D}.{self::D::[]}("Hi!"){(core::String) → core::String}!;
-    #t1.{self::C::h}(){() → self::C}!.{self::C::y} = 2;
+    #t1.{self::C::f}()!.{self::D::g}().{self::D::[]}("Hi!")!;
+    #t1.{self::C::h}()!.{self::C::y} = 2;
   } =>#t1;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue_39286_2.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue_39286_2.dart.strong.transformed.expect
index 261dcc1..b21ab32 100644
--- a/pkg/front_end/testcases/nnbd/issue_39286_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue_39286_2.dart.strong.transformed.expect
@@ -36,8 +36,8 @@
 }
 static method test(self::C x) → void {
   let final self::C #t1 = x in block {
-    #t1.{self::C::f}(){() → self::D?}!.{self::D::g}(){() → self::D}.{self::D::[]}("Hi!"){(core::String) → core::String}!;
-    #t1.{self::C::h}(){() → self::C}!.{self::C::y} = 2;
+    #t1.{self::C::f}()!.{self::D::g}().{self::D::[]}("Hi!")!;
+    #t1.{self::C::h}()!.{self::C::y} = 2;
   } =>#t1;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue_39286_2.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue_39286_2.dart.weak.expect
index 261dcc1..b21ab32 100644
--- a/pkg/front_end/testcases/nnbd/issue_39286_2.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue_39286_2.dart.weak.expect
@@ -36,8 +36,8 @@
 }
 static method test(self::C x) → void {
   let final self::C #t1 = x in block {
-    #t1.{self::C::f}(){() → self::D?}!.{self::D::g}(){() → self::D}.{self::D::[]}("Hi!"){(core::String) → core::String}!;
-    #t1.{self::C::h}(){() → self::C}!.{self::C::y} = 2;
+    #t1.{self::C::f}()!.{self::D::g}().{self::D::[]}("Hi!")!;
+    #t1.{self::C::h}()!.{self::C::y} = 2;
   } =>#t1;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/issue_39286_2.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue_39286_2.dart.weak.transformed.expect
index 261dcc1..b21ab32 100644
--- a/pkg/front_end/testcases/nnbd/issue_39286_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue_39286_2.dart.weak.transformed.expect
@@ -36,8 +36,8 @@
 }
 static method test(self::C x) → void {
   let final self::C #t1 = x in block {
-    #t1.{self::C::f}(){() → self::D?}!.{self::D::g}(){() → self::D}.{self::D::[]}("Hi!"){(core::String) → core::String}!;
-    #t1.{self::C::h}(){() → self::C}!.{self::C::y} = 2;
+    #t1.{self::C::f}()!.{self::D::g}().{self::D::[]}("Hi!")!;
+    #t1.{self::C::h}()!.{self::C::y} = 2;
   } =>#t1;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/late.dart.strong.expect b/pkg/front_end/testcases/nnbd/late.dart.strong.expect
index d08482c..eaf8c2c 100644
--- a/pkg/front_end/testcases/nnbd/late.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/late.dart.strong.expect
@@ -81,7 +81,7 @@
   self::lateTopLevelField = 0;
   self::lateFinalTopLevelField = 0;
   self::Class c1 = new self::Class::•();
-  c1.{self::Class::method}(){() → dynamic};
+  c1.{self::Class::method}();
   self::Class c2 = new self::Class::•();
   c2.{self::Class::lateInstanceField} = 0;
   c2.{self::Class::lateFinalInstanceField2} = 0;
@@ -98,7 +98,7 @@
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'lateFinalInstanceFieldWithInit'.
   c.lateFinalInstanceFieldWithInit = 0;
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  c.{self::Class::methodWithErrors}(){() → dynamic};
+  c.{self::Class::methodWithErrors}();
   invalid-expression "pkg/front_end/testcases/nnbd/late.dart:67:9: Error: Setter not found: 'lateFinalStaticFieldWithInit'.
   Class.lateFinalStaticFieldWithInit = 0;
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/nnbd/late.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/late.dart.strong.transformed.expect
index d08482c..eaf8c2c 100644
--- a/pkg/front_end/testcases/nnbd/late.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/late.dart.strong.transformed.expect
@@ -81,7 +81,7 @@
   self::lateTopLevelField = 0;
   self::lateFinalTopLevelField = 0;
   self::Class c1 = new self::Class::•();
-  c1.{self::Class::method}(){() → dynamic};
+  c1.{self::Class::method}();
   self::Class c2 = new self::Class::•();
   c2.{self::Class::lateInstanceField} = 0;
   c2.{self::Class::lateFinalInstanceField2} = 0;
@@ -98,7 +98,7 @@
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'lateFinalInstanceFieldWithInit'.
   c.lateFinalInstanceFieldWithInit = 0;
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  c.{self::Class::methodWithErrors}(){() → dynamic};
+  c.{self::Class::methodWithErrors}();
   invalid-expression "pkg/front_end/testcases/nnbd/late.dart:67:9: Error: Setter not found: 'lateFinalStaticFieldWithInit'.
   Class.lateFinalStaticFieldWithInit = 0;
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/nnbd/late.dart.weak.expect b/pkg/front_end/testcases/nnbd/late.dart.weak.expect
index d08482c..eaf8c2c 100644
--- a/pkg/front_end/testcases/nnbd/late.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/late.dart.weak.expect
@@ -81,7 +81,7 @@
   self::lateTopLevelField = 0;
   self::lateFinalTopLevelField = 0;
   self::Class c1 = new self::Class::•();
-  c1.{self::Class::method}(){() → dynamic};
+  c1.{self::Class::method}();
   self::Class c2 = new self::Class::•();
   c2.{self::Class::lateInstanceField} = 0;
   c2.{self::Class::lateFinalInstanceField2} = 0;
@@ -98,7 +98,7 @@
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'lateFinalInstanceFieldWithInit'.
   c.lateFinalInstanceFieldWithInit = 0;
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  c.{self::Class::methodWithErrors}(){() → dynamic};
+  c.{self::Class::methodWithErrors}();
   invalid-expression "pkg/front_end/testcases/nnbd/late.dart:67:9: Error: Setter not found: 'lateFinalStaticFieldWithInit'.
   Class.lateFinalStaticFieldWithInit = 0;
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/nnbd/late.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/late.dart.weak.transformed.expect
index d08482c..eaf8c2c 100644
--- a/pkg/front_end/testcases/nnbd/late.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/late.dart.weak.transformed.expect
@@ -81,7 +81,7 @@
   self::lateTopLevelField = 0;
   self::lateFinalTopLevelField = 0;
   self::Class c1 = new self::Class::•();
-  c1.{self::Class::method}(){() → dynamic};
+  c1.{self::Class::method}();
   self::Class c2 = new self::Class::•();
   c2.{self::Class::lateInstanceField} = 0;
   c2.{self::Class::lateFinalInstanceField2} = 0;
@@ -98,7 +98,7 @@
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'lateFinalInstanceFieldWithInit'.
   c.lateFinalInstanceFieldWithInit = 0;
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  c.{self::Class::methodWithErrors}(){() → dynamic};
+  c.{self::Class::methodWithErrors}();
   invalid-expression "pkg/front_end/testcases/nnbd/late.dart:67:9: Error: Setter not found: 'lateFinalStaticFieldWithInit'.
   Class.lateFinalStaticFieldWithInit = 0;
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/nnbd/later.dart.strong.expect b/pkg/front_end/testcases/nnbd/later.dart.strong.expect
index 7bd7713..df47af6 100644
--- a/pkg/front_end/testcases/nnbd/later.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/later.dart.strong.expect
@@ -68,7 +68,7 @@
 
 class A extends core::Object {
   field core::int a = 42;
-  late field core::int b = this.{self::A::a}{core::int}.{core::num::*}(2){(core::num) → core::int}.{core::int::>>}(1){(core::int) → core::int};
+  late field core::int b = this.{self::A::a}.{core::num::*}(2).{core::int::>>}(1);
   synthetic constructor •() → self::A
     : super core::Object::•()
     ;
@@ -104,7 +104,7 @@
     on dynamic catch(final dynamic late, final core::StackTrace e) {
     }
   }
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print("baz");
   }
   for (core::String s in <core::String>["baz"]) {
@@ -112,8 +112,8 @@
   }
   block {
     final core::List<core::int> #t1 = <core::int>[];
-    for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t1.{core::List::add}(i){(core::int) → void};
+    for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1))
+      #t1.{core::List::add}{Invariant}(i);
   } =>#t1;
 }
 static method hest() → dynamic async {
diff --git a/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect
index 303c03a..2aba575 100644
--- a/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect
@@ -69,7 +69,7 @@
 
 class A extends core::Object {
   field core::int a = 42;
-  late field core::int b = this.{self::A::a}{core::int}.{core::num::*}(2){(core::num) → core::int}.{core::int::>>}(1){(core::int) → core::int};
+  late field core::int b = this.{self::A::a}.{core::num::*}(2).{core::int::>>}(1);
   synthetic constructor •() → self::A
     : super core::Object::•()
     ;
@@ -105,7 +105,7 @@
     on dynamic catch(final dynamic late, final core::StackTrace e) {
     }
   }
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print("baz");
   }
   {
@@ -119,8 +119,8 @@
   }
   block {
     final core::List<core::int> #t1 = core::_GrowableList::•<core::int>(0);
-    for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t1.{core::List::add}(i){(core::int) → void};
+    for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1))
+      #t1.{core::List::add}{Invariant}(i);
   } =>#t1;
 }
 static method hest() → dynamic /* originally async */ {
diff --git a/pkg/front_end/testcases/nnbd/later.dart.weak.expect b/pkg/front_end/testcases/nnbd/later.dart.weak.expect
index 7bd7713..df47af6 100644
--- a/pkg/front_end/testcases/nnbd/later.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/later.dart.weak.expect
@@ -68,7 +68,7 @@
 
 class A extends core::Object {
   field core::int a = 42;
-  late field core::int b = this.{self::A::a}{core::int}.{core::num::*}(2){(core::num) → core::int}.{core::int::>>}(1){(core::int) → core::int};
+  late field core::int b = this.{self::A::a}.{core::num::*}(2).{core::int::>>}(1);
   synthetic constructor •() → self::A
     : super core::Object::•()
     ;
@@ -104,7 +104,7 @@
     on dynamic catch(final dynamic late, final core::StackTrace e) {
     }
   }
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print("baz");
   }
   for (core::String s in <core::String>["baz"]) {
@@ -112,8 +112,8 @@
   }
   block {
     final core::List<core::int> #t1 = <core::int>[];
-    for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t1.{core::List::add}(i){(core::int) → void};
+    for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1))
+      #t1.{core::List::add}{Invariant}(i);
   } =>#t1;
 }
 static method hest() → dynamic async {
diff --git a/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect
index 303c03a..2aba575 100644
--- a/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect
@@ -69,7 +69,7 @@
 
 class A extends core::Object {
   field core::int a = 42;
-  late field core::int b = this.{self::A::a}{core::int}.{core::num::*}(2){(core::num) → core::int}.{core::int::>>}(1){(core::int) → core::int};
+  late field core::int b = this.{self::A::a}.{core::num::*}(2).{core::int::>>}(1);
   synthetic constructor •() → self::A
     : super core::Object::•()
     ;
@@ -105,7 +105,7 @@
     on dynamic catch(final dynamic late, final core::StackTrace e) {
     }
   }
-  for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+  for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     core::print("baz");
   }
   {
@@ -119,8 +119,8 @@
   }
   block {
     final core::List<core::int> #t1 = core::_GrowableList::•<core::int>(0);
-    for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
-      #t1.{core::List::add}(i){(core::int) → void};
+    for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1))
+      #t1.{core::List::add}{Invariant}(i);
   } =>#t1;
 }
 static method hest() → dynamic /* originally async */ {
diff --git a/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.strong.expect b/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.strong.expect
index 42bf683..b8f0b54 100644
--- a/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.strong.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method f() → core::Object
-  return let final core::Object? #t1 = self::g<core::Object?>(null) in #t1 == null ?{core::Object} 0 : #t1{core::Object};
+  return let final core::Object? #t1 = self::g<core::Object?>(null) in #t1.{core::Object::==}(null) ?{core::Object} 0 : #t1{core::Object};
 static method g<T extends core::Object? = dynamic>(self::g::T% t) → self::g::T%
   return t;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.strong.transformed.expect
index 42bf683..b8f0b54 100644
--- a/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method f() → core::Object
-  return let final core::Object? #t1 = self::g<core::Object?>(null) in #t1 == null ?{core::Object} 0 : #t1{core::Object};
+  return let final core::Object? #t1 = self::g<core::Object?>(null) in #t1.{core::Object::==}(null) ?{core::Object} 0 : #t1{core::Object};
 static method g<T extends core::Object? = dynamic>(self::g::T% t) → self::g::T%
   return t;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.weak.expect b/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.weak.expect
index 42bf683..b8f0b54 100644
--- a/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.weak.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method f() → core::Object
-  return let final core::Object? #t1 = self::g<core::Object?>(null) in #t1 == null ?{core::Object} 0 : #t1{core::Object};
+  return let final core::Object? #t1 = self::g<core::Object?>(null) in #t1.{core::Object::==}(null) ?{core::Object} 0 : #t1{core::Object};
 static method g<T extends core::Object? = dynamic>(self::g::T% t) → self::g::T%
   return t;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.weak.transformed.expect
index 42bf683..b8f0b54 100644
--- a/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/lhs_of_if_null.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method f() → core::Object
-  return let final core::Object? #t1 = self::g<core::Object?>(null) in #t1 == null ?{core::Object} 0 : #t1{core::Object};
+  return let final core::Object? #t1 = self::g<core::Object?>(null) in #t1.{core::Object::==}(null) ?{core::Object} 0 : #t1{core::Object};
 static method g<T extends core::Object? = dynamic>(self::g::T% t) → self::g::T%
   return t;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/load_library.dart.strong.expect b/pkg/front_end/testcases/nnbd/load_library.dart.strong.expect
index ee6401a..0e7e3b1 100644
--- a/pkg/front_end/testcases/nnbd/load_library.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/load_library.dart.strong.expect
@@ -6,9 +6,9 @@
 
 static method main() → dynamic {
   asy::Future<dynamic> v1 = LoadLibrary(math);
-  v1.{asy::Future::then}<Null>((dynamic _) → Null {}){((dynamic) → FutureOr<Null>, {onError: dart.core::Function?}) → asy::Future<Null>};
+  v1.{asy::Future::then}<Null>((dynamic _) → Null {});
   () → asy::Future<dynamic> v2 = #C1;
-  v2(){() → asy::Future<dynamic>}.{asy::Future::then}<Null>((dynamic _) → Null {}){((dynamic) → FutureOr<Null>, {onError: dart.core::Function?}) → asy::Future<Null>};
+  v2.call().{asy::Future::then}<Null>((dynamic _) → Null {});
 }
 static method _#loadLibrary_math() → asy::Future<dynamic>
   return LoadLibrary(math);
diff --git a/pkg/front_end/testcases/nnbd/load_library.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/load_library.dart.strong.transformed.expect
index ee6401a..0e7e3b1 100644
--- a/pkg/front_end/testcases/nnbd/load_library.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/load_library.dart.strong.transformed.expect
@@ -6,9 +6,9 @@
 
 static method main() → dynamic {
   asy::Future<dynamic> v1 = LoadLibrary(math);
-  v1.{asy::Future::then}<Null>((dynamic _) → Null {}){((dynamic) → FutureOr<Null>, {onError: dart.core::Function?}) → asy::Future<Null>};
+  v1.{asy::Future::then}<Null>((dynamic _) → Null {});
   () → asy::Future<dynamic> v2 = #C1;
-  v2(){() → asy::Future<dynamic>}.{asy::Future::then}<Null>((dynamic _) → Null {}){((dynamic) → FutureOr<Null>, {onError: dart.core::Function?}) → asy::Future<Null>};
+  v2.call().{asy::Future::then}<Null>((dynamic _) → Null {});
 }
 static method _#loadLibrary_math() → asy::Future<dynamic>
   return LoadLibrary(math);
diff --git a/pkg/front_end/testcases/nnbd/load_library.dart.weak.expect b/pkg/front_end/testcases/nnbd/load_library.dart.weak.expect
index ee6401a..0e7e3b1 100644
--- a/pkg/front_end/testcases/nnbd/load_library.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/load_library.dart.weak.expect
@@ -6,9 +6,9 @@
 
 static method main() → dynamic {
   asy::Future<dynamic> v1 = LoadLibrary(math);
-  v1.{asy::Future::then}<Null>((dynamic _) → Null {}){((dynamic) → FutureOr<Null>, {onError: dart.core::Function?}) → asy::Future<Null>};
+  v1.{asy::Future::then}<Null>((dynamic _) → Null {});
   () → asy::Future<dynamic> v2 = #C1;
-  v2(){() → asy::Future<dynamic>}.{asy::Future::then}<Null>((dynamic _) → Null {}){((dynamic) → FutureOr<Null>, {onError: dart.core::Function?}) → asy::Future<Null>};
+  v2.call().{asy::Future::then}<Null>((dynamic _) → Null {});
 }
 static method _#loadLibrary_math() → asy::Future<dynamic>
   return LoadLibrary(math);
diff --git a/pkg/front_end/testcases/nnbd/load_library.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/load_library.dart.weak.transformed.expect
index ee6401a..0e7e3b1 100644
--- a/pkg/front_end/testcases/nnbd/load_library.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/load_library.dart.weak.transformed.expect
@@ -6,9 +6,9 @@
 
 static method main() → dynamic {
   asy::Future<dynamic> v1 = LoadLibrary(math);
-  v1.{asy::Future::then}<Null>((dynamic _) → Null {}){((dynamic) → FutureOr<Null>, {onError: dart.core::Function?}) → asy::Future<Null>};
+  v1.{asy::Future::then}<Null>((dynamic _) → Null {});
   () → asy::Future<dynamic> v2 = #C1;
-  v2(){() → asy::Future<dynamic>}.{asy::Future::then}<Null>((dynamic _) → Null {}){((dynamic) → FutureOr<Null>, {onError: dart.core::Function?}) → asy::Future<Null>};
+  v2.call().{asy::Future::then}<Null>((dynamic _) → Null {});
 }
 static method _#loadLibrary_math() → asy::Future<dynamic>
   return LoadLibrary(math);
diff --git a/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.strong.expect b/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.strong.expect
index 03536f5..fc8db9e 100644
--- a/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.strong.expect
@@ -50,13 +50,13 @@
   self::A a = new self::A::•(x: 42);
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart:18:8: Error: Required named parameter 'y' must be provided.
   a.foo();
-       ^" in a.{self::A::foo}{<inapplicable>}.(){() → invalid-type};
+       ^" in a.{self::A::foo}();
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart:19:6: Error: Required named parameter 's' must be provided.
   a.f();
-     ^" in a.{self::A::f}{({required s: core::String}) → void}{<inapplicable>}.();
+     ^" in a.{self::A::f}.call();
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart:20:4: Error: Required named parameter 's' must be provided.
   g();
-   ^" in self::g{<inapplicable>}.();
+   ^" in self::g.call();
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.strong.transformed.expect
index 03536f5..fc8db9e 100644
--- a/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.strong.transformed.expect
@@ -50,13 +50,13 @@
   self::A a = new self::A::•(x: 42);
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart:18:8: Error: Required named parameter 'y' must be provided.
   a.foo();
-       ^" in a.{self::A::foo}{<inapplicable>}.(){() → invalid-type};
+       ^" in a.{self::A::foo}();
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart:19:6: Error: Required named parameter 's' must be provided.
   a.f();
-     ^" in a.{self::A::f}{({required s: core::String}) → void}{<inapplicable>}.();
+     ^" in a.{self::A::f}.call();
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart:20:4: Error: Required named parameter 's' must be provided.
   g();
-   ^" in self::g{<inapplicable>}.();
+   ^" in self::g.call();
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.weak.expect b/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.weak.expect
index 03536f5..fc8db9e 100644
--- a/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.weak.expect
@@ -50,13 +50,13 @@
   self::A a = new self::A::•(x: 42);
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart:18:8: Error: Required named parameter 'y' must be provided.
   a.foo();
-       ^" in a.{self::A::foo}{<inapplicable>}.(){() → invalid-type};
+       ^" in a.{self::A::foo}();
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart:19:6: Error: Required named parameter 's' must be provided.
   a.f();
-     ^" in a.{self::A::f}{({required s: core::String}) → void}{<inapplicable>}.();
+     ^" in a.{self::A::f}.call();
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart:20:4: Error: Required named parameter 's' must be provided.
   g();
-   ^" in self::g{<inapplicable>}.();
+   ^" in self::g.call();
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.weak.transformed.expect
index 03536f5..fc8db9e 100644
--- a/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.weak.transformed.expect
@@ -50,13 +50,13 @@
   self::A a = new self::A::•(x: 42);
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart:18:8: Error: Required named parameter 'y' must be provided.
   a.foo();
-       ^" in a.{self::A::foo}{<inapplicable>}.(){() → invalid-type};
+       ^" in a.{self::A::foo}();
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart:19:6: Error: Required named parameter 's' must be provided.
   a.f();
-     ^" in a.{self::A::f}{({required s: core::String}) → void}{<inapplicable>}.();
+     ^" in a.{self::A::f}.call();
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart:20:4: Error: Required named parameter 's' must be provided.
   g();
-   ^" in self::g{<inapplicable>}.();
+   ^" in self::g.call();
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/never_calls.dart.strong.expect b/pkg/front_end/testcases/nnbd/never_calls.dart.strong.expect
index 6187566..33ac05b 100644
--- a/pkg/front_end/testcases/nnbd/never_calls.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/never_calls.dart.strong.expect
@@ -3,32 +3,32 @@
 import "dart:core" as core;
 
 static method propertyGet(Never never) → dynamic {
-  Never v1 = never{Never}.foo;
-  Never v2 = never{Never}.hashCode;
-  Never v3 = never{Never}.runtimeType;
-  Never v4 = never{Never}.toString;
-  Never v5 = never{Never}.noSuchMethod;
+  Never v1 = never.foo;
+  Never v2 = never.hashCode;
+  Never v3 = never.runtimeType;
+  Never v4 = never.toString;
+  Never v5 = never.noSuchMethod;
 }
 static method propertySet(Never never) → dynamic {
-  core::int v1 = never{Never}.foo = 42;
+  core::int v1 = never.foo = 42;
 }
 static method methodInvocation(Never never, core::Invocation invocation) → dynamic {
-  Never v1 = never{Never}.foo();
-  Never v2 = never{Never}.hashCode();
-  Never v3 = never{Never}.runtimeType();
-  Never v4 = never{Never}.toString();
-  Never v5 = never{Never}.toString(foo: 42);
-  Never v6 = never{Never}.noSuchMethod(invocation);
-  Never v7 = never{Never}.noSuchMethod(42);
+  Never v1 = never.foo();
+  Never v2 = never.hashCode();
+  Never v3 = never.runtimeType();
+  Never v4 = never.toString();
+  Never v5 = never.toString(foo: 42);
+  Never v6 = never.noSuchMethod(invocation);
+  Never v7 = never.noSuchMethod(42);
 }
 static method equals(Never never) → dynamic {
-  core::bool v1 = never == null;
-  Never v2 = never =={core::Object::==}{(dynamic) → Never} never;
+  Never v1 = never.==(null);
+  Never v2 = never.==(never);
 }
 static method operator(Never never) → dynamic {
-  Never v1 = never{Never}.+(never);
-  Never v2 = never{Never}.unary-();
-  Never v3 = never{Never}.[](never);
-  Never v4 = let final Never #t1 = never in let final Never #t2 = never in let final Never #t3 = never in let final void #t4 = #t1{Never}.[]=(#t2, #t3) in #t3;
+  Never v1 = never.+(never);
+  Never v2 = never.unary-();
+  Never v3 = never.[](never);
+  Never v4 = let final Never #t1 = never in let final Never #t2 = never in let final Never #t3 = never in let final void #t4 = #t1.[]=(#t2, #t3) in #t3;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/never_calls.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/never_calls.dart.strong.transformed.expect
index 6187566..33ac05b 100644
--- a/pkg/front_end/testcases/nnbd/never_calls.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/never_calls.dart.strong.transformed.expect
@@ -3,32 +3,32 @@
 import "dart:core" as core;
 
 static method propertyGet(Never never) → dynamic {
-  Never v1 = never{Never}.foo;
-  Never v2 = never{Never}.hashCode;
-  Never v3 = never{Never}.runtimeType;
-  Never v4 = never{Never}.toString;
-  Never v5 = never{Never}.noSuchMethod;
+  Never v1 = never.foo;
+  Never v2 = never.hashCode;
+  Never v3 = never.runtimeType;
+  Never v4 = never.toString;
+  Never v5 = never.noSuchMethod;
 }
 static method propertySet(Never never) → dynamic {
-  core::int v1 = never{Never}.foo = 42;
+  core::int v1 = never.foo = 42;
 }
 static method methodInvocation(Never never, core::Invocation invocation) → dynamic {
-  Never v1 = never{Never}.foo();
-  Never v2 = never{Never}.hashCode();
-  Never v3 = never{Never}.runtimeType();
-  Never v4 = never{Never}.toString();
-  Never v5 = never{Never}.toString(foo: 42);
-  Never v6 = never{Never}.noSuchMethod(invocation);
-  Never v7 = never{Never}.noSuchMethod(42);
+  Never v1 = never.foo();
+  Never v2 = never.hashCode();
+  Never v3 = never.runtimeType();
+  Never v4 = never.toString();
+  Never v5 = never.toString(foo: 42);
+  Never v6 = never.noSuchMethod(invocation);
+  Never v7 = never.noSuchMethod(42);
 }
 static method equals(Never never) → dynamic {
-  core::bool v1 = never == null;
-  Never v2 = never =={core::Object::==}{(dynamic) → Never} never;
+  Never v1 = never.==(null);
+  Never v2 = never.==(never);
 }
 static method operator(Never never) → dynamic {
-  Never v1 = never{Never}.+(never);
-  Never v2 = never{Never}.unary-();
-  Never v3 = never{Never}.[](never);
-  Never v4 = let final Never #t1 = never in let final Never #t2 = never in let final Never #t3 = never in let final void #t4 = #t1{Never}.[]=(#t2, #t3) in #t3;
+  Never v1 = never.+(never);
+  Never v2 = never.unary-();
+  Never v3 = never.[](never);
+  Never v4 = let final Never #t1 = never in let final Never #t2 = never in let final Never #t3 = never in let final void #t4 = #t1.[]=(#t2, #t3) in #t3;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/never_calls.dart.weak.expect b/pkg/front_end/testcases/nnbd/never_calls.dart.weak.expect
index a1ee958..242bb80 100644
--- a/pkg/front_end/testcases/nnbd/never_calls.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/never_calls.dart.weak.expect
@@ -4,32 +4,32 @@
 import "dart:core" as core;
 
 static method propertyGet(Never never) → dynamic {
-  Never v1 = let final Never #t1 = (let final Never #t2 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.foo in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v2 = let final Never #t3 = (let final Never #t4 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.hashCode in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v3 = let final Never #t5 = (let final Never #t6 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v4 = let final Never #t7 = (let final Never #t8 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v5 = let final Never #t9 = (let final Never #t10 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.noSuchMethod in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v1 = let final Never #t1 = (let final Never #t2 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).foo in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v2 = let final Never #t3 = (let final Never #t4 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).hashCode in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v3 = let final Never #t5 = (let final Never #t6 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v4 = let final Never #t7 = (let final Never #t8 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v5 = let final Never #t9 = (let final Never #t10 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).noSuchMethod in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 }
 static method propertySet(Never never) → dynamic {
-  core::int v1 = (let final Never #t11 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.foo = 42;
+  core::int v1 = (let final Never #t11 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).foo = 42;
 }
 static method methodInvocation(Never never, core::Invocation invocation) → dynamic {
-  Never v1 = let final Never #t12 = (let final Never #t13 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v2 = let final Never #t14 = (let final Never #t15 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.hashCode() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v3 = let final Never #t16 = (let final Never #t17 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v4 = let final Never #t18 = (let final Never #t19 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v5 = let final Never #t20 = (let final Never #t21 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString(foo: 42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v6 = let final Never #t22 = (let final Never #t23 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.noSuchMethod(invocation) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v7 = let final Never #t24 = (let final Never #t25 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.noSuchMethod(42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v1 = let final Never #t12 = (let final Never #t13 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v2 = let final Never #t14 = (let final Never #t15 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).hashCode() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v3 = let final Never #t16 = (let final Never #t17 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v4 = let final Never #t18 = (let final Never #t19 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v5 = let final Never #t20 = (let final Never #t21 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString(foo: 42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v6 = let final Never #t22 = (let final Never #t23 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).noSuchMethod(invocation) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v7 = let final Never #t24 = (let final Never #t25 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).noSuchMethod(42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 }
 static method equals(Never never) → dynamic {
-  core::bool v1 = (let final Never #t26 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) == null;
-  Never v2 = let final Never #t27 = (let final Never #t28 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) =={core::Object::==}{(dynamic) → Never} (let final Never #t29 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v1 = let final Never #t26 = (let final Never #t27 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).==(null) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v2 = let final Never #t28 = (let final Never #t29 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).==(let final Never #t30 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 }
 static method operator(Never never) → dynamic {
-  Never v1 = let final Never #t30 = (let final Never #t31 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.+(let final Never #t32 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v2 = let final Never #t33 = (let final Never #t34 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.unary-() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v3 = let final Never #t35 = (let final Never #t36 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[](let final Never #t37 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v4 = let final Never #t38 = let final Never #t39 = let final Never #t40 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in let final Never #t41 = let final Never #t42 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in let final Never #t43 = let final Never #t44 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in let final void #t45 = #t39{Never}.[]=(#t41, #t43) in #t43 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v1 = let final Never #t31 = (let final Never #t32 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).+(let final Never #t33 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v2 = let final Never #t34 = (let final Never #t35 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).unary-() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v3 = let final Never #t36 = (let final Never #t37 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[](let final Never #t38 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v4 = let final Never #t39 = let final Never #t40 = let final Never #t41 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in let final Never #t42 = let final Never #t43 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in let final Never #t44 = let final Never #t45 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in let final void #t46 = #t40.[]=(#t42, #t44) in #t44 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/never_calls.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/never_calls.dart.weak.transformed.expect
index a1ee958..242bb80 100644
--- a/pkg/front_end/testcases/nnbd/never_calls.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/never_calls.dart.weak.transformed.expect
@@ -4,32 +4,32 @@
 import "dart:core" as core;
 
 static method propertyGet(Never never) → dynamic {
-  Never v1 = let final Never #t1 = (let final Never #t2 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.foo in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v2 = let final Never #t3 = (let final Never #t4 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.hashCode in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v3 = let final Never #t5 = (let final Never #t6 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v4 = let final Never #t7 = (let final Never #t8 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v5 = let final Never #t9 = (let final Never #t10 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.noSuchMethod in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v1 = let final Never #t1 = (let final Never #t2 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).foo in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v2 = let final Never #t3 = (let final Never #t4 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).hashCode in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v3 = let final Never #t5 = (let final Never #t6 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v4 = let final Never #t7 = (let final Never #t8 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v5 = let final Never #t9 = (let final Never #t10 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).noSuchMethod in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 }
 static method propertySet(Never never) → dynamic {
-  core::int v1 = (let final Never #t11 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.foo = 42;
+  core::int v1 = (let final Never #t11 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).foo = 42;
 }
 static method methodInvocation(Never never, core::Invocation invocation) → dynamic {
-  Never v1 = let final Never #t12 = (let final Never #t13 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v2 = let final Never #t14 = (let final Never #t15 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.hashCode() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v3 = let final Never #t16 = (let final Never #t17 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.runtimeType() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v4 = let final Never #t18 = (let final Never #t19 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v5 = let final Never #t20 = (let final Never #t21 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.toString(foo: 42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v6 = let final Never #t22 = (let final Never #t23 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.noSuchMethod(invocation) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v7 = let final Never #t24 = (let final Never #t25 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.noSuchMethod(42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v1 = let final Never #t12 = (let final Never #t13 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v2 = let final Never #t14 = (let final Never #t15 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).hashCode() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v3 = let final Never #t16 = (let final Never #t17 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).runtimeType() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v4 = let final Never #t18 = (let final Never #t19 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v5 = let final Never #t20 = (let final Never #t21 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).toString(foo: 42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v6 = let final Never #t22 = (let final Never #t23 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).noSuchMethod(invocation) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v7 = let final Never #t24 = (let final Never #t25 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).noSuchMethod(42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 }
 static method equals(Never never) → dynamic {
-  core::bool v1 = (let final Never #t26 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) == null;
-  Never v2 = let final Never #t27 = (let final Never #t28 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) =={core::Object::==}{(dynamic) → Never} (let final Never #t29 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v1 = let final Never #t26 = (let final Never #t27 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).==(null) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v2 = let final Never #t28 = (let final Never #t29 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).==(let final Never #t30 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 }
 static method operator(Never never) → dynamic {
-  Never v1 = let final Never #t30 = (let final Never #t31 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.+(let final Never #t32 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v2 = let final Never #t33 = (let final Never #t34 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.unary-() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v3 = let final Never #t35 = (let final Never #t36 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[](let final Never #t37 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  Never v4 = let final Never #t38 = let final Never #t39 = let final Never #t40 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in let final Never #t41 = let final Never #t42 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in let final Never #t43 = let final Never #t44 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in let final void #t45 = #t39{Never}.[]=(#t41, #t43) in #t43 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v1 = let final Never #t31 = (let final Never #t32 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).+(let final Never #t33 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v2 = let final Never #t34 = (let final Never #t35 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).unary-() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v3 = let final Never #t36 = (let final Never #t37 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[](let final Never #t38 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  Never v4 = let final Never #t39 = let final Never #t40 = let final Never #t41 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in let final Never #t42 = let final Never #t43 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in let final Never #t44 = let final Never #t45 = never in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in let final void #t46 = #t40.[]=(#t42, #t44) in #t44 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/never_equals.dart.strong.expect b/pkg/front_end/testcases/nnbd/never_equals.dart.strong.expect
index 6db1fcc..eafd607 100644
--- a/pkg/front_end/testcases/nnbd/never_equals.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/never_equals.dart.strong.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method test(Never nonNullableNever, Never? nullableNever) → dynamic {
-  Never v1 = nonNullableNever =={core::Object::==}{(dynamic) → Never} nonNullableNever;
-  core::bool v2 = nullableNever =={core::Object::==}{(core::Object) → core::bool} nullableNever;
+  Never v1 = nonNullableNever.==(nonNullableNever);
+  core::bool v2 = nullableNever.{core::Object::==}(nullableNever);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/never_equals.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/never_equals.dart.strong.transformed.expect
index 6db1fcc..eafd607 100644
--- a/pkg/front_end/testcases/nnbd/never_equals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/never_equals.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method test(Never nonNullableNever, Never? nullableNever) → dynamic {
-  Never v1 = nonNullableNever =={core::Object::==}{(dynamic) → Never} nonNullableNever;
-  core::bool v2 = nullableNever =={core::Object::==}{(core::Object) → core::bool} nullableNever;
+  Never v1 = nonNullableNever.==(nonNullableNever);
+  core::bool v2 = nullableNever.{core::Object::==}(nullableNever);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/never_equals.dart.weak.expect b/pkg/front_end/testcases/nnbd/never_equals.dart.weak.expect
index 3863424..52cfdac 100644
--- a/pkg/front_end/testcases/nnbd/never_equals.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/never_equals.dart.weak.expect
@@ -4,7 +4,7 @@
 import "dart:core" as core;
 
 static method test(Never nonNullableNever, Never? nullableNever) → dynamic {
-  Never v1 = let final Never #t1 = (let final Never #t2 = nonNullableNever in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) =={core::Object::==}{(dynamic) → Never} (let final Never #t3 = nonNullableNever in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  core::bool v2 = nullableNever =={core::Object::==}{(core::Object) → core::bool} nullableNever;
+  Never v1 = let final Never #t1 = (let final Never #t2 = nonNullableNever in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).==(let final Never #t3 = nonNullableNever in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  core::bool v2 = nullableNever.{core::Object::==}(nullableNever);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/never_equals.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/never_equals.dart.weak.transformed.expect
index 3863424..52cfdac 100644
--- a/pkg/front_end/testcases/nnbd/never_equals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/never_equals.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
 import "dart:core" as core;
 
 static method test(Never nonNullableNever, Never? nullableNever) → dynamic {
-  Never v1 = let final Never #t1 = (let final Never #t2 = nonNullableNever in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) =={core::Object::==}{(dynamic) → Never} (let final Never #t3 = nonNullableNever in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  core::bool v2 = nullableNever =={core::Object::==}{(core::Object) → core::bool} nullableNever;
+  Never v1 = let final Never #t1 = (let final Never #t2 = nonNullableNever in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).==(let final Never #t3 = nonNullableNever in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  core::bool v2 = nullableNever.{core::Object::==}(nullableNever);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/never_receiver.dart.strong.expect b/pkg/front_end/testcases/nnbd/never_receiver.dart.strong.expect
index cfeb55d..1a136213 100644
--- a/pkg/front_end/testcases/nnbd/never_receiver.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/never_receiver.dart.strong.expect
@@ -66,27 +66,27 @@
 import "dart:core" as core;
 
 static method foo(Never x, Never? y) → dynamic {
-  core::String local0 = y.{core::Object::toString}(){() → core::String};
-  core::int local1 = y.{core::Object::hashCode}{core::int};
-  x{Never}.foo();
-  x{Never}.bar;
-  x{Never}.baz = 42;
-  x{Never}.call();
-  x{Never}.[](42);
-  x{Never}.[]=(42, 42);
-  x = x{Never}.+(1);
-  x = x{Never}.+(1);
-  let final Never? #t1 = y in #t1 == null ?{Null} null : #t1{Never}{Never}.foo();
-  let final Never? #t2 = y in #t2 == null ?{Null} null : #t2{Never}{Never}.bar;
-  let final Never? #t3 = y in #t3 == null ?{core::int?} null : #t3{Never}{Never}.baz = 42;
-  let final Never? #t4 = y in #t4 == null ?{Null} null : #t4{Never}{Never}.call();
-  let final Never? #t5 = y in #t5 == null ?{Null} null : #t5{Never}{Never}.[](42);
-  let final Never? #t6 = y in #t6 == null ?{core::int?} null : #t6{Never}{Never}.[]=(42, 42);
-  let final Never #t7 = x in #t7 == null ?{Null} null : #t7{Never}.foo();
-  let final Never #t8 = x in #t8 == null ?{Null} null : #t8{Never}.bar;
-  let final Never #t9 = x in #t9 == null ?{core::int?} null : #t9{Never}.baz = 42;
-  let final Never #t10 = x in #t10 == null ?{Null} null : #t10{Never}.[](42);
-  let final Never #t11 = x in #t11 == null ?{core::int?} null : #t11{Never}.[]=(42, 42);
+  core::String local0 = y.{core::Object::toString}();
+  core::int local1 = y.{core::Object::hashCode};
+  x.foo();
+  x.bar;
+  x.baz = 42;
+  x.call();
+  x.[](42);
+  x.[]=(42, 42);
+  x = x.+(1);
+  x = x.+(1);
+  let final Never? #t1 = y in #t1.{core::Object::==}(null) ?{Null} null : #t1{Never}.foo();
+  let final Never? #t2 = y in #t2.{core::Object::==}(null) ?{Null} null : #t2{Never}.bar;
+  let final Never? #t3 = y in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{Never}.baz = 42;
+  let final Never? #t4 = y in #t4.{core::Object::==}(null) ?{Null} null : #t4{Never}.call();
+  let final Never? #t5 = y in #t5.{core::Object::==}(null) ?{Null} null : #t5{Never}.[](42);
+  let final Never? #t6 = y in #t6.{core::Object::==}(null) ?{core::int?} null : #t6{Never}.[]=(42, 42);
+  let final Never #t7 = x in #t7.{core::Object::==}(null) ?{Null} null : #t7.foo();
+  let final Never #t8 = x in #t8.{core::Object::==}(null) ?{Null} null : #t8.bar;
+  let final Never #t9 = x in #t9.{core::Object::==}(null) ?{core::int?} null : #t9.baz = 42;
+  let final Never #t10 = x in #t10.{core::Object::==}(null) ?{Null} null : #t10.[](42);
+  let final Never #t11 = x in #t11.{core::Object::==}(null) ?{core::int?} null : #t11.[]=(42, 42);
   invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
 Try correcting the name to the name of an existing method, or defining a method named 'foo'.
   y.foo(); // Error.
diff --git a/pkg/front_end/testcases/nnbd/never_receiver.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/never_receiver.dart.strong.transformed.expect
index 0451577..8078ed3 100644
--- a/pkg/front_end/testcases/nnbd/never_receiver.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/never_receiver.dart.strong.transformed.expect
@@ -66,27 +66,27 @@
 import "dart:core" as core;
 
 static method foo(Never x, Never? y) → dynamic {
-  core::String local0 = y.{core::Object::toString}(){() → core::String};
-  core::int local1 = y.{core::Object::hashCode}{core::int};
-  x{Never}.foo();
-  x{Never}.bar;
-  x{Never}.baz = 42;
-  x{Never}.call();
-  x{Never}.[](42);
-  x{Never}.[]=(42, 42);
-  x = x{Never}.+(1);
-  x = x{Never}.+(1);
-  let final Never? #t1 = y in #t1 == null ?{Null} null : #t1{Never}{Never}.foo();
-  let final Never? #t2 = y in #t2 == null ?{Null} null : #t2{Never}{Never}.bar;
-  let final Never? #t3 = y in #t3 == null ?{core::int?} null : #t3{Never}{Never}.baz = 42;
-  let final Never? #t4 = y in #t4 == null ?{Null} null : #t4{Never}{Never}.call();
-  let final Never? #t5 = y in #t5 == null ?{Null} null : #t5{Never}{Never}.[](42);
-  let final Never? #t6 = y in #t6 == null ?{core::int?} null : #t6{Never}{Never}.[]=(42, 42);
-  let final Never #t7 = x in #t7 == null ?{Null} null : #t7{Never}.foo();
-  let final Never #t8 = x in #t8 == null ?{Null} null : #t8{Never}.bar;
-  let final Never #t9 = x in #t9 == null ?{core::int?} null : #t9{Never}.baz = 42;
-  let final Never #t10 = x in #t10 == null ?{Null} null : #t10{Never}.[](42);
-  let final Never #t11 = x in #t11 == null ?{core::int?} null : #t11{Never}.[]=(42, 42);
+  core::String local0 = y.{core::Object::toString}();
+  core::int local1 = y.{core::Object::hashCode};
+  x.foo();
+  x.bar;
+  x.baz = 42;
+  x.call();
+  x.[](42);
+  x.[]=(42, 42);
+  x = x.+(1);
+  x = x.+(1);
+  let final Never? #t1 = y in #t1.{core::Object::==}(null) ?{Null} null : #t1{Never}.foo();
+  let final Never? #t2 = y in #t2.{core::Object::==}(null) ?{Null} null : #t2{Never}.bar;
+  let final Never? #t3 = y in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{Never}.baz = 42;
+  let final Never? #t4 = y in #t4.{core::Object::==}(null) ?{Null} null : #t4{Never}.call();
+  let final Never? #t5 = y in #t5.{core::Object::==}(null) ?{Null} null : #t5{Never}.[](42);
+  let final Never? #t6 = y in #t6.{core::Object::==}(null) ?{core::int?} null : #t6{Never}.[]=(42, 42);
+  let final Never #t7 = x in #t7.{core::Object::==}(null) ?{Null} null : #t7.foo();
+  let final Never #t8 = x in #t8.{core::Object::==}(null) ?{Null} null : #t8.bar;
+  let final Never #t9 = x in #t9.{core::Object::==}(null) ?{core::int?} null : #t9.baz = 42;
+  let final Never #t10 = x in #t10.{core::Object::==}(null) ?{Null} null : #t10.[](42);
+  let final Never #t11 = x in #t11.{core::Object::==}(null) ?{core::int?} null : #t11.[]=(42, 42);
   invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
 Try correcting the name to the name of an existing method, or defining a method named 'foo'.
   y.foo(); // Error.
diff --git a/pkg/front_end/testcases/nnbd/never_receiver.dart.weak.expect b/pkg/front_end/testcases/nnbd/never_receiver.dart.weak.expect
index c766f41..8460d43 100644
--- a/pkg/front_end/testcases/nnbd/never_receiver.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/never_receiver.dart.weak.expect
@@ -67,27 +67,27 @@
 import "dart:_internal" as _in;
 
 static method foo(Never x, Never? y) → dynamic {
-  core::String local0 = y.{core::Object::toString}(){() → core::String};
-  core::int local1 = y.{core::Object::hashCode}{core::int};
-  let final Never #t1 = (let final Never #t2 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t3 = (let final Never #t4 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.bar in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  (let final Never #t5 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.baz = 42;
-  let final Never #t6 = (let final Never #t7 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t8 = (let final Never #t9 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[](42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  (let final Never #t10 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[]=(42, 42);
-  let final Never #t11 = x = let final Never #t12 = (let final Never #t13 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.+(1) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t14 = x = let final Never #t15 = (let final Never #t16 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.+(1) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never? #t17 = y in #t17 == null ?{Null} null : let final Never #t18 = (let final Never #t19 = #t17{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never? #t20 = y in #t20 == null ?{Null} null : let final Never #t21 = (let final Never #t22 = #t20{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.bar in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never? #t23 = y in #t23 == null ?{core::int?} null : (let final Never #t24 = #t23{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.baz = 42;
-  let final Never? #t25 = y in #t25 == null ?{Null} null : let final Never #t26 = (let final Never #t27 = #t25{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never? #t28 = y in #t28 == null ?{Null} null : let final Never #t29 = (let final Never #t30 = #t28{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[](42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never? #t31 = y in #t31 == null ?{core::int?} null : (let final Never #t32 = #t31{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[]=(42, 42);
-  let final Never #t33 = let final Never #t34 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t33 == null ?{Null} null : let final Never #t35 = (let final Never #t36 = #t33 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t37 = let final Never #t38 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t37 == null ?{Null} null : let final Never #t39 = (let final Never #t40 = #t37 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.bar in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t41 = let final Never #t42 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t41 == null ?{core::int?} null : (let final Never #t43 = #t41 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.baz = 42;
-  let final Never #t44 = let final Never #t45 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t44 == null ?{Null} null : let final Never #t46 = (let final Never #t47 = #t44 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[](42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t48 = let final Never #t49 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t48 == null ?{core::int?} null : (let final Never #t50 = #t48 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[]=(42, 42);
+  core::String local0 = y.{core::Object::toString}();
+  core::int local1 = y.{core::Object::hashCode};
+  let final Never #t1 = (let final Never #t2 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t3 = (let final Never #t4 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).bar in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  (let final Never #t5 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).baz = 42;
+  let final Never #t6 = (let final Never #t7 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t8 = (let final Never #t9 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[](42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  (let final Never #t10 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[]=(42, 42);
+  let final Never #t11 = x = let final Never #t12 = (let final Never #t13 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).+(1) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t14 = x = let final Never #t15 = (let final Never #t16 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).+(1) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never? #t17 = y in #t17.{core::Object::==}(null) ?{Null} null : let final Never #t18 = (let final Never #t19 = #t17{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never? #t20 = y in #t20.{core::Object::==}(null) ?{Null} null : let final Never #t21 = (let final Never #t22 = #t20{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).bar in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never? #t23 = y in #t23.{core::Object::==}(null) ?{core::int?} null : (let final Never #t24 = #t23{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).baz = 42;
+  let final Never? #t25 = y in #t25.{core::Object::==}(null) ?{Null} null : let final Never #t26 = (let final Never #t27 = #t25{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never? #t28 = y in #t28.{core::Object::==}(null) ?{Null} null : let final Never #t29 = (let final Never #t30 = #t28{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[](42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never? #t31 = y in #t31.{core::Object::==}(null) ?{core::int?} null : (let final Never #t32 = #t31{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[]=(42, 42);
+  let final Never #t33 = let final Never #t34 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t33.{core::Object::==}(null) ?{Null} null : let final Never #t35 = (let final Never #t36 = #t33 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t37 = let final Never #t38 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t37.{core::Object::==}(null) ?{Null} null : let final Never #t39 = (let final Never #t40 = #t37 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).bar in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t41 = let final Never #t42 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t41.{core::Object::==}(null) ?{core::int?} null : (let final Never #t43 = #t41 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).baz = 42;
+  let final Never #t44 = let final Never #t45 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t44.{core::Object::==}(null) ?{Null} null : let final Never #t46 = (let final Never #t47 = #t44 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[](42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t48 = let final Never #t49 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t48.{core::Object::==}(null) ?{core::int?} null : (let final Never #t50 = #t48 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[]=(42, 42);
   invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
 Try correcting the name to the name of an existing method, or defining a method named 'foo'.
   y.foo(); // Error.
diff --git a/pkg/front_end/testcases/nnbd/never_receiver.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/never_receiver.dart.weak.transformed.expect
index 58e9b4e..7e2c429 100644
--- a/pkg/front_end/testcases/nnbd/never_receiver.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/never_receiver.dart.weak.transformed.expect
@@ -67,27 +67,27 @@
 import "dart:_internal" as _in;
 
 static method foo(Never x, Never? y) → dynamic {
-  core::String local0 = y.{core::Object::toString}(){() → core::String};
-  core::int local1 = y.{core::Object::hashCode}{core::int};
-  let final Never #t1 = (let final Never #t2 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t3 = (let final Never #t4 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.bar in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  (let final Never #t5 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.baz = 42;
-  let final Never #t6 = (let final Never #t7 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t8 = (let final Never #t9 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[](42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  (let final Never #t10 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[]=(42, 42);
-  let final Never #t11 = x = let final Never #t12 = (let final Never #t13 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.+(1) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t14 = x = let final Never #t15 = (let final Never #t16 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.+(1) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never? #t17 = y in #t17 == null ?{Null} null : let final Never #t18 = (let final Never #t19 = #t17{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never? #t20 = y in #t20 == null ?{Null} null : let final Never #t21 = (let final Never #t22 = #t20{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.bar in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never? #t23 = y in #t23 == null ?{core::int?} null : (let final Never #t24 = #t23{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.baz = 42;
-  let final Never? #t25 = y in #t25 == null ?{Null} null : let final Never #t26 = (let final Never #t27 = #t25{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never? #t28 = y in #t28 == null ?{Null} null : let final Never #t29 = (let final Never #t30 = #t28{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[](42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never? #t31 = y in #t31 == null ?{core::int?} null : (let final Never #t32 = #t31{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[]=(42, 42);
-  let final Never #t33 = let final Never #t34 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t33 == null ?{Null} null : let final Never #t35 = (let final Never #t36 = #t33 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t37 = let final Never #t38 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t37 == null ?{Null} null : let final Never #t39 = (let final Never #t40 = #t37 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.bar in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t41 = let final Never #t42 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t41 == null ?{core::int?} null : (let final Never #t43 = #t41 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.baz = 42;
-  let final Never #t44 = let final Never #t45 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t44 == null ?{Null} null : let final Never #t46 = (let final Never #t47 = #t44 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[](42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
-  let final Never #t48 = let final Never #t49 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t48 == null ?{core::int?} null : (let final Never #t50 = #t48 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")){Never}.[]=(42, 42);
+  core::String local0 = y.{core::Object::toString}();
+  core::int local1 = y.{core::Object::hashCode};
+  let final Never #t1 = (let final Never #t2 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t3 = (let final Never #t4 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).bar in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  (let final Never #t5 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).baz = 42;
+  let final Never #t6 = (let final Never #t7 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t8 = (let final Never #t9 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[](42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  (let final Never #t10 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[]=(42, 42);
+  let final Never #t11 = x = let final Never #t12 = (let final Never #t13 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).+(1) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t14 = x = let final Never #t15 = (let final Never #t16 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).+(1) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never? #t17 = y in #t17.{core::Object::==}(null) ?{Null} null : let final Never #t18 = (let final Never #t19 = #t17{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never? #t20 = y in #t20.{core::Object::==}(null) ?{Null} null : let final Never #t21 = (let final Never #t22 = #t20{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).bar in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never? #t23 = y in #t23.{core::Object::==}(null) ?{core::int?} null : (let final Never #t24 = #t23{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).baz = 42;
+  let final Never? #t25 = y in #t25.{core::Object::==}(null) ?{Null} null : let final Never #t26 = (let final Never #t27 = #t25{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never? #t28 = y in #t28.{core::Object::==}(null) ?{Null} null : let final Never #t29 = (let final Never #t30 = #t28{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[](42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never? #t31 = y in #t31.{core::Object::==}(null) ?{core::int?} null : (let final Never #t32 = #t31{Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[]=(42, 42);
+  let final Never #t33 = let final Never #t34 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t33.{core::Object::==}(null) ?{Null} null : let final Never #t35 = (let final Never #t36 = #t33 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).foo() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t37 = let final Never #t38 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t37.{core::Object::==}(null) ?{Null} null : let final Never #t39 = (let final Never #t40 = #t37 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).bar in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t41 = let final Never #t42 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t41.{core::Object::==}(null) ?{core::int?} null : (let final Never #t43 = #t41 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).baz = 42;
+  let final Never #t44 = let final Never #t45 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t44.{core::Object::==}(null) ?{Null} null : let final Never #t46 = (let final Never #t47 = #t44 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[](42) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t48 = let final Never #t49 = x in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.") in #t48.{core::Object::==}(null) ?{core::int?} null : (let final Never #t50 = #t48 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).[]=(42, 42);
   invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
 Try correcting the name to the name of an existing method, or defining a method named 'foo'.
   y.foo(); // Error.
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect
index 8c14009..f59eb15 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect
@@ -192,12 +192,12 @@
   classAndSetter = classAndSetter();
   ^^^^^^^^^^^^^^";
   self::Class c = new self::Class::•();
-  c.{self::Class::instanceMethodAndSetter} = c.{self::Class::instanceMethodAndSetter}(){() → dynamic};
+  c.{self::Class::instanceMethodAndSetter} = c.{self::Class::instanceMethodAndSetter}();
   invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:55:9: Error: Setter not found: 'staticMethodAndSetter'.
   Class.staticMethodAndSetter = Class.staticMethodAndSetter();
         ^^^^^^^^^^^^^^^^^^^^^";
   c.{self::Class::staticMethodAndInstanceSetter} = self::Class::staticMethodAndInstanceSetter();
-  self::Class::instanceMethodAndStaticSetter = c.{self::Class::instanceMethodAndStaticSetter}(){() → dynamic};
+  self::Class::instanceMethodAndStaticSetter = c.{self::Class::instanceMethodAndStaticSetter}();
   c.{self::Class::Class} = invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:61:15: Error: The getter 'Class' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'Class'.
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect
index 8c14009..f59eb15 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect
@@ -192,12 +192,12 @@
   classAndSetter = classAndSetter();
   ^^^^^^^^^^^^^^";
   self::Class c = new self::Class::•();
-  c.{self::Class::instanceMethodAndSetter} = c.{self::Class::instanceMethodAndSetter}(){() → dynamic};
+  c.{self::Class::instanceMethodAndSetter} = c.{self::Class::instanceMethodAndSetter}();
   invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:55:9: Error: Setter not found: 'staticMethodAndSetter'.
   Class.staticMethodAndSetter = Class.staticMethodAndSetter();
         ^^^^^^^^^^^^^^^^^^^^^";
   c.{self::Class::staticMethodAndInstanceSetter} = self::Class::staticMethodAndInstanceSetter();
-  self::Class::instanceMethodAndStaticSetter = c.{self::Class::instanceMethodAndStaticSetter}(){() → dynamic};
+  self::Class::instanceMethodAndStaticSetter = c.{self::Class::instanceMethodAndStaticSetter}();
   c.{self::Class::Class} = invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:61:15: Error: The getter 'Class' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'Class'.
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect
index 8c14009..f59eb15 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect
@@ -192,12 +192,12 @@
   classAndSetter = classAndSetter();
   ^^^^^^^^^^^^^^";
   self::Class c = new self::Class::•();
-  c.{self::Class::instanceMethodAndSetter} = c.{self::Class::instanceMethodAndSetter}(){() → dynamic};
+  c.{self::Class::instanceMethodAndSetter} = c.{self::Class::instanceMethodAndSetter}();
   invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:55:9: Error: Setter not found: 'staticMethodAndSetter'.
   Class.staticMethodAndSetter = Class.staticMethodAndSetter();
         ^^^^^^^^^^^^^^^^^^^^^";
   c.{self::Class::staticMethodAndInstanceSetter} = self::Class::staticMethodAndInstanceSetter();
-  self::Class::instanceMethodAndStaticSetter = c.{self::Class::instanceMethodAndStaticSetter}(){() → dynamic};
+  self::Class::instanceMethodAndStaticSetter = c.{self::Class::instanceMethodAndStaticSetter}();
   c.{self::Class::Class} = invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:61:15: Error: The getter 'Class' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'Class'.
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect
index 8c14009..f59eb15 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect
@@ -192,12 +192,12 @@
   classAndSetter = classAndSetter();
   ^^^^^^^^^^^^^^";
   self::Class c = new self::Class::•();
-  c.{self::Class::instanceMethodAndSetter} = c.{self::Class::instanceMethodAndSetter}(){() → dynamic};
+  c.{self::Class::instanceMethodAndSetter} = c.{self::Class::instanceMethodAndSetter}();
   invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:55:9: Error: Setter not found: 'staticMethodAndSetter'.
   Class.staticMethodAndSetter = Class.staticMethodAndSetter();
         ^^^^^^^^^^^^^^^^^^^^^";
   c.{self::Class::staticMethodAndInstanceSetter} = self::Class::staticMethodAndInstanceSetter();
-  self::Class::instanceMethodAndStaticSetter = c.{self::Class::instanceMethodAndStaticSetter}(){() → dynamic};
+  self::Class::instanceMethodAndStaticSetter = c.{self::Class::instanceMethodAndStaticSetter}();
   c.{self::Class::Class} = invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:61:15: Error: The getter 'Class' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'Class'.
diff --git a/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.strong.expect b/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.strong.expect
index 9cb92de..56259bd 100644
--- a/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.strong.expect
@@ -13,13 +13,13 @@
     late self::A::T% value;
     late core::int intValue;
     () → Null result = () → Null {
-      this.{self::A::bar}(value){(self::A::T%) → dynamic};
-      this.{self::A::barInt}(intValue){(core::int) → dynamic};
+      this.{self::A::bar}(value);
+      this.{self::A::barInt}(intValue);
     };
     (() → Null {
-      value = this.{self::A::baz}(){() → self::A::T%};
+      value = this.{self::A::baz}();
       intValue = 42;
-    })(){() → Null};
+    }).call();
     return result;
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.strong.transformed.expect
index 9cb92de..56259bd 100644
--- a/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
     late self::A::T% value;
     late core::int intValue;
     () → Null result = () → Null {
-      this.{self::A::bar}(value){(self::A::T%) → dynamic};
-      this.{self::A::barInt}(intValue){(core::int) → dynamic};
+      this.{self::A::bar}(value);
+      this.{self::A::barInt}(intValue);
     };
     (() → Null {
-      value = this.{self::A::baz}(){() → self::A::T%};
+      value = this.{self::A::baz}();
       intValue = 42;
-    })(){() → Null};
+    }).call();
     return result;
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.weak.expect b/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.weak.expect
index 9cb92de..56259bd 100644
--- a/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.weak.expect
@@ -13,13 +13,13 @@
     late self::A::T% value;
     late core::int intValue;
     () → Null result = () → Null {
-      this.{self::A::bar}(value){(self::A::T%) → dynamic};
-      this.{self::A::barInt}(intValue){(core::int) → dynamic};
+      this.{self::A::bar}(value);
+      this.{self::A::barInt}(intValue);
     };
     (() → Null {
-      value = this.{self::A::baz}(){() → self::A::T%};
+      value = this.{self::A::baz}();
       intValue = 42;
-    })(){() → Null};
+    }).call();
     return result;
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.weak.transformed.expect
index 9cb92de..56259bd 100644
--- a/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/not_definitely_unassigned_late_local_variables.dart.weak.transformed.expect
@@ -13,13 +13,13 @@
     late self::A::T% value;
     late core::int intValue;
     () → Null result = () → Null {
-      this.{self::A::bar}(value){(self::A::T%) → dynamic};
-      this.{self::A::barInt}(intValue){(core::int) → dynamic};
+      this.{self::A::bar}(value);
+      this.{self::A::barInt}(intValue);
     };
     (() → Null {
-      value = this.{self::A::baz}(){() → self::A::T%};
+      value = this.{self::A::baz}();
       intValue = 42;
-    })(){() → Null};
+    }).call();
     return result;
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/null_access.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_access.dart.strong.expect
index bf9303e..3474107 100644
--- a/pkg/front_end/testcases/nnbd/null_access.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_access.dart.strong.expect
@@ -125,80 +125,80 @@
 static method errors(self::Class? nullableClass, self::Class nonNullableClass, core::int? nullableInt, core::int nonNullableInt, self::NullableIndexClass? nullableNullableIndexClass) → dynamic {
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:24:3: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   -nullableInt; // error
-  ^" in nullableInt.{core::int::unary-}(){() → core::int};
+  ^" in nullableInt.{core::int::unary-}();
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:25:15: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   nullableInt + 2; // error
-              ^" in nullableInt.{core::num::+}(2){(core::num) → core::num};
+              ^" in nullableInt.{core::num::+}(2);
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:26:16: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt]; // error
-               ^" in nullableClass.{self::Class::[]}{<nullable>}.(nonNullableInt){(core::int) → core::int};
+               ^" in nullableClass.{self::Class::[]}(nonNullableInt);
   let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:27:16: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt] = nonNullableInt; // error
-               ^" in nullableClass.{self::Class::[]=}{<nullable>}.(nonNullableInt, nonNullableInt){(core::int, core::int) → void};
+               ^" in nullableClass.{self::Class::[]=}(nonNullableInt, nonNullableInt);
   let final self::Class? #t5 = nullableClass in let final core::int #t6 = nonNullableInt in let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:28:16: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt] += nonNullableInt; // error
-               ^" in #t5.{self::Class::[]=}{<nullable>}.(#t6, (let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:28:16: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
+               ^" in #t5.{self::Class::[]=}(#t6, (let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:28:16: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt] += nonNullableInt; // error
-               ^" in #t5.{self::Class::[]}{<nullable>}.(#t6){(core::int) → core::int}).{core::num::+}(nonNullableInt){(core::num) → core::int}){(core::int, core::int) → void};
+               ^" in #t5.{self::Class::[]}(#t6)).{core::num::+}(nonNullableInt));
   let final self::NullableIndexClass? #t9 = nullableNullableIndexClass in let final core::int #t10 = nonNullableInt in (let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:29:29: Error: Operator '[]' cannot be called on 'NullableIndexClass?' because it is potentially null.
  - 'NullableIndexClass' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableNullableIndexClass[nonNullableInt] ??= nonNullableInt; // error
-                            ^" in #t9.{self::NullableIndexClass::[]}{<nullable>}.(#t10){(core::int) → core::int?}) == null ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:29:29: Error: Operator '[]=' cannot be called on 'NullableIndexClass?' because it is potentially null.
+                            ^" in #t9.{self::NullableIndexClass::[]}(#t10)).{core::num::==}(null) ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:29:29: Error: Operator '[]=' cannot be called on 'NullableIndexClass?' because it is potentially null.
  - 'NullableIndexClass' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableNullableIndexClass[nonNullableInt] ??= nonNullableInt; // error
-                            ^" in #t9.{self::NullableIndexClass::[]=}{<nullable>}.(#t10, nonNullableInt){(core::int, core::int) → void} : null;
-  let final self::Class? #t13 = nullableClass in #t13 == null ?{core::int?} null : #t13{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::[]}(nonNullableInt){(core::int) → core::int};
-  let final self::Class? #t14 = nullableClass in #t14 == null ?{core::int?} null : #t14{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::[]=}(nonNullableInt, nonNullableInt){(core::int, core::int) → void};
-  let final self::Class? #t15 = nullableClass in #t15 == null ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::nonNullableClass}{self::Class} in let final core::int #t17 = nonNullableInt in #t16.{self::Class::[]=}(#t17, #t16.{self::Class::[]}(#t17){(core::int) → core::int}.{core::num::+}(nonNullableInt){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class? #t18 = nullableClass in #t18 == null ?{core::int?} null : let final self::NullableIndexClass #t19 = #t18{self::Class}.{self::Class::nonNullableNullableIndexClass}{self::NullableIndexClass} in let final core::int #t20 = nonNullableInt in #t19.{self::NullableIndexClass::[]}(#t20){(core::int) → core::int?} == null ?{core::int} #t19.{self::NullableIndexClass::[]=}(#t20, nonNullableInt){(core::int, core::int) → void} : null;
+                            ^" in #t9.{self::NullableIndexClass::[]=}(#t10, nonNullableInt) : null;
+  let final self::Class? #t13 = nullableClass in #t13.{core::Object::==}(null) ?{core::int?} null : #t13{self::Class}.{self::Class::nonNullableClass}.{self::Class::[]}(nonNullableInt);
+  let final self::Class? #t14 = nullableClass in #t14.{core::Object::==}(null) ?{core::int?} null : #t14{self::Class}.{self::Class::nonNullableClass}.{self::Class::[]=}(nonNullableInt, nonNullableInt);
+  let final self::Class? #t15 = nullableClass in #t15.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::nonNullableClass} in let final core::int #t17 = nonNullableInt in #t16.{self::Class::[]=}(#t17, #t16.{self::Class::[]}(#t17).{core::num::+}(nonNullableInt));
+  let final self::Class? #t18 = nullableClass in #t18.{core::Object::==}(null) ?{core::int?} null : let final self::NullableIndexClass #t19 = #t18{self::Class}.{self::Class::nonNullableNullableIndexClass} in let final core::int #t20 = nonNullableInt in #t19.{self::NullableIndexClass::[]}(#t20).{core::num::==}(null) ?{core::int} #t19.{self::NullableIndexClass::[]=}(#t20, nonNullableInt) : null;
   let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:37:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField; // error
-                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField}{<nullable>}.{core::int};
+                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField};
   let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:38:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField = 2; // error
-                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField}{<nullable>}. = 2;
+                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField} = 2;
   let final self::Class? #t23 = nullableClass in let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:39:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField += 2; // error
-                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField}{<nullable>}. = (let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:39:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
+                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField} = (let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:39:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField += 2; // error
-                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField}{<nullable>}.{core::int}).{core::num::+}(2){(core::num) → core::int};
-  let final self::Class? #t26 = nullableClass in #t26 == null ?{core::int?} null : #t26{self::Class}.{self::Class::nonNullableField}{core::int};
-  let final self::Class? #t27 = nullableClass in #t27 == null ?{core::int?} null : #t27{self::Class}.{self::Class::nonNullableField} = 2;
-  let final self::Class? #t28 = nullableClass in #t28 == null ?{core::int?} null : #t28.{self::Class::nonNullableField} = #t28.{self::Class::nonNullableField}{core::int}.{core::num::+}(2){(core::num) → core::int};
-  let final self::Class? #t29 = nullableClass in #t29 == null ?{core::int?} null : #t29{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::nonNullableField}{core::int};
-  let final self::Class? #t30 = nullableClass in #t30 == null ?{core::int?} null : #t30{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::nonNullableField} = 2;
+                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField}).{core::num::+}(2);
+  let final self::Class? #t26 = nullableClass in #t26.{core::Object::==}(null) ?{core::int?} null : #t26{self::Class}.{self::Class::nonNullableField};
+  let final self::Class? #t27 = nullableClass in #t27.{core::Object::==}(null) ?{core::int?} null : #t27{self::Class}.{self::Class::nonNullableField} = 2;
+  let final self::Class? #t28 = nullableClass in #t28.{core::Object::==}(null) ?{core::int?} null : #t28.{self::Class::nonNullableField} = #t28.{self::Class::nonNullableField}.{core::num::+}(2);
+  let final self::Class? #t29 = nullableClass in #t29.{core::Object::==}(null) ?{core::int?} null : #t29{self::Class}.{self::Class::nonNullableClass}.{self::Class::nonNullableField};
+  let final self::Class? #t30 = nullableClass in #t30.{core::Object::==}(null) ?{core::int?} null : #t30{self::Class}.{self::Class::nonNullableClass}.{self::Class::nonNullableField} = 2;
   let final self::Class #t31 = nonNullableClass in #t31.{self::Class::nullableField} = let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:48:34: Error: A value of type 'num' can't be assigned to a variable of type 'int?'.
   nonNullableClass.nullableField += 2; // error
                                  ^" in (let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:48:34: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   nonNullableClass.nullableField += 2; // error
-                                 ^" in #t31.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num}) as{TypeError,ForNonNullableByDefault} core::int?;
-  let final self::Class? #t34 = nullableClass in #t34 == null ?{core::num?} null : #t34.{self::Class::nullableField} = let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: A value of type 'num' can't be assigned to a variable of type 'int?'.
+                                 ^" in #t31.{self::Class::nullableField}.{core::num::+}(2)) as{TypeError,ForNonNullableByDefault} core::int?;
+  let final self::Class? #t34 = nullableClass in #t34.{core::Object::==}(null) ?{core::num?} null : #t34.{self::Class::nullableField} = let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: A value of type 'num' can't be assigned to a variable of type 'int?'.
   nullableClass?.nullableField += 2; // error
                                ^" in (let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   nullableClass?.nullableField += 2; // error
-                               ^" in #t34.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num}) as{TypeError,ForNonNullableByDefault} core::int?;
-  let final self::Class? #t37 = nullableClass in #t37 == null ?{core::int?} null : #t37.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t37.{self::Class::nonNullableField} = 0 : null;
-  let final self::Class? #t38 = nullableClass in #t38 == null ?{core::int?} null : #t38.{self::Class::nullableField}{core::int?} == null ?{core::int} #t38.{self::Class::nullableField} = 0 : null;
-  let final self::Class? #t39 = nullableClass in #t39 == null ?{core::int?} null : let final self::Class #t40 = #t39{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t40.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t40.{self::Class::nonNullableField} = 0 : null;
-  let final self::Class? #t41 = nullableClass in #t41 == null ?{core::int?} null : let final self::Class #t42 = #t41{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t42.{self::Class::nullableField}{core::int?} == null ?{core::int} #t42.{self::Class::nullableField} = 0 : null;
+                               ^" in #t34.{self::Class::nullableField}.{core::num::+}(2)) as{TypeError,ForNonNullableByDefault} core::int?;
+  let final self::Class? #t37 = nullableClass in #t37.{core::Object::==}(null) ?{core::int?} null : #t37.{self::Class::nonNullableField}.{core::num::==}(null) ?{core::int} #t37.{self::Class::nonNullableField} = 0 : null;
+  let final self::Class? #t38 = nullableClass in #t38.{core::Object::==}(null) ?{core::int?} null : #t38.{self::Class::nullableField}.{core::num::==}(null) ?{core::int} #t38.{self::Class::nullableField} = 0 : null;
+  let final self::Class? #t39 = nullableClass in #t39.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t40 = #t39{self::Class}.{self::Class::nonNullableClass} in #t40.{self::Class::nonNullableField}.{core::num::==}(null) ?{core::int} #t40.{self::Class::nonNullableField} = 0 : null;
+  let final self::Class? #t41 = nullableClass in #t41.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t42 = #t41{self::Class}.{self::Class::nonNullableClass} in #t42.{self::Class::nullableField}.{core::num::==}(null) ?{core::int} #t42.{self::Class::nullableField} = 0 : null;
   let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:57:16: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try calling using ?.call instead.
   nullableClass(); // error
-               ^" in nullableClass.{self::Class::call}{<nullable>}.(){() → self::Class};
-  nonNullableClass.{self::Class::call}(){() → self::Class};
-  let final self::Class #t44 = nonNullableClass in #t44 == null ?{self::Class?} null : #t44.{self::Class::nonNullableClass}{self::Class}.{self::Class::call}(){() → self::Class};
-  let final self::Class #t45 = nonNullableClass in #t45 == null ?{self::Class?} null : #t45.{self::Class::nonNullableClass}{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::call}(){() → self::Class};
+               ^" in nullableClass.{self::Class::call}();
+  nonNullableClass.{self::Class::call}();
+  let final self::Class #t44 = nonNullableClass in #t44.{core::Object::==}(null) ?{self::Class?} null : #t44.{self::Class::nonNullableClass}.{self::Class::call}();
+  let final self::Class #t45 = nonNullableClass in #t45.{core::Object::==}(null) ?{self::Class?} null : #t45.{self::Class::nonNullableClass}.{self::Class::nonNullableClass}.{self::Class::call}();
 }
diff --git a/pkg/front_end/testcases/nnbd/null_access.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_access.dart.strong.transformed.expect
index bf9303e..103d267 100644
--- a/pkg/front_end/testcases/nnbd/null_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_access.dart.strong.transformed.expect
@@ -125,80 +125,80 @@
 static method errors(self::Class? nullableClass, self::Class nonNullableClass, core::int? nullableInt, core::int nonNullableInt, self::NullableIndexClass? nullableNullableIndexClass) → dynamic {
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:24:3: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   -nullableInt; // error
-  ^" in nullableInt.{core::int::unary-}(){() → core::int};
+  ^" in nullableInt.{core::int::unary-}();
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:25:15: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   nullableInt + 2; // error
-              ^" in nullableInt.{core::num::+}(2){(core::num) → core::num};
+              ^" in nullableInt.{core::num::+}(2);
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:26:16: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt]; // error
-               ^" in nullableClass.{self::Class::[]}{<nullable>}.(nonNullableInt){(core::int) → core::int};
+               ^" in nullableClass.{self::Class::[]}(nonNullableInt);
   let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:27:16: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt] = nonNullableInt; // error
-               ^" in nullableClass.{self::Class::[]=}{<nullable>}.(nonNullableInt, nonNullableInt){(core::int, core::int) → void};
+               ^" in nullableClass.{self::Class::[]=}(nonNullableInt, nonNullableInt);
   let final self::Class? #t5 = nullableClass in let final core::int #t6 = nonNullableInt in let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:28:16: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt] += nonNullableInt; // error
-               ^" in #t5.{self::Class::[]=}{<nullable>}.(#t6, (let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:28:16: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
+               ^" in #t5.{self::Class::[]=}(#t6, (let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:28:16: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt] += nonNullableInt; // error
-               ^" in #t5.{self::Class::[]}{<nullable>}.(#t6){(core::int) → core::int}).{core::num::+}(nonNullableInt){(core::num) → core::int}){(core::int, core::int) → void};
+               ^" in #t5.{self::Class::[]}(#t6)).{core::num::+}(nonNullableInt));
   let final self::NullableIndexClass? #t9 = nullableNullableIndexClass in let final core::int #t10 = nonNullableInt in (let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:29:29: Error: Operator '[]' cannot be called on 'NullableIndexClass?' because it is potentially null.
  - 'NullableIndexClass' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableNullableIndexClass[nonNullableInt] ??= nonNullableInt; // error
-                            ^" in #t9.{self::NullableIndexClass::[]}{<nullable>}.(#t10){(core::int) → core::int?}) == null ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:29:29: Error: Operator '[]=' cannot be called on 'NullableIndexClass?' because it is potentially null.
+                            ^" in #t9.{self::NullableIndexClass::[]}(#t10)).{core::num::==}(null) ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:29:29: Error: Operator '[]=' cannot be called on 'NullableIndexClass?' because it is potentially null.
  - 'NullableIndexClass' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableNullableIndexClass[nonNullableInt] ??= nonNullableInt; // error
-                            ^" in #t9.{self::NullableIndexClass::[]=}{<nullable>}.(#t10, nonNullableInt){(core::int, core::int) → void} : null;
-  let final self::Class? #t13 = nullableClass in #t13 == null ?{core::int?} null : #t13{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::[]}(nonNullableInt){(core::int) → core::int};
-  let final self::Class? #t14 = nullableClass in #t14 == null ?{core::int?} null : #t14{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::[]=}(nonNullableInt, nonNullableInt){(core::int, core::int) → void};
-  let final self::Class? #t15 = nullableClass in #t15 == null ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::nonNullableClass}{self::Class} in let final core::int #t17 = nonNullableInt in #t16.{self::Class::[]=}(#t17, #t16.{self::Class::[]}(#t17){(core::int) → core::int}.{core::num::+}(nonNullableInt){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class? #t18 = nullableClass in #t18 == null ?{core::int?} null : let final self::NullableIndexClass #t19 = #t18{self::Class}.{self::Class::nonNullableNullableIndexClass}{self::NullableIndexClass} in let final core::int #t20 = nonNullableInt in #t19.{self::NullableIndexClass::[]}(#t20){(core::int) → core::int?} == null ?{core::int} #t19.{self::NullableIndexClass::[]=}(#t20, nonNullableInt){(core::int, core::int) → void} : null;
+                            ^" in #t9.{self::NullableIndexClass::[]=}(#t10, nonNullableInt) : null;
+  let final self::Class? #t13 = nullableClass in #t13.{core::Object::==}(null) ?{core::int?} null : #t13{self::Class}.{self::Class::nonNullableClass}.{self::Class::[]}(nonNullableInt);
+  let final self::Class? #t14 = nullableClass in #t14.{core::Object::==}(null) ?{core::int?} null : #t14{self::Class}.{self::Class::nonNullableClass}.{self::Class::[]=}(nonNullableInt, nonNullableInt);
+  let final self::Class? #t15 = nullableClass in #t15.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::nonNullableClass} in let final core::int #t17 = nonNullableInt in #t16.{self::Class::[]=}(#t17, #t16.{self::Class::[]}(#t17).{core::num::+}(nonNullableInt));
+  let final self::Class? #t18 = nullableClass in #t18.{core::Object::==}(null) ?{core::int?} null : let final self::NullableIndexClass #t19 = #t18{self::Class}.{self::Class::nonNullableNullableIndexClass} in let final core::int #t20 = nonNullableInt in #t19.{self::NullableIndexClass::[]}(#t20).{core::num::==}(null) ?{core::int} #t19.{self::NullableIndexClass::[]=}(#t20, nonNullableInt) : null;
   let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:37:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField; // error
-                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField}{<nullable>}.{core::int};
+                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField};
   let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:38:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField = 2; // error
-                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField}{<nullable>}. = 2;
+                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField} = 2;
   let final self::Class? #t23 = nullableClass in let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:39:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField += 2; // error
-                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField}{<nullable>}. = (let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:39:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
+                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField} = (let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:39:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField += 2; // error
-                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField}{<nullable>}.{core::int}).{core::num::+}(2){(core::num) → core::int};
-  let final self::Class? #t26 = nullableClass in #t26 == null ?{core::int?} null : #t26{self::Class}.{self::Class::nonNullableField}{core::int};
-  let final self::Class? #t27 = nullableClass in #t27 == null ?{core::int?} null : #t27{self::Class}.{self::Class::nonNullableField} = 2;
-  let final self::Class? #t28 = nullableClass in #t28 == null ?{core::int?} null : #t28.{self::Class::nonNullableField} = #t28.{self::Class::nonNullableField}{core::int}.{core::num::+}(2){(core::num) → core::int};
-  let final self::Class? #t29 = nullableClass in #t29 == null ?{core::int?} null : #t29{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::nonNullableField}{core::int};
-  let final self::Class? #t30 = nullableClass in #t30 == null ?{core::int?} null : #t30{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::nonNullableField} = 2;
+                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField}).{core::num::+}(2);
+  let final self::Class? #t26 = nullableClass in #t26.{core::Object::==}(null) ?{core::int?} null : #t26{self::Class}.{self::Class::nonNullableField};
+  let final self::Class? #t27 = nullableClass in #t27.{core::Object::==}(null) ?{core::int?} null : #t27{self::Class}.{self::Class::nonNullableField} = 2;
+  let final self::Class? #t28 = nullableClass in #t28.{core::Object::==}(null) ?{core::int?} null : #t28.{self::Class::nonNullableField} = #t28.{self::Class::nonNullableField}.{core::num::+}(2);
+  let final self::Class? #t29 = nullableClass in #t29.{core::Object::==}(null) ?{core::int?} null : #t29{self::Class}.{self::Class::nonNullableClass}.{self::Class::nonNullableField};
+  let final self::Class? #t30 = nullableClass in #t30.{core::Object::==}(null) ?{core::int?} null : #t30{self::Class}.{self::Class::nonNullableClass}.{self::Class::nonNullableField} = 2;
   let final self::Class #t31 = nonNullableClass in #t31.{self::Class::nullableField} = let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:48:34: Error: A value of type 'num' can't be assigned to a variable of type 'int?'.
   nonNullableClass.nullableField += 2; // error
-                                 ^" in (let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:48:34: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
+                                 ^" in let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:48:34: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   nonNullableClass.nullableField += 2; // error
-                                 ^" in #t31.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num}) as{TypeError,ForNonNullableByDefault} core::int?;
-  let final self::Class? #t34 = nullableClass in #t34 == null ?{core::num?} null : #t34.{self::Class::nullableField} = let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: A value of type 'num' can't be assigned to a variable of type 'int?'.
+                                 ^" in #t31.{self::Class::nullableField}.{core::num::+}(2);
+  let final self::Class? #t34 = nullableClass in #t34.{core::Object::==}(null) ?{core::num?} null : #t34.{self::Class::nullableField} = let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: A value of type 'num' can't be assigned to a variable of type 'int?'.
   nullableClass?.nullableField += 2; // error
-                               ^" in (let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
+                               ^" in let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   nullableClass?.nullableField += 2; // error
-                               ^" in #t34.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num}) as{TypeError,ForNonNullableByDefault} core::int?;
-  let final self::Class? #t37 = nullableClass in #t37 == null ?{core::int?} null : #t37.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t37.{self::Class::nonNullableField} = 0 : null;
-  let final self::Class? #t38 = nullableClass in #t38 == null ?{core::int?} null : #t38.{self::Class::nullableField}{core::int?} == null ?{core::int} #t38.{self::Class::nullableField} = 0 : null;
-  let final self::Class? #t39 = nullableClass in #t39 == null ?{core::int?} null : let final self::Class #t40 = #t39{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t40.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t40.{self::Class::nonNullableField} = 0 : null;
-  let final self::Class? #t41 = nullableClass in #t41 == null ?{core::int?} null : let final self::Class #t42 = #t41{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t42.{self::Class::nullableField}{core::int?} == null ?{core::int} #t42.{self::Class::nullableField} = 0 : null;
+                               ^" in #t34.{self::Class::nullableField}.{core::num::+}(2);
+  let final self::Class? #t37 = nullableClass in #t37.{core::Object::==}(null) ?{core::int?} null : #t37.{self::Class::nonNullableField}.{core::num::==}(null) ?{core::int} #t37.{self::Class::nonNullableField} = 0 : null;
+  let final self::Class? #t38 = nullableClass in #t38.{core::Object::==}(null) ?{core::int?} null : #t38.{self::Class::nullableField}.{core::num::==}(null) ?{core::int} #t38.{self::Class::nullableField} = 0 : null;
+  let final self::Class? #t39 = nullableClass in #t39.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t40 = #t39{self::Class}.{self::Class::nonNullableClass} in #t40.{self::Class::nonNullableField}.{core::num::==}(null) ?{core::int} #t40.{self::Class::nonNullableField} = 0 : null;
+  let final self::Class? #t41 = nullableClass in #t41.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t42 = #t41{self::Class}.{self::Class::nonNullableClass} in #t42.{self::Class::nullableField}.{core::num::==}(null) ?{core::int} #t42.{self::Class::nullableField} = 0 : null;
   let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:57:16: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try calling using ?.call instead.
   nullableClass(); // error
-               ^" in nullableClass.{self::Class::call}{<nullable>}.(){() → self::Class};
-  nonNullableClass.{self::Class::call}(){() → self::Class};
-  let final self::Class #t44 = nonNullableClass in #t44 == null ?{self::Class?} null : #t44.{self::Class::nonNullableClass}{self::Class}.{self::Class::call}(){() → self::Class};
-  let final self::Class #t45 = nonNullableClass in #t45 == null ?{self::Class?} null : #t45.{self::Class::nonNullableClass}{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::call}(){() → self::Class};
+               ^" in nullableClass.{self::Class::call}();
+  nonNullableClass.{self::Class::call}();
+  let final self::Class #t44 = nonNullableClass in #t44.{core::Object::==}(null) ?{self::Class?} null : #t44.{self::Class::nonNullableClass}.{self::Class::call}();
+  let final self::Class #t45 = nonNullableClass in #t45.{core::Object::==}(null) ?{self::Class?} null : #t45.{self::Class::nonNullableClass}.{self::Class::nonNullableClass}.{self::Class::call}();
 }
diff --git a/pkg/front_end/testcases/nnbd/null_access.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_access.dart.weak.expect
index bf9303e..3474107 100644
--- a/pkg/front_end/testcases/nnbd/null_access.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_access.dart.weak.expect
@@ -125,80 +125,80 @@
 static method errors(self::Class? nullableClass, self::Class nonNullableClass, core::int? nullableInt, core::int nonNullableInt, self::NullableIndexClass? nullableNullableIndexClass) → dynamic {
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:24:3: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   -nullableInt; // error
-  ^" in nullableInt.{core::int::unary-}(){() → core::int};
+  ^" in nullableInt.{core::int::unary-}();
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:25:15: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   nullableInt + 2; // error
-              ^" in nullableInt.{core::num::+}(2){(core::num) → core::num};
+              ^" in nullableInt.{core::num::+}(2);
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:26:16: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt]; // error
-               ^" in nullableClass.{self::Class::[]}{<nullable>}.(nonNullableInt){(core::int) → core::int};
+               ^" in nullableClass.{self::Class::[]}(nonNullableInt);
   let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:27:16: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt] = nonNullableInt; // error
-               ^" in nullableClass.{self::Class::[]=}{<nullable>}.(nonNullableInt, nonNullableInt){(core::int, core::int) → void};
+               ^" in nullableClass.{self::Class::[]=}(nonNullableInt, nonNullableInt);
   let final self::Class? #t5 = nullableClass in let final core::int #t6 = nonNullableInt in let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:28:16: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt] += nonNullableInt; // error
-               ^" in #t5.{self::Class::[]=}{<nullable>}.(#t6, (let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:28:16: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
+               ^" in #t5.{self::Class::[]=}(#t6, (let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:28:16: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt] += nonNullableInt; // error
-               ^" in #t5.{self::Class::[]}{<nullable>}.(#t6){(core::int) → core::int}).{core::num::+}(nonNullableInt){(core::num) → core::int}){(core::int, core::int) → void};
+               ^" in #t5.{self::Class::[]}(#t6)).{core::num::+}(nonNullableInt));
   let final self::NullableIndexClass? #t9 = nullableNullableIndexClass in let final core::int #t10 = nonNullableInt in (let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:29:29: Error: Operator '[]' cannot be called on 'NullableIndexClass?' because it is potentially null.
  - 'NullableIndexClass' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableNullableIndexClass[nonNullableInt] ??= nonNullableInt; // error
-                            ^" in #t9.{self::NullableIndexClass::[]}{<nullable>}.(#t10){(core::int) → core::int?}) == null ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:29:29: Error: Operator '[]=' cannot be called on 'NullableIndexClass?' because it is potentially null.
+                            ^" in #t9.{self::NullableIndexClass::[]}(#t10)).{core::num::==}(null) ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:29:29: Error: Operator '[]=' cannot be called on 'NullableIndexClass?' because it is potentially null.
  - 'NullableIndexClass' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableNullableIndexClass[nonNullableInt] ??= nonNullableInt; // error
-                            ^" in #t9.{self::NullableIndexClass::[]=}{<nullable>}.(#t10, nonNullableInt){(core::int, core::int) → void} : null;
-  let final self::Class? #t13 = nullableClass in #t13 == null ?{core::int?} null : #t13{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::[]}(nonNullableInt){(core::int) → core::int};
-  let final self::Class? #t14 = nullableClass in #t14 == null ?{core::int?} null : #t14{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::[]=}(nonNullableInt, nonNullableInt){(core::int, core::int) → void};
-  let final self::Class? #t15 = nullableClass in #t15 == null ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::nonNullableClass}{self::Class} in let final core::int #t17 = nonNullableInt in #t16.{self::Class::[]=}(#t17, #t16.{self::Class::[]}(#t17){(core::int) → core::int}.{core::num::+}(nonNullableInt){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class? #t18 = nullableClass in #t18 == null ?{core::int?} null : let final self::NullableIndexClass #t19 = #t18{self::Class}.{self::Class::nonNullableNullableIndexClass}{self::NullableIndexClass} in let final core::int #t20 = nonNullableInt in #t19.{self::NullableIndexClass::[]}(#t20){(core::int) → core::int?} == null ?{core::int} #t19.{self::NullableIndexClass::[]=}(#t20, nonNullableInt){(core::int, core::int) → void} : null;
+                            ^" in #t9.{self::NullableIndexClass::[]=}(#t10, nonNullableInt) : null;
+  let final self::Class? #t13 = nullableClass in #t13.{core::Object::==}(null) ?{core::int?} null : #t13{self::Class}.{self::Class::nonNullableClass}.{self::Class::[]}(nonNullableInt);
+  let final self::Class? #t14 = nullableClass in #t14.{core::Object::==}(null) ?{core::int?} null : #t14{self::Class}.{self::Class::nonNullableClass}.{self::Class::[]=}(nonNullableInt, nonNullableInt);
+  let final self::Class? #t15 = nullableClass in #t15.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::nonNullableClass} in let final core::int #t17 = nonNullableInt in #t16.{self::Class::[]=}(#t17, #t16.{self::Class::[]}(#t17).{core::num::+}(nonNullableInt));
+  let final self::Class? #t18 = nullableClass in #t18.{core::Object::==}(null) ?{core::int?} null : let final self::NullableIndexClass #t19 = #t18{self::Class}.{self::Class::nonNullableNullableIndexClass} in let final core::int #t20 = nonNullableInt in #t19.{self::NullableIndexClass::[]}(#t20).{core::num::==}(null) ?{core::int} #t19.{self::NullableIndexClass::[]=}(#t20, nonNullableInt) : null;
   let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:37:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField; // error
-                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField}{<nullable>}.{core::int};
+                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField};
   let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:38:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField = 2; // error
-                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField}{<nullable>}. = 2;
+                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField} = 2;
   let final self::Class? #t23 = nullableClass in let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:39:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField += 2; // error
-                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField}{<nullable>}. = (let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:39:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
+                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField} = (let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:39:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField += 2; // error
-                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField}{<nullable>}.{core::int}).{core::num::+}(2){(core::num) → core::int};
-  let final self::Class? #t26 = nullableClass in #t26 == null ?{core::int?} null : #t26{self::Class}.{self::Class::nonNullableField}{core::int};
-  let final self::Class? #t27 = nullableClass in #t27 == null ?{core::int?} null : #t27{self::Class}.{self::Class::nonNullableField} = 2;
-  let final self::Class? #t28 = nullableClass in #t28 == null ?{core::int?} null : #t28.{self::Class::nonNullableField} = #t28.{self::Class::nonNullableField}{core::int}.{core::num::+}(2){(core::num) → core::int};
-  let final self::Class? #t29 = nullableClass in #t29 == null ?{core::int?} null : #t29{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::nonNullableField}{core::int};
-  let final self::Class? #t30 = nullableClass in #t30 == null ?{core::int?} null : #t30{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::nonNullableField} = 2;
+                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField}).{core::num::+}(2);
+  let final self::Class? #t26 = nullableClass in #t26.{core::Object::==}(null) ?{core::int?} null : #t26{self::Class}.{self::Class::nonNullableField};
+  let final self::Class? #t27 = nullableClass in #t27.{core::Object::==}(null) ?{core::int?} null : #t27{self::Class}.{self::Class::nonNullableField} = 2;
+  let final self::Class? #t28 = nullableClass in #t28.{core::Object::==}(null) ?{core::int?} null : #t28.{self::Class::nonNullableField} = #t28.{self::Class::nonNullableField}.{core::num::+}(2);
+  let final self::Class? #t29 = nullableClass in #t29.{core::Object::==}(null) ?{core::int?} null : #t29{self::Class}.{self::Class::nonNullableClass}.{self::Class::nonNullableField};
+  let final self::Class? #t30 = nullableClass in #t30.{core::Object::==}(null) ?{core::int?} null : #t30{self::Class}.{self::Class::nonNullableClass}.{self::Class::nonNullableField} = 2;
   let final self::Class #t31 = nonNullableClass in #t31.{self::Class::nullableField} = let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:48:34: Error: A value of type 'num' can't be assigned to a variable of type 'int?'.
   nonNullableClass.nullableField += 2; // error
                                  ^" in (let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:48:34: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   nonNullableClass.nullableField += 2; // error
-                                 ^" in #t31.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num}) as{TypeError,ForNonNullableByDefault} core::int?;
-  let final self::Class? #t34 = nullableClass in #t34 == null ?{core::num?} null : #t34.{self::Class::nullableField} = let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: A value of type 'num' can't be assigned to a variable of type 'int?'.
+                                 ^" in #t31.{self::Class::nullableField}.{core::num::+}(2)) as{TypeError,ForNonNullableByDefault} core::int?;
+  let final self::Class? #t34 = nullableClass in #t34.{core::Object::==}(null) ?{core::num?} null : #t34.{self::Class::nullableField} = let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: A value of type 'num' can't be assigned to a variable of type 'int?'.
   nullableClass?.nullableField += 2; // error
                                ^" in (let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   nullableClass?.nullableField += 2; // error
-                               ^" in #t34.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num}) as{TypeError,ForNonNullableByDefault} core::int?;
-  let final self::Class? #t37 = nullableClass in #t37 == null ?{core::int?} null : #t37.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t37.{self::Class::nonNullableField} = 0 : null;
-  let final self::Class? #t38 = nullableClass in #t38 == null ?{core::int?} null : #t38.{self::Class::nullableField}{core::int?} == null ?{core::int} #t38.{self::Class::nullableField} = 0 : null;
-  let final self::Class? #t39 = nullableClass in #t39 == null ?{core::int?} null : let final self::Class #t40 = #t39{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t40.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t40.{self::Class::nonNullableField} = 0 : null;
-  let final self::Class? #t41 = nullableClass in #t41 == null ?{core::int?} null : let final self::Class #t42 = #t41{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t42.{self::Class::nullableField}{core::int?} == null ?{core::int} #t42.{self::Class::nullableField} = 0 : null;
+                               ^" in #t34.{self::Class::nullableField}.{core::num::+}(2)) as{TypeError,ForNonNullableByDefault} core::int?;
+  let final self::Class? #t37 = nullableClass in #t37.{core::Object::==}(null) ?{core::int?} null : #t37.{self::Class::nonNullableField}.{core::num::==}(null) ?{core::int} #t37.{self::Class::nonNullableField} = 0 : null;
+  let final self::Class? #t38 = nullableClass in #t38.{core::Object::==}(null) ?{core::int?} null : #t38.{self::Class::nullableField}.{core::num::==}(null) ?{core::int} #t38.{self::Class::nullableField} = 0 : null;
+  let final self::Class? #t39 = nullableClass in #t39.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t40 = #t39{self::Class}.{self::Class::nonNullableClass} in #t40.{self::Class::nonNullableField}.{core::num::==}(null) ?{core::int} #t40.{self::Class::nonNullableField} = 0 : null;
+  let final self::Class? #t41 = nullableClass in #t41.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t42 = #t41{self::Class}.{self::Class::nonNullableClass} in #t42.{self::Class::nullableField}.{core::num::==}(null) ?{core::int} #t42.{self::Class::nullableField} = 0 : null;
   let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:57:16: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try calling using ?.call instead.
   nullableClass(); // error
-               ^" in nullableClass.{self::Class::call}{<nullable>}.(){() → self::Class};
-  nonNullableClass.{self::Class::call}(){() → self::Class};
-  let final self::Class #t44 = nonNullableClass in #t44 == null ?{self::Class?} null : #t44.{self::Class::nonNullableClass}{self::Class}.{self::Class::call}(){() → self::Class};
-  let final self::Class #t45 = nonNullableClass in #t45 == null ?{self::Class?} null : #t45.{self::Class::nonNullableClass}{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::call}(){() → self::Class};
+               ^" in nullableClass.{self::Class::call}();
+  nonNullableClass.{self::Class::call}();
+  let final self::Class #t44 = nonNullableClass in #t44.{core::Object::==}(null) ?{self::Class?} null : #t44.{self::Class::nonNullableClass}.{self::Class::call}();
+  let final self::Class #t45 = nonNullableClass in #t45.{core::Object::==}(null) ?{self::Class?} null : #t45.{self::Class::nonNullableClass}.{self::Class::nonNullableClass}.{self::Class::call}();
 }
diff --git a/pkg/front_end/testcases/nnbd/null_access.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_access.dart.weak.transformed.expect
index bf9303e..103d267 100644
--- a/pkg/front_end/testcases/nnbd/null_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_access.dart.weak.transformed.expect
@@ -125,80 +125,80 @@
 static method errors(self::Class? nullableClass, self::Class nonNullableClass, core::int? nullableInt, core::int nonNullableInt, self::NullableIndexClass? nullableNullableIndexClass) → dynamic {
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:24:3: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   -nullableInt; // error
-  ^" in nullableInt.{core::int::unary-}(){() → core::int};
+  ^" in nullableInt.{core::int::unary-}();
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:25:15: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   nullableInt + 2; // error
-              ^" in nullableInt.{core::num::+}(2){(core::num) → core::num};
+              ^" in nullableInt.{core::num::+}(2);
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:26:16: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt]; // error
-               ^" in nullableClass.{self::Class::[]}{<nullable>}.(nonNullableInt){(core::int) → core::int};
+               ^" in nullableClass.{self::Class::[]}(nonNullableInt);
   let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:27:16: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt] = nonNullableInt; // error
-               ^" in nullableClass.{self::Class::[]=}{<nullable>}.(nonNullableInt, nonNullableInt){(core::int, core::int) → void};
+               ^" in nullableClass.{self::Class::[]=}(nonNullableInt, nonNullableInt);
   let final self::Class? #t5 = nullableClass in let final core::int #t6 = nonNullableInt in let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:28:16: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt] += nonNullableInt; // error
-               ^" in #t5.{self::Class::[]=}{<nullable>}.(#t6, (let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:28:16: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
+               ^" in #t5.{self::Class::[]=}(#t6, (let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:28:16: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableClass[nonNullableInt] += nonNullableInt; // error
-               ^" in #t5.{self::Class::[]}{<nullable>}.(#t6){(core::int) → core::int}).{core::num::+}(nonNullableInt){(core::num) → core::int}){(core::int, core::int) → void};
+               ^" in #t5.{self::Class::[]}(#t6)).{core::num::+}(nonNullableInt));
   let final self::NullableIndexClass? #t9 = nullableNullableIndexClass in let final core::int #t10 = nonNullableInt in (let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:29:29: Error: Operator '[]' cannot be called on 'NullableIndexClass?' because it is potentially null.
  - 'NullableIndexClass' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableNullableIndexClass[nonNullableInt] ??= nonNullableInt; // error
-                            ^" in #t9.{self::NullableIndexClass::[]}{<nullable>}.(#t10){(core::int) → core::int?}) == null ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:29:29: Error: Operator '[]=' cannot be called on 'NullableIndexClass?' because it is potentially null.
+                            ^" in #t9.{self::NullableIndexClass::[]}(#t10)).{core::num::==}(null) ?{core::int} let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:29:29: Error: Operator '[]=' cannot be called on 'NullableIndexClass?' because it is potentially null.
  - 'NullableIndexClass' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
   nullableNullableIndexClass[nonNullableInt] ??= nonNullableInt; // error
-                            ^" in #t9.{self::NullableIndexClass::[]=}{<nullable>}.(#t10, nonNullableInt){(core::int, core::int) → void} : null;
-  let final self::Class? #t13 = nullableClass in #t13 == null ?{core::int?} null : #t13{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::[]}(nonNullableInt){(core::int) → core::int};
-  let final self::Class? #t14 = nullableClass in #t14 == null ?{core::int?} null : #t14{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::[]=}(nonNullableInt, nonNullableInt){(core::int, core::int) → void};
-  let final self::Class? #t15 = nullableClass in #t15 == null ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::nonNullableClass}{self::Class} in let final core::int #t17 = nonNullableInt in #t16.{self::Class::[]=}(#t17, #t16.{self::Class::[]}(#t17){(core::int) → core::int}.{core::num::+}(nonNullableInt){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class? #t18 = nullableClass in #t18 == null ?{core::int?} null : let final self::NullableIndexClass #t19 = #t18{self::Class}.{self::Class::nonNullableNullableIndexClass}{self::NullableIndexClass} in let final core::int #t20 = nonNullableInt in #t19.{self::NullableIndexClass::[]}(#t20){(core::int) → core::int?} == null ?{core::int} #t19.{self::NullableIndexClass::[]=}(#t20, nonNullableInt){(core::int, core::int) → void} : null;
+                            ^" in #t9.{self::NullableIndexClass::[]=}(#t10, nonNullableInt) : null;
+  let final self::Class? #t13 = nullableClass in #t13.{core::Object::==}(null) ?{core::int?} null : #t13{self::Class}.{self::Class::nonNullableClass}.{self::Class::[]}(nonNullableInt);
+  let final self::Class? #t14 = nullableClass in #t14.{core::Object::==}(null) ?{core::int?} null : #t14{self::Class}.{self::Class::nonNullableClass}.{self::Class::[]=}(nonNullableInt, nonNullableInt);
+  let final self::Class? #t15 = nullableClass in #t15.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::nonNullableClass} in let final core::int #t17 = nonNullableInt in #t16.{self::Class::[]=}(#t17, #t16.{self::Class::[]}(#t17).{core::num::+}(nonNullableInt));
+  let final self::Class? #t18 = nullableClass in #t18.{core::Object::==}(null) ?{core::int?} null : let final self::NullableIndexClass #t19 = #t18{self::Class}.{self::Class::nonNullableNullableIndexClass} in let final core::int #t20 = nonNullableInt in #t19.{self::NullableIndexClass::[]}(#t20).{core::num::==}(null) ?{core::int} #t19.{self::NullableIndexClass::[]=}(#t20, nonNullableInt) : null;
   let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:37:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField; // error
-                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField}{<nullable>}.{core::int};
+                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField};
   let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:38:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField = 2; // error
-                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField}{<nullable>}. = 2;
+                ^^^^^^^^^^^^^^^^" in nullableClass.{self::Class::nonNullableField} = 2;
   let final self::Class? #t23 = nullableClass in let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:39:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField += 2; // error
-                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField}{<nullable>}. = (let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:39:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
+                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField} = (let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:39:17: Error: Property 'nonNullableField' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try accessing using ?. instead.
   nullableClass.nonNullableField += 2; // error
-                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField}{<nullable>}.{core::int}).{core::num::+}(2){(core::num) → core::int};
-  let final self::Class? #t26 = nullableClass in #t26 == null ?{core::int?} null : #t26{self::Class}.{self::Class::nonNullableField}{core::int};
-  let final self::Class? #t27 = nullableClass in #t27 == null ?{core::int?} null : #t27{self::Class}.{self::Class::nonNullableField} = 2;
-  let final self::Class? #t28 = nullableClass in #t28 == null ?{core::int?} null : #t28.{self::Class::nonNullableField} = #t28.{self::Class::nonNullableField}{core::int}.{core::num::+}(2){(core::num) → core::int};
-  let final self::Class? #t29 = nullableClass in #t29 == null ?{core::int?} null : #t29{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::nonNullableField}{core::int};
-  let final self::Class? #t30 = nullableClass in #t30 == null ?{core::int?} null : #t30{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::nonNullableField} = 2;
+                ^^^^^^^^^^^^^^^^" in #t23.{self::Class::nonNullableField}).{core::num::+}(2);
+  let final self::Class? #t26 = nullableClass in #t26.{core::Object::==}(null) ?{core::int?} null : #t26{self::Class}.{self::Class::nonNullableField};
+  let final self::Class? #t27 = nullableClass in #t27.{core::Object::==}(null) ?{core::int?} null : #t27{self::Class}.{self::Class::nonNullableField} = 2;
+  let final self::Class? #t28 = nullableClass in #t28.{core::Object::==}(null) ?{core::int?} null : #t28.{self::Class::nonNullableField} = #t28.{self::Class::nonNullableField}.{core::num::+}(2);
+  let final self::Class? #t29 = nullableClass in #t29.{core::Object::==}(null) ?{core::int?} null : #t29{self::Class}.{self::Class::nonNullableClass}.{self::Class::nonNullableField};
+  let final self::Class? #t30 = nullableClass in #t30.{core::Object::==}(null) ?{core::int?} null : #t30{self::Class}.{self::Class::nonNullableClass}.{self::Class::nonNullableField} = 2;
   let final self::Class #t31 = nonNullableClass in #t31.{self::Class::nullableField} = let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:48:34: Error: A value of type 'num' can't be assigned to a variable of type 'int?'.
   nonNullableClass.nullableField += 2; // error
-                                 ^" in (let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:48:34: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
+                                 ^" in let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:48:34: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   nonNullableClass.nullableField += 2; // error
-                                 ^" in #t31.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num}) as{TypeError,ForNonNullableByDefault} core::int?;
-  let final self::Class? #t34 = nullableClass in #t34 == null ?{core::num?} null : #t34.{self::Class::nullableField} = let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: A value of type 'num' can't be assigned to a variable of type 'int?'.
+                                 ^" in #t31.{self::Class::nullableField}.{core::num::+}(2);
+  let final self::Class? #t34 = nullableClass in #t34.{core::Object::==}(null) ?{core::num?} null : #t34.{self::Class::nullableField} = let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: A value of type 'num' can't be assigned to a variable of type 'int?'.
   nullableClass?.nullableField += 2; // error
-                               ^" in (let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
+                               ^" in let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   nullableClass?.nullableField += 2; // error
-                               ^" in #t34.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num}) as{TypeError,ForNonNullableByDefault} core::int?;
-  let final self::Class? #t37 = nullableClass in #t37 == null ?{core::int?} null : #t37.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t37.{self::Class::nonNullableField} = 0 : null;
-  let final self::Class? #t38 = nullableClass in #t38 == null ?{core::int?} null : #t38.{self::Class::nullableField}{core::int?} == null ?{core::int} #t38.{self::Class::nullableField} = 0 : null;
-  let final self::Class? #t39 = nullableClass in #t39 == null ?{core::int?} null : let final self::Class #t40 = #t39{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t40.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t40.{self::Class::nonNullableField} = 0 : null;
-  let final self::Class? #t41 = nullableClass in #t41 == null ?{core::int?} null : let final self::Class #t42 = #t41{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t42.{self::Class::nullableField}{core::int?} == null ?{core::int} #t42.{self::Class::nullableField} = 0 : null;
+                               ^" in #t34.{self::Class::nullableField}.{core::num::+}(2);
+  let final self::Class? #t37 = nullableClass in #t37.{core::Object::==}(null) ?{core::int?} null : #t37.{self::Class::nonNullableField}.{core::num::==}(null) ?{core::int} #t37.{self::Class::nonNullableField} = 0 : null;
+  let final self::Class? #t38 = nullableClass in #t38.{core::Object::==}(null) ?{core::int?} null : #t38.{self::Class::nullableField}.{core::num::==}(null) ?{core::int} #t38.{self::Class::nullableField} = 0 : null;
+  let final self::Class? #t39 = nullableClass in #t39.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t40 = #t39{self::Class}.{self::Class::nonNullableClass} in #t40.{self::Class::nonNullableField}.{core::num::==}(null) ?{core::int} #t40.{self::Class::nonNullableField} = 0 : null;
+  let final self::Class? #t41 = nullableClass in #t41.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t42 = #t41{self::Class}.{self::Class::nonNullableClass} in #t42.{self::Class::nullableField}.{core::num::==}(null) ?{core::int} #t42.{self::Class::nullableField} = 0 : null;
   let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:57:16: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'.
 Try calling using ?.call instead.
   nullableClass(); // error
-               ^" in nullableClass.{self::Class::call}{<nullable>}.(){() → self::Class};
-  nonNullableClass.{self::Class::call}(){() → self::Class};
-  let final self::Class #t44 = nonNullableClass in #t44 == null ?{self::Class?} null : #t44.{self::Class::nonNullableClass}{self::Class}.{self::Class::call}(){() → self::Class};
-  let final self::Class #t45 = nonNullableClass in #t45 == null ?{self::Class?} null : #t45.{self::Class::nonNullableClass}{self::Class}.{self::Class::nonNullableClass}{self::Class}.{self::Class::call}(){() → self::Class};
+               ^" in nullableClass.{self::Class::call}();
+  nonNullableClass.{self::Class::call}();
+  let final self::Class #t44 = nonNullableClass in #t44.{core::Object::==}(null) ?{self::Class?} null : #t44.{self::Class::nonNullableClass}.{self::Class::call}();
+  let final self::Class #t45 = nonNullableClass in #t45.{core::Object::==}(null) ?{self::Class?} null : #t45.{self::Class::nonNullableClass}.{self::Class::nonNullableClass}.{self::Class::call}();
 }
diff --git a/pkg/front_end/testcases/nnbd/null_aware_chain.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_aware_chain.dart.strong.expect
index ce3973c..4c16033 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_chain.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_chain.dart.strong.expect
@@ -10,11 +10,11 @@
   get getter1() → self::Class
     return this;
   get getter2() → self::Class?
-    return this.{self::Class::field}{self::Class?};
+    return this.{self::Class::field};
 }
 static method main() → dynamic {
   self::Class? c = new self::Class::•() as{ForNonNullableByDefault} self::Class?;
-  let final self::Class? #t1 = c in #t1 == null ?{self::Class?} null : let final self::Class? #t2 = #t1{self::Class}.{self::Class::getter1}{self::Class}.{self::Class::getter2}{self::Class?} in #t2 == null ?{self::Class?} null : let final self::Class? #t3 = #t2{self::Class}.{self::Class::getter1}{self::Class}.{self::Class::getter2}{self::Class?} in #t3 == null ?{self::Class?} null : #t3{self::Class}.{self::Class::field} = c{self::Class};
+  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t2 = #t1{self::Class}.{self::Class::getter1}.{self::Class::getter2} in #t2.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t3 = #t2{self::Class}.{self::Class::getter1}.{self::Class::getter2} in #t3.{core::Object::==}(null) ?{self::Class?} null : #t3{self::Class}.{self::Class::field} = c{self::Class};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/null_aware_chain.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_aware_chain.dart.strong.transformed.expect
index 5b52dd0..267161a 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_chain.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_chain.dart.strong.transformed.expect
@@ -10,11 +10,11 @@
   get getter1() → self::Class
     return this;
   get getter2() → self::Class?
-    return this.{self::Class::field}{self::Class?};
+    return this.{self::Class::field};
 }
 static method main() → dynamic {
   self::Class? c = new self::Class::•();
-  let final self::Class? #t1 = c in #t1 == null ?{self::Class?} null : let final self::Class? #t2 = #t1{self::Class}.{self::Class::getter1}{self::Class}.{self::Class::getter2}{self::Class?} in #t2 == null ?{self::Class?} null : let final self::Class? #t3 = #t2{self::Class}.{self::Class::getter1}{self::Class}.{self::Class::getter2}{self::Class?} in #t3 == null ?{self::Class?} null : #t3{self::Class}.{self::Class::field} = c{self::Class};
+  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t2 = #t1{self::Class}.{self::Class::getter1}.{self::Class::getter2} in #t2.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t3 = #t2{self::Class}.{self::Class::getter1}.{self::Class::getter2} in #t3.{core::Object::==}(null) ?{self::Class?} null : #t3{self::Class}.{self::Class::field} = c{self::Class};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/null_aware_chain.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_aware_chain.dart.weak.expect
index ce3973c..4c16033 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_chain.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_chain.dart.weak.expect
@@ -10,11 +10,11 @@
   get getter1() → self::Class
     return this;
   get getter2() → self::Class?
-    return this.{self::Class::field}{self::Class?};
+    return this.{self::Class::field};
 }
 static method main() → dynamic {
   self::Class? c = new self::Class::•() as{ForNonNullableByDefault} self::Class?;
-  let final self::Class? #t1 = c in #t1 == null ?{self::Class?} null : let final self::Class? #t2 = #t1{self::Class}.{self::Class::getter1}{self::Class}.{self::Class::getter2}{self::Class?} in #t2 == null ?{self::Class?} null : let final self::Class? #t3 = #t2{self::Class}.{self::Class::getter1}{self::Class}.{self::Class::getter2}{self::Class?} in #t3 == null ?{self::Class?} null : #t3{self::Class}.{self::Class::field} = c{self::Class};
+  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t2 = #t1{self::Class}.{self::Class::getter1}.{self::Class::getter2} in #t2.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t3 = #t2{self::Class}.{self::Class::getter1}.{self::Class::getter2} in #t3.{core::Object::==}(null) ?{self::Class?} null : #t3{self::Class}.{self::Class::field} = c{self::Class};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/null_aware_chain.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_aware_chain.dart.weak.transformed.expect
index 5b52dd0..267161a 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_chain.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_chain.dart.weak.transformed.expect
@@ -10,11 +10,11 @@
   get getter1() → self::Class
     return this;
   get getter2() → self::Class?
-    return this.{self::Class::field}{self::Class?};
+    return this.{self::Class::field};
 }
 static method main() → dynamic {
   self::Class? c = new self::Class::•();
-  let final self::Class? #t1 = c in #t1 == null ?{self::Class?} null : let final self::Class? #t2 = #t1{self::Class}.{self::Class::getter1}{self::Class}.{self::Class::getter2}{self::Class?} in #t2 == null ?{self::Class?} null : let final self::Class? #t3 = #t2{self::Class}.{self::Class::getter1}{self::Class}.{self::Class::getter2}{self::Class?} in #t3 == null ?{self::Class?} null : #t3{self::Class}.{self::Class::field} = c{self::Class};
+  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t2 = #t1{self::Class}.{self::Class::getter1}.{self::Class::getter2} in #t2.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t3 = #t2{self::Class}.{self::Class::getter1}.{self::Class::getter2} in #t3.{core::Object::==}(null) ?{self::Class?} null : #t3{self::Class}.{self::Class::field} = c{self::Class};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.strong.expect
index 9811bce..df91c3c 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.strong.expect
@@ -86,13 +86,13 @@
   self::C::staticMember;
   self::C::staticMember = 42;
   self::C::staticMethod();
-  self::C::staticMember.{core::int::isEven}{core::bool};
-  self::C::staticMember.{core::int::toString}(){() → core::String};
-  self::C::property.{core::List::[]}(0){(core::int) → core::int};
-  self::C::property.{core::List::[]=}(0, 0){(core::int, core::int) → void};
-  let final core::Map<core::int, core::int?> #t1 = self::C::property2 in let final core::int #t2 = 0 in #t1.{core::Map::[]}(#t2){(core::Object?) → core::int?} == null ?{core::int} #t1.{core::Map::[]=}(#t2, 0){(core::int, core::int?) → void} : null;
-  self::C::staticMember2 == null ?{core::int} self::C::staticMember2 = 42 : null;
-  self::C::staticMember = self::C::staticMember.{core::num::+}(2){(core::num) → core::int};
-  self::C::staticMember = self::C::staticMember.{core::num::+}(1){(core::num) → core::int};
-  self::C::staticMember = self::C::staticMember.{core::num::-}(1){(core::num) → core::int};
+  self::C::staticMember.{core::int::isEven};
+  self::C::staticMember.{core::int::toString}();
+  self::C::property.{core::List::[]}(0);
+  self::C::property.{core::List::[]=}(0, 0);
+  let final core::Map<core::int, core::int?> #t1 = self::C::property2 in let final core::int #t2 = 0 in #t1.{core::Map::[]}(#t2).{core::num::==}(null) ?{core::int} #t1.{core::Map::[]=}(#t2, 0) : null;
+  self::C::staticMember2.{core::num::==}(null) ?{core::int} self::C::staticMember2 = 42 : null;
+  self::C::staticMember = self::C::staticMember.{core::num::+}(2);
+  self::C::staticMember = self::C::staticMember.{core::num::+}(1);
+  self::C::staticMember = self::C::staticMember.{core::num::-}(1);
 }
diff --git a/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.strong.transformed.expect
index 551088b..51e735b 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.strong.transformed.expect
@@ -86,15 +86,15 @@
   self::C::staticMember;
   self::C::staticMember = 42;
   self::C::staticMethod();
-  self::C::staticMember.{core::int::isEven}{core::bool};
-  self::C::staticMember.{core::int::toString}(){() → core::String};
-  self::C::property.{core::List::[]}(0){(core::int) → core::int};
-  self::C::property.{core::List::[]=}(0, 0){(core::int, core::int) → void};
-  let final core::Map<core::int, core::int?> #t1 = self::C::property2 in let final core::int #t2 = 0 in #t1.{core::Map::[]}(#t2){(core::Object?) → core::int?} == null ?{core::int} #t1.{core::Map::[]=}(#t2, 0){(core::int, core::int?) → void} : null;
-  self::C::staticMember2 == null ?{core::int} self::C::staticMember2 = 42 : null;
-  self::C::staticMember = self::C::staticMember.{core::num::+}(2){(core::num) → core::int};
-  self::C::staticMember = self::C::staticMember.{core::num::+}(1){(core::num) → core::int};
-  self::C::staticMember = self::C::staticMember.{core::num::-}(1){(core::num) → core::int};
+  self::C::staticMember.{core::int::isEven};
+  self::C::staticMember.{core::int::toString}();
+  self::C::property.{core::List::[]}(0);
+  self::C::property.{core::List::[]=}(0, 0);
+  let final core::Map<core::int, core::int?> #t1 = self::C::property2 in let final core::int #t2 = 0 in #t1.{core::Map::[]}(#t2).{core::num::==}(null) ?{core::int} #t1.{core::Map::[]=}(#t2, 0) : null;
+  self::C::staticMember2.{core::num::==}(null) ?{core::int} self::C::staticMember2 = 42 : null;
+  self::C::staticMember = self::C::staticMember.{core::num::+}(2);
+  self::C::staticMember = self::C::staticMember.{core::num::+}(1);
+  self::C::staticMember = self::C::staticMember.{core::num::-}(1);
 }
 
 
diff --git a/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.weak.expect
index 9811bce..df91c3c 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.weak.expect
@@ -86,13 +86,13 @@
   self::C::staticMember;
   self::C::staticMember = 42;
   self::C::staticMethod();
-  self::C::staticMember.{core::int::isEven}{core::bool};
-  self::C::staticMember.{core::int::toString}(){() → core::String};
-  self::C::property.{core::List::[]}(0){(core::int) → core::int};
-  self::C::property.{core::List::[]=}(0, 0){(core::int, core::int) → void};
-  let final core::Map<core::int, core::int?> #t1 = self::C::property2 in let final core::int #t2 = 0 in #t1.{core::Map::[]}(#t2){(core::Object?) → core::int?} == null ?{core::int} #t1.{core::Map::[]=}(#t2, 0){(core::int, core::int?) → void} : null;
-  self::C::staticMember2 == null ?{core::int} self::C::staticMember2 = 42 : null;
-  self::C::staticMember = self::C::staticMember.{core::num::+}(2){(core::num) → core::int};
-  self::C::staticMember = self::C::staticMember.{core::num::+}(1){(core::num) → core::int};
-  self::C::staticMember = self::C::staticMember.{core::num::-}(1){(core::num) → core::int};
+  self::C::staticMember.{core::int::isEven};
+  self::C::staticMember.{core::int::toString}();
+  self::C::property.{core::List::[]}(0);
+  self::C::property.{core::List::[]=}(0, 0);
+  let final core::Map<core::int, core::int?> #t1 = self::C::property2 in let final core::int #t2 = 0 in #t1.{core::Map::[]}(#t2).{core::num::==}(null) ?{core::int} #t1.{core::Map::[]=}(#t2, 0) : null;
+  self::C::staticMember2.{core::num::==}(null) ?{core::int} self::C::staticMember2 = 42 : null;
+  self::C::staticMember = self::C::staticMember.{core::num::+}(2);
+  self::C::staticMember = self::C::staticMember.{core::num::+}(1);
+  self::C::staticMember = self::C::staticMember.{core::num::-}(1);
 }
diff --git a/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.weak.transformed.expect
index 551088b..51e735b 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_static_access.dart.weak.transformed.expect
@@ -86,15 +86,15 @@
   self::C::staticMember;
   self::C::staticMember = 42;
   self::C::staticMethod();
-  self::C::staticMember.{core::int::isEven}{core::bool};
-  self::C::staticMember.{core::int::toString}(){() → core::String};
-  self::C::property.{core::List::[]}(0){(core::int) → core::int};
-  self::C::property.{core::List::[]=}(0, 0){(core::int, core::int) → void};
-  let final core::Map<core::int, core::int?> #t1 = self::C::property2 in let final core::int #t2 = 0 in #t1.{core::Map::[]}(#t2){(core::Object?) → core::int?} == null ?{core::int} #t1.{core::Map::[]=}(#t2, 0){(core::int, core::int?) → void} : null;
-  self::C::staticMember2 == null ?{core::int} self::C::staticMember2 = 42 : null;
-  self::C::staticMember = self::C::staticMember.{core::num::+}(2){(core::num) → core::int};
-  self::C::staticMember = self::C::staticMember.{core::num::+}(1){(core::num) → core::int};
-  self::C::staticMember = self::C::staticMember.{core::num::-}(1){(core::num) → core::int};
+  self::C::staticMember.{core::int::isEven};
+  self::C::staticMember.{core::int::toString}();
+  self::C::property.{core::List::[]}(0);
+  self::C::property.{core::List::[]=}(0, 0);
+  let final core::Map<core::int, core::int?> #t1 = self::C::property2 in let final core::int #t2 = 0 in #t1.{core::Map::[]}(#t2).{core::num::==}(null) ?{core::int} #t1.{core::Map::[]=}(#t2, 0) : null;
+  self::C::staticMember2.{core::num::==}(null) ?{core::int} self::C::staticMember2 = 42 : null;
+  self::C::staticMember = self::C::staticMember.{core::num::+}(2);
+  self::C::staticMember = self::C::staticMember.{core::num::+}(1);
+  self::C::staticMember = self::C::staticMember.{core::num::-}(1);
 }
 
 
diff --git a/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.strong.expect
index aac887e..2c133c7 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.strong.expect
@@ -124,21 +124,21 @@
   get property() → self::C
     return this;
   method test() → dynamic {
-    this.{self::C::m1}{core::int?};
+    this.{self::C::m1};
     this.{self::C::m1} = 42;
-    this.{self::C::method}(){() → dynamic};
-    this.{self::C::property}{self::C}.{self::C::m1}{core::int?};
-    this.{self::C::property}{self::C}.{self::C::method}(){() → dynamic};
-    this.{self::C::[]}(0){(core::int) → core::int?};
-    this.{self::C::[]=}(0, 0){(core::int, core::int) → void};
-    let final core::int #t1 = 0 in this.{self::C::[]}(#t1){(core::int) → core::int?} == null ?{core::int} this.{self::C::[]=}(#t1, 0){(core::int, core::int) → void} : null;
-    this.{self::C::property}{self::C}.{self::C::[]}(0){(core::int) → core::int?};
-    this.{self::C::property}{self::C}.{self::C::[]=}(0, 0){(core::int, core::int) → void};
-    let final self::C #t2 = this.{self::C::property}{self::C} in let final core::int #t3 = 0 in #t2.{self::C::[]}(#t3){(core::int) → core::int?} == null ?{core::int} #t2.{self::C::[]=}(#t3, 0){(core::int, core::int) → void} : null;
-    this.{self::C::m1}{core::int?} == null ?{core::int} this.{self::C::m1} = 42 : null;
-    this.{self::C::m2} = this.{self::C::m2}{core::int}.{core::num::+}(2){(core::num) → core::int};
-    this.{self::C::m2} = this.{self::C::m2}{core::int}.{core::num::+}(1){(core::num) → core::int};
-    this.{self::C::m2} = this.{self::C::m2}{core::int}.{core::num::-}(1){(core::num) → core::int};
+    this.{self::C::method}();
+    this.{self::C::property}.{self::C::m1};
+    this.{self::C::property}.{self::C::method}();
+    this.{self::C::[]}(0);
+    this.{self::C::[]=}(0, 0);
+    let final core::int #t1 = 0 in this.{self::C::[]}(#t1).{core::num::==}(null) ?{core::int} this.{self::C::[]=}(#t1, 0) : null;
+    this.{self::C::property}.{self::C::[]}(0);
+    this.{self::C::property}.{self::C::[]=}(0, 0);
+    let final self::C #t2 = this.{self::C::property} in let final core::int #t3 = 0 in #t2.{self::C::[]}(#t3).{core::num::==}(null) ?{core::int} #t2.{self::C::[]=}(#t3, 0) : null;
+    this.{self::C::m1}.{core::num::==}(null) ?{core::int} this.{self::C::m1} = 42 : null;
+    this.{self::C::m2} = this.{self::C::m2}.{core::num::+}(2);
+    this.{self::C::m2} = this.{self::C::m2}.{core::num::+}(1);
+    this.{self::C::m2} = this.{self::C::m2}.{core::num::-}(1);
     this;
   }
   operator [](core::int index) → core::int?
@@ -153,18 +153,18 @@
   get property() → self::D
     return this;
   method test() → dynamic {
-    this.{self::D::[]}(0){(core::int) → core::int};
-    this.{self::D::[]=}(0, 0){(core::int, core::int) → void};
-    let final core::int #t4 = 0 in this.{self::D::[]=}(#t4, this.{self::D::[]}(#t4){(core::int) → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int, core::int) → void};
-    this.{self::D::property}{self::D}.{self::D::[]}(0){(core::int) → core::int};
-    this.{self::D::property}{self::D}.{self::D::[]=}(0, 0){(core::int, core::int) → void};
-    let final self::D #t5 = this.{self::D::property}{self::D} in let final core::int #t6 = 0 in #t5.{self::D::[]=}(#t6, #t5.{self::D::[]}(#t6){(core::int) → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int, core::int) → void};
+    this.{self::D::[]}(0);
+    this.{self::D::[]=}(0, 0);
+    let final core::int #t4 = 0 in this.{self::D::[]=}(#t4, this.{self::D::[]}(#t4).{core::num::+}(0));
+    this.{self::D::property}.{self::D::[]}(0);
+    this.{self::D::property}.{self::D::[]=}(0, 0);
+    let final self::D #t5 = this.{self::D::property} in let final core::int #t6 = 0 in #t5.{self::D::[]=}(#t6, #t5.{self::D::[]}(#t6).{core::num::+}(0));
   }
   operator [](core::int index) → core::int
     return 0;
   operator []=(core::int index, core::int value) → void {}
 }
 static method main() → dynamic {
-  new self::C::•().{self::C::test}(){() → dynamic};
-  new self::D::•().{self::D::test}(){() → dynamic};
+  new self::C::•().{self::C::test}();
+  new self::D::•().{self::D::test}();
 }
diff --git a/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.strong.transformed.expect
index 5a45d00..992a282 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.strong.transformed.expect
@@ -124,21 +124,21 @@
   get property() → self::C
     return this;
   method test() → dynamic {
-    this.{self::C::m1}{core::int?};
+    this.{self::C::m1};
     this.{self::C::m1} = 42;
-    this.{self::C::method}(){() → dynamic};
-    this.{self::C::property}{self::C}.{self::C::m1}{core::int?};
-    this.{self::C::property}{self::C}.{self::C::method}(){() → dynamic};
-    this.{self::C::[]}(0){(core::int) → core::int?};
-    this.{self::C::[]=}(0, 0){(core::int, core::int) → void};
-    let final core::int #t1 = 0 in this.{self::C::[]}(#t1){(core::int) → core::int?} == null ?{core::int} this.{self::C::[]=}(#t1, 0){(core::int, core::int) → void} : null;
-    this.{self::C::property}{self::C}.{self::C::[]}(0){(core::int) → core::int?};
-    this.{self::C::property}{self::C}.{self::C::[]=}(0, 0){(core::int, core::int) → void};
-    let final self::C #t2 = this.{self::C::property}{self::C} in let final core::int #t3 = 0 in #t2.{self::C::[]}(#t3){(core::int) → core::int?} == null ?{core::int} #t2.{self::C::[]=}(#t3, 0){(core::int, core::int) → void} : null;
-    this.{self::C::m1}{core::int?} == null ?{core::int} this.{self::C::m1} = 42 : null;
-    this.{self::C::m2} = this.{self::C::m2}{core::int}.{core::num::+}(2){(core::num) → core::int};
-    this.{self::C::m2} = this.{self::C::m2}{core::int}.{core::num::+}(1){(core::num) → core::int};
-    this.{self::C::m2} = this.{self::C::m2}{core::int}.{core::num::-}(1){(core::num) → core::int};
+    this.{self::C::method}();
+    this.{self::C::property}.{self::C::m1};
+    this.{self::C::property}.{self::C::method}();
+    this.{self::C::[]}(0);
+    this.{self::C::[]=}(0, 0);
+    let final core::int #t1 = 0 in this.{self::C::[]}(#t1).{core::num::==}(null) ?{core::int} this.{self::C::[]=}(#t1, 0) : null;
+    this.{self::C::property}.{self::C::[]}(0);
+    this.{self::C::property}.{self::C::[]=}(0, 0);
+    let final self::C #t2 = this.{self::C::property} in let final core::int #t3 = 0 in #t2.{self::C::[]}(#t3).{core::num::==}(null) ?{core::int} #t2.{self::C::[]=}(#t3, 0) : null;
+    this.{self::C::m1}.{core::num::==}(null) ?{core::int} this.{self::C::m1} = 42 : null;
+    this.{self::C::m2} = this.{self::C::m2}.{core::num::+}(2);
+    this.{self::C::m2} = this.{self::C::m2}.{core::num::+}(1);
+    this.{self::C::m2} = this.{self::C::m2}.{core::num::-}(1);
     this;
   }
   operator [](core::int index) → core::int?
@@ -153,20 +153,20 @@
   get property() → self::D
     return this;
   method test() → dynamic {
-    this.{self::D::[]}(0){(core::int) → core::int};
-    this.{self::D::[]=}(0, 0){(core::int, core::int) → void};
-    let final core::int #t4 = 0 in this.{self::D::[]=}(#t4, this.{self::D::[]}(#t4){(core::int) → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int, core::int) → void};
-    this.{self::D::property}{self::D}.{self::D::[]}(0){(core::int) → core::int};
-    this.{self::D::property}{self::D}.{self::D::[]=}(0, 0){(core::int, core::int) → void};
-    let final self::D #t5 = this.{self::D::property}{self::D} in let final core::int #t6 = 0 in #t5.{self::D::[]=}(#t6, #t5.{self::D::[]}(#t6){(core::int) → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int, core::int) → void};
+    this.{self::D::[]}(0);
+    this.{self::D::[]=}(0, 0);
+    let final core::int #t4 = 0 in this.{self::D::[]=}(#t4, this.{self::D::[]}(#t4).{core::num::+}(0));
+    this.{self::D::property}.{self::D::[]}(0);
+    this.{self::D::property}.{self::D::[]=}(0, 0);
+    let final self::D #t5 = this.{self::D::property} in let final core::int #t6 = 0 in #t5.{self::D::[]=}(#t6, #t5.{self::D::[]}(#t6).{core::num::+}(0));
   }
   operator [](core::int index) → core::int
     return 0;
   operator []=(core::int index, core::int value) → void {}
 }
 static method main() → dynamic {
-  new self::C::•().{self::C::test}(){() → dynamic};
-  new self::D::•().{self::D::test}(){() → dynamic};
+  new self::C::•().{self::C::test}();
+  new self::D::•().{self::D::test}();
 }
 
 
diff --git a/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.weak.expect
index aac887e..2c133c7 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.weak.expect
@@ -124,21 +124,21 @@
   get property() → self::C
     return this;
   method test() → dynamic {
-    this.{self::C::m1}{core::int?};
+    this.{self::C::m1};
     this.{self::C::m1} = 42;
-    this.{self::C::method}(){() → dynamic};
-    this.{self::C::property}{self::C}.{self::C::m1}{core::int?};
-    this.{self::C::property}{self::C}.{self::C::method}(){() → dynamic};
-    this.{self::C::[]}(0){(core::int) → core::int?};
-    this.{self::C::[]=}(0, 0){(core::int, core::int) → void};
-    let final core::int #t1 = 0 in this.{self::C::[]}(#t1){(core::int) → core::int?} == null ?{core::int} this.{self::C::[]=}(#t1, 0){(core::int, core::int) → void} : null;
-    this.{self::C::property}{self::C}.{self::C::[]}(0){(core::int) → core::int?};
-    this.{self::C::property}{self::C}.{self::C::[]=}(0, 0){(core::int, core::int) → void};
-    let final self::C #t2 = this.{self::C::property}{self::C} in let final core::int #t3 = 0 in #t2.{self::C::[]}(#t3){(core::int) → core::int?} == null ?{core::int} #t2.{self::C::[]=}(#t3, 0){(core::int, core::int) → void} : null;
-    this.{self::C::m1}{core::int?} == null ?{core::int} this.{self::C::m1} = 42 : null;
-    this.{self::C::m2} = this.{self::C::m2}{core::int}.{core::num::+}(2){(core::num) → core::int};
-    this.{self::C::m2} = this.{self::C::m2}{core::int}.{core::num::+}(1){(core::num) → core::int};
-    this.{self::C::m2} = this.{self::C::m2}{core::int}.{core::num::-}(1){(core::num) → core::int};
+    this.{self::C::method}();
+    this.{self::C::property}.{self::C::m1};
+    this.{self::C::property}.{self::C::method}();
+    this.{self::C::[]}(0);
+    this.{self::C::[]=}(0, 0);
+    let final core::int #t1 = 0 in this.{self::C::[]}(#t1).{core::num::==}(null) ?{core::int} this.{self::C::[]=}(#t1, 0) : null;
+    this.{self::C::property}.{self::C::[]}(0);
+    this.{self::C::property}.{self::C::[]=}(0, 0);
+    let final self::C #t2 = this.{self::C::property} in let final core::int #t3 = 0 in #t2.{self::C::[]}(#t3).{core::num::==}(null) ?{core::int} #t2.{self::C::[]=}(#t3, 0) : null;
+    this.{self::C::m1}.{core::num::==}(null) ?{core::int} this.{self::C::m1} = 42 : null;
+    this.{self::C::m2} = this.{self::C::m2}.{core::num::+}(2);
+    this.{self::C::m2} = this.{self::C::m2}.{core::num::+}(1);
+    this.{self::C::m2} = this.{self::C::m2}.{core::num::-}(1);
     this;
   }
   operator [](core::int index) → core::int?
@@ -153,18 +153,18 @@
   get property() → self::D
     return this;
   method test() → dynamic {
-    this.{self::D::[]}(0){(core::int) → core::int};
-    this.{self::D::[]=}(0, 0){(core::int, core::int) → void};
-    let final core::int #t4 = 0 in this.{self::D::[]=}(#t4, this.{self::D::[]}(#t4){(core::int) → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int, core::int) → void};
-    this.{self::D::property}{self::D}.{self::D::[]}(0){(core::int) → core::int};
-    this.{self::D::property}{self::D}.{self::D::[]=}(0, 0){(core::int, core::int) → void};
-    let final self::D #t5 = this.{self::D::property}{self::D} in let final core::int #t6 = 0 in #t5.{self::D::[]=}(#t6, #t5.{self::D::[]}(#t6){(core::int) → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int, core::int) → void};
+    this.{self::D::[]}(0);
+    this.{self::D::[]=}(0, 0);
+    let final core::int #t4 = 0 in this.{self::D::[]=}(#t4, this.{self::D::[]}(#t4).{core::num::+}(0));
+    this.{self::D::property}.{self::D::[]}(0);
+    this.{self::D::property}.{self::D::[]=}(0, 0);
+    let final self::D #t5 = this.{self::D::property} in let final core::int #t6 = 0 in #t5.{self::D::[]=}(#t6, #t5.{self::D::[]}(#t6).{core::num::+}(0));
   }
   operator [](core::int index) → core::int
     return 0;
   operator []=(core::int index, core::int value) → void {}
 }
 static method main() → dynamic {
-  new self::C::•().{self::C::test}(){() → dynamic};
-  new self::D::•().{self::D::test}(){() → dynamic};
+  new self::C::•().{self::C::test}();
+  new self::D::•().{self::D::test}();
 }
diff --git a/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.weak.transformed.expect
index 5a45d00..992a282 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_this_access.dart.weak.transformed.expect
@@ -124,21 +124,21 @@
   get property() → self::C
     return this;
   method test() → dynamic {
-    this.{self::C::m1}{core::int?};
+    this.{self::C::m1};
     this.{self::C::m1} = 42;
-    this.{self::C::method}(){() → dynamic};
-    this.{self::C::property}{self::C}.{self::C::m1}{core::int?};
-    this.{self::C::property}{self::C}.{self::C::method}(){() → dynamic};
-    this.{self::C::[]}(0){(core::int) → core::int?};
-    this.{self::C::[]=}(0, 0){(core::int, core::int) → void};
-    let final core::int #t1 = 0 in this.{self::C::[]}(#t1){(core::int) → core::int?} == null ?{core::int} this.{self::C::[]=}(#t1, 0){(core::int, core::int) → void} : null;
-    this.{self::C::property}{self::C}.{self::C::[]}(0){(core::int) → core::int?};
-    this.{self::C::property}{self::C}.{self::C::[]=}(0, 0){(core::int, core::int) → void};
-    let final self::C #t2 = this.{self::C::property}{self::C} in let final core::int #t3 = 0 in #t2.{self::C::[]}(#t3){(core::int) → core::int?} == null ?{core::int} #t2.{self::C::[]=}(#t3, 0){(core::int, core::int) → void} : null;
-    this.{self::C::m1}{core::int?} == null ?{core::int} this.{self::C::m1} = 42 : null;
-    this.{self::C::m2} = this.{self::C::m2}{core::int}.{core::num::+}(2){(core::num) → core::int};
-    this.{self::C::m2} = this.{self::C::m2}{core::int}.{core::num::+}(1){(core::num) → core::int};
-    this.{self::C::m2} = this.{self::C::m2}{core::int}.{core::num::-}(1){(core::num) → core::int};
+    this.{self::C::method}();
+    this.{self::C::property}.{self::C::m1};
+    this.{self::C::property}.{self::C::method}();
+    this.{self::C::[]}(0);
+    this.{self::C::[]=}(0, 0);
+    let final core::int #t1 = 0 in this.{self::C::[]}(#t1).{core::num::==}(null) ?{core::int} this.{self::C::[]=}(#t1, 0) : null;
+    this.{self::C::property}.{self::C::[]}(0);
+    this.{self::C::property}.{self::C::[]=}(0, 0);
+    let final self::C #t2 = this.{self::C::property} in let final core::int #t3 = 0 in #t2.{self::C::[]}(#t3).{core::num::==}(null) ?{core::int} #t2.{self::C::[]=}(#t3, 0) : null;
+    this.{self::C::m1}.{core::num::==}(null) ?{core::int} this.{self::C::m1} = 42 : null;
+    this.{self::C::m2} = this.{self::C::m2}.{core::num::+}(2);
+    this.{self::C::m2} = this.{self::C::m2}.{core::num::+}(1);
+    this.{self::C::m2} = this.{self::C::m2}.{core::num::-}(1);
     this;
   }
   operator [](core::int index) → core::int?
@@ -153,20 +153,20 @@
   get property() → self::D
     return this;
   method test() → dynamic {
-    this.{self::D::[]}(0){(core::int) → core::int};
-    this.{self::D::[]=}(0, 0){(core::int, core::int) → void};
-    let final core::int #t4 = 0 in this.{self::D::[]=}(#t4, this.{self::D::[]}(#t4){(core::int) → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int, core::int) → void};
-    this.{self::D::property}{self::D}.{self::D::[]}(0){(core::int) → core::int};
-    this.{self::D::property}{self::D}.{self::D::[]=}(0, 0){(core::int, core::int) → void};
-    let final self::D #t5 = this.{self::D::property}{self::D} in let final core::int #t6 = 0 in #t5.{self::D::[]=}(#t6, #t5.{self::D::[]}(#t6){(core::int) → core::int}.{core::num::+}(0){(core::num) → core::int}){(core::int, core::int) → void};
+    this.{self::D::[]}(0);
+    this.{self::D::[]=}(0, 0);
+    let final core::int #t4 = 0 in this.{self::D::[]=}(#t4, this.{self::D::[]}(#t4).{core::num::+}(0));
+    this.{self::D::property}.{self::D::[]}(0);
+    this.{self::D::property}.{self::D::[]=}(0, 0);
+    let final self::D #t5 = this.{self::D::property} in let final core::int #t6 = 0 in #t5.{self::D::[]=}(#t6, #t5.{self::D::[]}(#t6).{core::num::+}(0));
   }
   operator [](core::int index) → core::int
     return 0;
   operator []=(core::int index, core::int value) → void {}
 }
 static method main() → dynamic {
-  new self::C::•().{self::C::test}(){() → dynamic};
-  new self::D::•().{self::D::test}(){() → dynamic};
+  new self::C::•().{self::C::test}();
+  new self::D::•().{self::D::test}();
 }
 
 
diff --git a/pkg/front_end/testcases/nnbd/null_check.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_check.dart.strong.expect
index bbfe2d7..a1827fa 100644
--- a/pkg/front_end/testcases/nnbd/null_check.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_check.dart.strong.expect
@@ -94,23 +94,23 @@
     : super core::Object::•()
     ;
   method method() → core::int?
-    return this.{self::Class::field}{core::int?};
+    return this.{self::Class::field};
   operator +(self::Class other) → self::Class
     return new self::Class::•();
 }
 static method main() → dynamic {
   self::Class? c = new self::Class::•() as{ForNonNullableByDefault} self::Class?;
   c!;
-  c{self::Class}!.{self::Class::field}{core::int?};
+  c{self::Class}!.{self::Class::field};
   c{self::Class}!.{self::Class::field} = 42;
-  c{self::Class}!.{self::Class::method}{() → core::int?};
-  c{self::Class}!.{self::Class::method}(){() → core::int?};
-  c{self::Class}!.{self::Class::field}{core::int?}!.{core::int::toString}(){() → core::String};
-  c{self::Class}!.{self::Class::method}(){() → core::int?}!.{core::int::toString}(){() → core::String};
-  c{self::Class}!.{self::Class::+}(c{self::Class}){(self::Class) → self::Class};
-  c{self::Class}!.{self::Class::+}(c{self::Class}!){(self::Class) → self::Class};
-  c{self::Class}.{self::Class::+}(c{self::Class}!){(self::Class) → self::Class};
-  c{self::Class}.{self::Class::+}(c{self::Class}){(self::Class) → self::Class}!;
+  c{self::Class}!.{self::Class::method};
+  c{self::Class}!.{self::Class::method}();
+  c{self::Class}!.{self::Class::field}!.{core::int::toString}();
+  c{self::Class}!.{self::Class::method}()!.{core::int::toString}();
+  c{self::Class}!.{self::Class::+}(c{self::Class});
+  c{self::Class}!.{self::Class::+}(c{self::Class}!);
+  c{self::Class}.{self::Class::+}(c{self::Class}!);
+  c{self::Class}.{self::Class::+}(c{self::Class})!;
   core::bool? o = true as{ForNonNullableByDefault} core::bool?;
   !o! ?{core::bool} !o{core::bool}! : !!o{core::bool}!!;
   !o{core::bool}! ?{core::bool} (!o{core::bool})! : (!(!o{core::bool})!)!;
diff --git a/pkg/front_end/testcases/nnbd/null_check.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_check.dart.strong.transformed.expect
index 0b8c30b..26ca627 100644
--- a/pkg/front_end/testcases/nnbd/null_check.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_check.dart.strong.transformed.expect
@@ -94,23 +94,23 @@
     : super core::Object::•()
     ;
   method method() → core::int?
-    return this.{self::Class::field}{core::int?};
+    return this.{self::Class::field};
   operator +(self::Class other) → self::Class
     return new self::Class::•();
 }
 static method main() → dynamic {
   self::Class? c = new self::Class::•();
   c!;
-  c{self::Class}!.{self::Class::field}{core::int?};
+  c{self::Class}!.{self::Class::field};
   c{self::Class}!.{self::Class::field} = 42;
-  c{self::Class}!.{self::Class::method}{() → core::int?};
-  c{self::Class}!.{self::Class::method}(){() → core::int?};
-  c{self::Class}!.{self::Class::field}{core::int?}!.{core::int::toString}(){() → core::String};
-  c{self::Class}!.{self::Class::method}(){() → core::int?}!.{core::int::toString}(){() → core::String};
-  c{self::Class}!.{self::Class::+}(c{self::Class}){(self::Class) → self::Class};
-  c{self::Class}!.{self::Class::+}(c{self::Class}!){(self::Class) → self::Class};
-  c{self::Class}.{self::Class::+}(c{self::Class}!){(self::Class) → self::Class};
-  c{self::Class}.{self::Class::+}(c{self::Class}){(self::Class) → self::Class}!;
+  c{self::Class}!.{self::Class::method};
+  c{self::Class}!.{self::Class::method}();
+  c{self::Class}!.{self::Class::field}!.{core::int::toString}();
+  c{self::Class}!.{self::Class::method}()!.{core::int::toString}();
+  c{self::Class}!.{self::Class::+}(c{self::Class});
+  c{self::Class}!.{self::Class::+}(c{self::Class}!);
+  c{self::Class}.{self::Class::+}(c{self::Class}!);
+  c{self::Class}.{self::Class::+}(c{self::Class})!;
   core::bool? o = true;
   !o! ?{core::bool} !o{core::bool}! : !!o{core::bool}!!;
   !o{core::bool}! ?{core::bool} (!o{core::bool})! : (!(!o{core::bool})!)!;
diff --git a/pkg/front_end/testcases/nnbd/null_check.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_check.dart.weak.expect
index bbfe2d7..a1827fa 100644
--- a/pkg/front_end/testcases/nnbd/null_check.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_check.dart.weak.expect
@@ -94,23 +94,23 @@
     : super core::Object::•()
     ;
   method method() → core::int?
-    return this.{self::Class::field}{core::int?};
+    return this.{self::Class::field};
   operator +(self::Class other) → self::Class
     return new self::Class::•();
 }
 static method main() → dynamic {
   self::Class? c = new self::Class::•() as{ForNonNullableByDefault} self::Class?;
   c!;
-  c{self::Class}!.{self::Class::field}{core::int?};
+  c{self::Class}!.{self::Class::field};
   c{self::Class}!.{self::Class::field} = 42;
-  c{self::Class}!.{self::Class::method}{() → core::int?};
-  c{self::Class}!.{self::Class::method}(){() → core::int?};
-  c{self::Class}!.{self::Class::field}{core::int?}!.{core::int::toString}(){() → core::String};
-  c{self::Class}!.{self::Class::method}(){() → core::int?}!.{core::int::toString}(){() → core::String};
-  c{self::Class}!.{self::Class::+}(c{self::Class}){(self::Class) → self::Class};
-  c{self::Class}!.{self::Class::+}(c{self::Class}!){(self::Class) → self::Class};
-  c{self::Class}.{self::Class::+}(c{self::Class}!){(self::Class) → self::Class};
-  c{self::Class}.{self::Class::+}(c{self::Class}){(self::Class) → self::Class}!;
+  c{self::Class}!.{self::Class::method};
+  c{self::Class}!.{self::Class::method}();
+  c{self::Class}!.{self::Class::field}!.{core::int::toString}();
+  c{self::Class}!.{self::Class::method}()!.{core::int::toString}();
+  c{self::Class}!.{self::Class::+}(c{self::Class});
+  c{self::Class}!.{self::Class::+}(c{self::Class}!);
+  c{self::Class}.{self::Class::+}(c{self::Class}!);
+  c{self::Class}.{self::Class::+}(c{self::Class})!;
   core::bool? o = true as{ForNonNullableByDefault} core::bool?;
   !o! ?{core::bool} !o{core::bool}! : !!o{core::bool}!!;
   !o{core::bool}! ?{core::bool} (!o{core::bool})! : (!(!o{core::bool})!)!;
diff --git a/pkg/front_end/testcases/nnbd/null_check.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_check.dart.weak.transformed.expect
index 0b8c30b..26ca627 100644
--- a/pkg/front_end/testcases/nnbd/null_check.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_check.dart.weak.transformed.expect
@@ -94,23 +94,23 @@
     : super core::Object::•()
     ;
   method method() → core::int?
-    return this.{self::Class::field}{core::int?};
+    return this.{self::Class::field};
   operator +(self::Class other) → self::Class
     return new self::Class::•();
 }
 static method main() → dynamic {
   self::Class? c = new self::Class::•();
   c!;
-  c{self::Class}!.{self::Class::field}{core::int?};
+  c{self::Class}!.{self::Class::field};
   c{self::Class}!.{self::Class::field} = 42;
-  c{self::Class}!.{self::Class::method}{() → core::int?};
-  c{self::Class}!.{self::Class::method}(){() → core::int?};
-  c{self::Class}!.{self::Class::field}{core::int?}!.{core::int::toString}(){() → core::String};
-  c{self::Class}!.{self::Class::method}(){() → core::int?}!.{core::int::toString}(){() → core::String};
-  c{self::Class}!.{self::Class::+}(c{self::Class}){(self::Class) → self::Class};
-  c{self::Class}!.{self::Class::+}(c{self::Class}!){(self::Class) → self::Class};
-  c{self::Class}.{self::Class::+}(c{self::Class}!){(self::Class) → self::Class};
-  c{self::Class}.{self::Class::+}(c{self::Class}){(self::Class) → self::Class}!;
+  c{self::Class}!.{self::Class::method};
+  c{self::Class}!.{self::Class::method}();
+  c{self::Class}!.{self::Class::field}!.{core::int::toString}();
+  c{self::Class}!.{self::Class::method}()!.{core::int::toString}();
+  c{self::Class}!.{self::Class::+}(c{self::Class});
+  c{self::Class}!.{self::Class::+}(c{self::Class}!);
+  c{self::Class}.{self::Class::+}(c{self::Class}!);
+  c{self::Class}.{self::Class::+}(c{self::Class})!;
   core::bool? o = true;
   !o! ?{core::bool} !o{core::bool}! : !!o{core::bool}!!;
   !o{core::bool}! ?{core::bool} (!o{core::bool})! : (!(!o{core::bool})!)!;
diff --git a/pkg/front_end/testcases/nnbd/null_check_context.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_check_context.dart.strong.expect
index 010a0ff..a9e189a 100644
--- a/pkg/front_end/testcases/nnbd/null_check_context.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_check_context.dart.strong.expect
@@ -8,6 +8,6 @@
     ;
   abstract method bar<T extends core::Object? = dynamic>() → self::A::bar::T%;
   method foo() → core::String
-    return this.{self::A::bar}<core::String?>(){() → core::String?}!;
+    return this.{self::A::bar}<core::String?>()!;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/null_check_context.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_check_context.dart.strong.transformed.expect
index 010a0ff..a9e189a 100644
--- a/pkg/front_end/testcases/nnbd/null_check_context.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_check_context.dart.strong.transformed.expect
@@ -8,6 +8,6 @@
     ;
   abstract method bar<T extends core::Object? = dynamic>() → self::A::bar::T%;
   method foo() → core::String
-    return this.{self::A::bar}<core::String?>(){() → core::String?}!;
+    return this.{self::A::bar}<core::String?>()!;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/null_check_context.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_check_context.dart.weak.expect
index 010a0ff..a9e189a 100644
--- a/pkg/front_end/testcases/nnbd/null_check_context.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_check_context.dart.weak.expect
@@ -8,6 +8,6 @@
     ;
   abstract method bar<T extends core::Object? = dynamic>() → self::A::bar::T%;
   method foo() → core::String
-    return this.{self::A::bar}<core::String?>(){() → core::String?}!;
+    return this.{self::A::bar}<core::String?>()!;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/null_check_context.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_check_context.dart.weak.transformed.expect
index 010a0ff..a9e189a 100644
--- a/pkg/front_end/testcases/nnbd/null_check_context.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_check_context.dart.weak.transformed.expect
@@ -8,6 +8,6 @@
     ;
   abstract method bar<T extends core::Object? = dynamic>() → self::A::bar::T%;
   method foo() → core::String
-    return this.{self::A::bar}<core::String?>(){() → core::String?}!;
+    return this.{self::A::bar}<core::String?>()!;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.expect
index ed3bb8d..d6e1e8e 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.expect
@@ -39,25 +39,25 @@
   get property2() → self::Class2
     return new self::Class2::•();
   get nullable1() → self::Class1?
-    return this.{self::Class1::property1}{self::Class1};
+    return this.{self::Class1::property1};
   set nullable1(self::Class1? value) → void {
     this.{self::Class1::property} = value;
   }
   method nonNullable1Method() → self::Class1
-    return this.{self::Class1::nonNullable1}{self::Class1};
+    return this.{self::Class1::nonNullable1};
   operator [](self::Class1? key) → self::Class1?
-    return this.{self::Class1::nullable1}{self::Class1?};
+    return this.{self::Class1::nullable1};
   operator []=(self::Class1? key, self::Class1? value) → void {
     this.{self::Class1::property} = value;
   }
   operator +(core::int value) → self::Class1?
-    return this.{self::Class1::nullable1}{self::Class1?};
+    return this.{self::Class1::nullable1};
   operator unary-() → self::Class1?
-    return this.{self::Class1::nullable1}{self::Class1?};
+    return this.{self::Class1::nullable1};
   get nonNullable1() → self::Class1
-    return this.{self::Class1::property1}{self::Class1};
+    return this.{self::Class1::property1};
   get nonNullable2() → self::Class2
-    return this.{self::Class1::property2}{self::Class2};
+    return this.{self::Class1::property2};
 }
 class Class2 extends core::Object {
   synthetic constructor •() → self::Class2
@@ -67,17 +67,17 @@
     return this;
   set property(self::Class2 value) → void {}
   method nonNullable2Method() → self::Class2
-    return this.{self::Class2::nonNullable2}{self::Class2};
+    return this.{self::Class2::nonNullable2};
   operator [](self::Class2? key) → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   operator []=(self::Class2? key, self::Class2? value) → void
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   operator +(core::int value) → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   operator unary-() → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   get nonNullable2() → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   set nonNullable2(self::Class2 value) → void {
     this.{self::Class2::property} = value;
   }
@@ -89,7 +89,7 @@
   get property() → self::Class2?
     return null;
   operator [](self::Class3? key) → self::Class2?
-    return this.{self::Class3::property}{self::Class2?};
+    return this.{self::Class3::property};
 }
 static method main() → dynamic {
   self::propertyAccess(null);
@@ -99,168 +99,168 @@
 }
 static method propertyAccess(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t1 = n1 in #t1 == null ?{self::Class1?} null : #t1{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t2 = n1 in #t2 == null ?{self::Class1?} null : #t2{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t3 = n1 in #t3 == null ?{self::Class1?} null : #t3{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t4 = n1 in #t4 == null ?{self::Class1?} null : #t4{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t5 = n1 in #t5 == null ?{self::Class1?} null : #t5{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t6 = n1 in #t6 == null ?{self::Class1?} null : let final self::Class1? #t7 = #t6{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t7 == null ?{self::Class1?} null : #t7{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t8 = n1 in #t8 == null ?{self::Class1?} null : let final self::Class1? #t9 = #t8{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t9 == null ?{self::Class1?} null : #t9{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t10 = n1 in #t10 == null ?{self::Class1?} null : #t10{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t11 = n1 in #t11 == null ?{self::Class1?} null : let final self::Class1? #t12 = #t11{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t12 == null ?{self::Class1?} null : #t12{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t13 = n1 in #t13 == null ?{self::Class1?} null : let final self::Class1? #t14 = #t13{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t14 == null ?{self::Class1?} null : #t14{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t15 = let final self::Class1? #t16 = n1 in #t16 == null ?{self::Class1?} null : #t16{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t15 == null ?{self::Class1?} null : #t15{self::Class1}.{self::Class1::nullable1}{self::Class1?};
+  let final self::Class1? #t1 = n1 in #t1.{core::Object::==}(null) ?{self::Class1?} null : #t1{self::Class1}.{self::Class1::nullable1};
+  let final self::Class1? #t2 = n1 in #t2.{core::Object::==}(null) ?{self::Class1?} null : #t2{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t3 = n1 in #t3.{core::Object::==}(null) ?{self::Class1?} null : #t3{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t4 = n1 in #t4.{core::Object::==}(null) ?{self::Class1?} null : #t4{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t5 = n1 in #t5.{core::Object::==}(null) ?{self::Class1?} null : #t5{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t6 = n1 in #t6.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t7 = #t6{self::Class1}.{self::Class1::nullable1} in #t7.{core::Object::==}(null) ?{self::Class1?} null : #t7{self::Class1}.{self::Class1::nullable1};
+  let final self::Class1? #t8 = n1 in #t8.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t9 = #t8{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t9.{core::Object::==}(null) ?{self::Class1?} null : #t9{self::Class1}.{self::Class1::nullable1};
+  let final self::Class1? #t10 = n1 in #t10.{core::Object::==}(null) ?{self::Class1?} null : #t10{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t11 = n1 in #t11.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t12 = #t11{self::Class1}.{self::Class1::nullable1} in #t12.{core::Object::==}(null) ?{self::Class1?} null : #t12{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t13 = n1 in #t13.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t14 = #t13{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t14.{core::Object::==}(null) ?{self::Class1?} null : #t14{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t15 = let final self::Class1? #t16 = n1 in #t16.{core::Object::==}(null) ?{self::Class1?} null : #t16{self::Class1}.{self::Class1::nullable1} in #t15.{core::Object::==}(null) ?{self::Class1?} null : #t15{self::Class1}.{self::Class1::nullable1};
   self::throws(() → void => let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:87:47: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nullable1 = new Class1()).nullable1);
-                                              ^^^^^^^^^" in (let final self::Class1? #t18 = n1 in #t18 == null ?{self::Class1?} null : #t18{self::Class1}.{self::Class1::nullable1} = new self::Class1::•()).{self::Class1::nullable1}{<nullable>}.{self::Class1?});
+                                              ^^^^^^^^^" in (let final self::Class1? #t18 = n1 in #t18.{core::Object::==}(null) ?{self::Class1?} null : #t18{self::Class1}.{self::Class1::nullable1} = new self::Class1::•()).{self::Class1::nullable1});
   self::throws(() → void => let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:88:43: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nonNullable1Method()).nullable1);
-                                          ^^^^^^^^^" in (let final self::Class1? #t20 = n1 in #t20 == null ?{self::Class1?} null : #t20{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}).{self::Class1::nullable1}{<nullable>}.{self::Class1?});
-  nullable1 = let final self::Class1? #t21 = n1 in #t21 == null ?{self::Class1?} null : #t21{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t22 = n1 in #t22 == null ?{self::Class1?} null : let final self::Class1? #t23 = #t22{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t23 == null ?{self::Class1?} null : #t23{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t24 = n1 in #t24 == null ?{self::Class1?} null : let final self::Class1? #t25 = #t24{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t25 == null ?{self::Class1?} null : #t25{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t26 = n1 in #t26 == null ?{self::Class1?} null : let final self::Class1? #t27 = #t26{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t27 == null ?{self::Class1?} null : #t27{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t28 = n1 in #t28 == null ?{self::Class1?} null : #t28{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t29 = n1 in #t29 == null ?{self::Class1?} null : #t29{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t30 = n1 in #t30 == null ?{self::Class1?} null : #t30{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t31 = n1 in #t31 == null ?{self::Class1?} null : #t31{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t32 = n1 in #t32 == null ?{self::Class1?} null : #t32{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t33 = n1 in #t33 == null ?{self::Class1?} null : #t33{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t34 = n1 in #t34 == null ?{self::Class1?} null : #t34{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t35 = n1 in #t35 == null ?{self::Class1?} null : #t35{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t36 = n1 in #t36 == null ?{self::Class1?} null : #t36{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t37 = n1 in #t37 == null ?{self::Class1?} null : #t37{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t38 = n1 in #t38 == null ?{self::Class1?} null : #t38{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t39 = n1 in #t39 == null ?{self::Class1?} null : #t39{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t40 = n1 in #t40 == null ?{self::Class1?} null : let final self::Class1? #t41 = #t40{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t41 == null ?{self::Class1?} null : #t41{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t42 = n1 in #t42 == null ?{self::Class1?} null : #t42{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t43 = n1 in #t43 == null ?{self::Class1?} null : #t43{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t44 = n1 in #t44 == null ?{self::Class1?} null : #t44{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t45 = n1 in #t45 == null ?{self::Class1?} null : #t45{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t46 = n1 in #t46 == null ?{self::Class1?} null : #t46{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t47 = n1 in #t47 == null ?{self::Class1?} null : #t47{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t48 = n1 in #t48 == null ?{self::Class1?} null : #t48{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t49 = n1 in #t49 == null ?{self::Class1?} null : #t49{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t50 = n1 in #t50 == null ?{self::Class1?} null : #t50{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t51 = n1 in #t51 == null ?{self::Class1?} null : #t51{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t52 = n1 in #t52 == null ?{self::Class1?} null : #t52{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t53 = n1 in #t53 == null ?{self::Class1?} null : #t53{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t54 = n1 in #t54 == null ?{self::Class1?} null : #t54{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t55 = n1 in #t55 == null ?{self::Class1?} null : #t55{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t56 = n1 in #t56 == null ?{self::Class1?} null : #t56{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t57 = n1 in #t57 == null ?{self::Class1?} null : #t57{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t58 = n1 in #t58 == null ?{self::Class1?} null : #t58{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t59 = n1 in #t59 == null ?{self::Class1?} null : #t59{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t60 = n1 in #t60 == null ?{self::Class1?} null : #t60{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t61 = n1 in #t61 == null ?{self::Class1?} null : #t61{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t62 = n1 in #t62 == null ?{self::Class1?} null : #t62{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t63 = n1 in #t63 == null ?{self::Class1?} null : #t63{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t64 = n1 in #t64 == null ?{self::Class1?} null : #t64{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t65 = n1 in #t65 == null ?{self::Class1?} null : #t65{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t66 = n1 in #t66 == null ?{self::Class1?} null : #t66{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t67 = n1 in #t67 == null ?{self::Class1?} null : #t67{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t68 = n1 in #t68 == null ?{self::Class1?} null : #t68{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t69 = n1 in #t69 == null ?{self::Class1?} null : #t69{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t70 = n1 in #t70 == null ?{self::Class1?} null : #t70{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t71 = n1 in #t71 == null ?{self::Class1?} null : #t71{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t72 = n1 in #t72 == null ?{self::Class1?} null : #t72{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t73 = n1 in #t73 == null ?{self::Class1?} null : #t73{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t74 = n1 in #t74 == null ?{self::Class1?} null : #t74{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t75 = n1 in #t75 == null ?{self::Class1?} null : #t75{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t76 = n1 in #t76 == null ?{self::Class1?} null : #t76{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t77 = n1 in #t77 == null ?{self::Class1?} null : #t77{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t78 = n1 in #t78 == null ?{self::Class1?} null : #t78{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t79 = n1 in #t79 == null ?{self::Class1?} null : #t79{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t80 = n1 in #t80 == null ?{self::Class1?} null : #t80{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t81 = n1 in #t81 == null ?{self::Class1?} null : #t81{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t82 = n1 in #t82 == null ?{self::Class1?} null : let final self::Class1? #t83 = #t82{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1} in #t83 == null ?{self::Class1?} null : #t83{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
+                                          ^^^^^^^^^" in (let final self::Class1? #t20 = n1 in #t20.{core::Object::==}(null) ?{self::Class1?} null : #t20{self::Class1}.{self::Class1::nonNullable1Method}()).{self::Class1::nullable1});
+  nullable1 = let final self::Class1? #t21 = n1 in #t21.{core::Object::==}(null) ?{self::Class1?} null : #t21{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t22 = n1 in #t22.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t23 = #t22{self::Class1}.{self::Class1::nullable1} in #t23.{core::Object::==}(null) ?{self::Class1?} null : #t23{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t24 = n1 in #t24.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t25 = #t24{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t25.{core::Object::==}(null) ?{self::Class1?} null : #t25{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t26 = n1 in #t26.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t27 = #t26{self::Class1}.{self::Class1::nullable1} in #t27.{core::Object::==}(null) ?{self::Class1?} null : #t27{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t28 = n1 in #t28.{core::Object::==}(null) ?{self::Class1?} null : #t28{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t29 = n1 in #t29.{core::Object::==}(null) ?{self::Class1?} null : #t29{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t30 = n1 in #t30.{core::Object::==}(null) ?{self::Class1?} null : #t30{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t31 = n1 in #t31.{core::Object::==}(null) ?{self::Class1?} null : #t31{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t32 = n1 in #t32.{core::Object::==}(null) ?{self::Class1?} null : #t32{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t33 = n1 in #t33.{core::Object::==}(null) ?{self::Class1?} null : #t33{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t34 = n1 in #t34.{core::Object::==}(null) ?{self::Class1?} null : #t34{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t35 = n1 in #t35.{core::Object::==}(null) ?{self::Class1?} null : #t35{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t36 = n1 in #t36.{core::Object::==}(null) ?{self::Class1?} null : #t36{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t37 = n1 in #t37.{core::Object::==}(null) ?{self::Class1?} null : #t37{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t38 = n1 in #t38.{core::Object::==}(null) ?{self::Class1?} null : #t38{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t39 = n1 in #t39.{core::Object::==}(null) ?{self::Class1?} null : #t39{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t40 = n1 in #t40.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t41 = #t40{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t41.{core::Object::==}(null) ?{self::Class1?} null : #t41{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t42 = n1 in #t42.{core::Object::==}(null) ?{self::Class1?} null : #t42{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t43 = n1 in #t43.{core::Object::==}(null) ?{self::Class1?} null : #t43{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t44 = n1 in #t44.{core::Object::==}(null) ?{self::Class1?} null : #t44{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t45 = n1 in #t45.{core::Object::==}(null) ?{self::Class1?} null : #t45{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t46 = n1 in #t46.{core::Object::==}(null) ?{self::Class1?} null : #t46{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t47 = n1 in #t47.{core::Object::==}(null) ?{self::Class1?} null : #t47{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t48 = n1 in #t48.{core::Object::==}(null) ?{self::Class1?} null : #t48{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t49 = n1 in #t49.{core::Object::==}(null) ?{self::Class1?} null : #t49{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t50 = n1 in #t50.{core::Object::==}(null) ?{self::Class1?} null : #t50{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t51 = n1 in #t51.{core::Object::==}(null) ?{self::Class1?} null : #t51{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t52 = n1 in #t52.{core::Object::==}(null) ?{self::Class1?} null : #t52{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t53 = n1 in #t53.{core::Object::==}(null) ?{self::Class1?} null : #t53{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t54 = n1 in #t54.{core::Object::==}(null) ?{self::Class1?} null : #t54{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t55 = n1 in #t55.{core::Object::==}(null) ?{self::Class1?} null : #t55{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t56 = n1 in #t56.{core::Object::==}(null) ?{self::Class1?} null : #t56{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t57 = n1 in #t57.{core::Object::==}(null) ?{self::Class1?} null : #t57{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t58 = n1 in #t58.{core::Object::==}(null) ?{self::Class1?} null : #t58{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t59 = n1 in #t59.{core::Object::==}(null) ?{self::Class1?} null : #t59{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t60 = n1 in #t60.{core::Object::==}(null) ?{self::Class1?} null : #t60{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t61 = n1 in #t61.{core::Object::==}(null) ?{self::Class1?} null : #t61{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t62 = n1 in #t62.{core::Object::==}(null) ?{self::Class1?} null : #t62{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t63 = n1 in #t63.{core::Object::==}(null) ?{self::Class1?} null : #t63{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t64 = n1 in #t64.{core::Object::==}(null) ?{self::Class1?} null : #t64{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t65 = n1 in #t65.{core::Object::==}(null) ?{self::Class1?} null : #t65{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t66 = n1 in #t66.{core::Object::==}(null) ?{self::Class1?} null : #t66{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t67 = n1 in #t67.{core::Object::==}(null) ?{self::Class1?} null : #t67{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t68 = n1 in #t68.{core::Object::==}(null) ?{self::Class1?} null : #t68{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t69 = n1 in #t69.{core::Object::==}(null) ?{self::Class1?} null : #t69{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t70 = n1 in #t70.{core::Object::==}(null) ?{self::Class1?} null : #t70{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t71 = n1 in #t71.{core::Object::==}(null) ?{self::Class1?} null : #t71{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t72 = n1 in #t72.{core::Object::==}(null) ?{self::Class1?} null : #t72{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t73 = n1 in #t73.{core::Object::==}(null) ?{self::Class1?} null : #t73{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t74 = n1 in #t74.{core::Object::==}(null) ?{self::Class1?} null : #t74{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t75 = n1 in #t75.{core::Object::==}(null) ?{self::Class1?} null : #t75{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t76 = n1 in #t76.{core::Object::==}(null) ?{self::Class1?} null : #t76{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t77 = n1 in #t77.{core::Object::==}(null) ?{self::Class1?} null : #t77{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t78 = n1 in #t78.{core::Object::==}(null) ?{self::Class1?} null : #t78{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t79 = n1 in #t79.{core::Object::==}(null) ?{self::Class1?} null : #t79{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t80 = n1 in #t80.{core::Object::==}(null) ?{self::Class1?} null : #t80{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t81 = n1 in #t81.{core::Object::==}(null) ?{self::Class1?} null : #t81{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t82 = n1 in #t82.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t83 = #t82{self::Class1}.{self::Class1::nonNullable1Method}() in #t83.{core::Object::==}(null) ?{self::Class1?} null : #t83{self::Class1}.{self::Class1::nonNullable1Method}();
 }
 static method indexAccess(self::Class1? n1, self::Class2? n2, self::Class3? n3) → void {
   self::Class1? nullable1 = n1;
   self::Class2? nullable2 = n2;
   self::Class3? nullable3 = n3;
-  let final self::Class1? #t84 = n1 in #t84 == null ?{self::Class1?} null : #t84{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?};
-  let final self::Class1? #t85 = n1 in #t85 == null ?{self::Class1?} null : #t85{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•()){(self::Class1?, self::Class1?) → void};
-  let final self::Class1? #t86 = n1 in #t86 == null ?{self::Class1?} null : let final self::Class1? #t87 = #t86{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t87 == null ?{self::Class1?} null : #t87{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t88 = n1 in #t88 == null ?{self::Class1?} null : #t88{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?};
-  let final self::Class1? #t89 = n1 in #t89 == null ?{self::Class1?} null : #t89{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•()){(self::Class1?, self::Class1?) → void};
-  nullable1 = let final self::Class1? #t90 = n1 in #t90 == null ?{self::Class1?} null : let final self::Class1 #t91 = #t90{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t92 = nullable1 in let final self::Class1 #t93 = new self::Class1::•() in let final void #t94 = #t91.{self::Class1::[]=}(#t92, #t93){(self::Class1?, self::Class1?) → void} in #t93;
-  let final self::Class1? #t95 = n1 in #t95 == null ?{self::Class1?} null : let final self::Class1? #t96 = #t95{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t96 == null ?{self::Class1?} null : #t96{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t97 = n1 in #t97 == null ?{self::Class2?} null : let final self::Class2 #t98 = #t97{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t99 = nullable2 in #t98.{self::Class2::[]=}(#t99, #t98.{self::Class2::[]}(#t99){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t100 = n1 in #t100 == null ?{self::Class2?} null : let final self::Class2 #t101 = #t100{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t102 = nullable2 in let final self::Class2 #t103 = #t101.{self::Class2::[]}(#t102){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t104 = #t101.{self::Class2::[]=}(#t102, #t103){(self::Class2?, self::Class2?) → void} in #t103;
-  let final self::Class1? #t105 = n1 in #t105 == null ?{self::Class1?} null : let final self::Class1? #t106 = nullable1 in #t105{self::Class1}.{self::Class1::[]}(#t106){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t105{self::Class1}.{self::Class1::[]=}(#t106, nullable1){(self::Class1?, self::Class1?) → void} : null;
-  nullable1 = let final self::Class1? #t107 = n1 in #t107 == null ?{self::Class1?} null : let final self::Class1? #t108 = nullable1 in let final self::Class1? #t109 = #t107{self::Class1}.{self::Class1::[]}(#t108){(self::Class1?) → self::Class1?} in #t109 == null ?{self::Class1?} let final self::Class1? #t110 = nullable1 in let final void #t111 = #t107{self::Class1}.{self::Class1::[]=}(#t108, #t110){(self::Class1?, self::Class1?) → void} in #t110 : #t109{self::Class1};
-  let final self::Class2? #t112 = n2 in #t112 == null ?{self::Class2?} null : let final self::Class2? #t113 = nullable2 in #t112{self::Class2}.{self::Class2::[]=}(#t113, #t112{self::Class2}.{self::Class2::[]}(#t113){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class2? #t114 = n2 in #t114 == null ?{self::Class2?} null : let final self::Class2? #t115 = nullable2 in let final self::Class2 #t116 = #t114{self::Class2}.{self::Class2::[]}(#t115){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t117 = #t114{self::Class2}.{self::Class2::[]=}(#t115, #t116){(self::Class2?, self::Class2?) → void} in #t116;
-  let final self::Class2? #t118 = n2 in #t118 == null ?{self::Class2?} null : let final self::Class2? #t119 = nullable2 in #t118{self::Class2}.{self::Class2::[]=}(#t119, #t118{self::Class2}.{self::Class2::[]}(#t119){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class2? #t120 = n2 in #t120 == null ?{self::Class2?} null : let final self::Class2? #t121 = nullable2 in let final self::Class2 #t122 = #t120{self::Class2}.{self::Class2::[]}(#t121){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t123 = #t120{self::Class2}.{self::Class2::[]=}(#t121, #t122){(self::Class2?, self::Class2?) → void} in #t122;
-  let final self::Class2? #t124 = n2 in #t124 == null ?{self::Class2?} null : let final self::Class2? #t125 = nullable2 in #t124{self::Class2}.{self::Class2::[]=}(#t125, #t124{self::Class2}.{self::Class2::[]}(#t125){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class2? #t126 = n2 in #t126 == null ?{self::Class2?} null : let final self::Class2? #t127 = nullable2 in let final self::Class2 #t128 = #t126{self::Class2}.{self::Class2::[]}(#t127){(self::Class2?) → self::Class2} in let final void #t129 = #t126{self::Class2}.{self::Class2::[]=}(#t127, #t128.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t128;
-  let final self::Class2? #t130 = n2 in #t130 == null ?{self::Class2?} null : let final self::Class2? #t131 = nullable2 in let final self::Class2 #t132 = #t130{self::Class2}.{self::Class2::[]}(#t131){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t133 = #t130{self::Class2}.{self::Class2::[]=}(#t131, #t132){(self::Class2?, self::Class2?) → void} in #t132;
-  nullable2 = let final self::Class2? #t134 = n2 in #t134 == null ?{self::Class2?} null : let final self::Class2? #t135 = nullable2 in let final self::Class2 #t136 = #t134{self::Class2}.{self::Class2::[]}(#t135){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t137 = #t134{self::Class2}.{self::Class2::[]=}(#t135, #t136){(self::Class2?, self::Class2?) → void} in #t136;
-  let final self::Class1? #t138 = n1 in #t138 == null ?{self::Class2?} null : let final self::Class2 #t139 = #t138{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t140 = nullable2 in #t139.{self::Class2::[]=}(#t140, #t139.{self::Class2::[]}(#t140){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t141 = n1 in #t141 == null ?{self::Class2?} null : let final self::Class2 #t142 = #t141{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t143 = nullable2 in let final self::Class2 #t144 = #t142.{self::Class2::[]}(#t143){(self::Class2?) → self::Class2} in let final void #t145 = #t142.{self::Class2::[]=}(#t143, #t144.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t144;
-  let final self::Class1? #t146 = n1 in #t146 == null ?{self::Class2?} null : let final self::Class2 #t147 = #t146{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t148 = nullable2 in let final self::Class2 #t149 = #t147.{self::Class2::[]}(#t148){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t150 = #t147.{self::Class2::[]=}(#t148, #t149){(self::Class2?, self::Class2?) → void} in #t149;
-  nullable2 = let final self::Class1? #t151 = n1 in #t151 == null ?{self::Class2?} null : let final self::Class2 #t152 = #t151{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t153 = nullable2 in let final self::Class2 #t154 = #t152.{self::Class2::[]}(#t153){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t155 = #t152.{self::Class2::[]=}(#t153, #t154){(self::Class2?, self::Class2?) → void} in #t154;
-  let final self::Class1? #t156 = n1 in #t156 == null ?{self::Class2?} null : #t156{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2};
-  let final self::Class1? #t157 = n1 in #t157 == null ?{self::Class2?} null : #t157{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2}.{self::Class2::[]=}(nullable2, new self::Class2::•()){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t158 = n1 in #t158 == null ?{self::Class2?} null : let final self::Class2 #t159 = #t158{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t160 = nullable2 in let final self::Class2 #t161 = new self::Class2::•() in let final void #t162 = #t159.{self::Class2::[]=}(#t160, #t161){(self::Class2?, self::Class2?) → void} in #t161;
-  let final self::Class1? #t163 = n1 in #t163 == null ?{self::Class2?} null : let final self::Class2? #t164 = #t163{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in #t164 == null ?{self::Class2?} null : #t164{self::Class2}.{self::Class2::nonNullable2Method}(){() → self::Class2};
-  let final self::Class1? #t165 = n1 in #t165 == null ?{self::Class2?} null : let final self::Class2 #t166 = #t165{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t167 = nullable2 in #t166.{self::Class2::[]=}(#t167, #t166.{self::Class2::[]}(#t167){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t168 = n1 in #t168 == null ?{self::Class2?} null : let final self::Class2 #t169 = #t168{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t170 = nullable2 in let final self::Class2 #t171 = #t169.{self::Class2::[]}(#t170){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t172 = #t169.{self::Class2::[]=}(#t170, #t171){(self::Class2?, self::Class2?) → void} in #t171;
-  let final self::Class1? #t173 = n1 in #t173 == null ?{self::Class2?} null : let final self::Class2 #t174 = #t173{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t175 = nullable2 in #t174.{self::Class2::[]=}(#t175, #t174.{self::Class2::[]}(#t175){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t176 = n1 in #t176 == null ?{self::Class2?} null : let final self::Class2 #t177 = #t176{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t178 = nullable2 in let final self::Class2 #t179 = #t177.{self::Class2::[]}(#t178){(self::Class2?) → self::Class2} in let final void #t180 = #t177.{self::Class2::[]=}(#t178, #t179.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t179;
-  let final self::Class1? #t181 = n1 in #t181 == null ?{self::Class2?} null : let final self::Class2 #t182 = #t181{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t183 = nullable2 in let final self::Class2 #t184 = #t182.{self::Class2::[]}(#t183){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t185 = #t182.{self::Class2::[]=}(#t183, #t184){(self::Class2?, self::Class2?) → void} in #t184;
-  nullable2 = let final self::Class1? #t186 = n1 in #t186 == null ?{self::Class2?} null : let final self::Class2 #t187 = #t186{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = #t187.{self::Class2::[]}(#t188){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t190 = #t187.{self::Class2::[]=}(#t188, #t189){(self::Class2?, self::Class2?) → void} in #t189;
-  let final self::Class1? #t191 = n1 in #t191 == null ?{self::Class1?} null : let final self::Class1? #t192 = #t191{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t192 == null ?{self::Class1?} null : #t192{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?};
-  let final self::Class1? #t193 = n1 in #t193 == null ?{self::Class1?} null : let final self::Class1? #t194 = #t193{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t194 == null ?{self::Class1?} null : #t194{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•()){(self::Class1?, self::Class1?) → void};
-  nullable1 = let final self::Class1? #t195 = n1 in #t195 == null ?{self::Class1?} null : let final self::Class1? #t196 = #t195{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t196 == null ?{self::Class1?} null : let final self::Class1? #t197 = nullable1 in let final self::Class1 #t198 = new self::Class1::•() in let final void #t199 = #t196{self::Class1}.{self::Class1::[]=}(#t197, #t198){(self::Class1?, self::Class1?) → void} in #t198;
-  let final self::Class1? #t200 = n1 in #t200 == null ?{self::Class1?} null : let final self::Class1? #t201 = #t200{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t201 == null ?{self::Class1?} null : let final self::Class1? #t202 = #t201{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t202 == null ?{self::Class1?} null : #t202{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t203 = n1 in #t203 == null ?{self::Class1?} null : let final self::Class1? #t204 = #t203{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t204 == null ?{self::Class1?} null : let final self::Class1? #t205 = #t204{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t205 == null ?{self::Class1?} null : #t205{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t206 = n1 in #t206 == null ?{self::Class1?} null : let final self::Class1? #t207 = #t206{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t207 == null ?{self::Class1?} null : let final self::Class1? #t208 = nullable1 in #t207{self::Class1}.{self::Class1::[]}(#t208){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t207{self::Class1}.{self::Class1::[]=}(#t208, nullable1){(self::Class1?, self::Class1?) → void} : null;
-  nullable1 = let final self::Class1? #t209 = n1 in #t209 == null ?{self::Class1?} null : let final self::Class1? #t210 = #t209{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t210 == null ?{self::Class1?} null : let final self::Class1? #t211 = nullable1 in let final self::Class1? #t212 = #t210{self::Class1}.{self::Class1::[]}(#t211){(self::Class1?) → self::Class1?} in #t212 == null ?{self::Class1?} let final self::Class1? #t213 = nullable1 in let final void #t214 = #t210{self::Class1}.{self::Class1::[]=}(#t211, #t213){(self::Class1?, self::Class1?) → void} in #t213 : #t212{self::Class1};
-  let final self::Class3? #t215 = n3 in #t215 == null ?{self::Class2?} null : let final self::Class2? #t216 = #t215{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t216 == null ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in #t216{self::Class2}.{self::Class2::[]=}(#t217, #t216{self::Class2}.{self::Class2::[]}(#t217){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class3? #t218 = n3 in #t218 == null ?{self::Class2?} null : let final self::Class2? #t219 = #t218{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t219 == null ?{self::Class2?} null : let final self::Class2? #t220 = nullable2 in let final self::Class2 #t221 = #t219{self::Class2}.{self::Class2::[]}(#t220){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t222 = #t219{self::Class2}.{self::Class2::[]=}(#t220, #t221){(self::Class2?, self::Class2?) → void} in #t221;
-  let final self::Class3? #t223 = n3 in #t223 == null ?{self::Class2?} null : let final self::Class2? #t224 = #t223{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t224 == null ?{self::Class2?} null : let final self::Class2? #t225 = nullable2 in #t224{self::Class2}.{self::Class2::[]=}(#t225, #t224{self::Class2}.{self::Class2::[]}(#t225){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class3? #t226 = n3 in #t226 == null ?{self::Class2?} null : let final self::Class2? #t227 = #t226{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t227 == null ?{self::Class2?} null : let final self::Class2? #t228 = nullable2 in let final self::Class2 #t229 = #t227{self::Class2}.{self::Class2::[]}(#t228){(self::Class2?) → self::Class2} in let final void #t230 = #t227{self::Class2}.{self::Class2::[]=}(#t228, #t229.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t229;
-  let final self::Class3? #t231 = n3 in #t231 == null ?{self::Class2?} null : let final self::Class2? #t232 = #t231{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t232 == null ?{self::Class2?} null : let final self::Class2? #t233 = nullable2 in let final self::Class2 #t234 = #t232{self::Class2}.{self::Class2::[]}(#t233){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t235 = #t232{self::Class2}.{self::Class2::[]=}(#t233, #t234){(self::Class2?, self::Class2?) → void} in #t234;
-  nullable2 = let final self::Class3? #t236 = n3 in #t236 == null ?{self::Class2?} null : let final self::Class2? #t237 = #t236{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t237 == null ?{self::Class2?} null : let final self::Class2? #t238 = nullable2 in let final self::Class2 #t239 = #t237{self::Class2}.{self::Class2::[]}(#t238){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t240 = #t237{self::Class2}.{self::Class2::[]=}(#t238, #t239){(self::Class2?, self::Class2?) → void} in #t239;
+  let final self::Class1? #t84 = n1 in #t84.{core::Object::==}(null) ?{self::Class1?} null : #t84{self::Class1}.{self::Class1::[]}(nullable1);
+  let final self::Class1? #t85 = n1 in #t85.{core::Object::==}(null) ?{self::Class1?} null : #t85{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•());
+  let final self::Class1? #t86 = n1 in #t86.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t87 = #t86{self::Class1}.{self::Class1::[]}(nullable1) in #t87.{core::Object::==}(null) ?{self::Class1?} null : #t87{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t88 = n1 in #t88.{core::Object::==}(null) ?{self::Class1?} null : #t88{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::[]}(nullable1);
+  let final self::Class1? #t89 = n1 in #t89.{core::Object::==}(null) ?{self::Class1?} null : #t89{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::[]=}(nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t90 = n1 in #t90.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t91 = #t90{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1? #t92 = nullable1 in let final self::Class1 #t93 = new self::Class1::•() in let final void #t94 = #t91.{self::Class1::[]=}(#t92, #t93) in #t93;
+  let final self::Class1? #t95 = n1 in #t95.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t96 = #t95{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::[]}(nullable1) in #t96.{core::Object::==}(null) ?{self::Class1?} null : #t96{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t97 = n1 in #t97.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t98 = #t97{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t99 = nullable2 in #t98.{self::Class2::[]=}(#t99, #t98.{self::Class2::[]}(#t99).{self::Class2::+}(0));
+  nullable2 = let final self::Class1? #t100 = n1 in #t100.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t101 = #t100{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t102 = nullable2 in let final self::Class2 #t103 = #t101.{self::Class2::[]}(#t102).{self::Class2::+}(0) in let final void #t104 = #t101.{self::Class2::[]=}(#t102, #t103) in #t103;
+  let final self::Class1? #t105 = n1 in #t105.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t106 = nullable1 in #t105{self::Class1}.{self::Class1::[]}(#t106).{core::Object::==}(null) ?{self::Class1?} #t105{self::Class1}.{self::Class1::[]=}(#t106, nullable1) : null;
+  nullable1 = let final self::Class1? #t107 = n1 in #t107.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t108 = nullable1 in let final self::Class1? #t109 = #t107{self::Class1}.{self::Class1::[]}(#t108) in #t109.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t110 = nullable1 in let final void #t111 = #t107{self::Class1}.{self::Class1::[]=}(#t108, #t110) in #t110 : #t109{self::Class1};
+  let final self::Class2? #t112 = n2 in #t112.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t113 = nullable2 in #t112{self::Class2}.{self::Class2::[]=}(#t113, #t112{self::Class2}.{self::Class2::[]}(#t113).{self::Class2::+}(0));
+  nullable2 = let final self::Class2? #t114 = n2 in #t114.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t115 = nullable2 in let final self::Class2 #t116 = #t114{self::Class2}.{self::Class2::[]}(#t115).{self::Class2::+}(0) in let final void #t117 = #t114{self::Class2}.{self::Class2::[]=}(#t115, #t116) in #t116;
+  let final self::Class2? #t118 = n2 in #t118.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t119 = nullable2 in #t118{self::Class2}.{self::Class2::[]=}(#t119, #t118{self::Class2}.{self::Class2::[]}(#t119).{self::Class2::+}(0));
+  nullable2 = let final self::Class2? #t120 = n2 in #t120.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t121 = nullable2 in let final self::Class2 #t122 = #t120{self::Class2}.{self::Class2::[]}(#t121).{self::Class2::+}(0) in let final void #t123 = #t120{self::Class2}.{self::Class2::[]=}(#t121, #t122) in #t122;
+  let final self::Class2? #t124 = n2 in #t124.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t125 = nullable2 in #t124{self::Class2}.{self::Class2::[]=}(#t125, #t124{self::Class2}.{self::Class2::[]}(#t125).{self::Class2::+}(1));
+  nullable2 = let final self::Class2? #t126 = n2 in #t126.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t127 = nullable2 in let final self::Class2 #t128 = #t126{self::Class2}.{self::Class2::[]}(#t127) in let final void #t129 = #t126{self::Class2}.{self::Class2::[]=}(#t127, #t128.{self::Class2::+}(1)) in #t128;
+  let final self::Class2? #t130 = n2 in #t130.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t131 = nullable2 in let final self::Class2 #t132 = #t130{self::Class2}.{self::Class2::[]}(#t131).{self::Class2::+}(1) in let final void #t133 = #t130{self::Class2}.{self::Class2::[]=}(#t131, #t132) in #t132;
+  nullable2 = let final self::Class2? #t134 = n2 in #t134.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t135 = nullable2 in let final self::Class2 #t136 = #t134{self::Class2}.{self::Class2::[]}(#t135).{self::Class2::+}(1) in let final void #t137 = #t134{self::Class2}.{self::Class2::[]=}(#t135, #t136) in #t136;
+  let final self::Class1? #t138 = n1 in #t138.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t139 = #t138{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t140 = nullable2 in #t139.{self::Class2::[]=}(#t140, #t139.{self::Class2::[]}(#t140).{self::Class2::+}(1));
+  nullable2 = let final self::Class1? #t141 = n1 in #t141.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t142 = #t141{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t143 = nullable2 in let final self::Class2 #t144 = #t142.{self::Class2::[]}(#t143) in let final void #t145 = #t142.{self::Class2::[]=}(#t143, #t144.{self::Class2::+}(1)) in #t144;
+  let final self::Class1? #t146 = n1 in #t146.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t147 = #t146{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t148 = nullable2 in let final self::Class2 #t149 = #t147.{self::Class2::[]}(#t148).{self::Class2::+}(1) in let final void #t150 = #t147.{self::Class2::[]=}(#t148, #t149) in #t149;
+  nullable2 = let final self::Class1? #t151 = n1 in #t151.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t152 = #t151{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t153 = nullable2 in let final self::Class2 #t154 = #t152.{self::Class2::[]}(#t153).{self::Class2::+}(1) in let final void #t155 = #t152.{self::Class2::[]=}(#t153, #t154) in #t154;
+  let final self::Class1? #t156 = n1 in #t156.{core::Object::==}(null) ?{self::Class2?} null : #t156{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2).{self::Class2::[]}(nullable2);
+  let final self::Class1? #t157 = n1 in #t157.{core::Object::==}(null) ?{self::Class2?} null : #t157{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2).{self::Class2::[]=}(nullable2, new self::Class2::•());
+  nullable2 = let final self::Class1? #t158 = n1 in #t158.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t159 = #t158{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t160 = nullable2 in let final self::Class2 #t161 = new self::Class2::•() in let final void #t162 = #t159.{self::Class2::[]=}(#t160, #t161) in #t161;
+  let final self::Class1? #t163 = n1 in #t163.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t164 = #t163{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2).{self::Class2::[]}(nullable2) in #t164.{core::Object::==}(null) ?{self::Class2?} null : #t164{self::Class2}.{self::Class2::nonNullable2Method}();
+  let final self::Class1? #t165 = n1 in #t165.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t166 = #t165{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t167 = nullable2 in #t166.{self::Class2::[]=}(#t167, #t166.{self::Class2::[]}(#t167).{self::Class2::+}(0));
+  nullable2 = let final self::Class1? #t168 = n1 in #t168.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t169 = #t168{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t170 = nullable2 in let final self::Class2 #t171 = #t169.{self::Class2::[]}(#t170).{self::Class2::+}(0) in let final void #t172 = #t169.{self::Class2::[]=}(#t170, #t171) in #t171;
+  let final self::Class1? #t173 = n1 in #t173.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t174 = #t173{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t175 = nullable2 in #t174.{self::Class2::[]=}(#t175, #t174.{self::Class2::[]}(#t175).{self::Class2::+}(1));
+  nullable2 = let final self::Class1? #t176 = n1 in #t176.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t177 = #t176{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t178 = nullable2 in let final self::Class2 #t179 = #t177.{self::Class2::[]}(#t178) in let final void #t180 = #t177.{self::Class2::[]=}(#t178, #t179.{self::Class2::+}(1)) in #t179;
+  let final self::Class1? #t181 = n1 in #t181.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t182 = #t181{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t183 = nullable2 in let final self::Class2 #t184 = #t182.{self::Class2::[]}(#t183).{self::Class2::+}(1) in let final void #t185 = #t182.{self::Class2::[]=}(#t183, #t184) in #t184;
+  nullable2 = let final self::Class1? #t186 = n1 in #t186.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t187 = #t186{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = #t187.{self::Class2::[]}(#t188).{self::Class2::+}(1) in let final void #t190 = #t187.{self::Class2::[]=}(#t188, #t189) in #t189;
+  let final self::Class1? #t191 = n1 in #t191.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t192 = #t191{self::Class1}.{self::Class1::[]}(nullable1) in #t192.{core::Object::==}(null) ?{self::Class1?} null : #t192{self::Class1}.{self::Class1::[]}(nullable1);
+  let final self::Class1? #t193 = n1 in #t193.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t194 = #t193{self::Class1}.{self::Class1::[]}(nullable1) in #t194.{core::Object::==}(null) ?{self::Class1?} null : #t194{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t195 = n1 in #t195.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t196 = #t195{self::Class1}.{self::Class1::[]}(nullable1) in #t196.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t197 = nullable1 in let final self::Class1 #t198 = new self::Class1::•() in let final void #t199 = #t196{self::Class1}.{self::Class1::[]=}(#t197, #t198) in #t198;
+  let final self::Class1? #t200 = n1 in #t200.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t201 = #t200{self::Class1}.{self::Class1::[]}(nullable1) in #t201.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t202 = #t201{self::Class1}.{self::Class1::[]}(nullable1) in #t202.{core::Object::==}(null) ?{self::Class1?} null : #t202{self::Class1}.{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t203 = n1 in #t203.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t204 = #t203{self::Class1}.{self::Class1::[]}(nullable1) in #t204.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t205 = #t204{self::Class1}.{self::Class1::[]}(nullable1) in #t205.{core::Object::==}(null) ?{self::Class1?} null : #t205{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t206 = n1 in #t206.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t207 = #t206{self::Class1}.{self::Class1::[]}(nullable1) in #t207.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t208 = nullable1 in #t207{self::Class1}.{self::Class1::[]}(#t208).{core::Object::==}(null) ?{self::Class1?} #t207{self::Class1}.{self::Class1::[]=}(#t208, nullable1) : null;
+  nullable1 = let final self::Class1? #t209 = n1 in #t209.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t210 = #t209{self::Class1}.{self::Class1::[]}(nullable1) in #t210.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t211 = nullable1 in let final self::Class1? #t212 = #t210{self::Class1}.{self::Class1::[]}(#t211) in #t212.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t213 = nullable1 in let final void #t214 = #t210{self::Class1}.{self::Class1::[]=}(#t211, #t213) in #t213 : #t212{self::Class1};
+  let final self::Class3? #t215 = n3 in #t215.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t216 = #t215{self::Class3}.{self::Class3::[]}(nullable3) in #t216.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in #t216{self::Class2}.{self::Class2::[]=}(#t217, #t216{self::Class2}.{self::Class2::[]}(#t217).{self::Class2::+}(0));
+  nullable2 = let final self::Class3? #t218 = n3 in #t218.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t219 = #t218{self::Class3}.{self::Class3::[]}(nullable3) in #t219.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t220 = nullable2 in let final self::Class2 #t221 = #t219{self::Class2}.{self::Class2::[]}(#t220).{self::Class2::+}(0) in let final void #t222 = #t219{self::Class2}.{self::Class2::[]=}(#t220, #t221) in #t221;
+  let final self::Class3? #t223 = n3 in #t223.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t224 = #t223{self::Class3}.{self::Class3::[]}(nullable3) in #t224.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t225 = nullable2 in #t224{self::Class2}.{self::Class2::[]=}(#t225, #t224{self::Class2}.{self::Class2::[]}(#t225).{self::Class2::+}(1));
+  nullable2 = let final self::Class3? #t226 = n3 in #t226.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t227 = #t226{self::Class3}.{self::Class3::[]}(nullable3) in #t227.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t228 = nullable2 in let final self::Class2 #t229 = #t227{self::Class2}.{self::Class2::[]}(#t228) in let final void #t230 = #t227{self::Class2}.{self::Class2::[]=}(#t228, #t229.{self::Class2::+}(1)) in #t229;
+  let final self::Class3? #t231 = n3 in #t231.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t232 = #t231{self::Class3}.{self::Class3::[]}(nullable3) in #t232.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t233 = nullable2 in let final self::Class2 #t234 = #t232{self::Class2}.{self::Class2::[]}(#t233).{self::Class2::+}(1) in let final void #t235 = #t232{self::Class2}.{self::Class2::[]=}(#t233, #t234) in #t234;
+  nullable2 = let final self::Class3? #t236 = n3 in #t236.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t237 = #t236{self::Class3}.{self::Class3::[]}(nullable3) in #t237.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t238 = nullable2 in let final self::Class2 #t239 = #t237{self::Class2}.{self::Class2::[]}(#t238).{self::Class2::+}(1) in let final void #t240 = #t237{self::Class2}.{self::Class2::[]=}(#t238, #t239) in #t239;
 }
 static method operatorAccess(self::Class1? n1, self::Class2? n2) → void {
   self::Class2? nullable2 = n2;
   self::throws(() → void => let final Never #t241 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:220:33: Error: Operator '+' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
   throws(() => n1?.nonNullable1 + 0);
-                                ^" in (let final self::Class1? #t242 = n1 in #t242 == null ?{self::Class1?} null : #t242{self::Class1}.{self::Class1::nonNullable1}{self::Class1}).{self::Class1::+}(0){(core::int) → self::Class1?});
+                                ^" in (let final self::Class1? #t242 = n1 in #t242.{core::Object::==}(null) ?{self::Class1?} null : #t242{self::Class1}.{self::Class1::nonNullable1}).{self::Class1::+}(0));
   self::throws(() → void => let final Never #t243 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:221:16: Error: Operator 'unary-' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
   throws(() => -n1?.nonNullable1);
-               ^" in (let final self::Class1? #t244 = n1 in #t244 == null ?{self::Class1?} null : #t244{self::Class1}.{self::Class1::nonNullable1}{self::Class1}).{self::Class1::unary-}(){() → self::Class1?});
-  let final self::Class2? #t245 = n2 in #t245 == null ?{self::Class2?} null : #t245.{self::Class2::nonNullable2} = #t245.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2};
-  nullable2 = let final self::Class2? #t246 = n2 in #t246 == null ?{self::Class2?} null : let final self::Class2 #t247 = #t246.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t248 = #t246.{self::Class2::nonNullable2} = #t247 in #t247;
-  let final self::Class2? #t249 = n2 in #t249 == null ?{self::Class2?} null : let final self::Class2 #t250 = #t249{self::Class2}.{self::Class2::nonNullable2}{self::Class2} in #t250.{self::Class2::nonNullable2} = #t250.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2};
-  nullable2 = let final self::Class2? #t251 = n2 in #t251 == null ?{self::Class2?} null : let final self::Class2 #t252 = #t251{self::Class2}.{self::Class2::nonNullable2}{self::Class2} in #t252.{self::Class2::nonNullable2} = #t252.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2};
-  let final self::Class2? #t253 = n2 in #t253 == null ?{self::Class2?} null : #t253.{self::Class2::nonNullable2} = #t253.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2};
-  nullable2 = let final self::Class2? #t254 = n2 in #t254 == null ?{self::Class2?} null : let final self::Class2 #t255 = #t254.{self::Class2::nonNullable2}{self::Class2} in let final void #t256 = #t254.{self::Class2::nonNullable2} = #t255.{self::Class2::+}(1){(core::int) → self::Class2} in #t255;
-  let final self::Class2? #t257 = n2 in #t257 == null ?{self::Class2?} null : let final self::Class2 #t258 = #t257.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t259 = #t257.{self::Class2::nonNullable2} = #t258 in #t258;
-  nullable2 = let final self::Class2? #t260 = n2 in #t260 == null ?{self::Class2?} null : let final self::Class2 #t261 = #t260.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t262 = #t260.{self::Class2::nonNullable2} = #t261 in #t261;
+               ^" in (let final self::Class1? #t244 = n1 in #t244.{core::Object::==}(null) ?{self::Class1?} null : #t244{self::Class1}.{self::Class1::nonNullable1}).{self::Class1::unary-}());
+  let final self::Class2? #t245 = n2 in #t245.{core::Object::==}(null) ?{self::Class2?} null : #t245.{self::Class2::nonNullable2} = #t245.{self::Class2::nonNullable2}.{self::Class2::+}(0);
+  nullable2 = let final self::Class2? #t246 = n2 in #t246.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t247 = #t246.{self::Class2::nonNullable2}.{self::Class2::+}(0) in let final void #t248 = #t246.{self::Class2::nonNullable2} = #t247 in #t247;
+  let final self::Class2? #t249 = n2 in #t249.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t250 = #t249{self::Class2}.{self::Class2::nonNullable2} in #t250.{self::Class2::nonNullable2} = #t250.{self::Class2::nonNullable2}.{self::Class2::+}(0);
+  nullable2 = let final self::Class2? #t251 = n2 in #t251.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t252 = #t251{self::Class2}.{self::Class2::nonNullable2} in #t252.{self::Class2::nonNullable2} = #t252.{self::Class2::nonNullable2}.{self::Class2::+}(0);
+  let final self::Class2? #t253 = n2 in #t253.{core::Object::==}(null) ?{self::Class2?} null : #t253.{self::Class2::nonNullable2} = #t253.{self::Class2::nonNullable2}.{self::Class2::+}(1);
+  nullable2 = let final self::Class2? #t254 = n2 in #t254.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t255 = #t254.{self::Class2::nonNullable2} in let final void #t256 = #t254.{self::Class2::nonNullable2} = #t255.{self::Class2::+}(1) in #t255;
+  let final self::Class2? #t257 = n2 in #t257.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t258 = #t257.{self::Class2::nonNullable2}.{self::Class2::+}(1) in let final void #t259 = #t257.{self::Class2::nonNullable2} = #t258 in #t258;
+  nullable2 = let final self::Class2? #t260 = n2 in #t260.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t261 = #t260.{self::Class2::nonNullable2}.{self::Class2::+}(1) in let final void #t262 = #t260.{self::Class2::nonNullable2} = #t261 in #t261;
 }
 static method ifNull(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t263 = n1 in #t263 == null ?{self::Class1?} null : #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null;
-  n1 = let final self::Class1? #t264 = n1 in #t264 == null ?{self::Class1?} null : let final self::Class1? #t265 = #t264.{self::Class1::nullable1}{self::Class1?} in #t265 == null ?{self::Class1} #t264.{self::Class1::nullable1} = n1{self::Class1} : #t265{self::Class1};
-  let final self::Class1? #t266 = n1 in #t266 == null ?{self::Class1?} null : let final self::Class1 #t267 = #t266{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t267.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t267.{self::Class1::nullable1} = n1{self::Class1} : null;
-  n1 = let final self::Class1? #t268 = n1 in #t268 == null ?{self::Class1?} null : let final self::Class1 #t269 = #t268{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t270 = #t269.{self::Class1::nullable1}{self::Class1?} in #t270 == null ?{self::Class1} #t269.{self::Class1::nullable1} = n1{self::Class1} : #t270{self::Class1};
-  let final self::Class1? #t271 = n1 in #t271 == null ?{self::Class1?} null : let final self::Class1 #t272 = #t271{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t273 = n1{self::Class1} in #t272.{self::Class1::[]}(#t273){(self::Class1?) → self::Class1?} == null ?{self::Class1} #t272.{self::Class1::[]=}(#t273, n1{self::Class1}){(self::Class1?, self::Class1?) → void} : null;
-  n1 = let final self::Class1? #t274 = n1 in #t274 == null ?{self::Class1?} null : let final self::Class1 #t275 = #t274{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t276 = n1{self::Class1} in let final self::Class1? #t277 = #t275.{self::Class1::[]}(#t276){(self::Class1?) → self::Class1?} in #t277 == null ?{self::Class1} let final self::Class1 #t278 = n1{self::Class1} in let final void #t279 = #t275.{self::Class1::[]=}(#t276, #t278){(self::Class1?, self::Class1?) → void} in #t278 : #t277{self::Class1};
+  let final self::Class1? #t263 = n1 in #t263.{core::Object::==}(null) ?{self::Class1?} null : #t263.{self::Class1::nullable1}.{core::Object::==}(null) ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null;
+  n1 = let final self::Class1? #t264 = n1 in #t264.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t265 = #t264.{self::Class1::nullable1} in #t265.{core::Object::==}(null) ?{self::Class1} #t264.{self::Class1::nullable1} = n1{self::Class1} : #t265{self::Class1};
+  let final self::Class1? #t266 = n1 in #t266.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t267 = #t266{self::Class1}.{self::Class1::nonNullable1} in #t267.{self::Class1::nullable1}.{core::Object::==}(null) ?{self::Class1} #t267.{self::Class1::nullable1} = n1{self::Class1} : null;
+  n1 = let final self::Class1? #t268 = n1 in #t268.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t269 = #t268{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1? #t270 = #t269.{self::Class1::nullable1} in #t270.{core::Object::==}(null) ?{self::Class1} #t269.{self::Class1::nullable1} = n1{self::Class1} : #t270{self::Class1};
+  let final self::Class1? #t271 = n1 in #t271.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t272 = #t271{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1 #t273 = n1{self::Class1} in #t272.{self::Class1::[]}(#t273).{core::Object::==}(null) ?{self::Class1} #t272.{self::Class1::[]=}(#t273, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t274 = n1 in #t274.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t275 = #t274{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1 #t276 = n1{self::Class1} in let final self::Class1? #t277 = #t275.{self::Class1::[]}(#t276) in #t277.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t278 = n1{self::Class1} in let final void #t279 = #t275.{self::Class1::[]=}(#t276, #t278) in #t278 : #t277{self::Class1};
 }
 static method throws(() → void f) → void {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.transformed.expect
index ed3bb8d..d6e1e8e 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.transformed.expect
@@ -39,25 +39,25 @@
   get property2() → self::Class2
     return new self::Class2::•();
   get nullable1() → self::Class1?
-    return this.{self::Class1::property1}{self::Class1};
+    return this.{self::Class1::property1};
   set nullable1(self::Class1? value) → void {
     this.{self::Class1::property} = value;
   }
   method nonNullable1Method() → self::Class1
-    return this.{self::Class1::nonNullable1}{self::Class1};
+    return this.{self::Class1::nonNullable1};
   operator [](self::Class1? key) → self::Class1?
-    return this.{self::Class1::nullable1}{self::Class1?};
+    return this.{self::Class1::nullable1};
   operator []=(self::Class1? key, self::Class1? value) → void {
     this.{self::Class1::property} = value;
   }
   operator +(core::int value) → self::Class1?
-    return this.{self::Class1::nullable1}{self::Class1?};
+    return this.{self::Class1::nullable1};
   operator unary-() → self::Class1?
-    return this.{self::Class1::nullable1}{self::Class1?};
+    return this.{self::Class1::nullable1};
   get nonNullable1() → self::Class1
-    return this.{self::Class1::property1}{self::Class1};
+    return this.{self::Class1::property1};
   get nonNullable2() → self::Class2
-    return this.{self::Class1::property2}{self::Class2};
+    return this.{self::Class1::property2};
 }
 class Class2 extends core::Object {
   synthetic constructor •() → self::Class2
@@ -67,17 +67,17 @@
     return this;
   set property(self::Class2 value) → void {}
   method nonNullable2Method() → self::Class2
-    return this.{self::Class2::nonNullable2}{self::Class2};
+    return this.{self::Class2::nonNullable2};
   operator [](self::Class2? key) → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   operator []=(self::Class2? key, self::Class2? value) → void
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   operator +(core::int value) → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   operator unary-() → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   get nonNullable2() → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   set nonNullable2(self::Class2 value) → void {
     this.{self::Class2::property} = value;
   }
@@ -89,7 +89,7 @@
   get property() → self::Class2?
     return null;
   operator [](self::Class3? key) → self::Class2?
-    return this.{self::Class3::property}{self::Class2?};
+    return this.{self::Class3::property};
 }
 static method main() → dynamic {
   self::propertyAccess(null);
@@ -99,168 +99,168 @@
 }
 static method propertyAccess(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t1 = n1 in #t1 == null ?{self::Class1?} null : #t1{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t2 = n1 in #t2 == null ?{self::Class1?} null : #t2{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t3 = n1 in #t3 == null ?{self::Class1?} null : #t3{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t4 = n1 in #t4 == null ?{self::Class1?} null : #t4{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t5 = n1 in #t5 == null ?{self::Class1?} null : #t5{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t6 = n1 in #t6 == null ?{self::Class1?} null : let final self::Class1? #t7 = #t6{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t7 == null ?{self::Class1?} null : #t7{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t8 = n1 in #t8 == null ?{self::Class1?} null : let final self::Class1? #t9 = #t8{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t9 == null ?{self::Class1?} null : #t9{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t10 = n1 in #t10 == null ?{self::Class1?} null : #t10{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t11 = n1 in #t11 == null ?{self::Class1?} null : let final self::Class1? #t12 = #t11{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t12 == null ?{self::Class1?} null : #t12{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t13 = n1 in #t13 == null ?{self::Class1?} null : let final self::Class1? #t14 = #t13{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t14 == null ?{self::Class1?} null : #t14{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t15 = let final self::Class1? #t16 = n1 in #t16 == null ?{self::Class1?} null : #t16{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t15 == null ?{self::Class1?} null : #t15{self::Class1}.{self::Class1::nullable1}{self::Class1?};
+  let final self::Class1? #t1 = n1 in #t1.{core::Object::==}(null) ?{self::Class1?} null : #t1{self::Class1}.{self::Class1::nullable1};
+  let final self::Class1? #t2 = n1 in #t2.{core::Object::==}(null) ?{self::Class1?} null : #t2{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t3 = n1 in #t3.{core::Object::==}(null) ?{self::Class1?} null : #t3{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t4 = n1 in #t4.{core::Object::==}(null) ?{self::Class1?} null : #t4{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t5 = n1 in #t5.{core::Object::==}(null) ?{self::Class1?} null : #t5{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t6 = n1 in #t6.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t7 = #t6{self::Class1}.{self::Class1::nullable1} in #t7.{core::Object::==}(null) ?{self::Class1?} null : #t7{self::Class1}.{self::Class1::nullable1};
+  let final self::Class1? #t8 = n1 in #t8.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t9 = #t8{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t9.{core::Object::==}(null) ?{self::Class1?} null : #t9{self::Class1}.{self::Class1::nullable1};
+  let final self::Class1? #t10 = n1 in #t10.{core::Object::==}(null) ?{self::Class1?} null : #t10{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t11 = n1 in #t11.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t12 = #t11{self::Class1}.{self::Class1::nullable1} in #t12.{core::Object::==}(null) ?{self::Class1?} null : #t12{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t13 = n1 in #t13.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t14 = #t13{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t14.{core::Object::==}(null) ?{self::Class1?} null : #t14{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t15 = let final self::Class1? #t16 = n1 in #t16.{core::Object::==}(null) ?{self::Class1?} null : #t16{self::Class1}.{self::Class1::nullable1} in #t15.{core::Object::==}(null) ?{self::Class1?} null : #t15{self::Class1}.{self::Class1::nullable1};
   self::throws(() → void => let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:87:47: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nullable1 = new Class1()).nullable1);
-                                              ^^^^^^^^^" in (let final self::Class1? #t18 = n1 in #t18 == null ?{self::Class1?} null : #t18{self::Class1}.{self::Class1::nullable1} = new self::Class1::•()).{self::Class1::nullable1}{<nullable>}.{self::Class1?});
+                                              ^^^^^^^^^" in (let final self::Class1? #t18 = n1 in #t18.{core::Object::==}(null) ?{self::Class1?} null : #t18{self::Class1}.{self::Class1::nullable1} = new self::Class1::•()).{self::Class1::nullable1});
   self::throws(() → void => let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:88:43: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nonNullable1Method()).nullable1);
-                                          ^^^^^^^^^" in (let final self::Class1? #t20 = n1 in #t20 == null ?{self::Class1?} null : #t20{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}).{self::Class1::nullable1}{<nullable>}.{self::Class1?});
-  nullable1 = let final self::Class1? #t21 = n1 in #t21 == null ?{self::Class1?} null : #t21{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t22 = n1 in #t22 == null ?{self::Class1?} null : let final self::Class1? #t23 = #t22{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t23 == null ?{self::Class1?} null : #t23{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t24 = n1 in #t24 == null ?{self::Class1?} null : let final self::Class1? #t25 = #t24{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t25 == null ?{self::Class1?} null : #t25{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t26 = n1 in #t26 == null ?{self::Class1?} null : let final self::Class1? #t27 = #t26{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t27 == null ?{self::Class1?} null : #t27{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t28 = n1 in #t28 == null ?{self::Class1?} null : #t28{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t29 = n1 in #t29 == null ?{self::Class1?} null : #t29{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t30 = n1 in #t30 == null ?{self::Class1?} null : #t30{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t31 = n1 in #t31 == null ?{self::Class1?} null : #t31{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t32 = n1 in #t32 == null ?{self::Class1?} null : #t32{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t33 = n1 in #t33 == null ?{self::Class1?} null : #t33{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t34 = n1 in #t34 == null ?{self::Class1?} null : #t34{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t35 = n1 in #t35 == null ?{self::Class1?} null : #t35{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t36 = n1 in #t36 == null ?{self::Class1?} null : #t36{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t37 = n1 in #t37 == null ?{self::Class1?} null : #t37{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t38 = n1 in #t38 == null ?{self::Class1?} null : #t38{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t39 = n1 in #t39 == null ?{self::Class1?} null : #t39{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t40 = n1 in #t40 == null ?{self::Class1?} null : let final self::Class1? #t41 = #t40{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t41 == null ?{self::Class1?} null : #t41{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t42 = n1 in #t42 == null ?{self::Class1?} null : #t42{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t43 = n1 in #t43 == null ?{self::Class1?} null : #t43{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t44 = n1 in #t44 == null ?{self::Class1?} null : #t44{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t45 = n1 in #t45 == null ?{self::Class1?} null : #t45{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t46 = n1 in #t46 == null ?{self::Class1?} null : #t46{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t47 = n1 in #t47 == null ?{self::Class1?} null : #t47{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t48 = n1 in #t48 == null ?{self::Class1?} null : #t48{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t49 = n1 in #t49 == null ?{self::Class1?} null : #t49{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t50 = n1 in #t50 == null ?{self::Class1?} null : #t50{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t51 = n1 in #t51 == null ?{self::Class1?} null : #t51{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t52 = n1 in #t52 == null ?{self::Class1?} null : #t52{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t53 = n1 in #t53 == null ?{self::Class1?} null : #t53{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t54 = n1 in #t54 == null ?{self::Class1?} null : #t54{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t55 = n1 in #t55 == null ?{self::Class1?} null : #t55{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t56 = n1 in #t56 == null ?{self::Class1?} null : #t56{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t57 = n1 in #t57 == null ?{self::Class1?} null : #t57{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t58 = n1 in #t58 == null ?{self::Class1?} null : #t58{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t59 = n1 in #t59 == null ?{self::Class1?} null : #t59{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t60 = n1 in #t60 == null ?{self::Class1?} null : #t60{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t61 = n1 in #t61 == null ?{self::Class1?} null : #t61{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t62 = n1 in #t62 == null ?{self::Class1?} null : #t62{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t63 = n1 in #t63 == null ?{self::Class1?} null : #t63{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t64 = n1 in #t64 == null ?{self::Class1?} null : #t64{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t65 = n1 in #t65 == null ?{self::Class1?} null : #t65{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t66 = n1 in #t66 == null ?{self::Class1?} null : #t66{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t67 = n1 in #t67 == null ?{self::Class1?} null : #t67{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t68 = n1 in #t68 == null ?{self::Class1?} null : #t68{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t69 = n1 in #t69 == null ?{self::Class1?} null : #t69{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t70 = n1 in #t70 == null ?{self::Class1?} null : #t70{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t71 = n1 in #t71 == null ?{self::Class1?} null : #t71{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t72 = n1 in #t72 == null ?{self::Class1?} null : #t72{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t73 = n1 in #t73 == null ?{self::Class1?} null : #t73{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t74 = n1 in #t74 == null ?{self::Class1?} null : #t74{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t75 = n1 in #t75 == null ?{self::Class1?} null : #t75{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t76 = n1 in #t76 == null ?{self::Class1?} null : #t76{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t77 = n1 in #t77 == null ?{self::Class1?} null : #t77{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t78 = n1 in #t78 == null ?{self::Class1?} null : #t78{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t79 = n1 in #t79 == null ?{self::Class1?} null : #t79{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t80 = n1 in #t80 == null ?{self::Class1?} null : #t80{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t81 = n1 in #t81 == null ?{self::Class1?} null : #t81{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t82 = n1 in #t82 == null ?{self::Class1?} null : let final self::Class1? #t83 = #t82{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1} in #t83 == null ?{self::Class1?} null : #t83{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
+                                          ^^^^^^^^^" in (let final self::Class1? #t20 = n1 in #t20.{core::Object::==}(null) ?{self::Class1?} null : #t20{self::Class1}.{self::Class1::nonNullable1Method}()).{self::Class1::nullable1});
+  nullable1 = let final self::Class1? #t21 = n1 in #t21.{core::Object::==}(null) ?{self::Class1?} null : #t21{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t22 = n1 in #t22.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t23 = #t22{self::Class1}.{self::Class1::nullable1} in #t23.{core::Object::==}(null) ?{self::Class1?} null : #t23{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t24 = n1 in #t24.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t25 = #t24{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t25.{core::Object::==}(null) ?{self::Class1?} null : #t25{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t26 = n1 in #t26.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t27 = #t26{self::Class1}.{self::Class1::nullable1} in #t27.{core::Object::==}(null) ?{self::Class1?} null : #t27{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t28 = n1 in #t28.{core::Object::==}(null) ?{self::Class1?} null : #t28{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t29 = n1 in #t29.{core::Object::==}(null) ?{self::Class1?} null : #t29{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t30 = n1 in #t30.{core::Object::==}(null) ?{self::Class1?} null : #t30{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t31 = n1 in #t31.{core::Object::==}(null) ?{self::Class1?} null : #t31{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t32 = n1 in #t32.{core::Object::==}(null) ?{self::Class1?} null : #t32{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t33 = n1 in #t33.{core::Object::==}(null) ?{self::Class1?} null : #t33{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t34 = n1 in #t34.{core::Object::==}(null) ?{self::Class1?} null : #t34{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t35 = n1 in #t35.{core::Object::==}(null) ?{self::Class1?} null : #t35{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t36 = n1 in #t36.{core::Object::==}(null) ?{self::Class1?} null : #t36{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t37 = n1 in #t37.{core::Object::==}(null) ?{self::Class1?} null : #t37{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t38 = n1 in #t38.{core::Object::==}(null) ?{self::Class1?} null : #t38{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t39 = n1 in #t39.{core::Object::==}(null) ?{self::Class1?} null : #t39{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t40 = n1 in #t40.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t41 = #t40{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t41.{core::Object::==}(null) ?{self::Class1?} null : #t41{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t42 = n1 in #t42.{core::Object::==}(null) ?{self::Class1?} null : #t42{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t43 = n1 in #t43.{core::Object::==}(null) ?{self::Class1?} null : #t43{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t44 = n1 in #t44.{core::Object::==}(null) ?{self::Class1?} null : #t44{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t45 = n1 in #t45.{core::Object::==}(null) ?{self::Class1?} null : #t45{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t46 = n1 in #t46.{core::Object::==}(null) ?{self::Class1?} null : #t46{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t47 = n1 in #t47.{core::Object::==}(null) ?{self::Class1?} null : #t47{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t48 = n1 in #t48.{core::Object::==}(null) ?{self::Class1?} null : #t48{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t49 = n1 in #t49.{core::Object::==}(null) ?{self::Class1?} null : #t49{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t50 = n1 in #t50.{core::Object::==}(null) ?{self::Class1?} null : #t50{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t51 = n1 in #t51.{core::Object::==}(null) ?{self::Class1?} null : #t51{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t52 = n1 in #t52.{core::Object::==}(null) ?{self::Class1?} null : #t52{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t53 = n1 in #t53.{core::Object::==}(null) ?{self::Class1?} null : #t53{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t54 = n1 in #t54.{core::Object::==}(null) ?{self::Class1?} null : #t54{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t55 = n1 in #t55.{core::Object::==}(null) ?{self::Class1?} null : #t55{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t56 = n1 in #t56.{core::Object::==}(null) ?{self::Class1?} null : #t56{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t57 = n1 in #t57.{core::Object::==}(null) ?{self::Class1?} null : #t57{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t58 = n1 in #t58.{core::Object::==}(null) ?{self::Class1?} null : #t58{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t59 = n1 in #t59.{core::Object::==}(null) ?{self::Class1?} null : #t59{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t60 = n1 in #t60.{core::Object::==}(null) ?{self::Class1?} null : #t60{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t61 = n1 in #t61.{core::Object::==}(null) ?{self::Class1?} null : #t61{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t62 = n1 in #t62.{core::Object::==}(null) ?{self::Class1?} null : #t62{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t63 = n1 in #t63.{core::Object::==}(null) ?{self::Class1?} null : #t63{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t64 = n1 in #t64.{core::Object::==}(null) ?{self::Class1?} null : #t64{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t65 = n1 in #t65.{core::Object::==}(null) ?{self::Class1?} null : #t65{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t66 = n1 in #t66.{core::Object::==}(null) ?{self::Class1?} null : #t66{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t67 = n1 in #t67.{core::Object::==}(null) ?{self::Class1?} null : #t67{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t68 = n1 in #t68.{core::Object::==}(null) ?{self::Class1?} null : #t68{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t69 = n1 in #t69.{core::Object::==}(null) ?{self::Class1?} null : #t69{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t70 = n1 in #t70.{core::Object::==}(null) ?{self::Class1?} null : #t70{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t71 = n1 in #t71.{core::Object::==}(null) ?{self::Class1?} null : #t71{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t72 = n1 in #t72.{core::Object::==}(null) ?{self::Class1?} null : #t72{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t73 = n1 in #t73.{core::Object::==}(null) ?{self::Class1?} null : #t73{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t74 = n1 in #t74.{core::Object::==}(null) ?{self::Class1?} null : #t74{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t75 = n1 in #t75.{core::Object::==}(null) ?{self::Class1?} null : #t75{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t76 = n1 in #t76.{core::Object::==}(null) ?{self::Class1?} null : #t76{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t77 = n1 in #t77.{core::Object::==}(null) ?{self::Class1?} null : #t77{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t78 = n1 in #t78.{core::Object::==}(null) ?{self::Class1?} null : #t78{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t79 = n1 in #t79.{core::Object::==}(null) ?{self::Class1?} null : #t79{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t80 = n1 in #t80.{core::Object::==}(null) ?{self::Class1?} null : #t80{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t81 = n1 in #t81.{core::Object::==}(null) ?{self::Class1?} null : #t81{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t82 = n1 in #t82.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t83 = #t82{self::Class1}.{self::Class1::nonNullable1Method}() in #t83.{core::Object::==}(null) ?{self::Class1?} null : #t83{self::Class1}.{self::Class1::nonNullable1Method}();
 }
 static method indexAccess(self::Class1? n1, self::Class2? n2, self::Class3? n3) → void {
   self::Class1? nullable1 = n1;
   self::Class2? nullable2 = n2;
   self::Class3? nullable3 = n3;
-  let final self::Class1? #t84 = n1 in #t84 == null ?{self::Class1?} null : #t84{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?};
-  let final self::Class1? #t85 = n1 in #t85 == null ?{self::Class1?} null : #t85{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•()){(self::Class1?, self::Class1?) → void};
-  let final self::Class1? #t86 = n1 in #t86 == null ?{self::Class1?} null : let final self::Class1? #t87 = #t86{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t87 == null ?{self::Class1?} null : #t87{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t88 = n1 in #t88 == null ?{self::Class1?} null : #t88{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?};
-  let final self::Class1? #t89 = n1 in #t89 == null ?{self::Class1?} null : #t89{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•()){(self::Class1?, self::Class1?) → void};
-  nullable1 = let final self::Class1? #t90 = n1 in #t90 == null ?{self::Class1?} null : let final self::Class1 #t91 = #t90{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t92 = nullable1 in let final self::Class1 #t93 = new self::Class1::•() in let final void #t94 = #t91.{self::Class1::[]=}(#t92, #t93){(self::Class1?, self::Class1?) → void} in #t93;
-  let final self::Class1? #t95 = n1 in #t95 == null ?{self::Class1?} null : let final self::Class1? #t96 = #t95{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t96 == null ?{self::Class1?} null : #t96{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t97 = n1 in #t97 == null ?{self::Class2?} null : let final self::Class2 #t98 = #t97{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t99 = nullable2 in #t98.{self::Class2::[]=}(#t99, #t98.{self::Class2::[]}(#t99){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t100 = n1 in #t100 == null ?{self::Class2?} null : let final self::Class2 #t101 = #t100{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t102 = nullable2 in let final self::Class2 #t103 = #t101.{self::Class2::[]}(#t102){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t104 = #t101.{self::Class2::[]=}(#t102, #t103){(self::Class2?, self::Class2?) → void} in #t103;
-  let final self::Class1? #t105 = n1 in #t105 == null ?{self::Class1?} null : let final self::Class1? #t106 = nullable1 in #t105{self::Class1}.{self::Class1::[]}(#t106){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t105{self::Class1}.{self::Class1::[]=}(#t106, nullable1){(self::Class1?, self::Class1?) → void} : null;
-  nullable1 = let final self::Class1? #t107 = n1 in #t107 == null ?{self::Class1?} null : let final self::Class1? #t108 = nullable1 in let final self::Class1? #t109 = #t107{self::Class1}.{self::Class1::[]}(#t108){(self::Class1?) → self::Class1?} in #t109 == null ?{self::Class1?} let final self::Class1? #t110 = nullable1 in let final void #t111 = #t107{self::Class1}.{self::Class1::[]=}(#t108, #t110){(self::Class1?, self::Class1?) → void} in #t110 : #t109{self::Class1};
-  let final self::Class2? #t112 = n2 in #t112 == null ?{self::Class2?} null : let final self::Class2? #t113 = nullable2 in #t112{self::Class2}.{self::Class2::[]=}(#t113, #t112{self::Class2}.{self::Class2::[]}(#t113){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class2? #t114 = n2 in #t114 == null ?{self::Class2?} null : let final self::Class2? #t115 = nullable2 in let final self::Class2 #t116 = #t114{self::Class2}.{self::Class2::[]}(#t115){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t117 = #t114{self::Class2}.{self::Class2::[]=}(#t115, #t116){(self::Class2?, self::Class2?) → void} in #t116;
-  let final self::Class2? #t118 = n2 in #t118 == null ?{self::Class2?} null : let final self::Class2? #t119 = nullable2 in #t118{self::Class2}.{self::Class2::[]=}(#t119, #t118{self::Class2}.{self::Class2::[]}(#t119){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class2? #t120 = n2 in #t120 == null ?{self::Class2?} null : let final self::Class2? #t121 = nullable2 in let final self::Class2 #t122 = #t120{self::Class2}.{self::Class2::[]}(#t121){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t123 = #t120{self::Class2}.{self::Class2::[]=}(#t121, #t122){(self::Class2?, self::Class2?) → void} in #t122;
-  let final self::Class2? #t124 = n2 in #t124 == null ?{self::Class2?} null : let final self::Class2? #t125 = nullable2 in #t124{self::Class2}.{self::Class2::[]=}(#t125, #t124{self::Class2}.{self::Class2::[]}(#t125){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class2? #t126 = n2 in #t126 == null ?{self::Class2?} null : let final self::Class2? #t127 = nullable2 in let final self::Class2 #t128 = #t126{self::Class2}.{self::Class2::[]}(#t127){(self::Class2?) → self::Class2} in let final void #t129 = #t126{self::Class2}.{self::Class2::[]=}(#t127, #t128.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t128;
-  let final self::Class2? #t130 = n2 in #t130 == null ?{self::Class2?} null : let final self::Class2? #t131 = nullable2 in let final self::Class2 #t132 = #t130{self::Class2}.{self::Class2::[]}(#t131){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t133 = #t130{self::Class2}.{self::Class2::[]=}(#t131, #t132){(self::Class2?, self::Class2?) → void} in #t132;
-  nullable2 = let final self::Class2? #t134 = n2 in #t134 == null ?{self::Class2?} null : let final self::Class2? #t135 = nullable2 in let final self::Class2 #t136 = #t134{self::Class2}.{self::Class2::[]}(#t135){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t137 = #t134{self::Class2}.{self::Class2::[]=}(#t135, #t136){(self::Class2?, self::Class2?) → void} in #t136;
-  let final self::Class1? #t138 = n1 in #t138 == null ?{self::Class2?} null : let final self::Class2 #t139 = #t138{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t140 = nullable2 in #t139.{self::Class2::[]=}(#t140, #t139.{self::Class2::[]}(#t140){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t141 = n1 in #t141 == null ?{self::Class2?} null : let final self::Class2 #t142 = #t141{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t143 = nullable2 in let final self::Class2 #t144 = #t142.{self::Class2::[]}(#t143){(self::Class2?) → self::Class2} in let final void #t145 = #t142.{self::Class2::[]=}(#t143, #t144.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t144;
-  let final self::Class1? #t146 = n1 in #t146 == null ?{self::Class2?} null : let final self::Class2 #t147 = #t146{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t148 = nullable2 in let final self::Class2 #t149 = #t147.{self::Class2::[]}(#t148){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t150 = #t147.{self::Class2::[]=}(#t148, #t149){(self::Class2?, self::Class2?) → void} in #t149;
-  nullable2 = let final self::Class1? #t151 = n1 in #t151 == null ?{self::Class2?} null : let final self::Class2 #t152 = #t151{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t153 = nullable2 in let final self::Class2 #t154 = #t152.{self::Class2::[]}(#t153){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t155 = #t152.{self::Class2::[]=}(#t153, #t154){(self::Class2?, self::Class2?) → void} in #t154;
-  let final self::Class1? #t156 = n1 in #t156 == null ?{self::Class2?} null : #t156{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2};
-  let final self::Class1? #t157 = n1 in #t157 == null ?{self::Class2?} null : #t157{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2}.{self::Class2::[]=}(nullable2, new self::Class2::•()){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t158 = n1 in #t158 == null ?{self::Class2?} null : let final self::Class2 #t159 = #t158{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t160 = nullable2 in let final self::Class2 #t161 = new self::Class2::•() in let final void #t162 = #t159.{self::Class2::[]=}(#t160, #t161){(self::Class2?, self::Class2?) → void} in #t161;
-  let final self::Class1? #t163 = n1 in #t163 == null ?{self::Class2?} null : let final self::Class2? #t164 = #t163{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in #t164 == null ?{self::Class2?} null : #t164{self::Class2}.{self::Class2::nonNullable2Method}(){() → self::Class2};
-  let final self::Class1? #t165 = n1 in #t165 == null ?{self::Class2?} null : let final self::Class2 #t166 = #t165{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t167 = nullable2 in #t166.{self::Class2::[]=}(#t167, #t166.{self::Class2::[]}(#t167){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t168 = n1 in #t168 == null ?{self::Class2?} null : let final self::Class2 #t169 = #t168{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t170 = nullable2 in let final self::Class2 #t171 = #t169.{self::Class2::[]}(#t170){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t172 = #t169.{self::Class2::[]=}(#t170, #t171){(self::Class2?, self::Class2?) → void} in #t171;
-  let final self::Class1? #t173 = n1 in #t173 == null ?{self::Class2?} null : let final self::Class2 #t174 = #t173{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t175 = nullable2 in #t174.{self::Class2::[]=}(#t175, #t174.{self::Class2::[]}(#t175){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t176 = n1 in #t176 == null ?{self::Class2?} null : let final self::Class2 #t177 = #t176{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t178 = nullable2 in let final self::Class2 #t179 = #t177.{self::Class2::[]}(#t178){(self::Class2?) → self::Class2} in let final void #t180 = #t177.{self::Class2::[]=}(#t178, #t179.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t179;
-  let final self::Class1? #t181 = n1 in #t181 == null ?{self::Class2?} null : let final self::Class2 #t182 = #t181{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t183 = nullable2 in let final self::Class2 #t184 = #t182.{self::Class2::[]}(#t183){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t185 = #t182.{self::Class2::[]=}(#t183, #t184){(self::Class2?, self::Class2?) → void} in #t184;
-  nullable2 = let final self::Class1? #t186 = n1 in #t186 == null ?{self::Class2?} null : let final self::Class2 #t187 = #t186{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = #t187.{self::Class2::[]}(#t188){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t190 = #t187.{self::Class2::[]=}(#t188, #t189){(self::Class2?, self::Class2?) → void} in #t189;
-  let final self::Class1? #t191 = n1 in #t191 == null ?{self::Class1?} null : let final self::Class1? #t192 = #t191{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t192 == null ?{self::Class1?} null : #t192{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?};
-  let final self::Class1? #t193 = n1 in #t193 == null ?{self::Class1?} null : let final self::Class1? #t194 = #t193{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t194 == null ?{self::Class1?} null : #t194{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•()){(self::Class1?, self::Class1?) → void};
-  nullable1 = let final self::Class1? #t195 = n1 in #t195 == null ?{self::Class1?} null : let final self::Class1? #t196 = #t195{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t196 == null ?{self::Class1?} null : let final self::Class1? #t197 = nullable1 in let final self::Class1 #t198 = new self::Class1::•() in let final void #t199 = #t196{self::Class1}.{self::Class1::[]=}(#t197, #t198){(self::Class1?, self::Class1?) → void} in #t198;
-  let final self::Class1? #t200 = n1 in #t200 == null ?{self::Class1?} null : let final self::Class1? #t201 = #t200{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t201 == null ?{self::Class1?} null : let final self::Class1? #t202 = #t201{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t202 == null ?{self::Class1?} null : #t202{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t203 = n1 in #t203 == null ?{self::Class1?} null : let final self::Class1? #t204 = #t203{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t204 == null ?{self::Class1?} null : let final self::Class1? #t205 = #t204{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t205 == null ?{self::Class1?} null : #t205{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t206 = n1 in #t206 == null ?{self::Class1?} null : let final self::Class1? #t207 = #t206{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t207 == null ?{self::Class1?} null : let final self::Class1? #t208 = nullable1 in #t207{self::Class1}.{self::Class1::[]}(#t208){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t207{self::Class1}.{self::Class1::[]=}(#t208, nullable1){(self::Class1?, self::Class1?) → void} : null;
-  nullable1 = let final self::Class1? #t209 = n1 in #t209 == null ?{self::Class1?} null : let final self::Class1? #t210 = #t209{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t210 == null ?{self::Class1?} null : let final self::Class1? #t211 = nullable1 in let final self::Class1? #t212 = #t210{self::Class1}.{self::Class1::[]}(#t211){(self::Class1?) → self::Class1?} in #t212 == null ?{self::Class1?} let final self::Class1? #t213 = nullable1 in let final void #t214 = #t210{self::Class1}.{self::Class1::[]=}(#t211, #t213){(self::Class1?, self::Class1?) → void} in #t213 : #t212{self::Class1};
-  let final self::Class3? #t215 = n3 in #t215 == null ?{self::Class2?} null : let final self::Class2? #t216 = #t215{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t216 == null ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in #t216{self::Class2}.{self::Class2::[]=}(#t217, #t216{self::Class2}.{self::Class2::[]}(#t217){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class3? #t218 = n3 in #t218 == null ?{self::Class2?} null : let final self::Class2? #t219 = #t218{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t219 == null ?{self::Class2?} null : let final self::Class2? #t220 = nullable2 in let final self::Class2 #t221 = #t219{self::Class2}.{self::Class2::[]}(#t220){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t222 = #t219{self::Class2}.{self::Class2::[]=}(#t220, #t221){(self::Class2?, self::Class2?) → void} in #t221;
-  let final self::Class3? #t223 = n3 in #t223 == null ?{self::Class2?} null : let final self::Class2? #t224 = #t223{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t224 == null ?{self::Class2?} null : let final self::Class2? #t225 = nullable2 in #t224{self::Class2}.{self::Class2::[]=}(#t225, #t224{self::Class2}.{self::Class2::[]}(#t225){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class3? #t226 = n3 in #t226 == null ?{self::Class2?} null : let final self::Class2? #t227 = #t226{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t227 == null ?{self::Class2?} null : let final self::Class2? #t228 = nullable2 in let final self::Class2 #t229 = #t227{self::Class2}.{self::Class2::[]}(#t228){(self::Class2?) → self::Class2} in let final void #t230 = #t227{self::Class2}.{self::Class2::[]=}(#t228, #t229.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t229;
-  let final self::Class3? #t231 = n3 in #t231 == null ?{self::Class2?} null : let final self::Class2? #t232 = #t231{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t232 == null ?{self::Class2?} null : let final self::Class2? #t233 = nullable2 in let final self::Class2 #t234 = #t232{self::Class2}.{self::Class2::[]}(#t233){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t235 = #t232{self::Class2}.{self::Class2::[]=}(#t233, #t234){(self::Class2?, self::Class2?) → void} in #t234;
-  nullable2 = let final self::Class3? #t236 = n3 in #t236 == null ?{self::Class2?} null : let final self::Class2? #t237 = #t236{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t237 == null ?{self::Class2?} null : let final self::Class2? #t238 = nullable2 in let final self::Class2 #t239 = #t237{self::Class2}.{self::Class2::[]}(#t238){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t240 = #t237{self::Class2}.{self::Class2::[]=}(#t238, #t239){(self::Class2?, self::Class2?) → void} in #t239;
+  let final self::Class1? #t84 = n1 in #t84.{core::Object::==}(null) ?{self::Class1?} null : #t84{self::Class1}.{self::Class1::[]}(nullable1);
+  let final self::Class1? #t85 = n1 in #t85.{core::Object::==}(null) ?{self::Class1?} null : #t85{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•());
+  let final self::Class1? #t86 = n1 in #t86.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t87 = #t86{self::Class1}.{self::Class1::[]}(nullable1) in #t87.{core::Object::==}(null) ?{self::Class1?} null : #t87{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t88 = n1 in #t88.{core::Object::==}(null) ?{self::Class1?} null : #t88{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::[]}(nullable1);
+  let final self::Class1? #t89 = n1 in #t89.{core::Object::==}(null) ?{self::Class1?} null : #t89{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::[]=}(nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t90 = n1 in #t90.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t91 = #t90{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1? #t92 = nullable1 in let final self::Class1 #t93 = new self::Class1::•() in let final void #t94 = #t91.{self::Class1::[]=}(#t92, #t93) in #t93;
+  let final self::Class1? #t95 = n1 in #t95.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t96 = #t95{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::[]}(nullable1) in #t96.{core::Object::==}(null) ?{self::Class1?} null : #t96{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t97 = n1 in #t97.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t98 = #t97{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t99 = nullable2 in #t98.{self::Class2::[]=}(#t99, #t98.{self::Class2::[]}(#t99).{self::Class2::+}(0));
+  nullable2 = let final self::Class1? #t100 = n1 in #t100.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t101 = #t100{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t102 = nullable2 in let final self::Class2 #t103 = #t101.{self::Class2::[]}(#t102).{self::Class2::+}(0) in let final void #t104 = #t101.{self::Class2::[]=}(#t102, #t103) in #t103;
+  let final self::Class1? #t105 = n1 in #t105.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t106 = nullable1 in #t105{self::Class1}.{self::Class1::[]}(#t106).{core::Object::==}(null) ?{self::Class1?} #t105{self::Class1}.{self::Class1::[]=}(#t106, nullable1) : null;
+  nullable1 = let final self::Class1? #t107 = n1 in #t107.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t108 = nullable1 in let final self::Class1? #t109 = #t107{self::Class1}.{self::Class1::[]}(#t108) in #t109.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t110 = nullable1 in let final void #t111 = #t107{self::Class1}.{self::Class1::[]=}(#t108, #t110) in #t110 : #t109{self::Class1};
+  let final self::Class2? #t112 = n2 in #t112.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t113 = nullable2 in #t112{self::Class2}.{self::Class2::[]=}(#t113, #t112{self::Class2}.{self::Class2::[]}(#t113).{self::Class2::+}(0));
+  nullable2 = let final self::Class2? #t114 = n2 in #t114.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t115 = nullable2 in let final self::Class2 #t116 = #t114{self::Class2}.{self::Class2::[]}(#t115).{self::Class2::+}(0) in let final void #t117 = #t114{self::Class2}.{self::Class2::[]=}(#t115, #t116) in #t116;
+  let final self::Class2? #t118 = n2 in #t118.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t119 = nullable2 in #t118{self::Class2}.{self::Class2::[]=}(#t119, #t118{self::Class2}.{self::Class2::[]}(#t119).{self::Class2::+}(0));
+  nullable2 = let final self::Class2? #t120 = n2 in #t120.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t121 = nullable2 in let final self::Class2 #t122 = #t120{self::Class2}.{self::Class2::[]}(#t121).{self::Class2::+}(0) in let final void #t123 = #t120{self::Class2}.{self::Class2::[]=}(#t121, #t122) in #t122;
+  let final self::Class2? #t124 = n2 in #t124.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t125 = nullable2 in #t124{self::Class2}.{self::Class2::[]=}(#t125, #t124{self::Class2}.{self::Class2::[]}(#t125).{self::Class2::+}(1));
+  nullable2 = let final self::Class2? #t126 = n2 in #t126.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t127 = nullable2 in let final self::Class2 #t128 = #t126{self::Class2}.{self::Class2::[]}(#t127) in let final void #t129 = #t126{self::Class2}.{self::Class2::[]=}(#t127, #t128.{self::Class2::+}(1)) in #t128;
+  let final self::Class2? #t130 = n2 in #t130.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t131 = nullable2 in let final self::Class2 #t132 = #t130{self::Class2}.{self::Class2::[]}(#t131).{self::Class2::+}(1) in let final void #t133 = #t130{self::Class2}.{self::Class2::[]=}(#t131, #t132) in #t132;
+  nullable2 = let final self::Class2? #t134 = n2 in #t134.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t135 = nullable2 in let final self::Class2 #t136 = #t134{self::Class2}.{self::Class2::[]}(#t135).{self::Class2::+}(1) in let final void #t137 = #t134{self::Class2}.{self::Class2::[]=}(#t135, #t136) in #t136;
+  let final self::Class1? #t138 = n1 in #t138.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t139 = #t138{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t140 = nullable2 in #t139.{self::Class2::[]=}(#t140, #t139.{self::Class2::[]}(#t140).{self::Class2::+}(1));
+  nullable2 = let final self::Class1? #t141 = n1 in #t141.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t142 = #t141{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t143 = nullable2 in let final self::Class2 #t144 = #t142.{self::Class2::[]}(#t143) in let final void #t145 = #t142.{self::Class2::[]=}(#t143, #t144.{self::Class2::+}(1)) in #t144;
+  let final self::Class1? #t146 = n1 in #t146.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t147 = #t146{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t148 = nullable2 in let final self::Class2 #t149 = #t147.{self::Class2::[]}(#t148).{self::Class2::+}(1) in let final void #t150 = #t147.{self::Class2::[]=}(#t148, #t149) in #t149;
+  nullable2 = let final self::Class1? #t151 = n1 in #t151.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t152 = #t151{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t153 = nullable2 in let final self::Class2 #t154 = #t152.{self::Class2::[]}(#t153).{self::Class2::+}(1) in let final void #t155 = #t152.{self::Class2::[]=}(#t153, #t154) in #t154;
+  let final self::Class1? #t156 = n1 in #t156.{core::Object::==}(null) ?{self::Class2?} null : #t156{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2).{self::Class2::[]}(nullable2);
+  let final self::Class1? #t157 = n1 in #t157.{core::Object::==}(null) ?{self::Class2?} null : #t157{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2).{self::Class2::[]=}(nullable2, new self::Class2::•());
+  nullable2 = let final self::Class1? #t158 = n1 in #t158.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t159 = #t158{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t160 = nullable2 in let final self::Class2 #t161 = new self::Class2::•() in let final void #t162 = #t159.{self::Class2::[]=}(#t160, #t161) in #t161;
+  let final self::Class1? #t163 = n1 in #t163.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t164 = #t163{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2).{self::Class2::[]}(nullable2) in #t164.{core::Object::==}(null) ?{self::Class2?} null : #t164{self::Class2}.{self::Class2::nonNullable2Method}();
+  let final self::Class1? #t165 = n1 in #t165.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t166 = #t165{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t167 = nullable2 in #t166.{self::Class2::[]=}(#t167, #t166.{self::Class2::[]}(#t167).{self::Class2::+}(0));
+  nullable2 = let final self::Class1? #t168 = n1 in #t168.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t169 = #t168{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t170 = nullable2 in let final self::Class2 #t171 = #t169.{self::Class2::[]}(#t170).{self::Class2::+}(0) in let final void #t172 = #t169.{self::Class2::[]=}(#t170, #t171) in #t171;
+  let final self::Class1? #t173 = n1 in #t173.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t174 = #t173{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t175 = nullable2 in #t174.{self::Class2::[]=}(#t175, #t174.{self::Class2::[]}(#t175).{self::Class2::+}(1));
+  nullable2 = let final self::Class1? #t176 = n1 in #t176.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t177 = #t176{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t178 = nullable2 in let final self::Class2 #t179 = #t177.{self::Class2::[]}(#t178) in let final void #t180 = #t177.{self::Class2::[]=}(#t178, #t179.{self::Class2::+}(1)) in #t179;
+  let final self::Class1? #t181 = n1 in #t181.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t182 = #t181{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t183 = nullable2 in let final self::Class2 #t184 = #t182.{self::Class2::[]}(#t183).{self::Class2::+}(1) in let final void #t185 = #t182.{self::Class2::[]=}(#t183, #t184) in #t184;
+  nullable2 = let final self::Class1? #t186 = n1 in #t186.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t187 = #t186{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = #t187.{self::Class2::[]}(#t188).{self::Class2::+}(1) in let final void #t190 = #t187.{self::Class2::[]=}(#t188, #t189) in #t189;
+  let final self::Class1? #t191 = n1 in #t191.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t192 = #t191{self::Class1}.{self::Class1::[]}(nullable1) in #t192.{core::Object::==}(null) ?{self::Class1?} null : #t192{self::Class1}.{self::Class1::[]}(nullable1);
+  let final self::Class1? #t193 = n1 in #t193.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t194 = #t193{self::Class1}.{self::Class1::[]}(nullable1) in #t194.{core::Object::==}(null) ?{self::Class1?} null : #t194{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t195 = n1 in #t195.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t196 = #t195{self::Class1}.{self::Class1::[]}(nullable1) in #t196.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t197 = nullable1 in let final self::Class1 #t198 = new self::Class1::•() in let final void #t199 = #t196{self::Class1}.{self::Class1::[]=}(#t197, #t198) in #t198;
+  let final self::Class1? #t200 = n1 in #t200.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t201 = #t200{self::Class1}.{self::Class1::[]}(nullable1) in #t201.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t202 = #t201{self::Class1}.{self::Class1::[]}(nullable1) in #t202.{core::Object::==}(null) ?{self::Class1?} null : #t202{self::Class1}.{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t203 = n1 in #t203.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t204 = #t203{self::Class1}.{self::Class1::[]}(nullable1) in #t204.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t205 = #t204{self::Class1}.{self::Class1::[]}(nullable1) in #t205.{core::Object::==}(null) ?{self::Class1?} null : #t205{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t206 = n1 in #t206.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t207 = #t206{self::Class1}.{self::Class1::[]}(nullable1) in #t207.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t208 = nullable1 in #t207{self::Class1}.{self::Class1::[]}(#t208).{core::Object::==}(null) ?{self::Class1?} #t207{self::Class1}.{self::Class1::[]=}(#t208, nullable1) : null;
+  nullable1 = let final self::Class1? #t209 = n1 in #t209.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t210 = #t209{self::Class1}.{self::Class1::[]}(nullable1) in #t210.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t211 = nullable1 in let final self::Class1? #t212 = #t210{self::Class1}.{self::Class1::[]}(#t211) in #t212.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t213 = nullable1 in let final void #t214 = #t210{self::Class1}.{self::Class1::[]=}(#t211, #t213) in #t213 : #t212{self::Class1};
+  let final self::Class3? #t215 = n3 in #t215.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t216 = #t215{self::Class3}.{self::Class3::[]}(nullable3) in #t216.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in #t216{self::Class2}.{self::Class2::[]=}(#t217, #t216{self::Class2}.{self::Class2::[]}(#t217).{self::Class2::+}(0));
+  nullable2 = let final self::Class3? #t218 = n3 in #t218.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t219 = #t218{self::Class3}.{self::Class3::[]}(nullable3) in #t219.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t220 = nullable2 in let final self::Class2 #t221 = #t219{self::Class2}.{self::Class2::[]}(#t220).{self::Class2::+}(0) in let final void #t222 = #t219{self::Class2}.{self::Class2::[]=}(#t220, #t221) in #t221;
+  let final self::Class3? #t223 = n3 in #t223.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t224 = #t223{self::Class3}.{self::Class3::[]}(nullable3) in #t224.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t225 = nullable2 in #t224{self::Class2}.{self::Class2::[]=}(#t225, #t224{self::Class2}.{self::Class2::[]}(#t225).{self::Class2::+}(1));
+  nullable2 = let final self::Class3? #t226 = n3 in #t226.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t227 = #t226{self::Class3}.{self::Class3::[]}(nullable3) in #t227.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t228 = nullable2 in let final self::Class2 #t229 = #t227{self::Class2}.{self::Class2::[]}(#t228) in let final void #t230 = #t227{self::Class2}.{self::Class2::[]=}(#t228, #t229.{self::Class2::+}(1)) in #t229;
+  let final self::Class3? #t231 = n3 in #t231.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t232 = #t231{self::Class3}.{self::Class3::[]}(nullable3) in #t232.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t233 = nullable2 in let final self::Class2 #t234 = #t232{self::Class2}.{self::Class2::[]}(#t233).{self::Class2::+}(1) in let final void #t235 = #t232{self::Class2}.{self::Class2::[]=}(#t233, #t234) in #t234;
+  nullable2 = let final self::Class3? #t236 = n3 in #t236.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t237 = #t236{self::Class3}.{self::Class3::[]}(nullable3) in #t237.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t238 = nullable2 in let final self::Class2 #t239 = #t237{self::Class2}.{self::Class2::[]}(#t238).{self::Class2::+}(1) in let final void #t240 = #t237{self::Class2}.{self::Class2::[]=}(#t238, #t239) in #t239;
 }
 static method operatorAccess(self::Class1? n1, self::Class2? n2) → void {
   self::Class2? nullable2 = n2;
   self::throws(() → void => let final Never #t241 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:220:33: Error: Operator '+' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
   throws(() => n1?.nonNullable1 + 0);
-                                ^" in (let final self::Class1? #t242 = n1 in #t242 == null ?{self::Class1?} null : #t242{self::Class1}.{self::Class1::nonNullable1}{self::Class1}).{self::Class1::+}(0){(core::int) → self::Class1?});
+                                ^" in (let final self::Class1? #t242 = n1 in #t242.{core::Object::==}(null) ?{self::Class1?} null : #t242{self::Class1}.{self::Class1::nonNullable1}).{self::Class1::+}(0));
   self::throws(() → void => let final Never #t243 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:221:16: Error: Operator 'unary-' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
   throws(() => -n1?.nonNullable1);
-               ^" in (let final self::Class1? #t244 = n1 in #t244 == null ?{self::Class1?} null : #t244{self::Class1}.{self::Class1::nonNullable1}{self::Class1}).{self::Class1::unary-}(){() → self::Class1?});
-  let final self::Class2? #t245 = n2 in #t245 == null ?{self::Class2?} null : #t245.{self::Class2::nonNullable2} = #t245.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2};
-  nullable2 = let final self::Class2? #t246 = n2 in #t246 == null ?{self::Class2?} null : let final self::Class2 #t247 = #t246.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t248 = #t246.{self::Class2::nonNullable2} = #t247 in #t247;
-  let final self::Class2? #t249 = n2 in #t249 == null ?{self::Class2?} null : let final self::Class2 #t250 = #t249{self::Class2}.{self::Class2::nonNullable2}{self::Class2} in #t250.{self::Class2::nonNullable2} = #t250.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2};
-  nullable2 = let final self::Class2? #t251 = n2 in #t251 == null ?{self::Class2?} null : let final self::Class2 #t252 = #t251{self::Class2}.{self::Class2::nonNullable2}{self::Class2} in #t252.{self::Class2::nonNullable2} = #t252.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2};
-  let final self::Class2? #t253 = n2 in #t253 == null ?{self::Class2?} null : #t253.{self::Class2::nonNullable2} = #t253.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2};
-  nullable2 = let final self::Class2? #t254 = n2 in #t254 == null ?{self::Class2?} null : let final self::Class2 #t255 = #t254.{self::Class2::nonNullable2}{self::Class2} in let final void #t256 = #t254.{self::Class2::nonNullable2} = #t255.{self::Class2::+}(1){(core::int) → self::Class2} in #t255;
-  let final self::Class2? #t257 = n2 in #t257 == null ?{self::Class2?} null : let final self::Class2 #t258 = #t257.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t259 = #t257.{self::Class2::nonNullable2} = #t258 in #t258;
-  nullable2 = let final self::Class2? #t260 = n2 in #t260 == null ?{self::Class2?} null : let final self::Class2 #t261 = #t260.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t262 = #t260.{self::Class2::nonNullable2} = #t261 in #t261;
+               ^" in (let final self::Class1? #t244 = n1 in #t244.{core::Object::==}(null) ?{self::Class1?} null : #t244{self::Class1}.{self::Class1::nonNullable1}).{self::Class1::unary-}());
+  let final self::Class2? #t245 = n2 in #t245.{core::Object::==}(null) ?{self::Class2?} null : #t245.{self::Class2::nonNullable2} = #t245.{self::Class2::nonNullable2}.{self::Class2::+}(0);
+  nullable2 = let final self::Class2? #t246 = n2 in #t246.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t247 = #t246.{self::Class2::nonNullable2}.{self::Class2::+}(0) in let final void #t248 = #t246.{self::Class2::nonNullable2} = #t247 in #t247;
+  let final self::Class2? #t249 = n2 in #t249.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t250 = #t249{self::Class2}.{self::Class2::nonNullable2} in #t250.{self::Class2::nonNullable2} = #t250.{self::Class2::nonNullable2}.{self::Class2::+}(0);
+  nullable2 = let final self::Class2? #t251 = n2 in #t251.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t252 = #t251{self::Class2}.{self::Class2::nonNullable2} in #t252.{self::Class2::nonNullable2} = #t252.{self::Class2::nonNullable2}.{self::Class2::+}(0);
+  let final self::Class2? #t253 = n2 in #t253.{core::Object::==}(null) ?{self::Class2?} null : #t253.{self::Class2::nonNullable2} = #t253.{self::Class2::nonNullable2}.{self::Class2::+}(1);
+  nullable2 = let final self::Class2? #t254 = n2 in #t254.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t255 = #t254.{self::Class2::nonNullable2} in let final void #t256 = #t254.{self::Class2::nonNullable2} = #t255.{self::Class2::+}(1) in #t255;
+  let final self::Class2? #t257 = n2 in #t257.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t258 = #t257.{self::Class2::nonNullable2}.{self::Class2::+}(1) in let final void #t259 = #t257.{self::Class2::nonNullable2} = #t258 in #t258;
+  nullable2 = let final self::Class2? #t260 = n2 in #t260.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t261 = #t260.{self::Class2::nonNullable2}.{self::Class2::+}(1) in let final void #t262 = #t260.{self::Class2::nonNullable2} = #t261 in #t261;
 }
 static method ifNull(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t263 = n1 in #t263 == null ?{self::Class1?} null : #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null;
-  n1 = let final self::Class1? #t264 = n1 in #t264 == null ?{self::Class1?} null : let final self::Class1? #t265 = #t264.{self::Class1::nullable1}{self::Class1?} in #t265 == null ?{self::Class1} #t264.{self::Class1::nullable1} = n1{self::Class1} : #t265{self::Class1};
-  let final self::Class1? #t266 = n1 in #t266 == null ?{self::Class1?} null : let final self::Class1 #t267 = #t266{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t267.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t267.{self::Class1::nullable1} = n1{self::Class1} : null;
-  n1 = let final self::Class1? #t268 = n1 in #t268 == null ?{self::Class1?} null : let final self::Class1 #t269 = #t268{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t270 = #t269.{self::Class1::nullable1}{self::Class1?} in #t270 == null ?{self::Class1} #t269.{self::Class1::nullable1} = n1{self::Class1} : #t270{self::Class1};
-  let final self::Class1? #t271 = n1 in #t271 == null ?{self::Class1?} null : let final self::Class1 #t272 = #t271{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t273 = n1{self::Class1} in #t272.{self::Class1::[]}(#t273){(self::Class1?) → self::Class1?} == null ?{self::Class1} #t272.{self::Class1::[]=}(#t273, n1{self::Class1}){(self::Class1?, self::Class1?) → void} : null;
-  n1 = let final self::Class1? #t274 = n1 in #t274 == null ?{self::Class1?} null : let final self::Class1 #t275 = #t274{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t276 = n1{self::Class1} in let final self::Class1? #t277 = #t275.{self::Class1::[]}(#t276){(self::Class1?) → self::Class1?} in #t277 == null ?{self::Class1} let final self::Class1 #t278 = n1{self::Class1} in let final void #t279 = #t275.{self::Class1::[]=}(#t276, #t278){(self::Class1?, self::Class1?) → void} in #t278 : #t277{self::Class1};
+  let final self::Class1? #t263 = n1 in #t263.{core::Object::==}(null) ?{self::Class1?} null : #t263.{self::Class1::nullable1}.{core::Object::==}(null) ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null;
+  n1 = let final self::Class1? #t264 = n1 in #t264.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t265 = #t264.{self::Class1::nullable1} in #t265.{core::Object::==}(null) ?{self::Class1} #t264.{self::Class1::nullable1} = n1{self::Class1} : #t265{self::Class1};
+  let final self::Class1? #t266 = n1 in #t266.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t267 = #t266{self::Class1}.{self::Class1::nonNullable1} in #t267.{self::Class1::nullable1}.{core::Object::==}(null) ?{self::Class1} #t267.{self::Class1::nullable1} = n1{self::Class1} : null;
+  n1 = let final self::Class1? #t268 = n1 in #t268.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t269 = #t268{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1? #t270 = #t269.{self::Class1::nullable1} in #t270.{core::Object::==}(null) ?{self::Class1} #t269.{self::Class1::nullable1} = n1{self::Class1} : #t270{self::Class1};
+  let final self::Class1? #t271 = n1 in #t271.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t272 = #t271{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1 #t273 = n1{self::Class1} in #t272.{self::Class1::[]}(#t273).{core::Object::==}(null) ?{self::Class1} #t272.{self::Class1::[]=}(#t273, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t274 = n1 in #t274.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t275 = #t274{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1 #t276 = n1{self::Class1} in let final self::Class1? #t277 = #t275.{self::Class1::[]}(#t276) in #t277.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t278 = n1{self::Class1} in let final void #t279 = #t275.{self::Class1::[]=}(#t276, #t278) in #t278 : #t277{self::Class1};
 }
 static method throws(() → void f) → void {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.expect
index ed3bb8d..d6e1e8e 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.expect
@@ -39,25 +39,25 @@
   get property2() → self::Class2
     return new self::Class2::•();
   get nullable1() → self::Class1?
-    return this.{self::Class1::property1}{self::Class1};
+    return this.{self::Class1::property1};
   set nullable1(self::Class1? value) → void {
     this.{self::Class1::property} = value;
   }
   method nonNullable1Method() → self::Class1
-    return this.{self::Class1::nonNullable1}{self::Class1};
+    return this.{self::Class1::nonNullable1};
   operator [](self::Class1? key) → self::Class1?
-    return this.{self::Class1::nullable1}{self::Class1?};
+    return this.{self::Class1::nullable1};
   operator []=(self::Class1? key, self::Class1? value) → void {
     this.{self::Class1::property} = value;
   }
   operator +(core::int value) → self::Class1?
-    return this.{self::Class1::nullable1}{self::Class1?};
+    return this.{self::Class1::nullable1};
   operator unary-() → self::Class1?
-    return this.{self::Class1::nullable1}{self::Class1?};
+    return this.{self::Class1::nullable1};
   get nonNullable1() → self::Class1
-    return this.{self::Class1::property1}{self::Class1};
+    return this.{self::Class1::property1};
   get nonNullable2() → self::Class2
-    return this.{self::Class1::property2}{self::Class2};
+    return this.{self::Class1::property2};
 }
 class Class2 extends core::Object {
   synthetic constructor •() → self::Class2
@@ -67,17 +67,17 @@
     return this;
   set property(self::Class2 value) → void {}
   method nonNullable2Method() → self::Class2
-    return this.{self::Class2::nonNullable2}{self::Class2};
+    return this.{self::Class2::nonNullable2};
   operator [](self::Class2? key) → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   operator []=(self::Class2? key, self::Class2? value) → void
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   operator +(core::int value) → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   operator unary-() → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   get nonNullable2() → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   set nonNullable2(self::Class2 value) → void {
     this.{self::Class2::property} = value;
   }
@@ -89,7 +89,7 @@
   get property() → self::Class2?
     return null;
   operator [](self::Class3? key) → self::Class2?
-    return this.{self::Class3::property}{self::Class2?};
+    return this.{self::Class3::property};
 }
 static method main() → dynamic {
   self::propertyAccess(null);
@@ -99,168 +99,168 @@
 }
 static method propertyAccess(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t1 = n1 in #t1 == null ?{self::Class1?} null : #t1{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t2 = n1 in #t2 == null ?{self::Class1?} null : #t2{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t3 = n1 in #t3 == null ?{self::Class1?} null : #t3{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t4 = n1 in #t4 == null ?{self::Class1?} null : #t4{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t5 = n1 in #t5 == null ?{self::Class1?} null : #t5{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t6 = n1 in #t6 == null ?{self::Class1?} null : let final self::Class1? #t7 = #t6{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t7 == null ?{self::Class1?} null : #t7{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t8 = n1 in #t8 == null ?{self::Class1?} null : let final self::Class1? #t9 = #t8{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t9 == null ?{self::Class1?} null : #t9{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t10 = n1 in #t10 == null ?{self::Class1?} null : #t10{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t11 = n1 in #t11 == null ?{self::Class1?} null : let final self::Class1? #t12 = #t11{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t12 == null ?{self::Class1?} null : #t12{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t13 = n1 in #t13 == null ?{self::Class1?} null : let final self::Class1? #t14 = #t13{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t14 == null ?{self::Class1?} null : #t14{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t15 = let final self::Class1? #t16 = n1 in #t16 == null ?{self::Class1?} null : #t16{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t15 == null ?{self::Class1?} null : #t15{self::Class1}.{self::Class1::nullable1}{self::Class1?};
+  let final self::Class1? #t1 = n1 in #t1.{core::Object::==}(null) ?{self::Class1?} null : #t1{self::Class1}.{self::Class1::nullable1};
+  let final self::Class1? #t2 = n1 in #t2.{core::Object::==}(null) ?{self::Class1?} null : #t2{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t3 = n1 in #t3.{core::Object::==}(null) ?{self::Class1?} null : #t3{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t4 = n1 in #t4.{core::Object::==}(null) ?{self::Class1?} null : #t4{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t5 = n1 in #t5.{core::Object::==}(null) ?{self::Class1?} null : #t5{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t6 = n1 in #t6.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t7 = #t6{self::Class1}.{self::Class1::nullable1} in #t7.{core::Object::==}(null) ?{self::Class1?} null : #t7{self::Class1}.{self::Class1::nullable1};
+  let final self::Class1? #t8 = n1 in #t8.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t9 = #t8{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t9.{core::Object::==}(null) ?{self::Class1?} null : #t9{self::Class1}.{self::Class1::nullable1};
+  let final self::Class1? #t10 = n1 in #t10.{core::Object::==}(null) ?{self::Class1?} null : #t10{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t11 = n1 in #t11.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t12 = #t11{self::Class1}.{self::Class1::nullable1} in #t12.{core::Object::==}(null) ?{self::Class1?} null : #t12{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t13 = n1 in #t13.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t14 = #t13{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t14.{core::Object::==}(null) ?{self::Class1?} null : #t14{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t15 = let final self::Class1? #t16 = n1 in #t16.{core::Object::==}(null) ?{self::Class1?} null : #t16{self::Class1}.{self::Class1::nullable1} in #t15.{core::Object::==}(null) ?{self::Class1?} null : #t15{self::Class1}.{self::Class1::nullable1};
   self::throws(() → void => let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:87:47: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nullable1 = new Class1()).nullable1);
-                                              ^^^^^^^^^" in (let final self::Class1? #t18 = n1 in #t18 == null ?{self::Class1?} null : #t18{self::Class1}.{self::Class1::nullable1} = new self::Class1::•()).{self::Class1::nullable1}{<nullable>}.{self::Class1?});
+                                              ^^^^^^^^^" in (let final self::Class1? #t18 = n1 in #t18.{core::Object::==}(null) ?{self::Class1?} null : #t18{self::Class1}.{self::Class1::nullable1} = new self::Class1::•()).{self::Class1::nullable1});
   self::throws(() → void => let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:88:43: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nonNullable1Method()).nullable1);
-                                          ^^^^^^^^^" in (let final self::Class1? #t20 = n1 in #t20 == null ?{self::Class1?} null : #t20{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}).{self::Class1::nullable1}{<nullable>}.{self::Class1?});
-  nullable1 = let final self::Class1? #t21 = n1 in #t21 == null ?{self::Class1?} null : #t21{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t22 = n1 in #t22 == null ?{self::Class1?} null : let final self::Class1? #t23 = #t22{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t23 == null ?{self::Class1?} null : #t23{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t24 = n1 in #t24 == null ?{self::Class1?} null : let final self::Class1? #t25 = #t24{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t25 == null ?{self::Class1?} null : #t25{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t26 = n1 in #t26 == null ?{self::Class1?} null : let final self::Class1? #t27 = #t26{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t27 == null ?{self::Class1?} null : #t27{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t28 = n1 in #t28 == null ?{self::Class1?} null : #t28{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t29 = n1 in #t29 == null ?{self::Class1?} null : #t29{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t30 = n1 in #t30 == null ?{self::Class1?} null : #t30{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t31 = n1 in #t31 == null ?{self::Class1?} null : #t31{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t32 = n1 in #t32 == null ?{self::Class1?} null : #t32{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t33 = n1 in #t33 == null ?{self::Class1?} null : #t33{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t34 = n1 in #t34 == null ?{self::Class1?} null : #t34{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t35 = n1 in #t35 == null ?{self::Class1?} null : #t35{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t36 = n1 in #t36 == null ?{self::Class1?} null : #t36{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t37 = n1 in #t37 == null ?{self::Class1?} null : #t37{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t38 = n1 in #t38 == null ?{self::Class1?} null : #t38{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t39 = n1 in #t39 == null ?{self::Class1?} null : #t39{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t40 = n1 in #t40 == null ?{self::Class1?} null : let final self::Class1? #t41 = #t40{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t41 == null ?{self::Class1?} null : #t41{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t42 = n1 in #t42 == null ?{self::Class1?} null : #t42{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t43 = n1 in #t43 == null ?{self::Class1?} null : #t43{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t44 = n1 in #t44 == null ?{self::Class1?} null : #t44{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t45 = n1 in #t45 == null ?{self::Class1?} null : #t45{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t46 = n1 in #t46 == null ?{self::Class1?} null : #t46{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t47 = n1 in #t47 == null ?{self::Class1?} null : #t47{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t48 = n1 in #t48 == null ?{self::Class1?} null : #t48{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t49 = n1 in #t49 == null ?{self::Class1?} null : #t49{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t50 = n1 in #t50 == null ?{self::Class1?} null : #t50{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t51 = n1 in #t51 == null ?{self::Class1?} null : #t51{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t52 = n1 in #t52 == null ?{self::Class1?} null : #t52{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t53 = n1 in #t53 == null ?{self::Class1?} null : #t53{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t54 = n1 in #t54 == null ?{self::Class1?} null : #t54{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t55 = n1 in #t55 == null ?{self::Class1?} null : #t55{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t56 = n1 in #t56 == null ?{self::Class1?} null : #t56{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t57 = n1 in #t57 == null ?{self::Class1?} null : #t57{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t58 = n1 in #t58 == null ?{self::Class1?} null : #t58{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t59 = n1 in #t59 == null ?{self::Class1?} null : #t59{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t60 = n1 in #t60 == null ?{self::Class1?} null : #t60{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t61 = n1 in #t61 == null ?{self::Class1?} null : #t61{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t62 = n1 in #t62 == null ?{self::Class1?} null : #t62{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t63 = n1 in #t63 == null ?{self::Class1?} null : #t63{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t64 = n1 in #t64 == null ?{self::Class1?} null : #t64{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t65 = n1 in #t65 == null ?{self::Class1?} null : #t65{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t66 = n1 in #t66 == null ?{self::Class1?} null : #t66{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t67 = n1 in #t67 == null ?{self::Class1?} null : #t67{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t68 = n1 in #t68 == null ?{self::Class1?} null : #t68{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t69 = n1 in #t69 == null ?{self::Class1?} null : #t69{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t70 = n1 in #t70 == null ?{self::Class1?} null : #t70{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t71 = n1 in #t71 == null ?{self::Class1?} null : #t71{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t72 = n1 in #t72 == null ?{self::Class1?} null : #t72{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t73 = n1 in #t73 == null ?{self::Class1?} null : #t73{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t74 = n1 in #t74 == null ?{self::Class1?} null : #t74{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t75 = n1 in #t75 == null ?{self::Class1?} null : #t75{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t76 = n1 in #t76 == null ?{self::Class1?} null : #t76{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t77 = n1 in #t77 == null ?{self::Class1?} null : #t77{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t78 = n1 in #t78 == null ?{self::Class1?} null : #t78{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t79 = n1 in #t79 == null ?{self::Class1?} null : #t79{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t80 = n1 in #t80 == null ?{self::Class1?} null : #t80{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t81 = n1 in #t81 == null ?{self::Class1?} null : #t81{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t82 = n1 in #t82 == null ?{self::Class1?} null : let final self::Class1? #t83 = #t82{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1} in #t83 == null ?{self::Class1?} null : #t83{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
+                                          ^^^^^^^^^" in (let final self::Class1? #t20 = n1 in #t20.{core::Object::==}(null) ?{self::Class1?} null : #t20{self::Class1}.{self::Class1::nonNullable1Method}()).{self::Class1::nullable1});
+  nullable1 = let final self::Class1? #t21 = n1 in #t21.{core::Object::==}(null) ?{self::Class1?} null : #t21{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t22 = n1 in #t22.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t23 = #t22{self::Class1}.{self::Class1::nullable1} in #t23.{core::Object::==}(null) ?{self::Class1?} null : #t23{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t24 = n1 in #t24.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t25 = #t24{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t25.{core::Object::==}(null) ?{self::Class1?} null : #t25{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t26 = n1 in #t26.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t27 = #t26{self::Class1}.{self::Class1::nullable1} in #t27.{core::Object::==}(null) ?{self::Class1?} null : #t27{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t28 = n1 in #t28.{core::Object::==}(null) ?{self::Class1?} null : #t28{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t29 = n1 in #t29.{core::Object::==}(null) ?{self::Class1?} null : #t29{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t30 = n1 in #t30.{core::Object::==}(null) ?{self::Class1?} null : #t30{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t31 = n1 in #t31.{core::Object::==}(null) ?{self::Class1?} null : #t31{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t32 = n1 in #t32.{core::Object::==}(null) ?{self::Class1?} null : #t32{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t33 = n1 in #t33.{core::Object::==}(null) ?{self::Class1?} null : #t33{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t34 = n1 in #t34.{core::Object::==}(null) ?{self::Class1?} null : #t34{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t35 = n1 in #t35.{core::Object::==}(null) ?{self::Class1?} null : #t35{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t36 = n1 in #t36.{core::Object::==}(null) ?{self::Class1?} null : #t36{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t37 = n1 in #t37.{core::Object::==}(null) ?{self::Class1?} null : #t37{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t38 = n1 in #t38.{core::Object::==}(null) ?{self::Class1?} null : #t38{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t39 = n1 in #t39.{core::Object::==}(null) ?{self::Class1?} null : #t39{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t40 = n1 in #t40.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t41 = #t40{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t41.{core::Object::==}(null) ?{self::Class1?} null : #t41{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t42 = n1 in #t42.{core::Object::==}(null) ?{self::Class1?} null : #t42{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t43 = n1 in #t43.{core::Object::==}(null) ?{self::Class1?} null : #t43{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t44 = n1 in #t44.{core::Object::==}(null) ?{self::Class1?} null : #t44{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t45 = n1 in #t45.{core::Object::==}(null) ?{self::Class1?} null : #t45{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t46 = n1 in #t46.{core::Object::==}(null) ?{self::Class1?} null : #t46{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t47 = n1 in #t47.{core::Object::==}(null) ?{self::Class1?} null : #t47{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t48 = n1 in #t48.{core::Object::==}(null) ?{self::Class1?} null : #t48{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t49 = n1 in #t49.{core::Object::==}(null) ?{self::Class1?} null : #t49{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t50 = n1 in #t50.{core::Object::==}(null) ?{self::Class1?} null : #t50{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t51 = n1 in #t51.{core::Object::==}(null) ?{self::Class1?} null : #t51{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t52 = n1 in #t52.{core::Object::==}(null) ?{self::Class1?} null : #t52{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t53 = n1 in #t53.{core::Object::==}(null) ?{self::Class1?} null : #t53{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t54 = n1 in #t54.{core::Object::==}(null) ?{self::Class1?} null : #t54{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t55 = n1 in #t55.{core::Object::==}(null) ?{self::Class1?} null : #t55{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t56 = n1 in #t56.{core::Object::==}(null) ?{self::Class1?} null : #t56{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t57 = n1 in #t57.{core::Object::==}(null) ?{self::Class1?} null : #t57{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t58 = n1 in #t58.{core::Object::==}(null) ?{self::Class1?} null : #t58{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t59 = n1 in #t59.{core::Object::==}(null) ?{self::Class1?} null : #t59{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t60 = n1 in #t60.{core::Object::==}(null) ?{self::Class1?} null : #t60{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t61 = n1 in #t61.{core::Object::==}(null) ?{self::Class1?} null : #t61{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t62 = n1 in #t62.{core::Object::==}(null) ?{self::Class1?} null : #t62{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t63 = n1 in #t63.{core::Object::==}(null) ?{self::Class1?} null : #t63{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t64 = n1 in #t64.{core::Object::==}(null) ?{self::Class1?} null : #t64{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t65 = n1 in #t65.{core::Object::==}(null) ?{self::Class1?} null : #t65{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t66 = n1 in #t66.{core::Object::==}(null) ?{self::Class1?} null : #t66{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t67 = n1 in #t67.{core::Object::==}(null) ?{self::Class1?} null : #t67{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t68 = n1 in #t68.{core::Object::==}(null) ?{self::Class1?} null : #t68{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t69 = n1 in #t69.{core::Object::==}(null) ?{self::Class1?} null : #t69{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t70 = n1 in #t70.{core::Object::==}(null) ?{self::Class1?} null : #t70{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t71 = n1 in #t71.{core::Object::==}(null) ?{self::Class1?} null : #t71{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t72 = n1 in #t72.{core::Object::==}(null) ?{self::Class1?} null : #t72{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t73 = n1 in #t73.{core::Object::==}(null) ?{self::Class1?} null : #t73{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t74 = n1 in #t74.{core::Object::==}(null) ?{self::Class1?} null : #t74{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t75 = n1 in #t75.{core::Object::==}(null) ?{self::Class1?} null : #t75{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t76 = n1 in #t76.{core::Object::==}(null) ?{self::Class1?} null : #t76{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t77 = n1 in #t77.{core::Object::==}(null) ?{self::Class1?} null : #t77{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t78 = n1 in #t78.{core::Object::==}(null) ?{self::Class1?} null : #t78{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t79 = n1 in #t79.{core::Object::==}(null) ?{self::Class1?} null : #t79{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t80 = n1 in #t80.{core::Object::==}(null) ?{self::Class1?} null : #t80{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t81 = n1 in #t81.{core::Object::==}(null) ?{self::Class1?} null : #t81{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t82 = n1 in #t82.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t83 = #t82{self::Class1}.{self::Class1::nonNullable1Method}() in #t83.{core::Object::==}(null) ?{self::Class1?} null : #t83{self::Class1}.{self::Class1::nonNullable1Method}();
 }
 static method indexAccess(self::Class1? n1, self::Class2? n2, self::Class3? n3) → void {
   self::Class1? nullable1 = n1;
   self::Class2? nullable2 = n2;
   self::Class3? nullable3 = n3;
-  let final self::Class1? #t84 = n1 in #t84 == null ?{self::Class1?} null : #t84{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?};
-  let final self::Class1? #t85 = n1 in #t85 == null ?{self::Class1?} null : #t85{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•()){(self::Class1?, self::Class1?) → void};
-  let final self::Class1? #t86 = n1 in #t86 == null ?{self::Class1?} null : let final self::Class1? #t87 = #t86{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t87 == null ?{self::Class1?} null : #t87{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t88 = n1 in #t88 == null ?{self::Class1?} null : #t88{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?};
-  let final self::Class1? #t89 = n1 in #t89 == null ?{self::Class1?} null : #t89{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•()){(self::Class1?, self::Class1?) → void};
-  nullable1 = let final self::Class1? #t90 = n1 in #t90 == null ?{self::Class1?} null : let final self::Class1 #t91 = #t90{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t92 = nullable1 in let final self::Class1 #t93 = new self::Class1::•() in let final void #t94 = #t91.{self::Class1::[]=}(#t92, #t93){(self::Class1?, self::Class1?) → void} in #t93;
-  let final self::Class1? #t95 = n1 in #t95 == null ?{self::Class1?} null : let final self::Class1? #t96 = #t95{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t96 == null ?{self::Class1?} null : #t96{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t97 = n1 in #t97 == null ?{self::Class2?} null : let final self::Class2 #t98 = #t97{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t99 = nullable2 in #t98.{self::Class2::[]=}(#t99, #t98.{self::Class2::[]}(#t99){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t100 = n1 in #t100 == null ?{self::Class2?} null : let final self::Class2 #t101 = #t100{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t102 = nullable2 in let final self::Class2 #t103 = #t101.{self::Class2::[]}(#t102){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t104 = #t101.{self::Class2::[]=}(#t102, #t103){(self::Class2?, self::Class2?) → void} in #t103;
-  let final self::Class1? #t105 = n1 in #t105 == null ?{self::Class1?} null : let final self::Class1? #t106 = nullable1 in #t105{self::Class1}.{self::Class1::[]}(#t106){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t105{self::Class1}.{self::Class1::[]=}(#t106, nullable1){(self::Class1?, self::Class1?) → void} : null;
-  nullable1 = let final self::Class1? #t107 = n1 in #t107 == null ?{self::Class1?} null : let final self::Class1? #t108 = nullable1 in let final self::Class1? #t109 = #t107{self::Class1}.{self::Class1::[]}(#t108){(self::Class1?) → self::Class1?} in #t109 == null ?{self::Class1?} let final self::Class1? #t110 = nullable1 in let final void #t111 = #t107{self::Class1}.{self::Class1::[]=}(#t108, #t110){(self::Class1?, self::Class1?) → void} in #t110 : #t109{self::Class1};
-  let final self::Class2? #t112 = n2 in #t112 == null ?{self::Class2?} null : let final self::Class2? #t113 = nullable2 in #t112{self::Class2}.{self::Class2::[]=}(#t113, #t112{self::Class2}.{self::Class2::[]}(#t113){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class2? #t114 = n2 in #t114 == null ?{self::Class2?} null : let final self::Class2? #t115 = nullable2 in let final self::Class2 #t116 = #t114{self::Class2}.{self::Class2::[]}(#t115){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t117 = #t114{self::Class2}.{self::Class2::[]=}(#t115, #t116){(self::Class2?, self::Class2?) → void} in #t116;
-  let final self::Class2? #t118 = n2 in #t118 == null ?{self::Class2?} null : let final self::Class2? #t119 = nullable2 in #t118{self::Class2}.{self::Class2::[]=}(#t119, #t118{self::Class2}.{self::Class2::[]}(#t119){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class2? #t120 = n2 in #t120 == null ?{self::Class2?} null : let final self::Class2? #t121 = nullable2 in let final self::Class2 #t122 = #t120{self::Class2}.{self::Class2::[]}(#t121){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t123 = #t120{self::Class2}.{self::Class2::[]=}(#t121, #t122){(self::Class2?, self::Class2?) → void} in #t122;
-  let final self::Class2? #t124 = n2 in #t124 == null ?{self::Class2?} null : let final self::Class2? #t125 = nullable2 in #t124{self::Class2}.{self::Class2::[]=}(#t125, #t124{self::Class2}.{self::Class2::[]}(#t125){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class2? #t126 = n2 in #t126 == null ?{self::Class2?} null : let final self::Class2? #t127 = nullable2 in let final self::Class2 #t128 = #t126{self::Class2}.{self::Class2::[]}(#t127){(self::Class2?) → self::Class2} in let final void #t129 = #t126{self::Class2}.{self::Class2::[]=}(#t127, #t128.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t128;
-  let final self::Class2? #t130 = n2 in #t130 == null ?{self::Class2?} null : let final self::Class2? #t131 = nullable2 in let final self::Class2 #t132 = #t130{self::Class2}.{self::Class2::[]}(#t131){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t133 = #t130{self::Class2}.{self::Class2::[]=}(#t131, #t132){(self::Class2?, self::Class2?) → void} in #t132;
-  nullable2 = let final self::Class2? #t134 = n2 in #t134 == null ?{self::Class2?} null : let final self::Class2? #t135 = nullable2 in let final self::Class2 #t136 = #t134{self::Class2}.{self::Class2::[]}(#t135){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t137 = #t134{self::Class2}.{self::Class2::[]=}(#t135, #t136){(self::Class2?, self::Class2?) → void} in #t136;
-  let final self::Class1? #t138 = n1 in #t138 == null ?{self::Class2?} null : let final self::Class2 #t139 = #t138{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t140 = nullable2 in #t139.{self::Class2::[]=}(#t140, #t139.{self::Class2::[]}(#t140){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t141 = n1 in #t141 == null ?{self::Class2?} null : let final self::Class2 #t142 = #t141{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t143 = nullable2 in let final self::Class2 #t144 = #t142.{self::Class2::[]}(#t143){(self::Class2?) → self::Class2} in let final void #t145 = #t142.{self::Class2::[]=}(#t143, #t144.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t144;
-  let final self::Class1? #t146 = n1 in #t146 == null ?{self::Class2?} null : let final self::Class2 #t147 = #t146{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t148 = nullable2 in let final self::Class2 #t149 = #t147.{self::Class2::[]}(#t148){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t150 = #t147.{self::Class2::[]=}(#t148, #t149){(self::Class2?, self::Class2?) → void} in #t149;
-  nullable2 = let final self::Class1? #t151 = n1 in #t151 == null ?{self::Class2?} null : let final self::Class2 #t152 = #t151{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t153 = nullable2 in let final self::Class2 #t154 = #t152.{self::Class2::[]}(#t153){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t155 = #t152.{self::Class2::[]=}(#t153, #t154){(self::Class2?, self::Class2?) → void} in #t154;
-  let final self::Class1? #t156 = n1 in #t156 == null ?{self::Class2?} null : #t156{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2};
-  let final self::Class1? #t157 = n1 in #t157 == null ?{self::Class2?} null : #t157{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2}.{self::Class2::[]=}(nullable2, new self::Class2::•()){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t158 = n1 in #t158 == null ?{self::Class2?} null : let final self::Class2 #t159 = #t158{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t160 = nullable2 in let final self::Class2 #t161 = new self::Class2::•() in let final void #t162 = #t159.{self::Class2::[]=}(#t160, #t161){(self::Class2?, self::Class2?) → void} in #t161;
-  let final self::Class1? #t163 = n1 in #t163 == null ?{self::Class2?} null : let final self::Class2? #t164 = #t163{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in #t164 == null ?{self::Class2?} null : #t164{self::Class2}.{self::Class2::nonNullable2Method}(){() → self::Class2};
-  let final self::Class1? #t165 = n1 in #t165 == null ?{self::Class2?} null : let final self::Class2 #t166 = #t165{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t167 = nullable2 in #t166.{self::Class2::[]=}(#t167, #t166.{self::Class2::[]}(#t167){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t168 = n1 in #t168 == null ?{self::Class2?} null : let final self::Class2 #t169 = #t168{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t170 = nullable2 in let final self::Class2 #t171 = #t169.{self::Class2::[]}(#t170){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t172 = #t169.{self::Class2::[]=}(#t170, #t171){(self::Class2?, self::Class2?) → void} in #t171;
-  let final self::Class1? #t173 = n1 in #t173 == null ?{self::Class2?} null : let final self::Class2 #t174 = #t173{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t175 = nullable2 in #t174.{self::Class2::[]=}(#t175, #t174.{self::Class2::[]}(#t175){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t176 = n1 in #t176 == null ?{self::Class2?} null : let final self::Class2 #t177 = #t176{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t178 = nullable2 in let final self::Class2 #t179 = #t177.{self::Class2::[]}(#t178){(self::Class2?) → self::Class2} in let final void #t180 = #t177.{self::Class2::[]=}(#t178, #t179.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t179;
-  let final self::Class1? #t181 = n1 in #t181 == null ?{self::Class2?} null : let final self::Class2 #t182 = #t181{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t183 = nullable2 in let final self::Class2 #t184 = #t182.{self::Class2::[]}(#t183){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t185 = #t182.{self::Class2::[]=}(#t183, #t184){(self::Class2?, self::Class2?) → void} in #t184;
-  nullable2 = let final self::Class1? #t186 = n1 in #t186 == null ?{self::Class2?} null : let final self::Class2 #t187 = #t186{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = #t187.{self::Class2::[]}(#t188){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t190 = #t187.{self::Class2::[]=}(#t188, #t189){(self::Class2?, self::Class2?) → void} in #t189;
-  let final self::Class1? #t191 = n1 in #t191 == null ?{self::Class1?} null : let final self::Class1? #t192 = #t191{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t192 == null ?{self::Class1?} null : #t192{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?};
-  let final self::Class1? #t193 = n1 in #t193 == null ?{self::Class1?} null : let final self::Class1? #t194 = #t193{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t194 == null ?{self::Class1?} null : #t194{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•()){(self::Class1?, self::Class1?) → void};
-  nullable1 = let final self::Class1? #t195 = n1 in #t195 == null ?{self::Class1?} null : let final self::Class1? #t196 = #t195{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t196 == null ?{self::Class1?} null : let final self::Class1? #t197 = nullable1 in let final self::Class1 #t198 = new self::Class1::•() in let final void #t199 = #t196{self::Class1}.{self::Class1::[]=}(#t197, #t198){(self::Class1?, self::Class1?) → void} in #t198;
-  let final self::Class1? #t200 = n1 in #t200 == null ?{self::Class1?} null : let final self::Class1? #t201 = #t200{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t201 == null ?{self::Class1?} null : let final self::Class1? #t202 = #t201{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t202 == null ?{self::Class1?} null : #t202{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t203 = n1 in #t203 == null ?{self::Class1?} null : let final self::Class1? #t204 = #t203{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t204 == null ?{self::Class1?} null : let final self::Class1? #t205 = #t204{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t205 == null ?{self::Class1?} null : #t205{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t206 = n1 in #t206 == null ?{self::Class1?} null : let final self::Class1? #t207 = #t206{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t207 == null ?{self::Class1?} null : let final self::Class1? #t208 = nullable1 in #t207{self::Class1}.{self::Class1::[]}(#t208){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t207{self::Class1}.{self::Class1::[]=}(#t208, nullable1){(self::Class1?, self::Class1?) → void} : null;
-  nullable1 = let final self::Class1? #t209 = n1 in #t209 == null ?{self::Class1?} null : let final self::Class1? #t210 = #t209{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t210 == null ?{self::Class1?} null : let final self::Class1? #t211 = nullable1 in let final self::Class1? #t212 = #t210{self::Class1}.{self::Class1::[]}(#t211){(self::Class1?) → self::Class1?} in #t212 == null ?{self::Class1?} let final self::Class1? #t213 = nullable1 in let final void #t214 = #t210{self::Class1}.{self::Class1::[]=}(#t211, #t213){(self::Class1?, self::Class1?) → void} in #t213 : #t212{self::Class1};
-  let final self::Class3? #t215 = n3 in #t215 == null ?{self::Class2?} null : let final self::Class2? #t216 = #t215{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t216 == null ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in #t216{self::Class2}.{self::Class2::[]=}(#t217, #t216{self::Class2}.{self::Class2::[]}(#t217){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class3? #t218 = n3 in #t218 == null ?{self::Class2?} null : let final self::Class2? #t219 = #t218{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t219 == null ?{self::Class2?} null : let final self::Class2? #t220 = nullable2 in let final self::Class2 #t221 = #t219{self::Class2}.{self::Class2::[]}(#t220){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t222 = #t219{self::Class2}.{self::Class2::[]=}(#t220, #t221){(self::Class2?, self::Class2?) → void} in #t221;
-  let final self::Class3? #t223 = n3 in #t223 == null ?{self::Class2?} null : let final self::Class2? #t224 = #t223{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t224 == null ?{self::Class2?} null : let final self::Class2? #t225 = nullable2 in #t224{self::Class2}.{self::Class2::[]=}(#t225, #t224{self::Class2}.{self::Class2::[]}(#t225){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class3? #t226 = n3 in #t226 == null ?{self::Class2?} null : let final self::Class2? #t227 = #t226{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t227 == null ?{self::Class2?} null : let final self::Class2? #t228 = nullable2 in let final self::Class2 #t229 = #t227{self::Class2}.{self::Class2::[]}(#t228){(self::Class2?) → self::Class2} in let final void #t230 = #t227{self::Class2}.{self::Class2::[]=}(#t228, #t229.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t229;
-  let final self::Class3? #t231 = n3 in #t231 == null ?{self::Class2?} null : let final self::Class2? #t232 = #t231{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t232 == null ?{self::Class2?} null : let final self::Class2? #t233 = nullable2 in let final self::Class2 #t234 = #t232{self::Class2}.{self::Class2::[]}(#t233){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t235 = #t232{self::Class2}.{self::Class2::[]=}(#t233, #t234){(self::Class2?, self::Class2?) → void} in #t234;
-  nullable2 = let final self::Class3? #t236 = n3 in #t236 == null ?{self::Class2?} null : let final self::Class2? #t237 = #t236{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t237 == null ?{self::Class2?} null : let final self::Class2? #t238 = nullable2 in let final self::Class2 #t239 = #t237{self::Class2}.{self::Class2::[]}(#t238){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t240 = #t237{self::Class2}.{self::Class2::[]=}(#t238, #t239){(self::Class2?, self::Class2?) → void} in #t239;
+  let final self::Class1? #t84 = n1 in #t84.{core::Object::==}(null) ?{self::Class1?} null : #t84{self::Class1}.{self::Class1::[]}(nullable1);
+  let final self::Class1? #t85 = n1 in #t85.{core::Object::==}(null) ?{self::Class1?} null : #t85{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•());
+  let final self::Class1? #t86 = n1 in #t86.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t87 = #t86{self::Class1}.{self::Class1::[]}(nullable1) in #t87.{core::Object::==}(null) ?{self::Class1?} null : #t87{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t88 = n1 in #t88.{core::Object::==}(null) ?{self::Class1?} null : #t88{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::[]}(nullable1);
+  let final self::Class1? #t89 = n1 in #t89.{core::Object::==}(null) ?{self::Class1?} null : #t89{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::[]=}(nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t90 = n1 in #t90.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t91 = #t90{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1? #t92 = nullable1 in let final self::Class1 #t93 = new self::Class1::•() in let final void #t94 = #t91.{self::Class1::[]=}(#t92, #t93) in #t93;
+  let final self::Class1? #t95 = n1 in #t95.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t96 = #t95{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::[]}(nullable1) in #t96.{core::Object::==}(null) ?{self::Class1?} null : #t96{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t97 = n1 in #t97.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t98 = #t97{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t99 = nullable2 in #t98.{self::Class2::[]=}(#t99, #t98.{self::Class2::[]}(#t99).{self::Class2::+}(0));
+  nullable2 = let final self::Class1? #t100 = n1 in #t100.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t101 = #t100{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t102 = nullable2 in let final self::Class2 #t103 = #t101.{self::Class2::[]}(#t102).{self::Class2::+}(0) in let final void #t104 = #t101.{self::Class2::[]=}(#t102, #t103) in #t103;
+  let final self::Class1? #t105 = n1 in #t105.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t106 = nullable1 in #t105{self::Class1}.{self::Class1::[]}(#t106).{core::Object::==}(null) ?{self::Class1?} #t105{self::Class1}.{self::Class1::[]=}(#t106, nullable1) : null;
+  nullable1 = let final self::Class1? #t107 = n1 in #t107.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t108 = nullable1 in let final self::Class1? #t109 = #t107{self::Class1}.{self::Class1::[]}(#t108) in #t109.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t110 = nullable1 in let final void #t111 = #t107{self::Class1}.{self::Class1::[]=}(#t108, #t110) in #t110 : #t109{self::Class1};
+  let final self::Class2? #t112 = n2 in #t112.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t113 = nullable2 in #t112{self::Class2}.{self::Class2::[]=}(#t113, #t112{self::Class2}.{self::Class2::[]}(#t113).{self::Class2::+}(0));
+  nullable2 = let final self::Class2? #t114 = n2 in #t114.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t115 = nullable2 in let final self::Class2 #t116 = #t114{self::Class2}.{self::Class2::[]}(#t115).{self::Class2::+}(0) in let final void #t117 = #t114{self::Class2}.{self::Class2::[]=}(#t115, #t116) in #t116;
+  let final self::Class2? #t118 = n2 in #t118.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t119 = nullable2 in #t118{self::Class2}.{self::Class2::[]=}(#t119, #t118{self::Class2}.{self::Class2::[]}(#t119).{self::Class2::+}(0));
+  nullable2 = let final self::Class2? #t120 = n2 in #t120.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t121 = nullable2 in let final self::Class2 #t122 = #t120{self::Class2}.{self::Class2::[]}(#t121).{self::Class2::+}(0) in let final void #t123 = #t120{self::Class2}.{self::Class2::[]=}(#t121, #t122) in #t122;
+  let final self::Class2? #t124 = n2 in #t124.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t125 = nullable2 in #t124{self::Class2}.{self::Class2::[]=}(#t125, #t124{self::Class2}.{self::Class2::[]}(#t125).{self::Class2::+}(1));
+  nullable2 = let final self::Class2? #t126 = n2 in #t126.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t127 = nullable2 in let final self::Class2 #t128 = #t126{self::Class2}.{self::Class2::[]}(#t127) in let final void #t129 = #t126{self::Class2}.{self::Class2::[]=}(#t127, #t128.{self::Class2::+}(1)) in #t128;
+  let final self::Class2? #t130 = n2 in #t130.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t131 = nullable2 in let final self::Class2 #t132 = #t130{self::Class2}.{self::Class2::[]}(#t131).{self::Class2::+}(1) in let final void #t133 = #t130{self::Class2}.{self::Class2::[]=}(#t131, #t132) in #t132;
+  nullable2 = let final self::Class2? #t134 = n2 in #t134.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t135 = nullable2 in let final self::Class2 #t136 = #t134{self::Class2}.{self::Class2::[]}(#t135).{self::Class2::+}(1) in let final void #t137 = #t134{self::Class2}.{self::Class2::[]=}(#t135, #t136) in #t136;
+  let final self::Class1? #t138 = n1 in #t138.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t139 = #t138{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t140 = nullable2 in #t139.{self::Class2::[]=}(#t140, #t139.{self::Class2::[]}(#t140).{self::Class2::+}(1));
+  nullable2 = let final self::Class1? #t141 = n1 in #t141.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t142 = #t141{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t143 = nullable2 in let final self::Class2 #t144 = #t142.{self::Class2::[]}(#t143) in let final void #t145 = #t142.{self::Class2::[]=}(#t143, #t144.{self::Class2::+}(1)) in #t144;
+  let final self::Class1? #t146 = n1 in #t146.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t147 = #t146{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t148 = nullable2 in let final self::Class2 #t149 = #t147.{self::Class2::[]}(#t148).{self::Class2::+}(1) in let final void #t150 = #t147.{self::Class2::[]=}(#t148, #t149) in #t149;
+  nullable2 = let final self::Class1? #t151 = n1 in #t151.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t152 = #t151{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t153 = nullable2 in let final self::Class2 #t154 = #t152.{self::Class2::[]}(#t153).{self::Class2::+}(1) in let final void #t155 = #t152.{self::Class2::[]=}(#t153, #t154) in #t154;
+  let final self::Class1? #t156 = n1 in #t156.{core::Object::==}(null) ?{self::Class2?} null : #t156{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2).{self::Class2::[]}(nullable2);
+  let final self::Class1? #t157 = n1 in #t157.{core::Object::==}(null) ?{self::Class2?} null : #t157{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2).{self::Class2::[]=}(nullable2, new self::Class2::•());
+  nullable2 = let final self::Class1? #t158 = n1 in #t158.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t159 = #t158{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t160 = nullable2 in let final self::Class2 #t161 = new self::Class2::•() in let final void #t162 = #t159.{self::Class2::[]=}(#t160, #t161) in #t161;
+  let final self::Class1? #t163 = n1 in #t163.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t164 = #t163{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2).{self::Class2::[]}(nullable2) in #t164.{core::Object::==}(null) ?{self::Class2?} null : #t164{self::Class2}.{self::Class2::nonNullable2Method}();
+  let final self::Class1? #t165 = n1 in #t165.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t166 = #t165{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t167 = nullable2 in #t166.{self::Class2::[]=}(#t167, #t166.{self::Class2::[]}(#t167).{self::Class2::+}(0));
+  nullable2 = let final self::Class1? #t168 = n1 in #t168.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t169 = #t168{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t170 = nullable2 in let final self::Class2 #t171 = #t169.{self::Class2::[]}(#t170).{self::Class2::+}(0) in let final void #t172 = #t169.{self::Class2::[]=}(#t170, #t171) in #t171;
+  let final self::Class1? #t173 = n1 in #t173.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t174 = #t173{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t175 = nullable2 in #t174.{self::Class2::[]=}(#t175, #t174.{self::Class2::[]}(#t175).{self::Class2::+}(1));
+  nullable2 = let final self::Class1? #t176 = n1 in #t176.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t177 = #t176{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t178 = nullable2 in let final self::Class2 #t179 = #t177.{self::Class2::[]}(#t178) in let final void #t180 = #t177.{self::Class2::[]=}(#t178, #t179.{self::Class2::+}(1)) in #t179;
+  let final self::Class1? #t181 = n1 in #t181.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t182 = #t181{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t183 = nullable2 in let final self::Class2 #t184 = #t182.{self::Class2::[]}(#t183).{self::Class2::+}(1) in let final void #t185 = #t182.{self::Class2::[]=}(#t183, #t184) in #t184;
+  nullable2 = let final self::Class1? #t186 = n1 in #t186.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t187 = #t186{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = #t187.{self::Class2::[]}(#t188).{self::Class2::+}(1) in let final void #t190 = #t187.{self::Class2::[]=}(#t188, #t189) in #t189;
+  let final self::Class1? #t191 = n1 in #t191.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t192 = #t191{self::Class1}.{self::Class1::[]}(nullable1) in #t192.{core::Object::==}(null) ?{self::Class1?} null : #t192{self::Class1}.{self::Class1::[]}(nullable1);
+  let final self::Class1? #t193 = n1 in #t193.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t194 = #t193{self::Class1}.{self::Class1::[]}(nullable1) in #t194.{core::Object::==}(null) ?{self::Class1?} null : #t194{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t195 = n1 in #t195.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t196 = #t195{self::Class1}.{self::Class1::[]}(nullable1) in #t196.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t197 = nullable1 in let final self::Class1 #t198 = new self::Class1::•() in let final void #t199 = #t196{self::Class1}.{self::Class1::[]=}(#t197, #t198) in #t198;
+  let final self::Class1? #t200 = n1 in #t200.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t201 = #t200{self::Class1}.{self::Class1::[]}(nullable1) in #t201.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t202 = #t201{self::Class1}.{self::Class1::[]}(nullable1) in #t202.{core::Object::==}(null) ?{self::Class1?} null : #t202{self::Class1}.{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t203 = n1 in #t203.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t204 = #t203{self::Class1}.{self::Class1::[]}(nullable1) in #t204.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t205 = #t204{self::Class1}.{self::Class1::[]}(nullable1) in #t205.{core::Object::==}(null) ?{self::Class1?} null : #t205{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t206 = n1 in #t206.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t207 = #t206{self::Class1}.{self::Class1::[]}(nullable1) in #t207.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t208 = nullable1 in #t207{self::Class1}.{self::Class1::[]}(#t208).{core::Object::==}(null) ?{self::Class1?} #t207{self::Class1}.{self::Class1::[]=}(#t208, nullable1) : null;
+  nullable1 = let final self::Class1? #t209 = n1 in #t209.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t210 = #t209{self::Class1}.{self::Class1::[]}(nullable1) in #t210.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t211 = nullable1 in let final self::Class1? #t212 = #t210{self::Class1}.{self::Class1::[]}(#t211) in #t212.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t213 = nullable1 in let final void #t214 = #t210{self::Class1}.{self::Class1::[]=}(#t211, #t213) in #t213 : #t212{self::Class1};
+  let final self::Class3? #t215 = n3 in #t215.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t216 = #t215{self::Class3}.{self::Class3::[]}(nullable3) in #t216.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in #t216{self::Class2}.{self::Class2::[]=}(#t217, #t216{self::Class2}.{self::Class2::[]}(#t217).{self::Class2::+}(0));
+  nullable2 = let final self::Class3? #t218 = n3 in #t218.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t219 = #t218{self::Class3}.{self::Class3::[]}(nullable3) in #t219.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t220 = nullable2 in let final self::Class2 #t221 = #t219{self::Class2}.{self::Class2::[]}(#t220).{self::Class2::+}(0) in let final void #t222 = #t219{self::Class2}.{self::Class2::[]=}(#t220, #t221) in #t221;
+  let final self::Class3? #t223 = n3 in #t223.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t224 = #t223{self::Class3}.{self::Class3::[]}(nullable3) in #t224.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t225 = nullable2 in #t224{self::Class2}.{self::Class2::[]=}(#t225, #t224{self::Class2}.{self::Class2::[]}(#t225).{self::Class2::+}(1));
+  nullable2 = let final self::Class3? #t226 = n3 in #t226.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t227 = #t226{self::Class3}.{self::Class3::[]}(nullable3) in #t227.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t228 = nullable2 in let final self::Class2 #t229 = #t227{self::Class2}.{self::Class2::[]}(#t228) in let final void #t230 = #t227{self::Class2}.{self::Class2::[]=}(#t228, #t229.{self::Class2::+}(1)) in #t229;
+  let final self::Class3? #t231 = n3 in #t231.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t232 = #t231{self::Class3}.{self::Class3::[]}(nullable3) in #t232.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t233 = nullable2 in let final self::Class2 #t234 = #t232{self::Class2}.{self::Class2::[]}(#t233).{self::Class2::+}(1) in let final void #t235 = #t232{self::Class2}.{self::Class2::[]=}(#t233, #t234) in #t234;
+  nullable2 = let final self::Class3? #t236 = n3 in #t236.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t237 = #t236{self::Class3}.{self::Class3::[]}(nullable3) in #t237.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t238 = nullable2 in let final self::Class2 #t239 = #t237{self::Class2}.{self::Class2::[]}(#t238).{self::Class2::+}(1) in let final void #t240 = #t237{self::Class2}.{self::Class2::[]=}(#t238, #t239) in #t239;
 }
 static method operatorAccess(self::Class1? n1, self::Class2? n2) → void {
   self::Class2? nullable2 = n2;
   self::throws(() → void => let final Never #t241 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:220:33: Error: Operator '+' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
   throws(() => n1?.nonNullable1 + 0);
-                                ^" in (let final self::Class1? #t242 = n1 in #t242 == null ?{self::Class1?} null : #t242{self::Class1}.{self::Class1::nonNullable1}{self::Class1}).{self::Class1::+}(0){(core::int) → self::Class1?});
+                                ^" in (let final self::Class1? #t242 = n1 in #t242.{core::Object::==}(null) ?{self::Class1?} null : #t242{self::Class1}.{self::Class1::nonNullable1}).{self::Class1::+}(0));
   self::throws(() → void => let final Never #t243 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:221:16: Error: Operator 'unary-' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
   throws(() => -n1?.nonNullable1);
-               ^" in (let final self::Class1? #t244 = n1 in #t244 == null ?{self::Class1?} null : #t244{self::Class1}.{self::Class1::nonNullable1}{self::Class1}).{self::Class1::unary-}(){() → self::Class1?});
-  let final self::Class2? #t245 = n2 in #t245 == null ?{self::Class2?} null : #t245.{self::Class2::nonNullable2} = #t245.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2};
-  nullable2 = let final self::Class2? #t246 = n2 in #t246 == null ?{self::Class2?} null : let final self::Class2 #t247 = #t246.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t248 = #t246.{self::Class2::nonNullable2} = #t247 in #t247;
-  let final self::Class2? #t249 = n2 in #t249 == null ?{self::Class2?} null : let final self::Class2 #t250 = #t249{self::Class2}.{self::Class2::nonNullable2}{self::Class2} in #t250.{self::Class2::nonNullable2} = #t250.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2};
-  nullable2 = let final self::Class2? #t251 = n2 in #t251 == null ?{self::Class2?} null : let final self::Class2 #t252 = #t251{self::Class2}.{self::Class2::nonNullable2}{self::Class2} in #t252.{self::Class2::nonNullable2} = #t252.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2};
-  let final self::Class2? #t253 = n2 in #t253 == null ?{self::Class2?} null : #t253.{self::Class2::nonNullable2} = #t253.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2};
-  nullable2 = let final self::Class2? #t254 = n2 in #t254 == null ?{self::Class2?} null : let final self::Class2 #t255 = #t254.{self::Class2::nonNullable2}{self::Class2} in let final void #t256 = #t254.{self::Class2::nonNullable2} = #t255.{self::Class2::+}(1){(core::int) → self::Class2} in #t255;
-  let final self::Class2? #t257 = n2 in #t257 == null ?{self::Class2?} null : let final self::Class2 #t258 = #t257.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t259 = #t257.{self::Class2::nonNullable2} = #t258 in #t258;
-  nullable2 = let final self::Class2? #t260 = n2 in #t260 == null ?{self::Class2?} null : let final self::Class2 #t261 = #t260.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t262 = #t260.{self::Class2::nonNullable2} = #t261 in #t261;
+               ^" in (let final self::Class1? #t244 = n1 in #t244.{core::Object::==}(null) ?{self::Class1?} null : #t244{self::Class1}.{self::Class1::nonNullable1}).{self::Class1::unary-}());
+  let final self::Class2? #t245 = n2 in #t245.{core::Object::==}(null) ?{self::Class2?} null : #t245.{self::Class2::nonNullable2} = #t245.{self::Class2::nonNullable2}.{self::Class2::+}(0);
+  nullable2 = let final self::Class2? #t246 = n2 in #t246.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t247 = #t246.{self::Class2::nonNullable2}.{self::Class2::+}(0) in let final void #t248 = #t246.{self::Class2::nonNullable2} = #t247 in #t247;
+  let final self::Class2? #t249 = n2 in #t249.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t250 = #t249{self::Class2}.{self::Class2::nonNullable2} in #t250.{self::Class2::nonNullable2} = #t250.{self::Class2::nonNullable2}.{self::Class2::+}(0);
+  nullable2 = let final self::Class2? #t251 = n2 in #t251.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t252 = #t251{self::Class2}.{self::Class2::nonNullable2} in #t252.{self::Class2::nonNullable2} = #t252.{self::Class2::nonNullable2}.{self::Class2::+}(0);
+  let final self::Class2? #t253 = n2 in #t253.{core::Object::==}(null) ?{self::Class2?} null : #t253.{self::Class2::nonNullable2} = #t253.{self::Class2::nonNullable2}.{self::Class2::+}(1);
+  nullable2 = let final self::Class2? #t254 = n2 in #t254.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t255 = #t254.{self::Class2::nonNullable2} in let final void #t256 = #t254.{self::Class2::nonNullable2} = #t255.{self::Class2::+}(1) in #t255;
+  let final self::Class2? #t257 = n2 in #t257.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t258 = #t257.{self::Class2::nonNullable2}.{self::Class2::+}(1) in let final void #t259 = #t257.{self::Class2::nonNullable2} = #t258 in #t258;
+  nullable2 = let final self::Class2? #t260 = n2 in #t260.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t261 = #t260.{self::Class2::nonNullable2}.{self::Class2::+}(1) in let final void #t262 = #t260.{self::Class2::nonNullable2} = #t261 in #t261;
 }
 static method ifNull(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t263 = n1 in #t263 == null ?{self::Class1?} null : #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null;
-  n1 = let final self::Class1? #t264 = n1 in #t264 == null ?{self::Class1?} null : let final self::Class1? #t265 = #t264.{self::Class1::nullable1}{self::Class1?} in #t265 == null ?{self::Class1} #t264.{self::Class1::nullable1} = n1{self::Class1} : #t265{self::Class1};
-  let final self::Class1? #t266 = n1 in #t266 == null ?{self::Class1?} null : let final self::Class1 #t267 = #t266{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t267.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t267.{self::Class1::nullable1} = n1{self::Class1} : null;
-  n1 = let final self::Class1? #t268 = n1 in #t268 == null ?{self::Class1?} null : let final self::Class1 #t269 = #t268{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t270 = #t269.{self::Class1::nullable1}{self::Class1?} in #t270 == null ?{self::Class1} #t269.{self::Class1::nullable1} = n1{self::Class1} : #t270{self::Class1};
-  let final self::Class1? #t271 = n1 in #t271 == null ?{self::Class1?} null : let final self::Class1 #t272 = #t271{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t273 = n1{self::Class1} in #t272.{self::Class1::[]}(#t273){(self::Class1?) → self::Class1?} == null ?{self::Class1} #t272.{self::Class1::[]=}(#t273, n1{self::Class1}){(self::Class1?, self::Class1?) → void} : null;
-  n1 = let final self::Class1? #t274 = n1 in #t274 == null ?{self::Class1?} null : let final self::Class1 #t275 = #t274{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t276 = n1{self::Class1} in let final self::Class1? #t277 = #t275.{self::Class1::[]}(#t276){(self::Class1?) → self::Class1?} in #t277 == null ?{self::Class1} let final self::Class1 #t278 = n1{self::Class1} in let final void #t279 = #t275.{self::Class1::[]=}(#t276, #t278){(self::Class1?, self::Class1?) → void} in #t278 : #t277{self::Class1};
+  let final self::Class1? #t263 = n1 in #t263.{core::Object::==}(null) ?{self::Class1?} null : #t263.{self::Class1::nullable1}.{core::Object::==}(null) ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null;
+  n1 = let final self::Class1? #t264 = n1 in #t264.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t265 = #t264.{self::Class1::nullable1} in #t265.{core::Object::==}(null) ?{self::Class1} #t264.{self::Class1::nullable1} = n1{self::Class1} : #t265{self::Class1};
+  let final self::Class1? #t266 = n1 in #t266.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t267 = #t266{self::Class1}.{self::Class1::nonNullable1} in #t267.{self::Class1::nullable1}.{core::Object::==}(null) ?{self::Class1} #t267.{self::Class1::nullable1} = n1{self::Class1} : null;
+  n1 = let final self::Class1? #t268 = n1 in #t268.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t269 = #t268{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1? #t270 = #t269.{self::Class1::nullable1} in #t270.{core::Object::==}(null) ?{self::Class1} #t269.{self::Class1::nullable1} = n1{self::Class1} : #t270{self::Class1};
+  let final self::Class1? #t271 = n1 in #t271.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t272 = #t271{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1 #t273 = n1{self::Class1} in #t272.{self::Class1::[]}(#t273).{core::Object::==}(null) ?{self::Class1} #t272.{self::Class1::[]=}(#t273, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t274 = n1 in #t274.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t275 = #t274{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1 #t276 = n1{self::Class1} in let final self::Class1? #t277 = #t275.{self::Class1::[]}(#t276) in #t277.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t278 = n1{self::Class1} in let final void #t279 = #t275.{self::Class1::[]=}(#t276, #t278) in #t278 : #t277{self::Class1};
 }
 static method throws(() → void f) → void {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.transformed.expect
index ed3bb8d..d6e1e8e 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.transformed.expect
@@ -39,25 +39,25 @@
   get property2() → self::Class2
     return new self::Class2::•();
   get nullable1() → self::Class1?
-    return this.{self::Class1::property1}{self::Class1};
+    return this.{self::Class1::property1};
   set nullable1(self::Class1? value) → void {
     this.{self::Class1::property} = value;
   }
   method nonNullable1Method() → self::Class1
-    return this.{self::Class1::nonNullable1}{self::Class1};
+    return this.{self::Class1::nonNullable1};
   operator [](self::Class1? key) → self::Class1?
-    return this.{self::Class1::nullable1}{self::Class1?};
+    return this.{self::Class1::nullable1};
   operator []=(self::Class1? key, self::Class1? value) → void {
     this.{self::Class1::property} = value;
   }
   operator +(core::int value) → self::Class1?
-    return this.{self::Class1::nullable1}{self::Class1?};
+    return this.{self::Class1::nullable1};
   operator unary-() → self::Class1?
-    return this.{self::Class1::nullable1}{self::Class1?};
+    return this.{self::Class1::nullable1};
   get nonNullable1() → self::Class1
-    return this.{self::Class1::property1}{self::Class1};
+    return this.{self::Class1::property1};
   get nonNullable2() → self::Class2
-    return this.{self::Class1::property2}{self::Class2};
+    return this.{self::Class1::property2};
 }
 class Class2 extends core::Object {
   synthetic constructor •() → self::Class2
@@ -67,17 +67,17 @@
     return this;
   set property(self::Class2 value) → void {}
   method nonNullable2Method() → self::Class2
-    return this.{self::Class2::nonNullable2}{self::Class2};
+    return this.{self::Class2::nonNullable2};
   operator [](self::Class2? key) → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   operator []=(self::Class2? key, self::Class2? value) → void
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   operator +(core::int value) → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   operator unary-() → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   get nonNullable2() → self::Class2
-    return this.{self::Class2::property}{self::Class2};
+    return this.{self::Class2::property};
   set nonNullable2(self::Class2 value) → void {
     this.{self::Class2::property} = value;
   }
@@ -89,7 +89,7 @@
   get property() → self::Class2?
     return null;
   operator [](self::Class3? key) → self::Class2?
-    return this.{self::Class3::property}{self::Class2?};
+    return this.{self::Class3::property};
 }
 static method main() → dynamic {
   self::propertyAccess(null);
@@ -99,168 +99,168 @@
 }
 static method propertyAccess(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t1 = n1 in #t1 == null ?{self::Class1?} null : #t1{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t2 = n1 in #t2 == null ?{self::Class1?} null : #t2{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t3 = n1 in #t3 == null ?{self::Class1?} null : #t3{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t4 = n1 in #t4 == null ?{self::Class1?} null : #t4{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t5 = n1 in #t5 == null ?{self::Class1?} null : #t5{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t6 = n1 in #t6 == null ?{self::Class1?} null : let final self::Class1? #t7 = #t6{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t7 == null ?{self::Class1?} null : #t7{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t8 = n1 in #t8 == null ?{self::Class1?} null : let final self::Class1? #t9 = #t8{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t9 == null ?{self::Class1?} null : #t9{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t10 = n1 in #t10 == null ?{self::Class1?} null : #t10{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t11 = n1 in #t11 == null ?{self::Class1?} null : let final self::Class1? #t12 = #t11{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t12 == null ?{self::Class1?} null : #t12{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t13 = n1 in #t13 == null ?{self::Class1?} null : let final self::Class1? #t14 = #t13{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t14 == null ?{self::Class1?} null : #t14{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t15 = let final self::Class1? #t16 = n1 in #t16 == null ?{self::Class1?} null : #t16{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t15 == null ?{self::Class1?} null : #t15{self::Class1}.{self::Class1::nullable1}{self::Class1?};
+  let final self::Class1? #t1 = n1 in #t1.{core::Object::==}(null) ?{self::Class1?} null : #t1{self::Class1}.{self::Class1::nullable1};
+  let final self::Class1? #t2 = n1 in #t2.{core::Object::==}(null) ?{self::Class1?} null : #t2{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t3 = n1 in #t3.{core::Object::==}(null) ?{self::Class1?} null : #t3{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t4 = n1 in #t4.{core::Object::==}(null) ?{self::Class1?} null : #t4{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t5 = n1 in #t5.{core::Object::==}(null) ?{self::Class1?} null : #t5{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t6 = n1 in #t6.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t7 = #t6{self::Class1}.{self::Class1::nullable1} in #t7.{core::Object::==}(null) ?{self::Class1?} null : #t7{self::Class1}.{self::Class1::nullable1};
+  let final self::Class1? #t8 = n1 in #t8.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t9 = #t8{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t9.{core::Object::==}(null) ?{self::Class1?} null : #t9{self::Class1}.{self::Class1::nullable1};
+  let final self::Class1? #t10 = n1 in #t10.{core::Object::==}(null) ?{self::Class1?} null : #t10{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t11 = n1 in #t11.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t12 = #t11{self::Class1}.{self::Class1::nullable1} in #t12.{core::Object::==}(null) ?{self::Class1?} null : #t12{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t13 = n1 in #t13.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t14 = #t13{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t14.{core::Object::==}(null) ?{self::Class1?} null : #t14{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t15 = let final self::Class1? #t16 = n1 in #t16.{core::Object::==}(null) ?{self::Class1?} null : #t16{self::Class1}.{self::Class1::nullable1} in #t15.{core::Object::==}(null) ?{self::Class1?} null : #t15{self::Class1}.{self::Class1::nullable1};
   self::throws(() → void => let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:87:47: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nullable1 = new Class1()).nullable1);
-                                              ^^^^^^^^^" in (let final self::Class1? #t18 = n1 in #t18 == null ?{self::Class1?} null : #t18{self::Class1}.{self::Class1::nullable1} = new self::Class1::•()).{self::Class1::nullable1}{<nullable>}.{self::Class1?});
+                                              ^^^^^^^^^" in (let final self::Class1? #t18 = n1 in #t18.{core::Object::==}(null) ?{self::Class1?} null : #t18{self::Class1}.{self::Class1::nullable1} = new self::Class1::•()).{self::Class1::nullable1});
   self::throws(() → void => let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:88:43: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nonNullable1Method()).nullable1);
-                                          ^^^^^^^^^" in (let final self::Class1? #t20 = n1 in #t20 == null ?{self::Class1?} null : #t20{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}).{self::Class1::nullable1}{<nullable>}.{self::Class1?});
-  nullable1 = let final self::Class1? #t21 = n1 in #t21 == null ?{self::Class1?} null : #t21{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t22 = n1 in #t22 == null ?{self::Class1?} null : let final self::Class1? #t23 = #t22{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t23 == null ?{self::Class1?} null : #t23{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t24 = n1 in #t24 == null ?{self::Class1?} null : let final self::Class1? #t25 = #t24{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t25 == null ?{self::Class1?} null : #t25{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t26 = n1 in #t26 == null ?{self::Class1?} null : let final self::Class1? #t27 = #t26{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t27 == null ?{self::Class1?} null : #t27{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t28 = n1 in #t28 == null ?{self::Class1?} null : #t28{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t29 = n1 in #t29 == null ?{self::Class1?} null : #t29{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t30 = n1 in #t30 == null ?{self::Class1?} null : #t30{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t31 = n1 in #t31 == null ?{self::Class1?} null : #t31{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t32 = n1 in #t32 == null ?{self::Class1?} null : #t32{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t33 = n1 in #t33 == null ?{self::Class1?} null : #t33{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t34 = n1 in #t34 == null ?{self::Class1?} null : #t34{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t35 = n1 in #t35 == null ?{self::Class1?} null : #t35{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t36 = n1 in #t36 == null ?{self::Class1?} null : #t36{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t37 = n1 in #t37 == null ?{self::Class1?} null : #t37{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t38 = n1 in #t38 == null ?{self::Class1?} null : #t38{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t39 = n1 in #t39 == null ?{self::Class1?} null : #t39{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t40 = n1 in #t40 == null ?{self::Class1?} null : let final self::Class1? #t41 = #t40{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?} in #t41 == null ?{self::Class1?} null : #t41{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t42 = n1 in #t42 == null ?{self::Class1?} null : #t42{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t43 = n1 in #t43 == null ?{self::Class1?} null : #t43{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t44 = n1 in #t44 == null ?{self::Class1?} null : #t44{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t45 = n1 in #t45 == null ?{self::Class1?} null : #t45{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t46 = n1 in #t46 == null ?{self::Class1?} null : #t46{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t47 = n1 in #t47 == null ?{self::Class1?} null : #t47{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t48 = n1 in #t48 == null ?{self::Class1?} null : #t48{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t49 = n1 in #t49 == null ?{self::Class1?} null : #t49{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t50 = n1 in #t50 == null ?{self::Class1?} null : #t50{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t51 = n1 in #t51 == null ?{self::Class1?} null : #t51{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t52 = n1 in #t52 == null ?{self::Class1?} null : #t52{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t53 = n1 in #t53 == null ?{self::Class1?} null : #t53{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t54 = n1 in #t54 == null ?{self::Class1?} null : #t54{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t55 = n1 in #t55 == null ?{self::Class1?} null : #t55{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t56 = n1 in #t56 == null ?{self::Class1?} null : #t56{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t57 = n1 in #t57 == null ?{self::Class1?} null : #t57{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t58 = n1 in #t58 == null ?{self::Class1?} null : #t58{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t59 = n1 in #t59 == null ?{self::Class1?} null : #t59{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t60 = n1 in #t60 == null ?{self::Class1?} null : #t60{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t61 = n1 in #t61 == null ?{self::Class1?} null : #t61{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t62 = n1 in #t62 == null ?{self::Class1?} null : #t62{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t63 = n1 in #t63 == null ?{self::Class1?} null : #t63{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t64 = n1 in #t64 == null ?{self::Class1?} null : #t64{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t65 = n1 in #t65 == null ?{self::Class1?} null : #t65{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t66 = n1 in #t66 == null ?{self::Class1?} null : #t66{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t67 = n1 in #t67 == null ?{self::Class1?} null : #t67{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t68 = n1 in #t68 == null ?{self::Class1?} null : #t68{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t69 = n1 in #t69 == null ?{self::Class1?} null : #t69{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t70 = n1 in #t70 == null ?{self::Class1?} null : #t70{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t71 = n1 in #t71 == null ?{self::Class1?} null : #t71{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t72 = n1 in #t72 == null ?{self::Class1?} null : #t72{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t73 = n1 in #t73 == null ?{self::Class1?} null : #t73{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  nullable1 = let final self::Class1? #t74 = n1 in #t74 == null ?{self::Class1?} null : #t74{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t75 = n1 in #t75 == null ?{self::Class1?} null : #t75{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  nullable1 = let final self::Class1? #t76 = n1 in #t76 == null ?{self::Class1?} null : #t76{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t77 = n1 in #t77 == null ?{self::Class1?} null : #t77{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t78 = n1 in #t78 == null ?{self::Class1?} null : #t78{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t79 = n1 in #t79 == null ?{self::Class1?} null : #t79{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1}{self::Class1?};
-  let final self::Class1? #t80 = n1 in #t80 == null ?{self::Class1?} null : #t80{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
-  let final self::Class1? #t81 = n1 in #t81 == null ?{self::Class1?} null : #t81{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t82 = n1 in #t82 == null ?{self::Class1?} null : let final self::Class1? #t83 = #t82{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1} in #t83 == null ?{self::Class1?} null : #t83{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
+                                          ^^^^^^^^^" in (let final self::Class1? #t20 = n1 in #t20.{core::Object::==}(null) ?{self::Class1?} null : #t20{self::Class1}.{self::Class1::nonNullable1Method}()).{self::Class1::nullable1});
+  nullable1 = let final self::Class1? #t21 = n1 in #t21.{core::Object::==}(null) ?{self::Class1?} null : #t21{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t22 = n1 in #t22.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t23 = #t22{self::Class1}.{self::Class1::nullable1} in #t23.{core::Object::==}(null) ?{self::Class1?} null : #t23{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t24 = n1 in #t24.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t25 = #t24{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t25.{core::Object::==}(null) ?{self::Class1?} null : #t25{self::Class1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t26 = n1 in #t26.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t27 = #t26{self::Class1}.{self::Class1::nullable1} in #t27.{core::Object::==}(null) ?{self::Class1?} null : #t27{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t28 = n1 in #t28.{core::Object::==}(null) ?{self::Class1?} null : #t28{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t29 = n1 in #t29.{core::Object::==}(null) ?{self::Class1?} null : #t29{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t30 = n1 in #t30.{core::Object::==}(null) ?{self::Class1?} null : #t30{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t31 = n1 in #t31.{core::Object::==}(null) ?{self::Class1?} null : #t31{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t32 = n1 in #t32.{core::Object::==}(null) ?{self::Class1?} null : #t32{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t33 = n1 in #t33.{core::Object::==}(null) ?{self::Class1?} null : #t33{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t34 = n1 in #t34.{core::Object::==}(null) ?{self::Class1?} null : #t34{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t35 = n1 in #t35.{core::Object::==}(null) ?{self::Class1?} null : #t35{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t36 = n1 in #t36.{core::Object::==}(null) ?{self::Class1?} null : #t36{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t37 = n1 in #t37.{core::Object::==}(null) ?{self::Class1?} null : #t37{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t38 = n1 in #t38.{core::Object::==}(null) ?{self::Class1?} null : #t38{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t39 = n1 in #t39.{core::Object::==}(null) ?{self::Class1?} null : #t39{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t40 = n1 in #t40.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t41 = #t40{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} in #t41.{core::Object::==}(null) ?{self::Class1?} null : #t41{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t42 = n1 in #t42.{core::Object::==}(null) ?{self::Class1?} null : #t42{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t43 = n1 in #t43.{core::Object::==}(null) ?{self::Class1?} null : #t43{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t44 = n1 in #t44.{core::Object::==}(null) ?{self::Class1?} null : #t44{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t45 = n1 in #t45.{core::Object::==}(null) ?{self::Class1?} null : #t45{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t46 = n1 in #t46.{core::Object::==}(null) ?{self::Class1?} null : #t46{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t47 = n1 in #t47.{core::Object::==}(null) ?{self::Class1?} null : #t47{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t48 = n1 in #t48.{core::Object::==}(null) ?{self::Class1?} null : #t48{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1}.{self::Class1::nullable1};
+  let final self::Class1? #t49 = n1 in #t49.{core::Object::==}(null) ?{self::Class1?} null : #t49{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t50 = n1 in #t50.{core::Object::==}(null) ?{self::Class1?} null : #t50{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t51 = n1 in #t51.{core::Object::==}(null) ?{self::Class1?} null : #t51{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t52 = n1 in #t52.{core::Object::==}(null) ?{self::Class1?} null : #t52{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t53 = n1 in #t53.{core::Object::==}(null) ?{self::Class1?} null : #t53{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t54 = n1 in #t54.{core::Object::==}(null) ?{self::Class1?} null : #t54{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t55 = n1 in #t55.{core::Object::==}(null) ?{self::Class1?} null : #t55{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t56 = n1 in #t56.{core::Object::==}(null) ?{self::Class1?} null : #t56{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t57 = n1 in #t57.{core::Object::==}(null) ?{self::Class1?} null : #t57{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t58 = n1 in #t58.{core::Object::==}(null) ?{self::Class1?} null : #t58{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t59 = n1 in #t59.{core::Object::==}(null) ?{self::Class1?} null : #t59{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t60 = n1 in #t60.{core::Object::==}(null) ?{self::Class1?} null : #t60{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t61 = n1 in #t61.{core::Object::==}(null) ?{self::Class1?} null : #t61{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t62 = n1 in #t62.{core::Object::==}(null) ?{self::Class1?} null : #t62{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t63 = n1 in #t63.{core::Object::==}(null) ?{self::Class1?} null : #t63{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t64 = n1 in #t64.{core::Object::==}(null) ?{self::Class1?} null : #t64{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1};
+  let final self::Class1? #t65 = n1 in #t65.{core::Object::==}(null) ?{self::Class1?} null : #t65{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t66 = n1 in #t66.{core::Object::==}(null) ?{self::Class1?} null : #t66{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t67 = n1 in #t67.{core::Object::==}(null) ?{self::Class1?} null : #t67{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t68 = n1 in #t68.{core::Object::==}(null) ?{self::Class1?} null : #t68{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t69 = n1 in #t69.{core::Object::==}(null) ?{self::Class1?} null : #t69{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t70 = n1 in #t70.{core::Object::==}(null) ?{self::Class1?} null : #t70{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t71 = n1 in #t71.{core::Object::==}(null) ?{self::Class1?} null : #t71{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t72 = n1 in #t72.{core::Object::==}(null) ?{self::Class1?} null : #t72{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t73 = n1 in #t73.{core::Object::==}(null) ?{self::Class1?} null : #t73{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  nullable1 = let final self::Class1? #t74 = n1 in #t74.{core::Object::==}(null) ?{self::Class1?} null : #t74{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t75 = n1 in #t75.{core::Object::==}(null) ?{self::Class1?} null : #t75{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  nullable1 = let final self::Class1? #t76 = n1 in #t76.{core::Object::==}(null) ?{self::Class1?} null : #t76{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t77 = n1 in #t77.{core::Object::==}(null) ?{self::Class1?} null : #t77{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t78 = n1 in #t78.{core::Object::==}(null) ?{self::Class1?} null : #t78{self::Class1}.{self::Class1::nullable1} = new self::Class1::•().{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t79 = n1 in #t79.{core::Object::==}(null) ?{self::Class1?} null : #t79{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}().{self::Class1::nullable1};
+  let final self::Class1? #t80 = n1 in #t80.{core::Object::==}(null) ?{self::Class1?} null : #t80{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}().{self::Class1::nullable1} = new self::Class1::•();
+  let final self::Class1? #t81 = n1 in #t81.{core::Object::==}(null) ?{self::Class1?} null : #t81{self::Class1}.{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}().{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t82 = n1 in #t82.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t83 = #t82{self::Class1}.{self::Class1::nonNullable1Method}() in #t83.{core::Object::==}(null) ?{self::Class1?} null : #t83{self::Class1}.{self::Class1::nonNullable1Method}();
 }
 static method indexAccess(self::Class1? n1, self::Class2? n2, self::Class3? n3) → void {
   self::Class1? nullable1 = n1;
   self::Class2? nullable2 = n2;
   self::Class3? nullable3 = n3;
-  let final self::Class1? #t84 = n1 in #t84 == null ?{self::Class1?} null : #t84{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?};
-  let final self::Class1? #t85 = n1 in #t85 == null ?{self::Class1?} null : #t85{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•()){(self::Class1?, self::Class1?) → void};
-  let final self::Class1? #t86 = n1 in #t86 == null ?{self::Class1?} null : let final self::Class1? #t87 = #t86{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t87 == null ?{self::Class1?} null : #t87{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t88 = n1 in #t88 == null ?{self::Class1?} null : #t88{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?};
-  let final self::Class1? #t89 = n1 in #t89 == null ?{self::Class1?} null : #t89{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•()){(self::Class1?, self::Class1?) → void};
-  nullable1 = let final self::Class1? #t90 = n1 in #t90 == null ?{self::Class1?} null : let final self::Class1 #t91 = #t90{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t92 = nullable1 in let final self::Class1 #t93 = new self::Class1::•() in let final void #t94 = #t91.{self::Class1::[]=}(#t92, #t93){(self::Class1?, self::Class1?) → void} in #t93;
-  let final self::Class1? #t95 = n1 in #t95 == null ?{self::Class1?} null : let final self::Class1? #t96 = #t95{self::Class1}.{self::Class1::nonNullable1}{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t96 == null ?{self::Class1?} null : #t96{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t97 = n1 in #t97 == null ?{self::Class2?} null : let final self::Class2 #t98 = #t97{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t99 = nullable2 in #t98.{self::Class2::[]=}(#t99, #t98.{self::Class2::[]}(#t99){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t100 = n1 in #t100 == null ?{self::Class2?} null : let final self::Class2 #t101 = #t100{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t102 = nullable2 in let final self::Class2 #t103 = #t101.{self::Class2::[]}(#t102){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t104 = #t101.{self::Class2::[]=}(#t102, #t103){(self::Class2?, self::Class2?) → void} in #t103;
-  let final self::Class1? #t105 = n1 in #t105 == null ?{self::Class1?} null : let final self::Class1? #t106 = nullable1 in #t105{self::Class1}.{self::Class1::[]}(#t106){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t105{self::Class1}.{self::Class1::[]=}(#t106, nullable1){(self::Class1?, self::Class1?) → void} : null;
-  nullable1 = let final self::Class1? #t107 = n1 in #t107 == null ?{self::Class1?} null : let final self::Class1? #t108 = nullable1 in let final self::Class1? #t109 = #t107{self::Class1}.{self::Class1::[]}(#t108){(self::Class1?) → self::Class1?} in #t109 == null ?{self::Class1?} let final self::Class1? #t110 = nullable1 in let final void #t111 = #t107{self::Class1}.{self::Class1::[]=}(#t108, #t110){(self::Class1?, self::Class1?) → void} in #t110 : #t109{self::Class1};
-  let final self::Class2? #t112 = n2 in #t112 == null ?{self::Class2?} null : let final self::Class2? #t113 = nullable2 in #t112{self::Class2}.{self::Class2::[]=}(#t113, #t112{self::Class2}.{self::Class2::[]}(#t113){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class2? #t114 = n2 in #t114 == null ?{self::Class2?} null : let final self::Class2? #t115 = nullable2 in let final self::Class2 #t116 = #t114{self::Class2}.{self::Class2::[]}(#t115){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t117 = #t114{self::Class2}.{self::Class2::[]=}(#t115, #t116){(self::Class2?, self::Class2?) → void} in #t116;
-  let final self::Class2? #t118 = n2 in #t118 == null ?{self::Class2?} null : let final self::Class2? #t119 = nullable2 in #t118{self::Class2}.{self::Class2::[]=}(#t119, #t118{self::Class2}.{self::Class2::[]}(#t119){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class2? #t120 = n2 in #t120 == null ?{self::Class2?} null : let final self::Class2? #t121 = nullable2 in let final self::Class2 #t122 = #t120{self::Class2}.{self::Class2::[]}(#t121){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t123 = #t120{self::Class2}.{self::Class2::[]=}(#t121, #t122){(self::Class2?, self::Class2?) → void} in #t122;
-  let final self::Class2? #t124 = n2 in #t124 == null ?{self::Class2?} null : let final self::Class2? #t125 = nullable2 in #t124{self::Class2}.{self::Class2::[]=}(#t125, #t124{self::Class2}.{self::Class2::[]}(#t125){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class2? #t126 = n2 in #t126 == null ?{self::Class2?} null : let final self::Class2? #t127 = nullable2 in let final self::Class2 #t128 = #t126{self::Class2}.{self::Class2::[]}(#t127){(self::Class2?) → self::Class2} in let final void #t129 = #t126{self::Class2}.{self::Class2::[]=}(#t127, #t128.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t128;
-  let final self::Class2? #t130 = n2 in #t130 == null ?{self::Class2?} null : let final self::Class2? #t131 = nullable2 in let final self::Class2 #t132 = #t130{self::Class2}.{self::Class2::[]}(#t131){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t133 = #t130{self::Class2}.{self::Class2::[]=}(#t131, #t132){(self::Class2?, self::Class2?) → void} in #t132;
-  nullable2 = let final self::Class2? #t134 = n2 in #t134 == null ?{self::Class2?} null : let final self::Class2? #t135 = nullable2 in let final self::Class2 #t136 = #t134{self::Class2}.{self::Class2::[]}(#t135){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t137 = #t134{self::Class2}.{self::Class2::[]=}(#t135, #t136){(self::Class2?, self::Class2?) → void} in #t136;
-  let final self::Class1? #t138 = n1 in #t138 == null ?{self::Class2?} null : let final self::Class2 #t139 = #t138{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t140 = nullable2 in #t139.{self::Class2::[]=}(#t140, #t139.{self::Class2::[]}(#t140){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t141 = n1 in #t141 == null ?{self::Class2?} null : let final self::Class2 #t142 = #t141{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t143 = nullable2 in let final self::Class2 #t144 = #t142.{self::Class2::[]}(#t143){(self::Class2?) → self::Class2} in let final void #t145 = #t142.{self::Class2::[]=}(#t143, #t144.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t144;
-  let final self::Class1? #t146 = n1 in #t146 == null ?{self::Class2?} null : let final self::Class2 #t147 = #t146{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t148 = nullable2 in let final self::Class2 #t149 = #t147.{self::Class2::[]}(#t148){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t150 = #t147.{self::Class2::[]=}(#t148, #t149){(self::Class2?, self::Class2?) → void} in #t149;
-  nullable2 = let final self::Class1? #t151 = n1 in #t151 == null ?{self::Class2?} null : let final self::Class2 #t152 = #t151{self::Class1}.{self::Class1::nonNullable2}{self::Class2} in let final self::Class2? #t153 = nullable2 in let final self::Class2 #t154 = #t152.{self::Class2::[]}(#t153){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t155 = #t152.{self::Class2::[]=}(#t153, #t154){(self::Class2?, self::Class2?) → void} in #t154;
-  let final self::Class1? #t156 = n1 in #t156 == null ?{self::Class2?} null : #t156{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2};
-  let final self::Class1? #t157 = n1 in #t157 == null ?{self::Class2?} null : #t157{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2}.{self::Class2::[]=}(nullable2, new self::Class2::•()){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t158 = n1 in #t158 == null ?{self::Class2?} null : let final self::Class2 #t159 = #t158{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t160 = nullable2 in let final self::Class2 #t161 = new self::Class2::•() in let final void #t162 = #t159.{self::Class2::[]=}(#t160, #t161){(self::Class2?, self::Class2?) → void} in #t161;
-  let final self::Class1? #t163 = n1 in #t163 == null ?{self::Class2?} null : let final self::Class2? #t164 = #t163{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in #t164 == null ?{self::Class2?} null : #t164{self::Class2}.{self::Class2::nonNullable2Method}(){() → self::Class2};
-  let final self::Class1? #t165 = n1 in #t165 == null ?{self::Class2?} null : let final self::Class2 #t166 = #t165{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t167 = nullable2 in #t166.{self::Class2::[]=}(#t167, #t166.{self::Class2::[]}(#t167){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t168 = n1 in #t168 == null ?{self::Class2?} null : let final self::Class2 #t169 = #t168{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t170 = nullable2 in let final self::Class2 #t171 = #t169.{self::Class2::[]}(#t170){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t172 = #t169.{self::Class2::[]=}(#t170, #t171){(self::Class2?, self::Class2?) → void} in #t171;
-  let final self::Class1? #t173 = n1 in #t173 == null ?{self::Class2?} null : let final self::Class2 #t174 = #t173{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t175 = nullable2 in #t174.{self::Class2::[]=}(#t175, #t174.{self::Class2::[]}(#t175){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class1? #t176 = n1 in #t176 == null ?{self::Class2?} null : let final self::Class2 #t177 = #t176{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t178 = nullable2 in let final self::Class2 #t179 = #t177.{self::Class2::[]}(#t178){(self::Class2?) → self::Class2} in let final void #t180 = #t177.{self::Class2::[]=}(#t178, #t179.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t179;
-  let final self::Class1? #t181 = n1 in #t181 == null ?{self::Class2?} null : let final self::Class2 #t182 = #t181{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t183 = nullable2 in let final self::Class2 #t184 = #t182.{self::Class2::[]}(#t183){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t185 = #t182.{self::Class2::[]=}(#t183, #t184){(self::Class2?, self::Class2?) → void} in #t184;
-  nullable2 = let final self::Class1? #t186 = n1 in #t186 == null ?{self::Class2?} null : let final self::Class2 #t187 = #t186{self::Class1}.{self::Class1::nonNullable2}{self::Class2}.{self::Class2::[]}(nullable2){(self::Class2?) → self::Class2} in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = #t187.{self::Class2::[]}(#t188){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t190 = #t187.{self::Class2::[]=}(#t188, #t189){(self::Class2?, self::Class2?) → void} in #t189;
-  let final self::Class1? #t191 = n1 in #t191 == null ?{self::Class1?} null : let final self::Class1? #t192 = #t191{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t192 == null ?{self::Class1?} null : #t192{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?};
-  let final self::Class1? #t193 = n1 in #t193 == null ?{self::Class1?} null : let final self::Class1? #t194 = #t193{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t194 == null ?{self::Class1?} null : #t194{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•()){(self::Class1?, self::Class1?) → void};
-  nullable1 = let final self::Class1? #t195 = n1 in #t195 == null ?{self::Class1?} null : let final self::Class1? #t196 = #t195{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t196 == null ?{self::Class1?} null : let final self::Class1? #t197 = nullable1 in let final self::Class1 #t198 = new self::Class1::•() in let final void #t199 = #t196{self::Class1}.{self::Class1::[]=}(#t197, #t198){(self::Class1?, self::Class1?) → void} in #t198;
-  let final self::Class1? #t200 = n1 in #t200 == null ?{self::Class1?} null : let final self::Class1? #t201 = #t200{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t201 == null ?{self::Class1?} null : let final self::Class1? #t202 = #t201{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t202 == null ?{self::Class1?} null : #t202{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  nullable1 = let final self::Class1? #t203 = n1 in #t203 == null ?{self::Class1?} null : let final self::Class1? #t204 = #t203{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t204 == null ?{self::Class1?} null : let final self::Class1? #t205 = #t204{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t205 == null ?{self::Class1?} null : #t205{self::Class1}.{self::Class1::nonNullable1Method}(){() → self::Class1};
-  let final self::Class1? #t206 = n1 in #t206 == null ?{self::Class1?} null : let final self::Class1? #t207 = #t206{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t207 == null ?{self::Class1?} null : let final self::Class1? #t208 = nullable1 in #t207{self::Class1}.{self::Class1::[]}(#t208){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t207{self::Class1}.{self::Class1::[]=}(#t208, nullable1){(self::Class1?, self::Class1?) → void} : null;
-  nullable1 = let final self::Class1? #t209 = n1 in #t209 == null ?{self::Class1?} null : let final self::Class1? #t210 = #t209{self::Class1}.{self::Class1::[]}(nullable1){(self::Class1?) → self::Class1?} in #t210 == null ?{self::Class1?} null : let final self::Class1? #t211 = nullable1 in let final self::Class1? #t212 = #t210{self::Class1}.{self::Class1::[]}(#t211){(self::Class1?) → self::Class1?} in #t212 == null ?{self::Class1?} let final self::Class1? #t213 = nullable1 in let final void #t214 = #t210{self::Class1}.{self::Class1::[]=}(#t211, #t213){(self::Class1?, self::Class1?) → void} in #t213 : #t212{self::Class1};
-  let final self::Class3? #t215 = n3 in #t215 == null ?{self::Class2?} null : let final self::Class2? #t216 = #t215{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t216 == null ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in #t216{self::Class2}.{self::Class2::[]=}(#t217, #t216{self::Class2}.{self::Class2::[]}(#t217){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class3? #t218 = n3 in #t218 == null ?{self::Class2?} null : let final self::Class2? #t219 = #t218{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t219 == null ?{self::Class2?} null : let final self::Class2? #t220 = nullable2 in let final self::Class2 #t221 = #t219{self::Class2}.{self::Class2::[]}(#t220){(self::Class2?) → self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t222 = #t219{self::Class2}.{self::Class2::[]=}(#t220, #t221){(self::Class2?, self::Class2?) → void} in #t221;
-  let final self::Class3? #t223 = n3 in #t223 == null ?{self::Class2?} null : let final self::Class2? #t224 = #t223{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t224 == null ?{self::Class2?} null : let final self::Class2? #t225 = nullable2 in #t224{self::Class2}.{self::Class2::[]=}(#t225, #t224{self::Class2}.{self::Class2::[]}(#t225){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void};
-  nullable2 = let final self::Class3? #t226 = n3 in #t226 == null ?{self::Class2?} null : let final self::Class2? #t227 = #t226{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t227 == null ?{self::Class2?} null : let final self::Class2? #t228 = nullable2 in let final self::Class2 #t229 = #t227{self::Class2}.{self::Class2::[]}(#t228){(self::Class2?) → self::Class2} in let final void #t230 = #t227{self::Class2}.{self::Class2::[]=}(#t228, #t229.{self::Class2::+}(1){(core::int) → self::Class2}){(self::Class2?, self::Class2?) → void} in #t229;
-  let final self::Class3? #t231 = n3 in #t231 == null ?{self::Class2?} null : let final self::Class2? #t232 = #t231{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t232 == null ?{self::Class2?} null : let final self::Class2? #t233 = nullable2 in let final self::Class2 #t234 = #t232{self::Class2}.{self::Class2::[]}(#t233){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t235 = #t232{self::Class2}.{self::Class2::[]=}(#t233, #t234){(self::Class2?, self::Class2?) → void} in #t234;
-  nullable2 = let final self::Class3? #t236 = n3 in #t236 == null ?{self::Class2?} null : let final self::Class2? #t237 = #t236{self::Class3}.{self::Class3::[]}(nullable3){(self::Class3?) → self::Class2?} in #t237 == null ?{self::Class2?} null : let final self::Class2? #t238 = nullable2 in let final self::Class2 #t239 = #t237{self::Class2}.{self::Class2::[]}(#t238){(self::Class2?) → self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t240 = #t237{self::Class2}.{self::Class2::[]=}(#t238, #t239){(self::Class2?, self::Class2?) → void} in #t239;
+  let final self::Class1? #t84 = n1 in #t84.{core::Object::==}(null) ?{self::Class1?} null : #t84{self::Class1}.{self::Class1::[]}(nullable1);
+  let final self::Class1? #t85 = n1 in #t85.{core::Object::==}(null) ?{self::Class1?} null : #t85{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•());
+  let final self::Class1? #t86 = n1 in #t86.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t87 = #t86{self::Class1}.{self::Class1::[]}(nullable1) in #t87.{core::Object::==}(null) ?{self::Class1?} null : #t87{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t88 = n1 in #t88.{core::Object::==}(null) ?{self::Class1?} null : #t88{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::[]}(nullable1);
+  let final self::Class1? #t89 = n1 in #t89.{core::Object::==}(null) ?{self::Class1?} null : #t89{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::[]=}(nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t90 = n1 in #t90.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t91 = #t90{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1? #t92 = nullable1 in let final self::Class1 #t93 = new self::Class1::•() in let final void #t94 = #t91.{self::Class1::[]=}(#t92, #t93) in #t93;
+  let final self::Class1? #t95 = n1 in #t95.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t96 = #t95{self::Class1}.{self::Class1::nonNullable1}.{self::Class1::[]}(nullable1) in #t96.{core::Object::==}(null) ?{self::Class1?} null : #t96{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t97 = n1 in #t97.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t98 = #t97{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t99 = nullable2 in #t98.{self::Class2::[]=}(#t99, #t98.{self::Class2::[]}(#t99).{self::Class2::+}(0));
+  nullable2 = let final self::Class1? #t100 = n1 in #t100.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t101 = #t100{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t102 = nullable2 in let final self::Class2 #t103 = #t101.{self::Class2::[]}(#t102).{self::Class2::+}(0) in let final void #t104 = #t101.{self::Class2::[]=}(#t102, #t103) in #t103;
+  let final self::Class1? #t105 = n1 in #t105.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t106 = nullable1 in #t105{self::Class1}.{self::Class1::[]}(#t106).{core::Object::==}(null) ?{self::Class1?} #t105{self::Class1}.{self::Class1::[]=}(#t106, nullable1) : null;
+  nullable1 = let final self::Class1? #t107 = n1 in #t107.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t108 = nullable1 in let final self::Class1? #t109 = #t107{self::Class1}.{self::Class1::[]}(#t108) in #t109.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t110 = nullable1 in let final void #t111 = #t107{self::Class1}.{self::Class1::[]=}(#t108, #t110) in #t110 : #t109{self::Class1};
+  let final self::Class2? #t112 = n2 in #t112.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t113 = nullable2 in #t112{self::Class2}.{self::Class2::[]=}(#t113, #t112{self::Class2}.{self::Class2::[]}(#t113).{self::Class2::+}(0));
+  nullable2 = let final self::Class2? #t114 = n2 in #t114.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t115 = nullable2 in let final self::Class2 #t116 = #t114{self::Class2}.{self::Class2::[]}(#t115).{self::Class2::+}(0) in let final void #t117 = #t114{self::Class2}.{self::Class2::[]=}(#t115, #t116) in #t116;
+  let final self::Class2? #t118 = n2 in #t118.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t119 = nullable2 in #t118{self::Class2}.{self::Class2::[]=}(#t119, #t118{self::Class2}.{self::Class2::[]}(#t119).{self::Class2::+}(0));
+  nullable2 = let final self::Class2? #t120 = n2 in #t120.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t121 = nullable2 in let final self::Class2 #t122 = #t120{self::Class2}.{self::Class2::[]}(#t121).{self::Class2::+}(0) in let final void #t123 = #t120{self::Class2}.{self::Class2::[]=}(#t121, #t122) in #t122;
+  let final self::Class2? #t124 = n2 in #t124.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t125 = nullable2 in #t124{self::Class2}.{self::Class2::[]=}(#t125, #t124{self::Class2}.{self::Class2::[]}(#t125).{self::Class2::+}(1));
+  nullable2 = let final self::Class2? #t126 = n2 in #t126.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t127 = nullable2 in let final self::Class2 #t128 = #t126{self::Class2}.{self::Class2::[]}(#t127) in let final void #t129 = #t126{self::Class2}.{self::Class2::[]=}(#t127, #t128.{self::Class2::+}(1)) in #t128;
+  let final self::Class2? #t130 = n2 in #t130.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t131 = nullable2 in let final self::Class2 #t132 = #t130{self::Class2}.{self::Class2::[]}(#t131).{self::Class2::+}(1) in let final void #t133 = #t130{self::Class2}.{self::Class2::[]=}(#t131, #t132) in #t132;
+  nullable2 = let final self::Class2? #t134 = n2 in #t134.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t135 = nullable2 in let final self::Class2 #t136 = #t134{self::Class2}.{self::Class2::[]}(#t135).{self::Class2::+}(1) in let final void #t137 = #t134{self::Class2}.{self::Class2::[]=}(#t135, #t136) in #t136;
+  let final self::Class1? #t138 = n1 in #t138.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t139 = #t138{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t140 = nullable2 in #t139.{self::Class2::[]=}(#t140, #t139.{self::Class2::[]}(#t140).{self::Class2::+}(1));
+  nullable2 = let final self::Class1? #t141 = n1 in #t141.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t142 = #t141{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t143 = nullable2 in let final self::Class2 #t144 = #t142.{self::Class2::[]}(#t143) in let final void #t145 = #t142.{self::Class2::[]=}(#t143, #t144.{self::Class2::+}(1)) in #t144;
+  let final self::Class1? #t146 = n1 in #t146.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t147 = #t146{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t148 = nullable2 in let final self::Class2 #t149 = #t147.{self::Class2::[]}(#t148).{self::Class2::+}(1) in let final void #t150 = #t147.{self::Class2::[]=}(#t148, #t149) in #t149;
+  nullable2 = let final self::Class1? #t151 = n1 in #t151.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t152 = #t151{self::Class1}.{self::Class1::nonNullable2} in let final self::Class2? #t153 = nullable2 in let final self::Class2 #t154 = #t152.{self::Class2::[]}(#t153).{self::Class2::+}(1) in let final void #t155 = #t152.{self::Class2::[]=}(#t153, #t154) in #t154;
+  let final self::Class1? #t156 = n1 in #t156.{core::Object::==}(null) ?{self::Class2?} null : #t156{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2).{self::Class2::[]}(nullable2);
+  let final self::Class1? #t157 = n1 in #t157.{core::Object::==}(null) ?{self::Class2?} null : #t157{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2).{self::Class2::[]=}(nullable2, new self::Class2::•());
+  nullable2 = let final self::Class1? #t158 = n1 in #t158.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t159 = #t158{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t160 = nullable2 in let final self::Class2 #t161 = new self::Class2::•() in let final void #t162 = #t159.{self::Class2::[]=}(#t160, #t161) in #t161;
+  let final self::Class1? #t163 = n1 in #t163.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t164 = #t163{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2).{self::Class2::[]}(nullable2) in #t164.{core::Object::==}(null) ?{self::Class2?} null : #t164{self::Class2}.{self::Class2::nonNullable2Method}();
+  let final self::Class1? #t165 = n1 in #t165.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t166 = #t165{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t167 = nullable2 in #t166.{self::Class2::[]=}(#t167, #t166.{self::Class2::[]}(#t167).{self::Class2::+}(0));
+  nullable2 = let final self::Class1? #t168 = n1 in #t168.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t169 = #t168{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t170 = nullable2 in let final self::Class2 #t171 = #t169.{self::Class2::[]}(#t170).{self::Class2::+}(0) in let final void #t172 = #t169.{self::Class2::[]=}(#t170, #t171) in #t171;
+  let final self::Class1? #t173 = n1 in #t173.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t174 = #t173{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t175 = nullable2 in #t174.{self::Class2::[]=}(#t175, #t174.{self::Class2::[]}(#t175).{self::Class2::+}(1));
+  nullable2 = let final self::Class1? #t176 = n1 in #t176.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t177 = #t176{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t178 = nullable2 in let final self::Class2 #t179 = #t177.{self::Class2::[]}(#t178) in let final void #t180 = #t177.{self::Class2::[]=}(#t178, #t179.{self::Class2::+}(1)) in #t179;
+  let final self::Class1? #t181 = n1 in #t181.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t182 = #t181{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t183 = nullable2 in let final self::Class2 #t184 = #t182.{self::Class2::[]}(#t183).{self::Class2::+}(1) in let final void #t185 = #t182.{self::Class2::[]=}(#t183, #t184) in #t184;
+  nullable2 = let final self::Class1? #t186 = n1 in #t186.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t187 = #t186{self::Class1}.{self::Class1::nonNullable2}.{self::Class2::[]}(nullable2) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = #t187.{self::Class2::[]}(#t188).{self::Class2::+}(1) in let final void #t190 = #t187.{self::Class2::[]=}(#t188, #t189) in #t189;
+  let final self::Class1? #t191 = n1 in #t191.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t192 = #t191{self::Class1}.{self::Class1::[]}(nullable1) in #t192.{core::Object::==}(null) ?{self::Class1?} null : #t192{self::Class1}.{self::Class1::[]}(nullable1);
+  let final self::Class1? #t193 = n1 in #t193.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t194 = #t193{self::Class1}.{self::Class1::[]}(nullable1) in #t194.{core::Object::==}(null) ?{self::Class1?} null : #t194{self::Class1}.{self::Class1::[]=}(nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t195 = n1 in #t195.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t196 = #t195{self::Class1}.{self::Class1::[]}(nullable1) in #t196.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t197 = nullable1 in let final self::Class1 #t198 = new self::Class1::•() in let final void #t199 = #t196{self::Class1}.{self::Class1::[]=}(#t197, #t198) in #t198;
+  let final self::Class1? #t200 = n1 in #t200.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t201 = #t200{self::Class1}.{self::Class1::[]}(nullable1) in #t201.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t202 = #t201{self::Class1}.{self::Class1::[]}(nullable1) in #t202.{core::Object::==}(null) ?{self::Class1?} null : #t202{self::Class1}.{self::Class1::nonNullable1Method}();
+  nullable1 = let final self::Class1? #t203 = n1 in #t203.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t204 = #t203{self::Class1}.{self::Class1::[]}(nullable1) in #t204.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t205 = #t204{self::Class1}.{self::Class1::[]}(nullable1) in #t205.{core::Object::==}(null) ?{self::Class1?} null : #t205{self::Class1}.{self::Class1::nonNullable1Method}();
+  let final self::Class1? #t206 = n1 in #t206.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t207 = #t206{self::Class1}.{self::Class1::[]}(nullable1) in #t207.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t208 = nullable1 in #t207{self::Class1}.{self::Class1::[]}(#t208).{core::Object::==}(null) ?{self::Class1?} #t207{self::Class1}.{self::Class1::[]=}(#t208, nullable1) : null;
+  nullable1 = let final self::Class1? #t209 = n1 in #t209.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t210 = #t209{self::Class1}.{self::Class1::[]}(nullable1) in #t210.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t211 = nullable1 in let final self::Class1? #t212 = #t210{self::Class1}.{self::Class1::[]}(#t211) in #t212.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t213 = nullable1 in let final void #t214 = #t210{self::Class1}.{self::Class1::[]=}(#t211, #t213) in #t213 : #t212{self::Class1};
+  let final self::Class3? #t215 = n3 in #t215.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t216 = #t215{self::Class3}.{self::Class3::[]}(nullable3) in #t216.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in #t216{self::Class2}.{self::Class2::[]=}(#t217, #t216{self::Class2}.{self::Class2::[]}(#t217).{self::Class2::+}(0));
+  nullable2 = let final self::Class3? #t218 = n3 in #t218.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t219 = #t218{self::Class3}.{self::Class3::[]}(nullable3) in #t219.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t220 = nullable2 in let final self::Class2 #t221 = #t219{self::Class2}.{self::Class2::[]}(#t220).{self::Class2::+}(0) in let final void #t222 = #t219{self::Class2}.{self::Class2::[]=}(#t220, #t221) in #t221;
+  let final self::Class3? #t223 = n3 in #t223.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t224 = #t223{self::Class3}.{self::Class3::[]}(nullable3) in #t224.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t225 = nullable2 in #t224{self::Class2}.{self::Class2::[]=}(#t225, #t224{self::Class2}.{self::Class2::[]}(#t225).{self::Class2::+}(1));
+  nullable2 = let final self::Class3? #t226 = n3 in #t226.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t227 = #t226{self::Class3}.{self::Class3::[]}(nullable3) in #t227.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t228 = nullable2 in let final self::Class2 #t229 = #t227{self::Class2}.{self::Class2::[]}(#t228) in let final void #t230 = #t227{self::Class2}.{self::Class2::[]=}(#t228, #t229.{self::Class2::+}(1)) in #t229;
+  let final self::Class3? #t231 = n3 in #t231.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t232 = #t231{self::Class3}.{self::Class3::[]}(nullable3) in #t232.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t233 = nullable2 in let final self::Class2 #t234 = #t232{self::Class2}.{self::Class2::[]}(#t233).{self::Class2::+}(1) in let final void #t235 = #t232{self::Class2}.{self::Class2::[]=}(#t233, #t234) in #t234;
+  nullable2 = let final self::Class3? #t236 = n3 in #t236.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t237 = #t236{self::Class3}.{self::Class3::[]}(nullable3) in #t237.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t238 = nullable2 in let final self::Class2 #t239 = #t237{self::Class2}.{self::Class2::[]}(#t238).{self::Class2::+}(1) in let final void #t240 = #t237{self::Class2}.{self::Class2::[]=}(#t238, #t239) in #t239;
 }
 static method operatorAccess(self::Class1? n1, self::Class2? n2) → void {
   self::Class2? nullable2 = n2;
   self::throws(() → void => let final Never #t241 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:220:33: Error: Operator '+' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
   throws(() => n1?.nonNullable1 + 0);
-                                ^" in (let final self::Class1? #t242 = n1 in #t242 == null ?{self::Class1?} null : #t242{self::Class1}.{self::Class1::nonNullable1}{self::Class1}).{self::Class1::+}(0){(core::int) → self::Class1?});
+                                ^" in (let final self::Class1? #t242 = n1 in #t242.{core::Object::==}(null) ?{self::Class1?} null : #t242{self::Class1}.{self::Class1::nonNullable1}).{self::Class1::+}(0));
   self::throws(() → void => let final Never #t243 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting.dart:221:16: Error: Operator 'unary-' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting.dart'.
   throws(() => -n1?.nonNullable1);
-               ^" in (let final self::Class1? #t244 = n1 in #t244 == null ?{self::Class1?} null : #t244{self::Class1}.{self::Class1::nonNullable1}{self::Class1}).{self::Class1::unary-}(){() → self::Class1?});
-  let final self::Class2? #t245 = n2 in #t245 == null ?{self::Class2?} null : #t245.{self::Class2::nonNullable2} = #t245.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2};
-  nullable2 = let final self::Class2? #t246 = n2 in #t246 == null ?{self::Class2?} null : let final self::Class2 #t247 = #t246.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2} in let final void #t248 = #t246.{self::Class2::nonNullable2} = #t247 in #t247;
-  let final self::Class2? #t249 = n2 in #t249 == null ?{self::Class2?} null : let final self::Class2 #t250 = #t249{self::Class2}.{self::Class2::nonNullable2}{self::Class2} in #t250.{self::Class2::nonNullable2} = #t250.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2};
-  nullable2 = let final self::Class2? #t251 = n2 in #t251 == null ?{self::Class2?} null : let final self::Class2 #t252 = #t251{self::Class2}.{self::Class2::nonNullable2}{self::Class2} in #t252.{self::Class2::nonNullable2} = #t252.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(0){(core::int) → self::Class2};
-  let final self::Class2? #t253 = n2 in #t253 == null ?{self::Class2?} null : #t253.{self::Class2::nonNullable2} = #t253.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2};
-  nullable2 = let final self::Class2? #t254 = n2 in #t254 == null ?{self::Class2?} null : let final self::Class2 #t255 = #t254.{self::Class2::nonNullable2}{self::Class2} in let final void #t256 = #t254.{self::Class2::nonNullable2} = #t255.{self::Class2::+}(1){(core::int) → self::Class2} in #t255;
-  let final self::Class2? #t257 = n2 in #t257 == null ?{self::Class2?} null : let final self::Class2 #t258 = #t257.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t259 = #t257.{self::Class2::nonNullable2} = #t258 in #t258;
-  nullable2 = let final self::Class2? #t260 = n2 in #t260 == null ?{self::Class2?} null : let final self::Class2 #t261 = #t260.{self::Class2::nonNullable2}{self::Class2}.{self::Class2::+}(1){(core::int) → self::Class2} in let final void #t262 = #t260.{self::Class2::nonNullable2} = #t261 in #t261;
+               ^" in (let final self::Class1? #t244 = n1 in #t244.{core::Object::==}(null) ?{self::Class1?} null : #t244{self::Class1}.{self::Class1::nonNullable1}).{self::Class1::unary-}());
+  let final self::Class2? #t245 = n2 in #t245.{core::Object::==}(null) ?{self::Class2?} null : #t245.{self::Class2::nonNullable2} = #t245.{self::Class2::nonNullable2}.{self::Class2::+}(0);
+  nullable2 = let final self::Class2? #t246 = n2 in #t246.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t247 = #t246.{self::Class2::nonNullable2}.{self::Class2::+}(0) in let final void #t248 = #t246.{self::Class2::nonNullable2} = #t247 in #t247;
+  let final self::Class2? #t249 = n2 in #t249.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t250 = #t249{self::Class2}.{self::Class2::nonNullable2} in #t250.{self::Class2::nonNullable2} = #t250.{self::Class2::nonNullable2}.{self::Class2::+}(0);
+  nullable2 = let final self::Class2? #t251 = n2 in #t251.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t252 = #t251{self::Class2}.{self::Class2::nonNullable2} in #t252.{self::Class2::nonNullable2} = #t252.{self::Class2::nonNullable2}.{self::Class2::+}(0);
+  let final self::Class2? #t253 = n2 in #t253.{core::Object::==}(null) ?{self::Class2?} null : #t253.{self::Class2::nonNullable2} = #t253.{self::Class2::nonNullable2}.{self::Class2::+}(1);
+  nullable2 = let final self::Class2? #t254 = n2 in #t254.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t255 = #t254.{self::Class2::nonNullable2} in let final void #t256 = #t254.{self::Class2::nonNullable2} = #t255.{self::Class2::+}(1) in #t255;
+  let final self::Class2? #t257 = n2 in #t257.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t258 = #t257.{self::Class2::nonNullable2}.{self::Class2::+}(1) in let final void #t259 = #t257.{self::Class2::nonNullable2} = #t258 in #t258;
+  nullable2 = let final self::Class2? #t260 = n2 in #t260.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t261 = #t260.{self::Class2::nonNullable2}.{self::Class2::+}(1) in let final void #t262 = #t260.{self::Class2::nonNullable2} = #t261 in #t261;
 }
 static method ifNull(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t263 = n1 in #t263 == null ?{self::Class1?} null : #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null;
-  n1 = let final self::Class1? #t264 = n1 in #t264 == null ?{self::Class1?} null : let final self::Class1? #t265 = #t264.{self::Class1::nullable1}{self::Class1?} in #t265 == null ?{self::Class1} #t264.{self::Class1::nullable1} = n1{self::Class1} : #t265{self::Class1};
-  let final self::Class1? #t266 = n1 in #t266 == null ?{self::Class1?} null : let final self::Class1 #t267 = #t266{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t267.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t267.{self::Class1::nullable1} = n1{self::Class1} : null;
-  n1 = let final self::Class1? #t268 = n1 in #t268 == null ?{self::Class1?} null : let final self::Class1 #t269 = #t268{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t270 = #t269.{self::Class1::nullable1}{self::Class1?} in #t270 == null ?{self::Class1} #t269.{self::Class1::nullable1} = n1{self::Class1} : #t270{self::Class1};
-  let final self::Class1? #t271 = n1 in #t271 == null ?{self::Class1?} null : let final self::Class1 #t272 = #t271{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t273 = n1{self::Class1} in #t272.{self::Class1::[]}(#t273){(self::Class1?) → self::Class1?} == null ?{self::Class1} #t272.{self::Class1::[]=}(#t273, n1{self::Class1}){(self::Class1?, self::Class1?) → void} : null;
-  n1 = let final self::Class1? #t274 = n1 in #t274 == null ?{self::Class1?} null : let final self::Class1 #t275 = #t274{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t276 = n1{self::Class1} in let final self::Class1? #t277 = #t275.{self::Class1::[]}(#t276){(self::Class1?) → self::Class1?} in #t277 == null ?{self::Class1} let final self::Class1 #t278 = n1{self::Class1} in let final void #t279 = #t275.{self::Class1::[]=}(#t276, #t278){(self::Class1?, self::Class1?) → void} in #t278 : #t277{self::Class1};
+  let final self::Class1? #t263 = n1 in #t263.{core::Object::==}(null) ?{self::Class1?} null : #t263.{self::Class1::nullable1}.{core::Object::==}(null) ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null;
+  n1 = let final self::Class1? #t264 = n1 in #t264.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t265 = #t264.{self::Class1::nullable1} in #t265.{core::Object::==}(null) ?{self::Class1} #t264.{self::Class1::nullable1} = n1{self::Class1} : #t265{self::Class1};
+  let final self::Class1? #t266 = n1 in #t266.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t267 = #t266{self::Class1}.{self::Class1::nonNullable1} in #t267.{self::Class1::nullable1}.{core::Object::==}(null) ?{self::Class1} #t267.{self::Class1::nullable1} = n1{self::Class1} : null;
+  n1 = let final self::Class1? #t268 = n1 in #t268.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t269 = #t268{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1? #t270 = #t269.{self::Class1::nullable1} in #t270.{core::Object::==}(null) ?{self::Class1} #t269.{self::Class1::nullable1} = n1{self::Class1} : #t270{self::Class1};
+  let final self::Class1? #t271 = n1 in #t271.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t272 = #t271{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1 #t273 = n1{self::Class1} in #t272.{self::Class1::[]}(#t273).{core::Object::==}(null) ?{self::Class1} #t272.{self::Class1::[]=}(#t273, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t274 = n1 in #t274.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t275 = #t274{self::Class1}.{self::Class1::nonNullable1} in let final self::Class1 #t276 = n1{self::Class1} in let final self::Class1? #t277 = #t275.{self::Class1::[]}(#t276) in #t277.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t278 = n1{self::Class1} in let final void #t279 = #t275.{self::Class1::[]=}(#t276, #t278) in #t278 : #t277{self::Class1};
 }
 static method throws(() → void f) → void {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.strong.expect
index 740e044..a139a5e 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.strong.expect
@@ -19,17 +19,17 @@
   return () → self::Class => self::Extension|extensionMethod(#this);
 static method main() → dynamic {
   self::Class? c;
-  let final self::Class? #t1 = c in #t1 == null ?{self::Class?} null : block {
-    #t1{self::Class}.{self::Class::method}(){() → self::Class};
+  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{self::Class?} null : block {
+    #t1{self::Class}.{self::Class::method}();
   } =>#t1;
-  let final self::Class? #t2 = c in #t2 == null ?{self::Class?} null : block {
-    #t2{self::Class}.{self::Class::method}(){() → self::Class};
-    #t2{self::Class}.{self::Class::method}(){() → self::Class};
+  let final self::Class? #t2 = c in #t2.{core::Object::==}(null) ?{self::Class?} null : block {
+    #t2{self::Class}.{self::Class::method}();
+    #t2{self::Class}.{self::Class::method}();
   } =>#t2;
-  let final self::Class? #t3 = c in #t3 == null ?{self::Class?} null : block {
+  let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{self::Class?} null : block {
     self::Extension|extensionMethod(#t3{self::Class});
   } =>#t3;
-  let final self::Class? #t4 = c in #t4 == null ?{self::Class?} null : block {
+  let final self::Class? #t4 = c in #t4.{core::Object::==}(null) ?{self::Class?} null : block {
     self::Extension|extensionMethod(#t4{self::Class});
     self::Extension|extensionMethod(#t4{self::Class});
   } =>#t4;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.strong.transformed.expect
index 740e044..a139a5e 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.strong.transformed.expect
@@ -19,17 +19,17 @@
   return () → self::Class => self::Extension|extensionMethod(#this);
 static method main() → dynamic {
   self::Class? c;
-  let final self::Class? #t1 = c in #t1 == null ?{self::Class?} null : block {
-    #t1{self::Class}.{self::Class::method}(){() → self::Class};
+  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{self::Class?} null : block {
+    #t1{self::Class}.{self::Class::method}();
   } =>#t1;
-  let final self::Class? #t2 = c in #t2 == null ?{self::Class?} null : block {
-    #t2{self::Class}.{self::Class::method}(){() → self::Class};
-    #t2{self::Class}.{self::Class::method}(){() → self::Class};
+  let final self::Class? #t2 = c in #t2.{core::Object::==}(null) ?{self::Class?} null : block {
+    #t2{self::Class}.{self::Class::method}();
+    #t2{self::Class}.{self::Class::method}();
   } =>#t2;
-  let final self::Class? #t3 = c in #t3 == null ?{self::Class?} null : block {
+  let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{self::Class?} null : block {
     self::Extension|extensionMethod(#t3{self::Class});
   } =>#t3;
-  let final self::Class? #t4 = c in #t4 == null ?{self::Class?} null : block {
+  let final self::Class? #t4 = c in #t4.{core::Object::==}(null) ?{self::Class?} null : block {
     self::Extension|extensionMethod(#t4{self::Class});
     self::Extension|extensionMethod(#t4{self::Class});
   } =>#t4;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.weak.expect
index 740e044..a139a5e 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.weak.expect
@@ -19,17 +19,17 @@
   return () → self::Class => self::Extension|extensionMethod(#this);
 static method main() → dynamic {
   self::Class? c;
-  let final self::Class? #t1 = c in #t1 == null ?{self::Class?} null : block {
-    #t1{self::Class}.{self::Class::method}(){() → self::Class};
+  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{self::Class?} null : block {
+    #t1{self::Class}.{self::Class::method}();
   } =>#t1;
-  let final self::Class? #t2 = c in #t2 == null ?{self::Class?} null : block {
-    #t2{self::Class}.{self::Class::method}(){() → self::Class};
-    #t2{self::Class}.{self::Class::method}(){() → self::Class};
+  let final self::Class? #t2 = c in #t2.{core::Object::==}(null) ?{self::Class?} null : block {
+    #t2{self::Class}.{self::Class::method}();
+    #t2{self::Class}.{self::Class::method}();
   } =>#t2;
-  let final self::Class? #t3 = c in #t3 == null ?{self::Class?} null : block {
+  let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{self::Class?} null : block {
     self::Extension|extensionMethod(#t3{self::Class});
   } =>#t3;
-  let final self::Class? #t4 = c in #t4 == null ?{self::Class?} null : block {
+  let final self::Class? #t4 = c in #t4.{core::Object::==}(null) ?{self::Class?} null : block {
     self::Extension|extensionMethod(#t4{self::Class});
     self::Extension|extensionMethod(#t4{self::Class});
   } =>#t4;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.weak.transformed.expect
index 740e044..a139a5e 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_cascade.dart.weak.transformed.expect
@@ -19,17 +19,17 @@
   return () → self::Class => self::Extension|extensionMethod(#this);
 static method main() → dynamic {
   self::Class? c;
-  let final self::Class? #t1 = c in #t1 == null ?{self::Class?} null : block {
-    #t1{self::Class}.{self::Class::method}(){() → self::Class};
+  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{self::Class?} null : block {
+    #t1{self::Class}.{self::Class::method}();
   } =>#t1;
-  let final self::Class? #t2 = c in #t2 == null ?{self::Class?} null : block {
-    #t2{self::Class}.{self::Class::method}(){() → self::Class};
-    #t2{self::Class}.{self::Class::method}(){() → self::Class};
+  let final self::Class? #t2 = c in #t2.{core::Object::==}(null) ?{self::Class?} null : block {
+    #t2{self::Class}.{self::Class::method}();
+    #t2{self::Class}.{self::Class::method}();
   } =>#t2;
-  let final self::Class? #t3 = c in #t3 == null ?{self::Class?} null : block {
+  let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{self::Class?} null : block {
     self::Extension|extensionMethod(#t3{self::Class});
   } =>#t3;
-  let final self::Class? #t4 = c in #t4 == null ?{self::Class?} null : block {
+  let final self::Class? #t4 = c in #t4.{core::Object::==}(null) ?{self::Class?} null : block {
     self::Extension|extensionMethod(#t4{self::Class});
     self::Extension|extensionMethod(#t4{self::Class});
   } =>#t4;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.expect
index 25e39a1..5146cf7 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.expect
@@ -80,7 +80,7 @@
   operator [] = self::Extension3|[];
 }
 static method Extension1|get#nullable1(lowered final self::Class1 #this) → self::Class1?
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|set#nullable1(lowered final self::Class1 #this, self::Class1? value) → void {
   #this.{self::Class1::property} = value;
 }
@@ -98,28 +98,28 @@
 static method Extension1|unary-(lowered final self::Class1 #this) → self::Class1?
   return self::Extension1|get#nullable1(#this);
 static method Extension1|get#nonNullable1(lowered final self::Class1 #this) → self::Class1
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|get#nonNullable2(lowered final self::Class1 #this) → self::Class2
-  return #this.{self::Class1::property2}{self::Class2};
+  return #this.{self::Class1::property2};
 static method Extension2|nonNullable2Method(lowered final self::Class2 #this) → self::Class2
   return self::Extension2|get#nonNullable2(#this);
 static method Extension2|get#nonNullable2Method(lowered final self::Class2 #this) → () → self::Class2
   return () → self::Class2 => self::Extension2|nonNullable2Method(#this);
 static method Extension2|[](lowered final self::Class2 #this, self::Class2? key) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|[]=(lowered final self::Class2 #this, self::Class2? key, self::Class2? value) → void
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|+(lowered final self::Class2 #this, core::int value) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|unary-(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|get#nonNullable2(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|set#nonNullable2(lowered final self::Class2 #this, self::Class2 value) → void {
   #this.{self::Class2::property} = value;
 }
 static method Extension3|[](lowered final self::Class3 #this, self::Class3? key) → self::Class2?
-  return #this.{self::Class3::property}{self::Class2?};
+  return #this.{self::Class3::property};
 static method main() → dynamic {
   self::propertyAccess(null);
   self::indexAccess(null, null, null);
@@ -128,168 +128,168 @@
 }
 static method propertyAccess(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t1 = n1 in #t1 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
-  let final self::Class1? #t2 = n1 in #t2 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
-  nullable1 = let final self::Class1? #t3 = n1 in #t3 == null ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
-  let final self::Class1? #t6 = n1 in #t6 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
-  let final self::Class1? #t7 = n1 in #t7 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
-  let final self::Class1? #t8 = n1 in #t8 == null ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
-  let final self::Class1? #t10 = n1 in #t10 == null ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
-  let final self::Class1? #t12 = n1 in #t12 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t13 = n1 in #t13 == null ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t15 = n1 in #t15 == null ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
+  let final self::Class1? #t1 = n1 in #t1.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
+  let final self::Class1? #t2 = n1 in #t2.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
+  nullable1 = let final self::Class1? #t3 = n1 in #t3.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
+  let final self::Class1? #t6 = n1 in #t6.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
+  let final self::Class1? #t7 = n1 in #t7.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
+  let final self::Class1? #t8 = n1 in #t8.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
+  let final self::Class1? #t10 = n1 in #t10.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
+  let final self::Class1? #t12 = n1 in #t12.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t13 = n1 in #t13.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t15 = n1 in #t15.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
   self::throws(() → void => let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:93:59: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (Extension1(n1)?.nullable1 = new Class1()).nullable1);
-                                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20 == null ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
+                                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
   self::throws(() → void => let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:94:55: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (Extension1(n1)?.nonNullable1Method()).nullable1);
-                                                      ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
-  nullable1 = let final self::Class1? #t25 = n1 in #t25 == null ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
-  nullable1 = let final self::Class1? #t28 = n1 in #t28 == null ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29 == null ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
-  nullable1 = let final self::Class1? #t32 = n1 in #t32 == null ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33 == null ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
-  let final self::Class1? #t36 = n1 in #t36 == null ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
-  let final self::Class1? #t38 = n1 in #t38 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t39 = n1 in #t39 == null ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
-  let final self::Class1? #t42 = n1 in #t42 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
-  nullable1 = let final self::Class1? #t45 = n1 in #t45 == null ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
-  let final self::Class1? #t50 = n1 in #t50 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t51 = n1 in #t51 == null ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
-  let final self::Class1? #t54 = n1 in #t54 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
-  let final self::Class1? #t55 = n1 in #t55 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t56 = n1 in #t56 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
-  let final self::Class1? #t57 = n1 in #t57 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
-  let final self::Class1? #t58 = n1 in #t58 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t59 = n1 in #t59 == null ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
-  let final self::Class1? #t62 = n1 in #t62 == null ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
-  let final self::Class1? #t64 = n1 in #t64 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t65 = n1 in #t65 == null ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
-  let final self::Class1? #t68 = n1 in #t68 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
-  nullable1 = let final self::Class1? #t71 = n1 in #t71 == null ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
-  let final self::Class1? #t76 = n1 in #t76 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t77 = n1 in #t77 == null ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
-  let final self::Class1? #t80 = n1 in #t80 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
-  let final self::Class1? #t81 = n1 in #t81 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t82 = n1 in #t82 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
-  let final self::Class1? #t83 = n1 in #t83 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t84 = n1 in #t84 == null ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
-  let final self::Class1? #t87 = n1 in #t87 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
-  nullable1 = let final self::Class1? #t90 = n1 in #t90 == null ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
-  let final self::Class1? #t95 = n1 in #t95 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t96 = n1 in #t96 == null ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
-  let final self::Class1? #t99 = n1 in #t99 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
-  nullable1 = let final self::Class1? #t102 = n1 in #t102 == null ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
-  let final self::Class1? #t107 = n1 in #t107 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
-  nullable1 = let final self::Class1? #t112 = n1 in #t112 == null ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
-  let final self::Class1? #t119 = n1 in #t119 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
-  nullable1 = let final self::Class1? #t122 = n1 in #t122 == null ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
-  let final self::Class1? #t127 = n1 in #t127 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t128 = n1 in #t128 == null ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
-  let final self::Class1? #t131 = n1 in #t131 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
-  nullable1 = let final self::Class1? #t134 = n1 in #t134 == null ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
-  let final self::Class1? #t139 = n1 in #t139 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t140 = n1 in #t140 == null ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
-  let final self::Class1? #t143 = n1 in #t143 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
-  let final self::Class1? #t144 = n1 in #t144 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t145 = n1 in #t145 == null ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
-  let final self::Class1? #t148 = n1 in #t148 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
-  let final self::Class1? #t149 = n1 in #t149 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t150 = n1 in #t150 == null ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
-  let final self::Class1? #t153 = n1 in #t153 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
-  nullable1 = let final self::Class1? #t156 = n1 in #t156 == null ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
-  let final self::Class1? #t161 = n1 in #t161 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t162 = n1 in #t162 == null ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
-  let final self::Class1? #t165 = n1 in #t165 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
-  let final self::Class1? #t166 = n1 in #t166 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t167 = n1 in #t167 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
-  let final self::Class1? #t168 = n1 in #t168 == null ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
+                                                      ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
+  nullable1 = let final self::Class1? #t25 = n1 in #t25.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
+  nullable1 = let final self::Class1? #t28 = n1 in #t28.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
+  nullable1 = let final self::Class1? #t32 = n1 in #t32.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
+  let final self::Class1? #t36 = n1 in #t36.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
+  let final self::Class1? #t38 = n1 in #t38.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t39 = n1 in #t39.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
+  let final self::Class1? #t42 = n1 in #t42.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
+  nullable1 = let final self::Class1? #t45 = n1 in #t45.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
+  let final self::Class1? #t50 = n1 in #t50.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t51 = n1 in #t51.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
+  let final self::Class1? #t54 = n1 in #t54.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
+  let final self::Class1? #t55 = n1 in #t55.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t56 = n1 in #t56.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
+  let final self::Class1? #t57 = n1 in #t57.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
+  let final self::Class1? #t58 = n1 in #t58.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t59 = n1 in #t59.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
+  let final self::Class1? #t62 = n1 in #t62.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
+  let final self::Class1? #t64 = n1 in #t64.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t65 = n1 in #t65.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
+  let final self::Class1? #t68 = n1 in #t68.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
+  nullable1 = let final self::Class1? #t71 = n1 in #t71.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
+  let final self::Class1? #t76 = n1 in #t76.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t77 = n1 in #t77.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
+  let final self::Class1? #t80 = n1 in #t80.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
+  let final self::Class1? #t81 = n1 in #t81.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t82 = n1 in #t82.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
+  let final self::Class1? #t83 = n1 in #t83.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t84 = n1 in #t84.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
+  let final self::Class1? #t87 = n1 in #t87.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
+  nullable1 = let final self::Class1? #t90 = n1 in #t90.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
+  let final self::Class1? #t95 = n1 in #t95.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t96 = n1 in #t96.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
+  let final self::Class1? #t99 = n1 in #t99.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
+  nullable1 = let final self::Class1? #t102 = n1 in #t102.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
+  let final self::Class1? #t107 = n1 in #t107.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
+  nullable1 = let final self::Class1? #t112 = n1 in #t112.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
+  let final self::Class1? #t119 = n1 in #t119.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
+  nullable1 = let final self::Class1? #t122 = n1 in #t122.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
+  let final self::Class1? #t127 = n1 in #t127.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t128 = n1 in #t128.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
+  let final self::Class1? #t131 = n1 in #t131.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
+  nullable1 = let final self::Class1? #t134 = n1 in #t134.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
+  let final self::Class1? #t139 = n1 in #t139.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t140 = n1 in #t140.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
+  let final self::Class1? #t143 = n1 in #t143.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
+  let final self::Class1? #t144 = n1 in #t144.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t145 = n1 in #t145.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
+  let final self::Class1? #t148 = n1 in #t148.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
+  let final self::Class1? #t149 = n1 in #t149.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t150 = n1 in #t150.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
+  let final self::Class1? #t153 = n1 in #t153.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
+  nullable1 = let final self::Class1? #t156 = n1 in #t156.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
+  let final self::Class1? #t161 = n1 in #t161.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t162 = n1 in #t162.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
+  let final self::Class1? #t165 = n1 in #t165.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
+  let final self::Class1? #t166 = n1 in #t166.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t167 = n1 in #t167.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
+  let final self::Class1? #t168 = n1 in #t168.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
 }
 static method indexAccess(self::Class1? n1, self::Class2? n2, self::Class3? n3) → void {
   self::Class1? nullable1 = n1;
   self::Class2? nullable2 = n2;
   self::Class3? nullable3 = n3;
-  let final self::Class1? #t170 = n1 in #t170 == null ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
-  let final self::Class1? #t171 = n1 in #t171 == null ?{void} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
-  let final self::Class1? #t172 = n1 in #t172 == null ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
-  let final self::Class1? #t174 = n1 in #t174 == null ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
-  let final self::Class1? #t175 = n1 in #t175 == null ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t176 = n1 in #t176 == null ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
-  let final self::Class1? #t181 = n1 in #t181 == null ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
-  let final self::Class1? #t183 = n1 in #t183 == null ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
-  nullable2 = let final self::Class1? #t186 = n1 in #t186 == null ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
-  let final self::Class1? #t191 = n1 in #t191 == null ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192) == null ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
-  nullable1 = let final self::Class1? #t193 = n1 in #t193 == null ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195 == null ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
-  let final self::Class2? #t198 = n2 in #t198 == null ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
-  nullable2 = let final self::Class2? #t200 = n2 in #t200 == null ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
-  let final self::Class2? #t204 = n2 in #t204 == null ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
-  nullable2 = let final self::Class2? #t206 = n2 in #t206 == null ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
-  let final self::Class2? #t210 = n2 in #t210 == null ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
-  nullable2 = let final self::Class2? #t212 = n2 in #t212 == null ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
-  let final self::Class2? #t216 = n2 in #t216 == null ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
-  nullable2 = let final self::Class2? #t220 = n2 in #t220 == null ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
-  let final self::Class1? #t224 = n1 in #t224 == null ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
-  nullable2 = let final self::Class1? #t227 = n1 in #t227 == null ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
-  let final self::Class1? #t232 = n1 in #t232 == null ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
-  nullable2 = let final self::Class1? #t237 = n1 in #t237 == null ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
-  let final self::Class1? #t242 = n1 in #t242 == null ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
-  let final self::Class1? #t243 = n1 in #t243 == null ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
-  nullable2 = let final self::Class1? #t244 = n1 in #t244 == null ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
-  let final self::Class1? #t249 = n1 in #t249 == null ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250 == null ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
-  let final self::Class1? #t251 = n1 in #t251 == null ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
-  nullable2 = let final self::Class1? #t254 = n1 in #t254 == null ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
-  let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
-  nullable2 = let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
-  let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
-  nullable2 = let final self::Class1? #t272 = n1 in #t272 == null ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
-  let final self::Class1? #t277 = n1 in #t277 == null ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278 == null ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
-  let final self::Class1? #t279 = n1 in #t279 == null ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280 == null ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t281 = n1 in #t281 == null ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282 == null ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
-  let final self::Class1? #t286 = n1 in #t286 == null ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287 == null ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
-  nullable1 = let final self::Class1? #t289 = n1 in #t289 == null ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290 == null ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
-  let final self::Class1? #t292 = n1 in #t292 == null ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293 == null ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294) == null ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
-  nullable1 = let final self::Class1? #t295 = n1 in #t295 == null ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296 == null ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298 == null ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
-  let final self::Class3? #t301 = n3 in #t301 == null ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302 == null ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
-  nullable2 = let final self::Class3? #t304 = n3 in #t304 == null ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305 == null ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
-  let final self::Class3? #t309 = n3 in #t309 == null ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310 == null ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
-  nullable2 = let final self::Class3? #t312 = n3 in #t312 == null ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313 == null ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
-  let final self::Class3? #t317 = n3 in #t317 == null ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318 == null ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
-  nullable2 = let final self::Class3? #t322 = n3 in #t322 == null ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323 == null ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
+  let final self::Class1? #t170 = n1 in #t170.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
+  let final self::Class1? #t171 = n1 in #t171.{core::Object::==}(null) ?{void} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
+  let final self::Class1? #t172 = n1 in #t172.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
+  let final self::Class1? #t174 = n1 in #t174.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
+  let final self::Class1? #t175 = n1 in #t175.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t176 = n1 in #t176.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
+  let final self::Class1? #t181 = n1 in #t181.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
+  let final self::Class1? #t183 = n1 in #t183.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
+  nullable2 = let final self::Class1? #t186 = n1 in #t186.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
+  let final self::Class1? #t191 = n1 in #t191.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
+  nullable1 = let final self::Class1? #t193 = n1 in #t193.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
+  let final self::Class2? #t198 = n2 in #t198.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
+  nullable2 = let final self::Class2? #t200 = n2 in #t200.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
+  let final self::Class2? #t204 = n2 in #t204.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
+  nullable2 = let final self::Class2? #t206 = n2 in #t206.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
+  let final self::Class2? #t210 = n2 in #t210.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
+  nullable2 = let final self::Class2? #t212 = n2 in #t212.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
+  let final self::Class2? #t216 = n2 in #t216.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
+  nullable2 = let final self::Class2? #t220 = n2 in #t220.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
+  let final self::Class1? #t224 = n1 in #t224.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
+  nullable2 = let final self::Class1? #t227 = n1 in #t227.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
+  let final self::Class1? #t232 = n1 in #t232.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
+  nullable2 = let final self::Class1? #t237 = n1 in #t237.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
+  let final self::Class1? #t242 = n1 in #t242.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
+  let final self::Class1? #t243 = n1 in #t243.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
+  nullable2 = let final self::Class1? #t244 = n1 in #t244.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
+  let final self::Class1? #t249 = n1 in #t249.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
+  let final self::Class1? #t251 = n1 in #t251.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
+  nullable2 = let final self::Class1? #t254 = n1 in #t254.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
+  let final self::Class1? #t259 = n1 in #t259.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
+  nullable2 = let final self::Class1? #t262 = n1 in #t262.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
+  let final self::Class1? #t267 = n1 in #t267.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
+  nullable2 = let final self::Class1? #t272 = n1 in #t272.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
+  let final self::Class1? #t277 = n1 in #t277.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
+  let final self::Class1? #t279 = n1 in #t279.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t281 = n1 in #t281.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
+  let final self::Class1? #t286 = n1 in #t286.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
+  nullable1 = let final self::Class1? #t289 = n1 in #t289.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
+  let final self::Class1? #t292 = n1 in #t292.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
+  nullable1 = let final self::Class1? #t295 = n1 in #t295.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
+  let final self::Class3? #t301 = n3 in #t301.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
+  nullable2 = let final self::Class3? #t304 = n3 in #t304.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
+  let final self::Class3? #t309 = n3 in #t309.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
+  nullable2 = let final self::Class3? #t312 = n3 in #t312.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
+  let final self::Class3? #t317 = n3 in #t317.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
+  nullable2 = let final self::Class3? #t322 = n3 in #t322.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
 }
 static method operatorAccess(self::Class1? n1, self::Class2? n2) → void {
   self::Class2? nullable2 = n2;
   self::throws(() → void => let final Never #t327 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:244:45: Error: Operator '+' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
   throws(() => Extension1(n1)?.nonNullable1 + 0);
-                                            ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
+                                            ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
   self::throws(() → void => let final Never #t329 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:245:16: Error: Operator 'unary-' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
   throws(() => -Extension1(n1)?.nonNullable1);
-               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
-  let final self::Class2? #t331 = n2 in #t331 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t331{self::Class2}), 0));
-  nullable2 = let final self::Class2? #t332 = n2 in #t332 == null ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332{self::Class2}), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332{self::Class2}, #t333) in #t333;
-  let final self::Class2? #t335 = n2 in #t335 == null ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
-  nullable2 = let final self::Class2? #t337 = n2 in #t337 == null ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
-  let final self::Class2? #t341 = n2 in #t341 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t341{self::Class2}), 1));
-  nullable2 = let final self::Class2? #t342 = n2 in #t342 == null ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342{self::Class2}) in let final self::Class2 #t344 = let final self::Class2 #t345 = self::Extension2|+(#t343, 1) in let final void #t346 = self::Extension2|set#nonNullable2(#t342{self::Class2}, #t345) in #t345 in #t343;
-  let final self::Class2? #t347 = n2 in #t347 == null ?{self::Class2?} null : let final self::Class2 #t348 = self::Extension2|+(self::Extension2|get#nonNullable2(#t347{self::Class2}), 1) in let final void #t349 = self::Extension2|set#nonNullable2(#t347{self::Class2}, #t348) in #t348;
-  nullable2 = let final self::Class2? #t350 = n2 in #t350 == null ?{self::Class2?} null : let final self::Class2 #t351 = self::Extension2|+(self::Extension2|get#nonNullable2(#t350{self::Class2}), 1) in let final void #t352 = self::Extension2|set#nonNullable2(#t350{self::Class2}, #t351) in #t351;
+               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
+  let final self::Class2? #t331 = n2 in #t331.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t331{self::Class2}), 0));
+  nullable2 = let final self::Class2? #t332 = n2 in #t332.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332{self::Class2}), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332{self::Class2}, #t333) in #t333;
+  let final self::Class2? #t335 = n2 in #t335.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
+  nullable2 = let final self::Class2? #t337 = n2 in #t337.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
+  let final self::Class2? #t341 = n2 in #t341.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t341{self::Class2}), 1));
+  nullable2 = let final self::Class2? #t342 = n2 in #t342.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342{self::Class2}) in let final self::Class2 #t344 = let final self::Class2 #t345 = self::Extension2|+(#t343, 1) in let final void #t346 = self::Extension2|set#nonNullable2(#t342{self::Class2}, #t345) in #t345 in #t343;
+  let final self::Class2? #t347 = n2 in #t347.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t348 = self::Extension2|+(self::Extension2|get#nonNullable2(#t347{self::Class2}), 1) in let final void #t349 = self::Extension2|set#nonNullable2(#t347{self::Class2}, #t348) in #t348;
+  nullable2 = let final self::Class2? #t350 = n2 in #t350.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t351 = self::Extension2|+(self::Extension2|get#nonNullable2(#t350{self::Class2}), 1) in let final void #t352 = self::Extension2|set#nonNullable2(#t350{self::Class2}, #t351) in #t351;
 }
 static method ifNull(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t353 = n1 in #t353 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t353) == null ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1? #t355 = self::Extension1|get#nullable1(#t354) in #t355 == null ?{self::Class1} let final self::Class1 #t356 = n1{self::Class1} in let final void #t357 = self::Extension1|set#nullable1(#t354, #t356) in #t356 : #t355{self::Class1};
-  let final self::Class1? #t358 = n1 in #t358 == null ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in self::Extension1|get#nullable1(#t359) == null ?{self::Class1} self::Extension1|set#nullable1(#t359, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t360 = n1 in #t360 == null ?{self::Class1?} null : let final self::Class1 #t361 = self::Extension1|get#nonNullable1(#t360{self::Class1}) in let final self::Class1? #t362 = self::Extension1|get#nullable1(#t361) in #t362 == null ?{self::Class1} let final self::Class1 #t363 = n1{self::Class1} in let final void #t364 = self::Extension1|set#nullable1(#t361, #t363) in #t363 : #t362{self::Class1};
-  let final self::Class1? #t365 = n1 in #t365 == null ?{self::Class1?} null : let final self::Class1 #t366 = self::Extension1|get#nonNullable1(#t365{self::Class1}) in let final self::Class1 #t367 = n1{self::Class1} in self::Extension1|[](#t366, #t367) == null ?{self::Class1} self::Extension1|[]=(#t366, #t367, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t368 = n1 in #t368 == null ?{self::Class1?} null : let final self::Class1 #t369 = self::Extension1|get#nonNullable1(#t368{self::Class1}) in let final self::Class1 #t370 = n1{self::Class1} in let final self::Class1? #t371 = self::Extension1|[](#t369, #t370) in #t371 == null ?{self::Class1} let final self::Class1 #t372 = n1{self::Class1} in let final void #t373 = self::Extension1|[]=(#t369, #t370, #t372) in #t372 : #t371{self::Class1};
+  let final self::Class1? #t353 = n1 in #t353.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t353).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t354 = n1 in #t354.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t355 = self::Extension1|get#nullable1(#t354) in #t355.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t356 = n1{self::Class1} in let final void #t357 = self::Extension1|set#nullable1(#t354, #t356) in #t356 : #t355{self::Class1};
+  let final self::Class1? #t358 = n1 in #t358.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in self::Extension1|get#nullable1(#t359).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t359, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t360 = n1 in #t360.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t361 = self::Extension1|get#nonNullable1(#t360{self::Class1}) in let final self::Class1? #t362 = self::Extension1|get#nullable1(#t361) in #t362.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t363 = n1{self::Class1} in let final void #t364 = self::Extension1|set#nullable1(#t361, #t363) in #t363 : #t362{self::Class1};
+  let final self::Class1? #t365 = n1 in #t365.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t366 = self::Extension1|get#nonNullable1(#t365{self::Class1}) in let final self::Class1 #t367 = n1{self::Class1} in self::Extension1|[](#t366, #t367).{core::Object::==}(null) ?{self::Class1} self::Extension1|[]=(#t366, #t367, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t368 = n1 in #t368.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t369 = self::Extension1|get#nonNullable1(#t368{self::Class1}) in let final self::Class1 #t370 = n1{self::Class1} in let final self::Class1? #t371 = self::Extension1|[](#t369, #t370) in #t371.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t372 = n1{self::Class1} in let final void #t373 = self::Extension1|[]=(#t369, #t370, #t372) in #t372 : #t371{self::Class1};
 }
 static method throws(() → void f) → void {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.transformed.expect
index 25e39a1..5146cf7 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.transformed.expect
@@ -80,7 +80,7 @@
   operator [] = self::Extension3|[];
 }
 static method Extension1|get#nullable1(lowered final self::Class1 #this) → self::Class1?
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|set#nullable1(lowered final self::Class1 #this, self::Class1? value) → void {
   #this.{self::Class1::property} = value;
 }
@@ -98,28 +98,28 @@
 static method Extension1|unary-(lowered final self::Class1 #this) → self::Class1?
   return self::Extension1|get#nullable1(#this);
 static method Extension1|get#nonNullable1(lowered final self::Class1 #this) → self::Class1
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|get#nonNullable2(lowered final self::Class1 #this) → self::Class2
-  return #this.{self::Class1::property2}{self::Class2};
+  return #this.{self::Class1::property2};
 static method Extension2|nonNullable2Method(lowered final self::Class2 #this) → self::Class2
   return self::Extension2|get#nonNullable2(#this);
 static method Extension2|get#nonNullable2Method(lowered final self::Class2 #this) → () → self::Class2
   return () → self::Class2 => self::Extension2|nonNullable2Method(#this);
 static method Extension2|[](lowered final self::Class2 #this, self::Class2? key) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|[]=(lowered final self::Class2 #this, self::Class2? key, self::Class2? value) → void
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|+(lowered final self::Class2 #this, core::int value) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|unary-(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|get#nonNullable2(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|set#nonNullable2(lowered final self::Class2 #this, self::Class2 value) → void {
   #this.{self::Class2::property} = value;
 }
 static method Extension3|[](lowered final self::Class3 #this, self::Class3? key) → self::Class2?
-  return #this.{self::Class3::property}{self::Class2?};
+  return #this.{self::Class3::property};
 static method main() → dynamic {
   self::propertyAccess(null);
   self::indexAccess(null, null, null);
@@ -128,168 +128,168 @@
 }
 static method propertyAccess(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t1 = n1 in #t1 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
-  let final self::Class1? #t2 = n1 in #t2 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
-  nullable1 = let final self::Class1? #t3 = n1 in #t3 == null ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
-  let final self::Class1? #t6 = n1 in #t6 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
-  let final self::Class1? #t7 = n1 in #t7 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
-  let final self::Class1? #t8 = n1 in #t8 == null ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
-  let final self::Class1? #t10 = n1 in #t10 == null ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
-  let final self::Class1? #t12 = n1 in #t12 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t13 = n1 in #t13 == null ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t15 = n1 in #t15 == null ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
+  let final self::Class1? #t1 = n1 in #t1.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
+  let final self::Class1? #t2 = n1 in #t2.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
+  nullable1 = let final self::Class1? #t3 = n1 in #t3.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
+  let final self::Class1? #t6 = n1 in #t6.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
+  let final self::Class1? #t7 = n1 in #t7.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
+  let final self::Class1? #t8 = n1 in #t8.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
+  let final self::Class1? #t10 = n1 in #t10.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
+  let final self::Class1? #t12 = n1 in #t12.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t13 = n1 in #t13.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t15 = n1 in #t15.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
   self::throws(() → void => let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:93:59: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (Extension1(n1)?.nullable1 = new Class1()).nullable1);
-                                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20 == null ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
+                                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
   self::throws(() → void => let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:94:55: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (Extension1(n1)?.nonNullable1Method()).nullable1);
-                                                      ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
-  nullable1 = let final self::Class1? #t25 = n1 in #t25 == null ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
-  nullable1 = let final self::Class1? #t28 = n1 in #t28 == null ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29 == null ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
-  nullable1 = let final self::Class1? #t32 = n1 in #t32 == null ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33 == null ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
-  let final self::Class1? #t36 = n1 in #t36 == null ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
-  let final self::Class1? #t38 = n1 in #t38 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t39 = n1 in #t39 == null ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
-  let final self::Class1? #t42 = n1 in #t42 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
-  nullable1 = let final self::Class1? #t45 = n1 in #t45 == null ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
-  let final self::Class1? #t50 = n1 in #t50 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t51 = n1 in #t51 == null ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
-  let final self::Class1? #t54 = n1 in #t54 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
-  let final self::Class1? #t55 = n1 in #t55 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t56 = n1 in #t56 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
-  let final self::Class1? #t57 = n1 in #t57 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
-  let final self::Class1? #t58 = n1 in #t58 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t59 = n1 in #t59 == null ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
-  let final self::Class1? #t62 = n1 in #t62 == null ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
-  let final self::Class1? #t64 = n1 in #t64 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t65 = n1 in #t65 == null ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
-  let final self::Class1? #t68 = n1 in #t68 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
-  nullable1 = let final self::Class1? #t71 = n1 in #t71 == null ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
-  let final self::Class1? #t76 = n1 in #t76 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t77 = n1 in #t77 == null ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
-  let final self::Class1? #t80 = n1 in #t80 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
-  let final self::Class1? #t81 = n1 in #t81 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t82 = n1 in #t82 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
-  let final self::Class1? #t83 = n1 in #t83 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t84 = n1 in #t84 == null ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
-  let final self::Class1? #t87 = n1 in #t87 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
-  nullable1 = let final self::Class1? #t90 = n1 in #t90 == null ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
-  let final self::Class1? #t95 = n1 in #t95 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t96 = n1 in #t96 == null ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
-  let final self::Class1? #t99 = n1 in #t99 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
-  nullable1 = let final self::Class1? #t102 = n1 in #t102 == null ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
-  let final self::Class1? #t107 = n1 in #t107 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
-  nullable1 = let final self::Class1? #t112 = n1 in #t112 == null ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
-  let final self::Class1? #t119 = n1 in #t119 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
-  nullable1 = let final self::Class1? #t122 = n1 in #t122 == null ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
-  let final self::Class1? #t127 = n1 in #t127 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t128 = n1 in #t128 == null ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
-  let final self::Class1? #t131 = n1 in #t131 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
-  nullable1 = let final self::Class1? #t134 = n1 in #t134 == null ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
-  let final self::Class1? #t139 = n1 in #t139 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t140 = n1 in #t140 == null ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
-  let final self::Class1? #t143 = n1 in #t143 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
-  let final self::Class1? #t144 = n1 in #t144 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t145 = n1 in #t145 == null ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
-  let final self::Class1? #t148 = n1 in #t148 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
-  let final self::Class1? #t149 = n1 in #t149 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t150 = n1 in #t150 == null ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
-  let final self::Class1? #t153 = n1 in #t153 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
-  nullable1 = let final self::Class1? #t156 = n1 in #t156 == null ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
-  let final self::Class1? #t161 = n1 in #t161 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t162 = n1 in #t162 == null ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
-  let final self::Class1? #t165 = n1 in #t165 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
-  let final self::Class1? #t166 = n1 in #t166 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t167 = n1 in #t167 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
-  let final self::Class1? #t168 = n1 in #t168 == null ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
+                                                      ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
+  nullable1 = let final self::Class1? #t25 = n1 in #t25.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
+  nullable1 = let final self::Class1? #t28 = n1 in #t28.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
+  nullable1 = let final self::Class1? #t32 = n1 in #t32.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
+  let final self::Class1? #t36 = n1 in #t36.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
+  let final self::Class1? #t38 = n1 in #t38.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t39 = n1 in #t39.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
+  let final self::Class1? #t42 = n1 in #t42.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
+  nullable1 = let final self::Class1? #t45 = n1 in #t45.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
+  let final self::Class1? #t50 = n1 in #t50.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t51 = n1 in #t51.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
+  let final self::Class1? #t54 = n1 in #t54.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
+  let final self::Class1? #t55 = n1 in #t55.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t56 = n1 in #t56.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
+  let final self::Class1? #t57 = n1 in #t57.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
+  let final self::Class1? #t58 = n1 in #t58.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t59 = n1 in #t59.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
+  let final self::Class1? #t62 = n1 in #t62.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
+  let final self::Class1? #t64 = n1 in #t64.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t65 = n1 in #t65.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
+  let final self::Class1? #t68 = n1 in #t68.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
+  nullable1 = let final self::Class1? #t71 = n1 in #t71.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
+  let final self::Class1? #t76 = n1 in #t76.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t77 = n1 in #t77.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
+  let final self::Class1? #t80 = n1 in #t80.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
+  let final self::Class1? #t81 = n1 in #t81.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t82 = n1 in #t82.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
+  let final self::Class1? #t83 = n1 in #t83.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t84 = n1 in #t84.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
+  let final self::Class1? #t87 = n1 in #t87.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
+  nullable1 = let final self::Class1? #t90 = n1 in #t90.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
+  let final self::Class1? #t95 = n1 in #t95.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t96 = n1 in #t96.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
+  let final self::Class1? #t99 = n1 in #t99.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
+  nullable1 = let final self::Class1? #t102 = n1 in #t102.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
+  let final self::Class1? #t107 = n1 in #t107.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
+  nullable1 = let final self::Class1? #t112 = n1 in #t112.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
+  let final self::Class1? #t119 = n1 in #t119.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
+  nullable1 = let final self::Class1? #t122 = n1 in #t122.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
+  let final self::Class1? #t127 = n1 in #t127.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t128 = n1 in #t128.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
+  let final self::Class1? #t131 = n1 in #t131.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
+  nullable1 = let final self::Class1? #t134 = n1 in #t134.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
+  let final self::Class1? #t139 = n1 in #t139.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t140 = n1 in #t140.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
+  let final self::Class1? #t143 = n1 in #t143.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
+  let final self::Class1? #t144 = n1 in #t144.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t145 = n1 in #t145.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
+  let final self::Class1? #t148 = n1 in #t148.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
+  let final self::Class1? #t149 = n1 in #t149.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t150 = n1 in #t150.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
+  let final self::Class1? #t153 = n1 in #t153.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
+  nullable1 = let final self::Class1? #t156 = n1 in #t156.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
+  let final self::Class1? #t161 = n1 in #t161.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t162 = n1 in #t162.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
+  let final self::Class1? #t165 = n1 in #t165.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
+  let final self::Class1? #t166 = n1 in #t166.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t167 = n1 in #t167.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
+  let final self::Class1? #t168 = n1 in #t168.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
 }
 static method indexAccess(self::Class1? n1, self::Class2? n2, self::Class3? n3) → void {
   self::Class1? nullable1 = n1;
   self::Class2? nullable2 = n2;
   self::Class3? nullable3 = n3;
-  let final self::Class1? #t170 = n1 in #t170 == null ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
-  let final self::Class1? #t171 = n1 in #t171 == null ?{void} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
-  let final self::Class1? #t172 = n1 in #t172 == null ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
-  let final self::Class1? #t174 = n1 in #t174 == null ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
-  let final self::Class1? #t175 = n1 in #t175 == null ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t176 = n1 in #t176 == null ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
-  let final self::Class1? #t181 = n1 in #t181 == null ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
-  let final self::Class1? #t183 = n1 in #t183 == null ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
-  nullable2 = let final self::Class1? #t186 = n1 in #t186 == null ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
-  let final self::Class1? #t191 = n1 in #t191 == null ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192) == null ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
-  nullable1 = let final self::Class1? #t193 = n1 in #t193 == null ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195 == null ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
-  let final self::Class2? #t198 = n2 in #t198 == null ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
-  nullable2 = let final self::Class2? #t200 = n2 in #t200 == null ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
-  let final self::Class2? #t204 = n2 in #t204 == null ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
-  nullable2 = let final self::Class2? #t206 = n2 in #t206 == null ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
-  let final self::Class2? #t210 = n2 in #t210 == null ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
-  nullable2 = let final self::Class2? #t212 = n2 in #t212 == null ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
-  let final self::Class2? #t216 = n2 in #t216 == null ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
-  nullable2 = let final self::Class2? #t220 = n2 in #t220 == null ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
-  let final self::Class1? #t224 = n1 in #t224 == null ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
-  nullable2 = let final self::Class1? #t227 = n1 in #t227 == null ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
-  let final self::Class1? #t232 = n1 in #t232 == null ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
-  nullable2 = let final self::Class1? #t237 = n1 in #t237 == null ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
-  let final self::Class1? #t242 = n1 in #t242 == null ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
-  let final self::Class1? #t243 = n1 in #t243 == null ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
-  nullable2 = let final self::Class1? #t244 = n1 in #t244 == null ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
-  let final self::Class1? #t249 = n1 in #t249 == null ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250 == null ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
-  let final self::Class1? #t251 = n1 in #t251 == null ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
-  nullable2 = let final self::Class1? #t254 = n1 in #t254 == null ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
-  let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
-  nullable2 = let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
-  let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
-  nullable2 = let final self::Class1? #t272 = n1 in #t272 == null ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
-  let final self::Class1? #t277 = n1 in #t277 == null ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278 == null ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
-  let final self::Class1? #t279 = n1 in #t279 == null ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280 == null ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t281 = n1 in #t281 == null ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282 == null ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
-  let final self::Class1? #t286 = n1 in #t286 == null ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287 == null ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
-  nullable1 = let final self::Class1? #t289 = n1 in #t289 == null ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290 == null ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
-  let final self::Class1? #t292 = n1 in #t292 == null ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293 == null ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294) == null ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
-  nullable1 = let final self::Class1? #t295 = n1 in #t295 == null ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296 == null ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298 == null ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
-  let final self::Class3? #t301 = n3 in #t301 == null ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302 == null ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
-  nullable2 = let final self::Class3? #t304 = n3 in #t304 == null ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305 == null ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
-  let final self::Class3? #t309 = n3 in #t309 == null ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310 == null ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
-  nullable2 = let final self::Class3? #t312 = n3 in #t312 == null ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313 == null ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
-  let final self::Class3? #t317 = n3 in #t317 == null ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318 == null ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
-  nullable2 = let final self::Class3? #t322 = n3 in #t322 == null ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323 == null ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
+  let final self::Class1? #t170 = n1 in #t170.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
+  let final self::Class1? #t171 = n1 in #t171.{core::Object::==}(null) ?{void} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
+  let final self::Class1? #t172 = n1 in #t172.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
+  let final self::Class1? #t174 = n1 in #t174.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
+  let final self::Class1? #t175 = n1 in #t175.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t176 = n1 in #t176.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
+  let final self::Class1? #t181 = n1 in #t181.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
+  let final self::Class1? #t183 = n1 in #t183.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
+  nullable2 = let final self::Class1? #t186 = n1 in #t186.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
+  let final self::Class1? #t191 = n1 in #t191.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
+  nullable1 = let final self::Class1? #t193 = n1 in #t193.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
+  let final self::Class2? #t198 = n2 in #t198.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
+  nullable2 = let final self::Class2? #t200 = n2 in #t200.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
+  let final self::Class2? #t204 = n2 in #t204.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
+  nullable2 = let final self::Class2? #t206 = n2 in #t206.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
+  let final self::Class2? #t210 = n2 in #t210.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
+  nullable2 = let final self::Class2? #t212 = n2 in #t212.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
+  let final self::Class2? #t216 = n2 in #t216.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
+  nullable2 = let final self::Class2? #t220 = n2 in #t220.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
+  let final self::Class1? #t224 = n1 in #t224.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
+  nullable2 = let final self::Class1? #t227 = n1 in #t227.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
+  let final self::Class1? #t232 = n1 in #t232.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
+  nullable2 = let final self::Class1? #t237 = n1 in #t237.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
+  let final self::Class1? #t242 = n1 in #t242.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
+  let final self::Class1? #t243 = n1 in #t243.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
+  nullable2 = let final self::Class1? #t244 = n1 in #t244.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
+  let final self::Class1? #t249 = n1 in #t249.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
+  let final self::Class1? #t251 = n1 in #t251.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
+  nullable2 = let final self::Class1? #t254 = n1 in #t254.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
+  let final self::Class1? #t259 = n1 in #t259.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
+  nullable2 = let final self::Class1? #t262 = n1 in #t262.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
+  let final self::Class1? #t267 = n1 in #t267.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
+  nullable2 = let final self::Class1? #t272 = n1 in #t272.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
+  let final self::Class1? #t277 = n1 in #t277.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
+  let final self::Class1? #t279 = n1 in #t279.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t281 = n1 in #t281.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
+  let final self::Class1? #t286 = n1 in #t286.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
+  nullable1 = let final self::Class1? #t289 = n1 in #t289.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
+  let final self::Class1? #t292 = n1 in #t292.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
+  nullable1 = let final self::Class1? #t295 = n1 in #t295.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
+  let final self::Class3? #t301 = n3 in #t301.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
+  nullable2 = let final self::Class3? #t304 = n3 in #t304.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
+  let final self::Class3? #t309 = n3 in #t309.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
+  nullable2 = let final self::Class3? #t312 = n3 in #t312.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
+  let final self::Class3? #t317 = n3 in #t317.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
+  nullable2 = let final self::Class3? #t322 = n3 in #t322.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
 }
 static method operatorAccess(self::Class1? n1, self::Class2? n2) → void {
   self::Class2? nullable2 = n2;
   self::throws(() → void => let final Never #t327 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:244:45: Error: Operator '+' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
   throws(() => Extension1(n1)?.nonNullable1 + 0);
-                                            ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
+                                            ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
   self::throws(() → void => let final Never #t329 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:245:16: Error: Operator 'unary-' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
   throws(() => -Extension1(n1)?.nonNullable1);
-               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
-  let final self::Class2? #t331 = n2 in #t331 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t331{self::Class2}), 0));
-  nullable2 = let final self::Class2? #t332 = n2 in #t332 == null ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332{self::Class2}), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332{self::Class2}, #t333) in #t333;
-  let final self::Class2? #t335 = n2 in #t335 == null ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
-  nullable2 = let final self::Class2? #t337 = n2 in #t337 == null ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
-  let final self::Class2? #t341 = n2 in #t341 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t341{self::Class2}), 1));
-  nullable2 = let final self::Class2? #t342 = n2 in #t342 == null ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342{self::Class2}) in let final self::Class2 #t344 = let final self::Class2 #t345 = self::Extension2|+(#t343, 1) in let final void #t346 = self::Extension2|set#nonNullable2(#t342{self::Class2}, #t345) in #t345 in #t343;
-  let final self::Class2? #t347 = n2 in #t347 == null ?{self::Class2?} null : let final self::Class2 #t348 = self::Extension2|+(self::Extension2|get#nonNullable2(#t347{self::Class2}), 1) in let final void #t349 = self::Extension2|set#nonNullable2(#t347{self::Class2}, #t348) in #t348;
-  nullable2 = let final self::Class2? #t350 = n2 in #t350 == null ?{self::Class2?} null : let final self::Class2 #t351 = self::Extension2|+(self::Extension2|get#nonNullable2(#t350{self::Class2}), 1) in let final void #t352 = self::Extension2|set#nonNullable2(#t350{self::Class2}, #t351) in #t351;
+               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
+  let final self::Class2? #t331 = n2 in #t331.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t331{self::Class2}), 0));
+  nullable2 = let final self::Class2? #t332 = n2 in #t332.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332{self::Class2}), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332{self::Class2}, #t333) in #t333;
+  let final self::Class2? #t335 = n2 in #t335.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
+  nullable2 = let final self::Class2? #t337 = n2 in #t337.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
+  let final self::Class2? #t341 = n2 in #t341.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t341{self::Class2}), 1));
+  nullable2 = let final self::Class2? #t342 = n2 in #t342.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342{self::Class2}) in let final self::Class2 #t344 = let final self::Class2 #t345 = self::Extension2|+(#t343, 1) in let final void #t346 = self::Extension2|set#nonNullable2(#t342{self::Class2}, #t345) in #t345 in #t343;
+  let final self::Class2? #t347 = n2 in #t347.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t348 = self::Extension2|+(self::Extension2|get#nonNullable2(#t347{self::Class2}), 1) in let final void #t349 = self::Extension2|set#nonNullable2(#t347{self::Class2}, #t348) in #t348;
+  nullable2 = let final self::Class2? #t350 = n2 in #t350.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t351 = self::Extension2|+(self::Extension2|get#nonNullable2(#t350{self::Class2}), 1) in let final void #t352 = self::Extension2|set#nonNullable2(#t350{self::Class2}, #t351) in #t351;
 }
 static method ifNull(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t353 = n1 in #t353 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t353) == null ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1? #t355 = self::Extension1|get#nullable1(#t354) in #t355 == null ?{self::Class1} let final self::Class1 #t356 = n1{self::Class1} in let final void #t357 = self::Extension1|set#nullable1(#t354, #t356) in #t356 : #t355{self::Class1};
-  let final self::Class1? #t358 = n1 in #t358 == null ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in self::Extension1|get#nullable1(#t359) == null ?{self::Class1} self::Extension1|set#nullable1(#t359, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t360 = n1 in #t360 == null ?{self::Class1?} null : let final self::Class1 #t361 = self::Extension1|get#nonNullable1(#t360{self::Class1}) in let final self::Class1? #t362 = self::Extension1|get#nullable1(#t361) in #t362 == null ?{self::Class1} let final self::Class1 #t363 = n1{self::Class1} in let final void #t364 = self::Extension1|set#nullable1(#t361, #t363) in #t363 : #t362{self::Class1};
-  let final self::Class1? #t365 = n1 in #t365 == null ?{self::Class1?} null : let final self::Class1 #t366 = self::Extension1|get#nonNullable1(#t365{self::Class1}) in let final self::Class1 #t367 = n1{self::Class1} in self::Extension1|[](#t366, #t367) == null ?{self::Class1} self::Extension1|[]=(#t366, #t367, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t368 = n1 in #t368 == null ?{self::Class1?} null : let final self::Class1 #t369 = self::Extension1|get#nonNullable1(#t368{self::Class1}) in let final self::Class1 #t370 = n1{self::Class1} in let final self::Class1? #t371 = self::Extension1|[](#t369, #t370) in #t371 == null ?{self::Class1} let final self::Class1 #t372 = n1{self::Class1} in let final void #t373 = self::Extension1|[]=(#t369, #t370, #t372) in #t372 : #t371{self::Class1};
+  let final self::Class1? #t353 = n1 in #t353.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t353).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t354 = n1 in #t354.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t355 = self::Extension1|get#nullable1(#t354) in #t355.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t356 = n1{self::Class1} in let final void #t357 = self::Extension1|set#nullable1(#t354, #t356) in #t356 : #t355{self::Class1};
+  let final self::Class1? #t358 = n1 in #t358.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in self::Extension1|get#nullable1(#t359).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t359, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t360 = n1 in #t360.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t361 = self::Extension1|get#nonNullable1(#t360{self::Class1}) in let final self::Class1? #t362 = self::Extension1|get#nullable1(#t361) in #t362.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t363 = n1{self::Class1} in let final void #t364 = self::Extension1|set#nullable1(#t361, #t363) in #t363 : #t362{self::Class1};
+  let final self::Class1? #t365 = n1 in #t365.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t366 = self::Extension1|get#nonNullable1(#t365{self::Class1}) in let final self::Class1 #t367 = n1{self::Class1} in self::Extension1|[](#t366, #t367).{core::Object::==}(null) ?{self::Class1} self::Extension1|[]=(#t366, #t367, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t368 = n1 in #t368.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t369 = self::Extension1|get#nonNullable1(#t368{self::Class1}) in let final self::Class1 #t370 = n1{self::Class1} in let final self::Class1? #t371 = self::Extension1|[](#t369, #t370) in #t371.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t372 = n1{self::Class1} in let final void #t373 = self::Extension1|[]=(#t369, #t370, #t372) in #t372 : #t371{self::Class1};
 }
 static method throws(() → void f) → void {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.expect
index 25e39a1..5146cf7 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.expect
@@ -80,7 +80,7 @@
   operator [] = self::Extension3|[];
 }
 static method Extension1|get#nullable1(lowered final self::Class1 #this) → self::Class1?
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|set#nullable1(lowered final self::Class1 #this, self::Class1? value) → void {
   #this.{self::Class1::property} = value;
 }
@@ -98,28 +98,28 @@
 static method Extension1|unary-(lowered final self::Class1 #this) → self::Class1?
   return self::Extension1|get#nullable1(#this);
 static method Extension1|get#nonNullable1(lowered final self::Class1 #this) → self::Class1
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|get#nonNullable2(lowered final self::Class1 #this) → self::Class2
-  return #this.{self::Class1::property2}{self::Class2};
+  return #this.{self::Class1::property2};
 static method Extension2|nonNullable2Method(lowered final self::Class2 #this) → self::Class2
   return self::Extension2|get#nonNullable2(#this);
 static method Extension2|get#nonNullable2Method(lowered final self::Class2 #this) → () → self::Class2
   return () → self::Class2 => self::Extension2|nonNullable2Method(#this);
 static method Extension2|[](lowered final self::Class2 #this, self::Class2? key) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|[]=(lowered final self::Class2 #this, self::Class2? key, self::Class2? value) → void
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|+(lowered final self::Class2 #this, core::int value) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|unary-(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|get#nonNullable2(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|set#nonNullable2(lowered final self::Class2 #this, self::Class2 value) → void {
   #this.{self::Class2::property} = value;
 }
 static method Extension3|[](lowered final self::Class3 #this, self::Class3? key) → self::Class2?
-  return #this.{self::Class3::property}{self::Class2?};
+  return #this.{self::Class3::property};
 static method main() → dynamic {
   self::propertyAccess(null);
   self::indexAccess(null, null, null);
@@ -128,168 +128,168 @@
 }
 static method propertyAccess(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t1 = n1 in #t1 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
-  let final self::Class1? #t2 = n1 in #t2 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
-  nullable1 = let final self::Class1? #t3 = n1 in #t3 == null ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
-  let final self::Class1? #t6 = n1 in #t6 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
-  let final self::Class1? #t7 = n1 in #t7 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
-  let final self::Class1? #t8 = n1 in #t8 == null ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
-  let final self::Class1? #t10 = n1 in #t10 == null ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
-  let final self::Class1? #t12 = n1 in #t12 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t13 = n1 in #t13 == null ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t15 = n1 in #t15 == null ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
+  let final self::Class1? #t1 = n1 in #t1.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
+  let final self::Class1? #t2 = n1 in #t2.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
+  nullable1 = let final self::Class1? #t3 = n1 in #t3.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
+  let final self::Class1? #t6 = n1 in #t6.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
+  let final self::Class1? #t7 = n1 in #t7.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
+  let final self::Class1? #t8 = n1 in #t8.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
+  let final self::Class1? #t10 = n1 in #t10.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
+  let final self::Class1? #t12 = n1 in #t12.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t13 = n1 in #t13.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t15 = n1 in #t15.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
   self::throws(() → void => let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:93:59: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (Extension1(n1)?.nullable1 = new Class1()).nullable1);
-                                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20 == null ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
+                                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
   self::throws(() → void => let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:94:55: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (Extension1(n1)?.nonNullable1Method()).nullable1);
-                                                      ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
-  nullable1 = let final self::Class1? #t25 = n1 in #t25 == null ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
-  nullable1 = let final self::Class1? #t28 = n1 in #t28 == null ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29 == null ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
-  nullable1 = let final self::Class1? #t32 = n1 in #t32 == null ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33 == null ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
-  let final self::Class1? #t36 = n1 in #t36 == null ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
-  let final self::Class1? #t38 = n1 in #t38 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t39 = n1 in #t39 == null ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
-  let final self::Class1? #t42 = n1 in #t42 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
-  nullable1 = let final self::Class1? #t45 = n1 in #t45 == null ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
-  let final self::Class1? #t50 = n1 in #t50 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t51 = n1 in #t51 == null ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
-  let final self::Class1? #t54 = n1 in #t54 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
-  let final self::Class1? #t55 = n1 in #t55 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t56 = n1 in #t56 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
-  let final self::Class1? #t57 = n1 in #t57 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
-  let final self::Class1? #t58 = n1 in #t58 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t59 = n1 in #t59 == null ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
-  let final self::Class1? #t62 = n1 in #t62 == null ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
-  let final self::Class1? #t64 = n1 in #t64 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t65 = n1 in #t65 == null ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
-  let final self::Class1? #t68 = n1 in #t68 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
-  nullable1 = let final self::Class1? #t71 = n1 in #t71 == null ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
-  let final self::Class1? #t76 = n1 in #t76 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t77 = n1 in #t77 == null ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
-  let final self::Class1? #t80 = n1 in #t80 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
-  let final self::Class1? #t81 = n1 in #t81 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t82 = n1 in #t82 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
-  let final self::Class1? #t83 = n1 in #t83 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t84 = n1 in #t84 == null ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
-  let final self::Class1? #t87 = n1 in #t87 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
-  nullable1 = let final self::Class1? #t90 = n1 in #t90 == null ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
-  let final self::Class1? #t95 = n1 in #t95 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t96 = n1 in #t96 == null ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
-  let final self::Class1? #t99 = n1 in #t99 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
-  nullable1 = let final self::Class1? #t102 = n1 in #t102 == null ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
-  let final self::Class1? #t107 = n1 in #t107 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
-  nullable1 = let final self::Class1? #t112 = n1 in #t112 == null ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
-  let final self::Class1? #t119 = n1 in #t119 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
-  nullable1 = let final self::Class1? #t122 = n1 in #t122 == null ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
-  let final self::Class1? #t127 = n1 in #t127 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t128 = n1 in #t128 == null ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
-  let final self::Class1? #t131 = n1 in #t131 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
-  nullable1 = let final self::Class1? #t134 = n1 in #t134 == null ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
-  let final self::Class1? #t139 = n1 in #t139 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t140 = n1 in #t140 == null ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
-  let final self::Class1? #t143 = n1 in #t143 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
-  let final self::Class1? #t144 = n1 in #t144 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t145 = n1 in #t145 == null ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
-  let final self::Class1? #t148 = n1 in #t148 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
-  let final self::Class1? #t149 = n1 in #t149 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t150 = n1 in #t150 == null ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
-  let final self::Class1? #t153 = n1 in #t153 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
-  nullable1 = let final self::Class1? #t156 = n1 in #t156 == null ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
-  let final self::Class1? #t161 = n1 in #t161 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t162 = n1 in #t162 == null ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
-  let final self::Class1? #t165 = n1 in #t165 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
-  let final self::Class1? #t166 = n1 in #t166 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t167 = n1 in #t167 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
-  let final self::Class1? #t168 = n1 in #t168 == null ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
+                                                      ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
+  nullable1 = let final self::Class1? #t25 = n1 in #t25.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
+  nullable1 = let final self::Class1? #t28 = n1 in #t28.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
+  nullable1 = let final self::Class1? #t32 = n1 in #t32.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
+  let final self::Class1? #t36 = n1 in #t36.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
+  let final self::Class1? #t38 = n1 in #t38.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t39 = n1 in #t39.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
+  let final self::Class1? #t42 = n1 in #t42.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
+  nullable1 = let final self::Class1? #t45 = n1 in #t45.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
+  let final self::Class1? #t50 = n1 in #t50.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t51 = n1 in #t51.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
+  let final self::Class1? #t54 = n1 in #t54.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
+  let final self::Class1? #t55 = n1 in #t55.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t56 = n1 in #t56.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
+  let final self::Class1? #t57 = n1 in #t57.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
+  let final self::Class1? #t58 = n1 in #t58.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t59 = n1 in #t59.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
+  let final self::Class1? #t62 = n1 in #t62.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
+  let final self::Class1? #t64 = n1 in #t64.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t65 = n1 in #t65.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
+  let final self::Class1? #t68 = n1 in #t68.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
+  nullable1 = let final self::Class1? #t71 = n1 in #t71.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
+  let final self::Class1? #t76 = n1 in #t76.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t77 = n1 in #t77.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
+  let final self::Class1? #t80 = n1 in #t80.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
+  let final self::Class1? #t81 = n1 in #t81.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t82 = n1 in #t82.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
+  let final self::Class1? #t83 = n1 in #t83.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t84 = n1 in #t84.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
+  let final self::Class1? #t87 = n1 in #t87.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
+  nullable1 = let final self::Class1? #t90 = n1 in #t90.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
+  let final self::Class1? #t95 = n1 in #t95.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t96 = n1 in #t96.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
+  let final self::Class1? #t99 = n1 in #t99.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
+  nullable1 = let final self::Class1? #t102 = n1 in #t102.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
+  let final self::Class1? #t107 = n1 in #t107.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
+  nullable1 = let final self::Class1? #t112 = n1 in #t112.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
+  let final self::Class1? #t119 = n1 in #t119.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
+  nullable1 = let final self::Class1? #t122 = n1 in #t122.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
+  let final self::Class1? #t127 = n1 in #t127.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t128 = n1 in #t128.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
+  let final self::Class1? #t131 = n1 in #t131.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
+  nullable1 = let final self::Class1? #t134 = n1 in #t134.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
+  let final self::Class1? #t139 = n1 in #t139.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t140 = n1 in #t140.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
+  let final self::Class1? #t143 = n1 in #t143.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
+  let final self::Class1? #t144 = n1 in #t144.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t145 = n1 in #t145.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
+  let final self::Class1? #t148 = n1 in #t148.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
+  let final self::Class1? #t149 = n1 in #t149.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t150 = n1 in #t150.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
+  let final self::Class1? #t153 = n1 in #t153.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
+  nullable1 = let final self::Class1? #t156 = n1 in #t156.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
+  let final self::Class1? #t161 = n1 in #t161.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t162 = n1 in #t162.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
+  let final self::Class1? #t165 = n1 in #t165.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
+  let final self::Class1? #t166 = n1 in #t166.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t167 = n1 in #t167.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
+  let final self::Class1? #t168 = n1 in #t168.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
 }
 static method indexAccess(self::Class1? n1, self::Class2? n2, self::Class3? n3) → void {
   self::Class1? nullable1 = n1;
   self::Class2? nullable2 = n2;
   self::Class3? nullable3 = n3;
-  let final self::Class1? #t170 = n1 in #t170 == null ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
-  let final self::Class1? #t171 = n1 in #t171 == null ?{void} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
-  let final self::Class1? #t172 = n1 in #t172 == null ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
-  let final self::Class1? #t174 = n1 in #t174 == null ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
-  let final self::Class1? #t175 = n1 in #t175 == null ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t176 = n1 in #t176 == null ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
-  let final self::Class1? #t181 = n1 in #t181 == null ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
-  let final self::Class1? #t183 = n1 in #t183 == null ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
-  nullable2 = let final self::Class1? #t186 = n1 in #t186 == null ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
-  let final self::Class1? #t191 = n1 in #t191 == null ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192) == null ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
-  nullable1 = let final self::Class1? #t193 = n1 in #t193 == null ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195 == null ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
-  let final self::Class2? #t198 = n2 in #t198 == null ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
-  nullable2 = let final self::Class2? #t200 = n2 in #t200 == null ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
-  let final self::Class2? #t204 = n2 in #t204 == null ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
-  nullable2 = let final self::Class2? #t206 = n2 in #t206 == null ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
-  let final self::Class2? #t210 = n2 in #t210 == null ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
-  nullable2 = let final self::Class2? #t212 = n2 in #t212 == null ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
-  let final self::Class2? #t216 = n2 in #t216 == null ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
-  nullable2 = let final self::Class2? #t220 = n2 in #t220 == null ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
-  let final self::Class1? #t224 = n1 in #t224 == null ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
-  nullable2 = let final self::Class1? #t227 = n1 in #t227 == null ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
-  let final self::Class1? #t232 = n1 in #t232 == null ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
-  nullable2 = let final self::Class1? #t237 = n1 in #t237 == null ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
-  let final self::Class1? #t242 = n1 in #t242 == null ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
-  let final self::Class1? #t243 = n1 in #t243 == null ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
-  nullable2 = let final self::Class1? #t244 = n1 in #t244 == null ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
-  let final self::Class1? #t249 = n1 in #t249 == null ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250 == null ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
-  let final self::Class1? #t251 = n1 in #t251 == null ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
-  nullable2 = let final self::Class1? #t254 = n1 in #t254 == null ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
-  let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
-  nullable2 = let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
-  let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
-  nullable2 = let final self::Class1? #t272 = n1 in #t272 == null ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
-  let final self::Class1? #t277 = n1 in #t277 == null ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278 == null ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
-  let final self::Class1? #t279 = n1 in #t279 == null ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280 == null ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t281 = n1 in #t281 == null ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282 == null ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
-  let final self::Class1? #t286 = n1 in #t286 == null ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287 == null ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
-  nullable1 = let final self::Class1? #t289 = n1 in #t289 == null ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290 == null ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
-  let final self::Class1? #t292 = n1 in #t292 == null ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293 == null ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294) == null ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
-  nullable1 = let final self::Class1? #t295 = n1 in #t295 == null ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296 == null ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298 == null ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
-  let final self::Class3? #t301 = n3 in #t301 == null ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302 == null ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
-  nullable2 = let final self::Class3? #t304 = n3 in #t304 == null ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305 == null ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
-  let final self::Class3? #t309 = n3 in #t309 == null ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310 == null ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
-  nullable2 = let final self::Class3? #t312 = n3 in #t312 == null ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313 == null ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
-  let final self::Class3? #t317 = n3 in #t317 == null ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318 == null ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
-  nullable2 = let final self::Class3? #t322 = n3 in #t322 == null ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323 == null ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
+  let final self::Class1? #t170 = n1 in #t170.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
+  let final self::Class1? #t171 = n1 in #t171.{core::Object::==}(null) ?{void} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
+  let final self::Class1? #t172 = n1 in #t172.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
+  let final self::Class1? #t174 = n1 in #t174.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
+  let final self::Class1? #t175 = n1 in #t175.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t176 = n1 in #t176.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
+  let final self::Class1? #t181 = n1 in #t181.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
+  let final self::Class1? #t183 = n1 in #t183.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
+  nullable2 = let final self::Class1? #t186 = n1 in #t186.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
+  let final self::Class1? #t191 = n1 in #t191.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
+  nullable1 = let final self::Class1? #t193 = n1 in #t193.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
+  let final self::Class2? #t198 = n2 in #t198.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
+  nullable2 = let final self::Class2? #t200 = n2 in #t200.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
+  let final self::Class2? #t204 = n2 in #t204.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
+  nullable2 = let final self::Class2? #t206 = n2 in #t206.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
+  let final self::Class2? #t210 = n2 in #t210.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
+  nullable2 = let final self::Class2? #t212 = n2 in #t212.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
+  let final self::Class2? #t216 = n2 in #t216.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
+  nullable2 = let final self::Class2? #t220 = n2 in #t220.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
+  let final self::Class1? #t224 = n1 in #t224.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
+  nullable2 = let final self::Class1? #t227 = n1 in #t227.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
+  let final self::Class1? #t232 = n1 in #t232.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
+  nullable2 = let final self::Class1? #t237 = n1 in #t237.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
+  let final self::Class1? #t242 = n1 in #t242.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
+  let final self::Class1? #t243 = n1 in #t243.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
+  nullable2 = let final self::Class1? #t244 = n1 in #t244.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
+  let final self::Class1? #t249 = n1 in #t249.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
+  let final self::Class1? #t251 = n1 in #t251.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
+  nullable2 = let final self::Class1? #t254 = n1 in #t254.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
+  let final self::Class1? #t259 = n1 in #t259.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
+  nullable2 = let final self::Class1? #t262 = n1 in #t262.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
+  let final self::Class1? #t267 = n1 in #t267.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
+  nullable2 = let final self::Class1? #t272 = n1 in #t272.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
+  let final self::Class1? #t277 = n1 in #t277.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
+  let final self::Class1? #t279 = n1 in #t279.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t281 = n1 in #t281.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
+  let final self::Class1? #t286 = n1 in #t286.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
+  nullable1 = let final self::Class1? #t289 = n1 in #t289.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
+  let final self::Class1? #t292 = n1 in #t292.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
+  nullable1 = let final self::Class1? #t295 = n1 in #t295.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
+  let final self::Class3? #t301 = n3 in #t301.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
+  nullable2 = let final self::Class3? #t304 = n3 in #t304.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
+  let final self::Class3? #t309 = n3 in #t309.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
+  nullable2 = let final self::Class3? #t312 = n3 in #t312.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
+  let final self::Class3? #t317 = n3 in #t317.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
+  nullable2 = let final self::Class3? #t322 = n3 in #t322.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
 }
 static method operatorAccess(self::Class1? n1, self::Class2? n2) → void {
   self::Class2? nullable2 = n2;
   self::throws(() → void => let final Never #t327 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:244:45: Error: Operator '+' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
   throws(() => Extension1(n1)?.nonNullable1 + 0);
-                                            ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
+                                            ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
   self::throws(() → void => let final Never #t329 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:245:16: Error: Operator 'unary-' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
   throws(() => -Extension1(n1)?.nonNullable1);
-               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
-  let final self::Class2? #t331 = n2 in #t331 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t331{self::Class2}), 0));
-  nullable2 = let final self::Class2? #t332 = n2 in #t332 == null ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332{self::Class2}), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332{self::Class2}, #t333) in #t333;
-  let final self::Class2? #t335 = n2 in #t335 == null ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
-  nullable2 = let final self::Class2? #t337 = n2 in #t337 == null ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
-  let final self::Class2? #t341 = n2 in #t341 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t341{self::Class2}), 1));
-  nullable2 = let final self::Class2? #t342 = n2 in #t342 == null ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342{self::Class2}) in let final self::Class2 #t344 = let final self::Class2 #t345 = self::Extension2|+(#t343, 1) in let final void #t346 = self::Extension2|set#nonNullable2(#t342{self::Class2}, #t345) in #t345 in #t343;
-  let final self::Class2? #t347 = n2 in #t347 == null ?{self::Class2?} null : let final self::Class2 #t348 = self::Extension2|+(self::Extension2|get#nonNullable2(#t347{self::Class2}), 1) in let final void #t349 = self::Extension2|set#nonNullable2(#t347{self::Class2}, #t348) in #t348;
-  nullable2 = let final self::Class2? #t350 = n2 in #t350 == null ?{self::Class2?} null : let final self::Class2 #t351 = self::Extension2|+(self::Extension2|get#nonNullable2(#t350{self::Class2}), 1) in let final void #t352 = self::Extension2|set#nonNullable2(#t350{self::Class2}, #t351) in #t351;
+               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
+  let final self::Class2? #t331 = n2 in #t331.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t331{self::Class2}), 0));
+  nullable2 = let final self::Class2? #t332 = n2 in #t332.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332{self::Class2}), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332{self::Class2}, #t333) in #t333;
+  let final self::Class2? #t335 = n2 in #t335.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
+  nullable2 = let final self::Class2? #t337 = n2 in #t337.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
+  let final self::Class2? #t341 = n2 in #t341.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t341{self::Class2}), 1));
+  nullable2 = let final self::Class2? #t342 = n2 in #t342.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342{self::Class2}) in let final self::Class2 #t344 = let final self::Class2 #t345 = self::Extension2|+(#t343, 1) in let final void #t346 = self::Extension2|set#nonNullable2(#t342{self::Class2}, #t345) in #t345 in #t343;
+  let final self::Class2? #t347 = n2 in #t347.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t348 = self::Extension2|+(self::Extension2|get#nonNullable2(#t347{self::Class2}), 1) in let final void #t349 = self::Extension2|set#nonNullable2(#t347{self::Class2}, #t348) in #t348;
+  nullable2 = let final self::Class2? #t350 = n2 in #t350.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t351 = self::Extension2|+(self::Extension2|get#nonNullable2(#t350{self::Class2}), 1) in let final void #t352 = self::Extension2|set#nonNullable2(#t350{self::Class2}, #t351) in #t351;
 }
 static method ifNull(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t353 = n1 in #t353 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t353) == null ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1? #t355 = self::Extension1|get#nullable1(#t354) in #t355 == null ?{self::Class1} let final self::Class1 #t356 = n1{self::Class1} in let final void #t357 = self::Extension1|set#nullable1(#t354, #t356) in #t356 : #t355{self::Class1};
-  let final self::Class1? #t358 = n1 in #t358 == null ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in self::Extension1|get#nullable1(#t359) == null ?{self::Class1} self::Extension1|set#nullable1(#t359, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t360 = n1 in #t360 == null ?{self::Class1?} null : let final self::Class1 #t361 = self::Extension1|get#nonNullable1(#t360{self::Class1}) in let final self::Class1? #t362 = self::Extension1|get#nullable1(#t361) in #t362 == null ?{self::Class1} let final self::Class1 #t363 = n1{self::Class1} in let final void #t364 = self::Extension1|set#nullable1(#t361, #t363) in #t363 : #t362{self::Class1};
-  let final self::Class1? #t365 = n1 in #t365 == null ?{self::Class1?} null : let final self::Class1 #t366 = self::Extension1|get#nonNullable1(#t365{self::Class1}) in let final self::Class1 #t367 = n1{self::Class1} in self::Extension1|[](#t366, #t367) == null ?{self::Class1} self::Extension1|[]=(#t366, #t367, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t368 = n1 in #t368 == null ?{self::Class1?} null : let final self::Class1 #t369 = self::Extension1|get#nonNullable1(#t368{self::Class1}) in let final self::Class1 #t370 = n1{self::Class1} in let final self::Class1? #t371 = self::Extension1|[](#t369, #t370) in #t371 == null ?{self::Class1} let final self::Class1 #t372 = n1{self::Class1} in let final void #t373 = self::Extension1|[]=(#t369, #t370, #t372) in #t372 : #t371{self::Class1};
+  let final self::Class1? #t353 = n1 in #t353.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t353).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t354 = n1 in #t354.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t355 = self::Extension1|get#nullable1(#t354) in #t355.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t356 = n1{self::Class1} in let final void #t357 = self::Extension1|set#nullable1(#t354, #t356) in #t356 : #t355{self::Class1};
+  let final self::Class1? #t358 = n1 in #t358.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in self::Extension1|get#nullable1(#t359).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t359, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t360 = n1 in #t360.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t361 = self::Extension1|get#nonNullable1(#t360{self::Class1}) in let final self::Class1? #t362 = self::Extension1|get#nullable1(#t361) in #t362.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t363 = n1{self::Class1} in let final void #t364 = self::Extension1|set#nullable1(#t361, #t363) in #t363 : #t362{self::Class1};
+  let final self::Class1? #t365 = n1 in #t365.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t366 = self::Extension1|get#nonNullable1(#t365{self::Class1}) in let final self::Class1 #t367 = n1{self::Class1} in self::Extension1|[](#t366, #t367).{core::Object::==}(null) ?{self::Class1} self::Extension1|[]=(#t366, #t367, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t368 = n1 in #t368.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t369 = self::Extension1|get#nonNullable1(#t368{self::Class1}) in let final self::Class1 #t370 = n1{self::Class1} in let final self::Class1? #t371 = self::Extension1|[](#t369, #t370) in #t371.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t372 = n1{self::Class1} in let final void #t373 = self::Extension1|[]=(#t369, #t370, #t372) in #t372 : #t371{self::Class1};
 }
 static method throws(() → void f) → void {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.transformed.expect
index 25e39a1..5146cf7 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.transformed.expect
@@ -80,7 +80,7 @@
   operator [] = self::Extension3|[];
 }
 static method Extension1|get#nullable1(lowered final self::Class1 #this) → self::Class1?
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|set#nullable1(lowered final self::Class1 #this, self::Class1? value) → void {
   #this.{self::Class1::property} = value;
 }
@@ -98,28 +98,28 @@
 static method Extension1|unary-(lowered final self::Class1 #this) → self::Class1?
   return self::Extension1|get#nullable1(#this);
 static method Extension1|get#nonNullable1(lowered final self::Class1 #this) → self::Class1
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|get#nonNullable2(lowered final self::Class1 #this) → self::Class2
-  return #this.{self::Class1::property2}{self::Class2};
+  return #this.{self::Class1::property2};
 static method Extension2|nonNullable2Method(lowered final self::Class2 #this) → self::Class2
   return self::Extension2|get#nonNullable2(#this);
 static method Extension2|get#nonNullable2Method(lowered final self::Class2 #this) → () → self::Class2
   return () → self::Class2 => self::Extension2|nonNullable2Method(#this);
 static method Extension2|[](lowered final self::Class2 #this, self::Class2? key) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|[]=(lowered final self::Class2 #this, self::Class2? key, self::Class2? value) → void
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|+(lowered final self::Class2 #this, core::int value) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|unary-(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|get#nonNullable2(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|set#nonNullable2(lowered final self::Class2 #this, self::Class2 value) → void {
   #this.{self::Class2::property} = value;
 }
 static method Extension3|[](lowered final self::Class3 #this, self::Class3? key) → self::Class2?
-  return #this.{self::Class3::property}{self::Class2?};
+  return #this.{self::Class3::property};
 static method main() → dynamic {
   self::propertyAccess(null);
   self::indexAccess(null, null, null);
@@ -128,168 +128,168 @@
 }
 static method propertyAccess(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t1 = n1 in #t1 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
-  let final self::Class1? #t2 = n1 in #t2 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
-  nullable1 = let final self::Class1? #t3 = n1 in #t3 == null ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
-  let final self::Class1? #t6 = n1 in #t6 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
-  let final self::Class1? #t7 = n1 in #t7 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
-  let final self::Class1? #t8 = n1 in #t8 == null ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
-  let final self::Class1? #t10 = n1 in #t10 == null ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
-  let final self::Class1? #t12 = n1 in #t12 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t13 = n1 in #t13 == null ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t15 = n1 in #t15 == null ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
+  let final self::Class1? #t1 = n1 in #t1.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
+  let final self::Class1? #t2 = n1 in #t2.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
+  nullable1 = let final self::Class1? #t3 = n1 in #t3.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
+  let final self::Class1? #t6 = n1 in #t6.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
+  let final self::Class1? #t7 = n1 in #t7.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
+  let final self::Class1? #t8 = n1 in #t8.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
+  let final self::Class1? #t10 = n1 in #t10.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
+  let final self::Class1? #t12 = n1 in #t12.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t13 = n1 in #t13.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t15 = n1 in #t15.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
   self::throws(() → void => let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:93:59: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (Extension1(n1)?.nullable1 = new Class1()).nullable1);
-                                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20 == null ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
+                                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
   self::throws(() → void => let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:94:55: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (Extension1(n1)?.nonNullable1Method()).nullable1);
-                                                      ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
-  nullable1 = let final self::Class1? #t25 = n1 in #t25 == null ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
-  nullable1 = let final self::Class1? #t28 = n1 in #t28 == null ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29 == null ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
-  nullable1 = let final self::Class1? #t32 = n1 in #t32 == null ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33 == null ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
-  let final self::Class1? #t36 = n1 in #t36 == null ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
-  let final self::Class1? #t38 = n1 in #t38 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t39 = n1 in #t39 == null ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
-  let final self::Class1? #t42 = n1 in #t42 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
-  nullable1 = let final self::Class1? #t45 = n1 in #t45 == null ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
-  let final self::Class1? #t50 = n1 in #t50 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t51 = n1 in #t51 == null ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
-  let final self::Class1? #t54 = n1 in #t54 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
-  let final self::Class1? #t55 = n1 in #t55 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t56 = n1 in #t56 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
-  let final self::Class1? #t57 = n1 in #t57 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
-  let final self::Class1? #t58 = n1 in #t58 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t59 = n1 in #t59 == null ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
-  let final self::Class1? #t62 = n1 in #t62 == null ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
-  let final self::Class1? #t64 = n1 in #t64 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t65 = n1 in #t65 == null ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
-  let final self::Class1? #t68 = n1 in #t68 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
-  nullable1 = let final self::Class1? #t71 = n1 in #t71 == null ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
-  let final self::Class1? #t76 = n1 in #t76 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t77 = n1 in #t77 == null ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
-  let final self::Class1? #t80 = n1 in #t80 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
-  let final self::Class1? #t81 = n1 in #t81 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t82 = n1 in #t82 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
-  let final self::Class1? #t83 = n1 in #t83 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t84 = n1 in #t84 == null ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
-  let final self::Class1? #t87 = n1 in #t87 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
-  nullable1 = let final self::Class1? #t90 = n1 in #t90 == null ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
-  let final self::Class1? #t95 = n1 in #t95 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t96 = n1 in #t96 == null ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
-  let final self::Class1? #t99 = n1 in #t99 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
-  nullable1 = let final self::Class1? #t102 = n1 in #t102 == null ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
-  let final self::Class1? #t107 = n1 in #t107 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
-  nullable1 = let final self::Class1? #t112 = n1 in #t112 == null ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
-  let final self::Class1? #t119 = n1 in #t119 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
-  nullable1 = let final self::Class1? #t122 = n1 in #t122 == null ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
-  let final self::Class1? #t127 = n1 in #t127 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t128 = n1 in #t128 == null ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
-  let final self::Class1? #t131 = n1 in #t131 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
-  nullable1 = let final self::Class1? #t134 = n1 in #t134 == null ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
-  let final self::Class1? #t139 = n1 in #t139 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t140 = n1 in #t140 == null ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
-  let final self::Class1? #t143 = n1 in #t143 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
-  let final self::Class1? #t144 = n1 in #t144 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t145 = n1 in #t145 == null ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
-  let final self::Class1? #t148 = n1 in #t148 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
-  let final self::Class1? #t149 = n1 in #t149 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t150 = n1 in #t150 == null ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
-  let final self::Class1? #t153 = n1 in #t153 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
-  nullable1 = let final self::Class1? #t156 = n1 in #t156 == null ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
-  let final self::Class1? #t161 = n1 in #t161 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t162 = n1 in #t162 == null ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
-  let final self::Class1? #t165 = n1 in #t165 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
-  let final self::Class1? #t166 = n1 in #t166 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t167 = n1 in #t167 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
-  let final self::Class1? #t168 = n1 in #t168 == null ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
+                                                      ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
+  nullable1 = let final self::Class1? #t25 = n1 in #t25.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
+  nullable1 = let final self::Class1? #t28 = n1 in #t28.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
+  nullable1 = let final self::Class1? #t32 = n1 in #t32.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
+  let final self::Class1? #t36 = n1 in #t36.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
+  let final self::Class1? #t38 = n1 in #t38.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t39 = n1 in #t39.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
+  let final self::Class1? #t42 = n1 in #t42.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
+  nullable1 = let final self::Class1? #t45 = n1 in #t45.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
+  let final self::Class1? #t50 = n1 in #t50.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t51 = n1 in #t51.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
+  let final self::Class1? #t54 = n1 in #t54.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
+  let final self::Class1? #t55 = n1 in #t55.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t56 = n1 in #t56.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
+  let final self::Class1? #t57 = n1 in #t57.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
+  let final self::Class1? #t58 = n1 in #t58.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t59 = n1 in #t59.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
+  let final self::Class1? #t62 = n1 in #t62.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
+  let final self::Class1? #t64 = n1 in #t64.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t65 = n1 in #t65.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
+  let final self::Class1? #t68 = n1 in #t68.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
+  nullable1 = let final self::Class1? #t71 = n1 in #t71.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
+  let final self::Class1? #t76 = n1 in #t76.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t77 = n1 in #t77.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
+  let final self::Class1? #t80 = n1 in #t80.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
+  let final self::Class1? #t81 = n1 in #t81.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t82 = n1 in #t82.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
+  let final self::Class1? #t83 = n1 in #t83.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t84 = n1 in #t84.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
+  let final self::Class1? #t87 = n1 in #t87.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
+  nullable1 = let final self::Class1? #t90 = n1 in #t90.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
+  let final self::Class1? #t95 = n1 in #t95.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t96 = n1 in #t96.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
+  let final self::Class1? #t99 = n1 in #t99.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
+  nullable1 = let final self::Class1? #t102 = n1 in #t102.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
+  let final self::Class1? #t107 = n1 in #t107.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
+  nullable1 = let final self::Class1? #t112 = n1 in #t112.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
+  let final self::Class1? #t119 = n1 in #t119.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
+  nullable1 = let final self::Class1? #t122 = n1 in #t122.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
+  let final self::Class1? #t127 = n1 in #t127.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t128 = n1 in #t128.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
+  let final self::Class1? #t131 = n1 in #t131.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
+  nullable1 = let final self::Class1? #t134 = n1 in #t134.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
+  let final self::Class1? #t139 = n1 in #t139.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t140 = n1 in #t140.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
+  let final self::Class1? #t143 = n1 in #t143.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
+  let final self::Class1? #t144 = n1 in #t144.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t145 = n1 in #t145.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
+  let final self::Class1? #t148 = n1 in #t148.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
+  let final self::Class1? #t149 = n1 in #t149.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t150 = n1 in #t150.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
+  let final self::Class1? #t153 = n1 in #t153.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
+  nullable1 = let final self::Class1? #t156 = n1 in #t156.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
+  let final self::Class1? #t161 = n1 in #t161.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t162 = n1 in #t162.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
+  let final self::Class1? #t165 = n1 in #t165.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
+  let final self::Class1? #t166 = n1 in #t166.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t167 = n1 in #t167.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
+  let final self::Class1? #t168 = n1 in #t168.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
 }
 static method indexAccess(self::Class1? n1, self::Class2? n2, self::Class3? n3) → void {
   self::Class1? nullable1 = n1;
   self::Class2? nullable2 = n2;
   self::Class3? nullable3 = n3;
-  let final self::Class1? #t170 = n1 in #t170 == null ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
-  let final self::Class1? #t171 = n1 in #t171 == null ?{void} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
-  let final self::Class1? #t172 = n1 in #t172 == null ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
-  let final self::Class1? #t174 = n1 in #t174 == null ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
-  let final self::Class1? #t175 = n1 in #t175 == null ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t176 = n1 in #t176 == null ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
-  let final self::Class1? #t181 = n1 in #t181 == null ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
-  let final self::Class1? #t183 = n1 in #t183 == null ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
-  nullable2 = let final self::Class1? #t186 = n1 in #t186 == null ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
-  let final self::Class1? #t191 = n1 in #t191 == null ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192) == null ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
-  nullable1 = let final self::Class1? #t193 = n1 in #t193 == null ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195 == null ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
-  let final self::Class2? #t198 = n2 in #t198 == null ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
-  nullable2 = let final self::Class2? #t200 = n2 in #t200 == null ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
-  let final self::Class2? #t204 = n2 in #t204 == null ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
-  nullable2 = let final self::Class2? #t206 = n2 in #t206 == null ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
-  let final self::Class2? #t210 = n2 in #t210 == null ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
-  nullable2 = let final self::Class2? #t212 = n2 in #t212 == null ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
-  let final self::Class2? #t216 = n2 in #t216 == null ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
-  nullable2 = let final self::Class2? #t220 = n2 in #t220 == null ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
-  let final self::Class1? #t224 = n1 in #t224 == null ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
-  nullable2 = let final self::Class1? #t227 = n1 in #t227 == null ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
-  let final self::Class1? #t232 = n1 in #t232 == null ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
-  nullable2 = let final self::Class1? #t237 = n1 in #t237 == null ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
-  let final self::Class1? #t242 = n1 in #t242 == null ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
-  let final self::Class1? #t243 = n1 in #t243 == null ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
-  nullable2 = let final self::Class1? #t244 = n1 in #t244 == null ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
-  let final self::Class1? #t249 = n1 in #t249 == null ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250 == null ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
-  let final self::Class1? #t251 = n1 in #t251 == null ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
-  nullable2 = let final self::Class1? #t254 = n1 in #t254 == null ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
-  let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
-  nullable2 = let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
-  let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
-  nullable2 = let final self::Class1? #t272 = n1 in #t272 == null ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
-  let final self::Class1? #t277 = n1 in #t277 == null ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278 == null ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
-  let final self::Class1? #t279 = n1 in #t279 == null ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280 == null ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t281 = n1 in #t281 == null ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282 == null ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
-  let final self::Class1? #t286 = n1 in #t286 == null ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287 == null ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
-  nullable1 = let final self::Class1? #t289 = n1 in #t289 == null ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290 == null ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
-  let final self::Class1? #t292 = n1 in #t292 == null ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293 == null ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294) == null ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
-  nullable1 = let final self::Class1? #t295 = n1 in #t295 == null ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296 == null ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298 == null ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
-  let final self::Class3? #t301 = n3 in #t301 == null ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302 == null ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
-  nullable2 = let final self::Class3? #t304 = n3 in #t304 == null ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305 == null ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
-  let final self::Class3? #t309 = n3 in #t309 == null ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310 == null ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
-  nullable2 = let final self::Class3? #t312 = n3 in #t312 == null ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313 == null ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
-  let final self::Class3? #t317 = n3 in #t317 == null ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318 == null ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
-  nullable2 = let final self::Class3? #t322 = n3 in #t322 == null ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323 == null ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
+  let final self::Class1? #t170 = n1 in #t170.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
+  let final self::Class1? #t171 = n1 in #t171.{core::Object::==}(null) ?{void} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
+  let final self::Class1? #t172 = n1 in #t172.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
+  let final self::Class1? #t174 = n1 in #t174.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
+  let final self::Class1? #t175 = n1 in #t175.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t176 = n1 in #t176.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
+  let final self::Class1? #t181 = n1 in #t181.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
+  let final self::Class1? #t183 = n1 in #t183.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
+  nullable2 = let final self::Class1? #t186 = n1 in #t186.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
+  let final self::Class1? #t191 = n1 in #t191.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
+  nullable1 = let final self::Class1? #t193 = n1 in #t193.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
+  let final self::Class2? #t198 = n2 in #t198.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
+  nullable2 = let final self::Class2? #t200 = n2 in #t200.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
+  let final self::Class2? #t204 = n2 in #t204.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
+  nullable2 = let final self::Class2? #t206 = n2 in #t206.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
+  let final self::Class2? #t210 = n2 in #t210.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
+  nullable2 = let final self::Class2? #t212 = n2 in #t212.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
+  let final self::Class2? #t216 = n2 in #t216.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
+  nullable2 = let final self::Class2? #t220 = n2 in #t220.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
+  let final self::Class1? #t224 = n1 in #t224.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
+  nullable2 = let final self::Class1? #t227 = n1 in #t227.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
+  let final self::Class1? #t232 = n1 in #t232.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
+  nullable2 = let final self::Class1? #t237 = n1 in #t237.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
+  let final self::Class1? #t242 = n1 in #t242.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
+  let final self::Class1? #t243 = n1 in #t243.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
+  nullable2 = let final self::Class1? #t244 = n1 in #t244.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
+  let final self::Class1? #t249 = n1 in #t249.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
+  let final self::Class1? #t251 = n1 in #t251.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
+  nullable2 = let final self::Class1? #t254 = n1 in #t254.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
+  let final self::Class1? #t259 = n1 in #t259.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
+  nullable2 = let final self::Class1? #t262 = n1 in #t262.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
+  let final self::Class1? #t267 = n1 in #t267.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
+  nullable2 = let final self::Class1? #t272 = n1 in #t272.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
+  let final self::Class1? #t277 = n1 in #t277.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
+  let final self::Class1? #t279 = n1 in #t279.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t281 = n1 in #t281.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
+  let final self::Class1? #t286 = n1 in #t286.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
+  nullable1 = let final self::Class1? #t289 = n1 in #t289.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
+  let final self::Class1? #t292 = n1 in #t292.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
+  nullable1 = let final self::Class1? #t295 = n1 in #t295.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
+  let final self::Class3? #t301 = n3 in #t301.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
+  nullable2 = let final self::Class3? #t304 = n3 in #t304.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
+  let final self::Class3? #t309 = n3 in #t309.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
+  nullable2 = let final self::Class3? #t312 = n3 in #t312.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
+  let final self::Class3? #t317 = n3 in #t317.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
+  nullable2 = let final self::Class3? #t322 = n3 in #t322.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
 }
 static method operatorAccess(self::Class1? n1, self::Class2? n2) → void {
   self::Class2? nullable2 = n2;
   self::throws(() → void => let final Never #t327 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:244:45: Error: Operator '+' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
   throws(() => Extension1(n1)?.nonNullable1 + 0);
-                                            ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
+                                            ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
   self::throws(() → void => let final Never #t329 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:245:16: Error: Operator 'unary-' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart'.
   throws(() => -Extension1(n1)?.nonNullable1);
-               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
-  let final self::Class2? #t331 = n2 in #t331 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t331{self::Class2}), 0));
-  nullable2 = let final self::Class2? #t332 = n2 in #t332 == null ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332{self::Class2}), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332{self::Class2}, #t333) in #t333;
-  let final self::Class2? #t335 = n2 in #t335 == null ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
-  nullable2 = let final self::Class2? #t337 = n2 in #t337 == null ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
-  let final self::Class2? #t341 = n2 in #t341 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t341{self::Class2}), 1));
-  nullable2 = let final self::Class2? #t342 = n2 in #t342 == null ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342{self::Class2}) in let final self::Class2 #t344 = let final self::Class2 #t345 = self::Extension2|+(#t343, 1) in let final void #t346 = self::Extension2|set#nonNullable2(#t342{self::Class2}, #t345) in #t345 in #t343;
-  let final self::Class2? #t347 = n2 in #t347 == null ?{self::Class2?} null : let final self::Class2 #t348 = self::Extension2|+(self::Extension2|get#nonNullable2(#t347{self::Class2}), 1) in let final void #t349 = self::Extension2|set#nonNullable2(#t347{self::Class2}, #t348) in #t348;
-  nullable2 = let final self::Class2? #t350 = n2 in #t350 == null ?{self::Class2?} null : let final self::Class2 #t351 = self::Extension2|+(self::Extension2|get#nonNullable2(#t350{self::Class2}), 1) in let final void #t352 = self::Extension2|set#nonNullable2(#t350{self::Class2}, #t351) in #t351;
+               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
+  let final self::Class2? #t331 = n2 in #t331.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t331{self::Class2}), 0));
+  nullable2 = let final self::Class2? #t332 = n2 in #t332.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332{self::Class2}), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332{self::Class2}, #t333) in #t333;
+  let final self::Class2? #t335 = n2 in #t335.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
+  nullable2 = let final self::Class2? #t337 = n2 in #t337.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
+  let final self::Class2? #t341 = n2 in #t341.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341{self::Class2}, self::Extension2|+(self::Extension2|get#nonNullable2(#t341{self::Class2}), 1));
+  nullable2 = let final self::Class2? #t342 = n2 in #t342.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342{self::Class2}) in let final self::Class2 #t344 = let final self::Class2 #t345 = self::Extension2|+(#t343, 1) in let final void #t346 = self::Extension2|set#nonNullable2(#t342{self::Class2}, #t345) in #t345 in #t343;
+  let final self::Class2? #t347 = n2 in #t347.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t348 = self::Extension2|+(self::Extension2|get#nonNullable2(#t347{self::Class2}), 1) in let final void #t349 = self::Extension2|set#nonNullable2(#t347{self::Class2}, #t348) in #t348;
+  nullable2 = let final self::Class2? #t350 = n2 in #t350.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t351 = self::Extension2|+(self::Extension2|get#nonNullable2(#t350{self::Class2}), 1) in let final void #t352 = self::Extension2|set#nonNullable2(#t350{self::Class2}, #t351) in #t351;
 }
 static method ifNull(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t353 = n1 in #t353 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t353) == null ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1? #t355 = self::Extension1|get#nullable1(#t354) in #t355 == null ?{self::Class1} let final self::Class1 #t356 = n1{self::Class1} in let final void #t357 = self::Extension1|set#nullable1(#t354, #t356) in #t356 : #t355{self::Class1};
-  let final self::Class1? #t358 = n1 in #t358 == null ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in self::Extension1|get#nullable1(#t359) == null ?{self::Class1} self::Extension1|set#nullable1(#t359, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t360 = n1 in #t360 == null ?{self::Class1?} null : let final self::Class1 #t361 = self::Extension1|get#nonNullable1(#t360{self::Class1}) in let final self::Class1? #t362 = self::Extension1|get#nullable1(#t361) in #t362 == null ?{self::Class1} let final self::Class1 #t363 = n1{self::Class1} in let final void #t364 = self::Extension1|set#nullable1(#t361, #t363) in #t363 : #t362{self::Class1};
-  let final self::Class1? #t365 = n1 in #t365 == null ?{self::Class1?} null : let final self::Class1 #t366 = self::Extension1|get#nonNullable1(#t365{self::Class1}) in let final self::Class1 #t367 = n1{self::Class1} in self::Extension1|[](#t366, #t367) == null ?{self::Class1} self::Extension1|[]=(#t366, #t367, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t368 = n1 in #t368 == null ?{self::Class1?} null : let final self::Class1 #t369 = self::Extension1|get#nonNullable1(#t368{self::Class1}) in let final self::Class1 #t370 = n1{self::Class1} in let final self::Class1? #t371 = self::Extension1|[](#t369, #t370) in #t371 == null ?{self::Class1} let final self::Class1 #t372 = n1{self::Class1} in let final void #t373 = self::Extension1|[]=(#t369, #t370, #t372) in #t372 : #t371{self::Class1};
+  let final self::Class1? #t353 = n1 in #t353.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t353).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t354 = n1 in #t354.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t355 = self::Extension1|get#nullable1(#t354) in #t355.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t356 = n1{self::Class1} in let final void #t357 = self::Extension1|set#nullable1(#t354, #t356) in #t356 : #t355{self::Class1};
+  let final self::Class1? #t358 = n1 in #t358.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in self::Extension1|get#nullable1(#t359).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t359, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t360 = n1 in #t360.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t361 = self::Extension1|get#nonNullable1(#t360{self::Class1}) in let final self::Class1? #t362 = self::Extension1|get#nullable1(#t361) in #t362.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t363 = n1{self::Class1} in let final void #t364 = self::Extension1|set#nullable1(#t361, #t363) in #t363 : #t362{self::Class1};
+  let final self::Class1? #t365 = n1 in #t365.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t366 = self::Extension1|get#nonNullable1(#t365{self::Class1}) in let final self::Class1 #t367 = n1{self::Class1} in self::Extension1|[](#t366, #t367).{core::Object::==}(null) ?{self::Class1} self::Extension1|[]=(#t366, #t367, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t368 = n1 in #t368.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t369 = self::Extension1|get#nonNullable1(#t368{self::Class1}) in let final self::Class1 #t370 = n1{self::Class1} in let final self::Class1? #t371 = self::Extension1|[](#t369, #t370) in #t371.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t372 = n1{self::Class1} in let final void #t373 = self::Extension1|[]=(#t369, #t370, #t372) in #t372 : #t371{self::Class1};
 }
 static method throws(() → void f) → void {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.expect
index 38237dc..83c8b22 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.expect
@@ -80,7 +80,7 @@
   operator [] = self::Extension3|[];
 }
 static method Extension1|get#nullable1(lowered final self::Class1 #this) → self::Class1?
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|set#nullable1(lowered final self::Class1 #this, self::Class1? value) → void {
   #this.{self::Class1::property} = value;
 }
@@ -98,28 +98,28 @@
 static method Extension1|unary-(lowered final self::Class1 #this) → self::Class1?
   return self::Extension1|get#nullable1(#this);
 static method Extension1|get#nonNullable1(lowered final self::Class1 #this) → self::Class1
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|get#nonNullable2(lowered final self::Class1 #this) → self::Class2
-  return #this.{self::Class1::property2}{self::Class2};
+  return #this.{self::Class1::property2};
 static method Extension2|nonNullable2Method(lowered final self::Class2 #this) → self::Class2
   return self::Extension2|get#nonNullable2(#this);
 static method Extension2|get#nonNullable2Method(lowered final self::Class2 #this) → () → self::Class2
   return () → self::Class2 => self::Extension2|nonNullable2Method(#this);
 static method Extension2|[](lowered final self::Class2 #this, self::Class2? key) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|[]=(lowered final self::Class2 #this, self::Class2? key, self::Class2? value) → void
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|+(lowered final self::Class2 #this, core::int value) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|unary-(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|get#nonNullable2(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|set#nonNullable2(lowered final self::Class2 #this, self::Class2 value) → void {
   #this.{self::Class2::property} = value;
 }
 static method Extension3|[](lowered final self::Class3 #this, self::Class3? key) → self::Class2?
-  return #this.{self::Class3::property}{self::Class2?};
+  return #this.{self::Class3::property};
 static method main() → dynamic {
   self::propertyAccess(null);
   self::indexAccess(null, null, null);
@@ -128,168 +128,168 @@
 }
 static method propertyAccess(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t1 = n1 in #t1 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
-  let final self::Class1? #t2 = n1 in #t2 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
-  nullable1 = let final self::Class1? #t3 = n1 in #t3 == null ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
-  let final self::Class1? #t6 = n1 in #t6 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
-  let final self::Class1? #t7 = n1 in #t7 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
-  let final self::Class1? #t8 = n1 in #t8 == null ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
-  let final self::Class1? #t10 = n1 in #t10 == null ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
-  let final self::Class1? #t12 = n1 in #t12 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t13 = n1 in #t13 == null ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t15 = n1 in #t15 == null ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
+  let final self::Class1? #t1 = n1 in #t1.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
+  let final self::Class1? #t2 = n1 in #t2.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
+  nullable1 = let final self::Class1? #t3 = n1 in #t3.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
+  let final self::Class1? #t6 = n1 in #t6.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
+  let final self::Class1? #t7 = n1 in #t7.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
+  let final self::Class1? #t8 = n1 in #t8.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
+  let final self::Class1? #t10 = n1 in #t10.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
+  let final self::Class1? #t12 = n1 in #t12.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t13 = n1 in #t13.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t15 = n1 in #t15.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
   self::throws(() → void => let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:93:47: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nullable1 = new Class1()).nullable1);
-                                              ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20 == null ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
+                                              ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
   self::throws(() → void => let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:94:43: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nonNullable1Method()).nullable1);
-                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
-  nullable1 = let final self::Class1? #t25 = n1 in #t25 == null ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
-  nullable1 = let final self::Class1? #t28 = n1 in #t28 == null ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29 == null ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
-  nullable1 = let final self::Class1? #t32 = n1 in #t32 == null ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33 == null ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
-  let final self::Class1? #t36 = n1 in #t36 == null ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
-  let final self::Class1? #t38 = n1 in #t38 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t39 = n1 in #t39 == null ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
-  let final self::Class1? #t42 = n1 in #t42 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
-  nullable1 = let final self::Class1? #t45 = n1 in #t45 == null ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
-  let final self::Class1? #t50 = n1 in #t50 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t51 = n1 in #t51 == null ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
-  let final self::Class1? #t54 = n1 in #t54 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
-  let final self::Class1? #t55 = n1 in #t55 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t56 = n1 in #t56 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
-  let final self::Class1? #t57 = n1 in #t57 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
-  let final self::Class1? #t58 = n1 in #t58 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t59 = n1 in #t59 == null ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
-  let final self::Class1? #t62 = n1 in #t62 == null ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
-  let final self::Class1? #t64 = n1 in #t64 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t65 = n1 in #t65 == null ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
-  let final self::Class1? #t68 = n1 in #t68 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
-  nullable1 = let final self::Class1? #t71 = n1 in #t71 == null ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
-  let final self::Class1? #t76 = n1 in #t76 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t77 = n1 in #t77 == null ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
-  let final self::Class1? #t80 = n1 in #t80 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
-  let final self::Class1? #t81 = n1 in #t81 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t82 = n1 in #t82 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
-  let final self::Class1? #t83 = n1 in #t83 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t84 = n1 in #t84 == null ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
-  let final self::Class1? #t87 = n1 in #t87 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
-  nullable1 = let final self::Class1? #t90 = n1 in #t90 == null ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
-  let final self::Class1? #t95 = n1 in #t95 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t96 = n1 in #t96 == null ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
-  let final self::Class1? #t99 = n1 in #t99 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
-  nullable1 = let final self::Class1? #t102 = n1 in #t102 == null ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
-  let final self::Class1? #t107 = n1 in #t107 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
-  nullable1 = let final self::Class1? #t112 = n1 in #t112 == null ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
-  let final self::Class1? #t119 = n1 in #t119 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
-  nullable1 = let final self::Class1? #t122 = n1 in #t122 == null ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
-  let final self::Class1? #t127 = n1 in #t127 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t128 = n1 in #t128 == null ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
-  let final self::Class1? #t131 = n1 in #t131 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
-  nullable1 = let final self::Class1? #t134 = n1 in #t134 == null ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
-  let final self::Class1? #t139 = n1 in #t139 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t140 = n1 in #t140 == null ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
-  let final self::Class1? #t143 = n1 in #t143 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
-  let final self::Class1? #t144 = n1 in #t144 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t145 = n1 in #t145 == null ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
-  let final self::Class1? #t148 = n1 in #t148 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
-  let final self::Class1? #t149 = n1 in #t149 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t150 = n1 in #t150 == null ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
-  let final self::Class1? #t153 = n1 in #t153 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
-  nullable1 = let final self::Class1? #t156 = n1 in #t156 == null ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
-  let final self::Class1? #t161 = n1 in #t161 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t162 = n1 in #t162 == null ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
-  let final self::Class1? #t165 = n1 in #t165 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
-  let final self::Class1? #t166 = n1 in #t166 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t167 = n1 in #t167 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
-  let final self::Class1? #t168 = n1 in #t168 == null ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
+                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
+  nullable1 = let final self::Class1? #t25 = n1 in #t25.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
+  nullable1 = let final self::Class1? #t28 = n1 in #t28.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
+  nullable1 = let final self::Class1? #t32 = n1 in #t32.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
+  let final self::Class1? #t36 = n1 in #t36.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
+  let final self::Class1? #t38 = n1 in #t38.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t39 = n1 in #t39.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
+  let final self::Class1? #t42 = n1 in #t42.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
+  nullable1 = let final self::Class1? #t45 = n1 in #t45.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
+  let final self::Class1? #t50 = n1 in #t50.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t51 = n1 in #t51.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
+  let final self::Class1? #t54 = n1 in #t54.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
+  let final self::Class1? #t55 = n1 in #t55.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t56 = n1 in #t56.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
+  let final self::Class1? #t57 = n1 in #t57.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
+  let final self::Class1? #t58 = n1 in #t58.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t59 = n1 in #t59.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
+  let final self::Class1? #t62 = n1 in #t62.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
+  let final self::Class1? #t64 = n1 in #t64.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t65 = n1 in #t65.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
+  let final self::Class1? #t68 = n1 in #t68.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
+  nullable1 = let final self::Class1? #t71 = n1 in #t71.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
+  let final self::Class1? #t76 = n1 in #t76.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t77 = n1 in #t77.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
+  let final self::Class1? #t80 = n1 in #t80.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
+  let final self::Class1? #t81 = n1 in #t81.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t82 = n1 in #t82.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
+  let final self::Class1? #t83 = n1 in #t83.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t84 = n1 in #t84.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
+  let final self::Class1? #t87 = n1 in #t87.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
+  nullable1 = let final self::Class1? #t90 = n1 in #t90.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
+  let final self::Class1? #t95 = n1 in #t95.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t96 = n1 in #t96.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
+  let final self::Class1? #t99 = n1 in #t99.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
+  nullable1 = let final self::Class1? #t102 = n1 in #t102.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
+  let final self::Class1? #t107 = n1 in #t107.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
+  nullable1 = let final self::Class1? #t112 = n1 in #t112.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
+  let final self::Class1? #t119 = n1 in #t119.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
+  nullable1 = let final self::Class1? #t122 = n1 in #t122.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
+  let final self::Class1? #t127 = n1 in #t127.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t128 = n1 in #t128.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
+  let final self::Class1? #t131 = n1 in #t131.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
+  nullable1 = let final self::Class1? #t134 = n1 in #t134.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
+  let final self::Class1? #t139 = n1 in #t139.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t140 = n1 in #t140.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
+  let final self::Class1? #t143 = n1 in #t143.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
+  let final self::Class1? #t144 = n1 in #t144.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t145 = n1 in #t145.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
+  let final self::Class1? #t148 = n1 in #t148.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
+  let final self::Class1? #t149 = n1 in #t149.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t150 = n1 in #t150.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
+  let final self::Class1? #t153 = n1 in #t153.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
+  nullable1 = let final self::Class1? #t156 = n1 in #t156.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
+  let final self::Class1? #t161 = n1 in #t161.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t162 = n1 in #t162.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
+  let final self::Class1? #t165 = n1 in #t165.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
+  let final self::Class1? #t166 = n1 in #t166.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t167 = n1 in #t167.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
+  let final self::Class1? #t168 = n1 in #t168.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
 }
 static method indexAccess(self::Class1? n1, self::Class2? n2, self::Class3? n3) → void {
   self::Class1? nullable1 = n1;
   self::Class2? nullable2 = n2;
   self::Class3? nullable3 = n3;
-  let final self::Class1? #t170 = n1 in #t170 == null ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
-  let final self::Class1? #t171 = n1 in #t171 == null ?{self::Class1?} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
-  let final self::Class1? #t172 = n1 in #t172 == null ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
-  let final self::Class1? #t174 = n1 in #t174 == null ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
-  let final self::Class1? #t175 = n1 in #t175 == null ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t176 = n1 in #t176 == null ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
-  let final self::Class1? #t181 = n1 in #t181 == null ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
-  let final self::Class1? #t183 = n1 in #t183 == null ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
-  nullable2 = let final self::Class1? #t186 = n1 in #t186 == null ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
-  let final self::Class1? #t191 = n1 in #t191 == null ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192) == null ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
-  nullable1 = let final self::Class1? #t193 = n1 in #t193 == null ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195 == null ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
-  let final self::Class2? #t198 = n2 in #t198 == null ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
-  nullable2 = let final self::Class2? #t200 = n2 in #t200 == null ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
-  let final self::Class2? #t204 = n2 in #t204 == null ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
-  nullable2 = let final self::Class2? #t206 = n2 in #t206 == null ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
-  let final self::Class2? #t210 = n2 in #t210 == null ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
-  nullable2 = let final self::Class2? #t212 = n2 in #t212 == null ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
-  let final self::Class2? #t216 = n2 in #t216 == null ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
-  nullable2 = let final self::Class2? #t220 = n2 in #t220 == null ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
-  let final self::Class1? #t224 = n1 in #t224 == null ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
-  nullable2 = let final self::Class1? #t227 = n1 in #t227 == null ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
-  let final self::Class1? #t232 = n1 in #t232 == null ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
-  nullable2 = let final self::Class1? #t237 = n1 in #t237 == null ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
-  let final self::Class1? #t242 = n1 in #t242 == null ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
-  let final self::Class1? #t243 = n1 in #t243 == null ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
-  nullable2 = let final self::Class1? #t244 = n1 in #t244 == null ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
-  let final self::Class1? #t249 = n1 in #t249 == null ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250 == null ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
-  let final self::Class1? #t251 = n1 in #t251 == null ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
-  nullable2 = let final self::Class1? #t254 = n1 in #t254 == null ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
-  let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
-  nullable2 = let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
-  let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
-  nullable2 = let final self::Class1? #t272 = n1 in #t272 == null ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
-  let final self::Class1? #t277 = n1 in #t277 == null ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278 == null ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
-  let final self::Class1? #t279 = n1 in #t279 == null ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280 == null ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t281 = n1 in #t281 == null ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282 == null ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
-  let final self::Class1? #t286 = n1 in #t286 == null ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287 == null ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
-  nullable1 = let final self::Class1? #t289 = n1 in #t289 == null ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290 == null ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
-  let final self::Class1? #t292 = n1 in #t292 == null ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293 == null ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294) == null ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
-  nullable1 = let final self::Class1? #t295 = n1 in #t295 == null ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296 == null ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298 == null ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
-  let final self::Class3? #t301 = n3 in #t301 == null ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302 == null ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
-  nullable2 = let final self::Class3? #t304 = n3 in #t304 == null ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305 == null ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
-  let final self::Class3? #t309 = n3 in #t309 == null ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310 == null ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
-  nullable2 = let final self::Class3? #t312 = n3 in #t312 == null ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313 == null ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
-  let final self::Class3? #t317 = n3 in #t317 == null ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318 == null ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
-  nullable2 = let final self::Class3? #t322 = n3 in #t322 == null ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323 == null ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
+  let final self::Class1? #t170 = n1 in #t170.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
+  let final self::Class1? #t171 = n1 in #t171.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
+  let final self::Class1? #t172 = n1 in #t172.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
+  let final self::Class1? #t174 = n1 in #t174.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
+  let final self::Class1? #t175 = n1 in #t175.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t176 = n1 in #t176.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
+  let final self::Class1? #t181 = n1 in #t181.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
+  let final self::Class1? #t183 = n1 in #t183.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
+  nullable2 = let final self::Class1? #t186 = n1 in #t186.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
+  let final self::Class1? #t191 = n1 in #t191.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
+  nullable1 = let final self::Class1? #t193 = n1 in #t193.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
+  let final self::Class2? #t198 = n2 in #t198.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
+  nullable2 = let final self::Class2? #t200 = n2 in #t200.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
+  let final self::Class2? #t204 = n2 in #t204.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
+  nullable2 = let final self::Class2? #t206 = n2 in #t206.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
+  let final self::Class2? #t210 = n2 in #t210.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
+  nullable2 = let final self::Class2? #t212 = n2 in #t212.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
+  let final self::Class2? #t216 = n2 in #t216.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
+  nullable2 = let final self::Class2? #t220 = n2 in #t220.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
+  let final self::Class1? #t224 = n1 in #t224.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
+  nullable2 = let final self::Class1? #t227 = n1 in #t227.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
+  let final self::Class1? #t232 = n1 in #t232.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
+  nullable2 = let final self::Class1? #t237 = n1 in #t237.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
+  let final self::Class1? #t242 = n1 in #t242.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
+  let final self::Class1? #t243 = n1 in #t243.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
+  nullable2 = let final self::Class1? #t244 = n1 in #t244.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
+  let final self::Class1? #t249 = n1 in #t249.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
+  let final self::Class1? #t251 = n1 in #t251.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
+  nullable2 = let final self::Class1? #t254 = n1 in #t254.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
+  let final self::Class1? #t259 = n1 in #t259.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
+  nullable2 = let final self::Class1? #t262 = n1 in #t262.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
+  let final self::Class1? #t267 = n1 in #t267.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
+  nullable2 = let final self::Class1? #t272 = n1 in #t272.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
+  let final self::Class1? #t277 = n1 in #t277.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
+  let final self::Class1? #t279 = n1 in #t279.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t281 = n1 in #t281.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
+  let final self::Class1? #t286 = n1 in #t286.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
+  nullable1 = let final self::Class1? #t289 = n1 in #t289.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
+  let final self::Class1? #t292 = n1 in #t292.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
+  nullable1 = let final self::Class1? #t295 = n1 in #t295.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
+  let final self::Class3? #t301 = n3 in #t301.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
+  nullable2 = let final self::Class3? #t304 = n3 in #t304.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
+  let final self::Class3? #t309 = n3 in #t309.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
+  nullable2 = let final self::Class3? #t312 = n3 in #t312.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
+  let final self::Class3? #t317 = n3 in #t317.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
+  nullable2 = let final self::Class3? #t322 = n3 in #t322.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
 }
 static method operatorAccess(self::Class1? n1, self::Class2? n2) → void {
   self::Class2? nullable2 = n2;
   self::throws(() → void => let final Never #t327 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:226:33: Error: Operator '+' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
   throws(() => n1?.nonNullable1 + 0);
-                                ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
+                                ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
   self::throws(() → void => let final Never #t329 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:227:16: Error: Operator 'unary-' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
   throws(() => -n1?.nonNullable1);
-               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
-  let final self::Class2? #t331 = n2 in #t331 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331, self::Extension2|+(self::Extension2|get#nonNullable2(#t331), 0));
-  nullable2 = let final self::Class2? #t332 = n2 in #t332 == null ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332, #t333) in #t333;
-  let final self::Class2? #t335 = n2 in #t335 == null ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
-  nullable2 = let final self::Class2? #t337 = n2 in #t337 == null ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
-  let final self::Class2? #t341 = n2 in #t341 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341, self::Extension2|+(self::Extension2|get#nonNullable2(#t341), 1));
-  nullable2 = let final self::Class2? #t342 = n2 in #t342 == null ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342) in let final void #t344 = self::Extension2|set#nonNullable2(#t342, self::Extension2|+(#t343, 1)) in #t343;
-  let final self::Class2? #t345 = n2 in #t345 == null ?{self::Class2?} null : let final self::Class2 #t346 = self::Extension2|+(self::Extension2|get#nonNullable2(#t345), 1) in let final void #t347 = self::Extension2|set#nonNullable2(#t345, #t346) in #t346;
-  nullable2 = let final self::Class2? #t348 = n2 in #t348 == null ?{self::Class2?} null : let final self::Class2 #t349 = self::Extension2|+(self::Extension2|get#nonNullable2(#t348), 1) in let final void #t350 = self::Extension2|set#nonNullable2(#t348, #t349) in #t349;
+               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
+  let final self::Class2? #t331 = n2 in #t331.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331, self::Extension2|+(self::Extension2|get#nonNullable2(#t331), 0));
+  nullable2 = let final self::Class2? #t332 = n2 in #t332.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332, #t333) in #t333;
+  let final self::Class2? #t335 = n2 in #t335.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
+  nullable2 = let final self::Class2? #t337 = n2 in #t337.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
+  let final self::Class2? #t341 = n2 in #t341.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341, self::Extension2|+(self::Extension2|get#nonNullable2(#t341), 1));
+  nullable2 = let final self::Class2? #t342 = n2 in #t342.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342) in let final void #t344 = self::Extension2|set#nonNullable2(#t342, self::Extension2|+(#t343, 1)) in #t343;
+  let final self::Class2? #t345 = n2 in #t345.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t346 = self::Extension2|+(self::Extension2|get#nonNullable2(#t345), 1) in let final void #t347 = self::Extension2|set#nonNullable2(#t345, #t346) in #t346;
+  nullable2 = let final self::Class2? #t348 = n2 in #t348.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t349 = self::Extension2|+(self::Extension2|get#nonNullable2(#t348), 1) in let final void #t350 = self::Extension2|set#nonNullable2(#t348, #t349) in #t349;
 }
 static method ifNull(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t351 = n1 in #t351 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t351) == null ?{self::Class1} self::Extension1|set#nullable1(#t351, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1? #t353 = self::Extension1|get#nullable1(#t352) in #t353 == null ?{self::Class1} let final self::Class1 #t354 = n1{self::Class1} in let final void #t355 = self::Extension1|set#nullable1(#t352, #t354) in #t354 : #t353{self::Class1};
-  let final self::Class1? #t356 = n1 in #t356 == null ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in self::Extension1|get#nullable1(#t357) == null ?{self::Class1} self::Extension1|set#nullable1(#t357, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t358 = n1 in #t358 == null ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in let final self::Class1? #t360 = self::Extension1|get#nullable1(#t359) in #t360 == null ?{self::Class1} let final self::Class1 #t361 = n1{self::Class1} in let final void #t362 = self::Extension1|set#nullable1(#t359, #t361) in #t361 : #t360{self::Class1};
-  let final self::Class1? #t363 = n1 in #t363 == null ?{self::Class1?} null : let final self::Class1 #t364 = self::Extension1|get#nonNullable1(#t363{self::Class1}) in let final self::Class1 #t365 = n1{self::Class1} in self::Extension1|[](#t364, #t365) == null ?{self::Class1} self::Extension1|[]=(#t364, #t365, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t366 = n1 in #t366 == null ?{self::Class1?} null : let final self::Class1 #t367 = self::Extension1|get#nonNullable1(#t366{self::Class1}) in let final self::Class1 #t368 = n1{self::Class1} in let final self::Class1? #t369 = self::Extension1|[](#t367, #t368) in #t369 == null ?{self::Class1} let final self::Class1 #t370 = n1{self::Class1} in let final void #t371 = self::Extension1|[]=(#t367, #t368, #t370) in #t370 : #t369{self::Class1};
+  let final self::Class1? #t351 = n1 in #t351.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t351).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t351, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t352 = n1 in #t352.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t353 = self::Extension1|get#nullable1(#t352) in #t353.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t354 = n1{self::Class1} in let final void #t355 = self::Extension1|set#nullable1(#t352, #t354) in #t354 : #t353{self::Class1};
+  let final self::Class1? #t356 = n1 in #t356.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in self::Extension1|get#nullable1(#t357).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t357, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t358 = n1 in #t358.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in let final self::Class1? #t360 = self::Extension1|get#nullable1(#t359) in #t360.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t361 = n1{self::Class1} in let final void #t362 = self::Extension1|set#nullable1(#t359, #t361) in #t361 : #t360{self::Class1};
+  let final self::Class1? #t363 = n1 in #t363.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t364 = self::Extension1|get#nonNullable1(#t363{self::Class1}) in let final self::Class1 #t365 = n1{self::Class1} in self::Extension1|[](#t364, #t365).{core::Object::==}(null) ?{self::Class1} self::Extension1|[]=(#t364, #t365, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t366 = n1 in #t366.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t367 = self::Extension1|get#nonNullable1(#t366{self::Class1}) in let final self::Class1 #t368 = n1{self::Class1} in let final self::Class1? #t369 = self::Extension1|[](#t367, #t368) in #t369.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t370 = n1{self::Class1} in let final void #t371 = self::Extension1|[]=(#t367, #t368, #t370) in #t370 : #t369{self::Class1};
 }
 static method throws(() → void f) → void {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.transformed.expect
index 38237dc..83c8b22 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.transformed.expect
@@ -80,7 +80,7 @@
   operator [] = self::Extension3|[];
 }
 static method Extension1|get#nullable1(lowered final self::Class1 #this) → self::Class1?
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|set#nullable1(lowered final self::Class1 #this, self::Class1? value) → void {
   #this.{self::Class1::property} = value;
 }
@@ -98,28 +98,28 @@
 static method Extension1|unary-(lowered final self::Class1 #this) → self::Class1?
   return self::Extension1|get#nullable1(#this);
 static method Extension1|get#nonNullable1(lowered final self::Class1 #this) → self::Class1
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|get#nonNullable2(lowered final self::Class1 #this) → self::Class2
-  return #this.{self::Class1::property2}{self::Class2};
+  return #this.{self::Class1::property2};
 static method Extension2|nonNullable2Method(lowered final self::Class2 #this) → self::Class2
   return self::Extension2|get#nonNullable2(#this);
 static method Extension2|get#nonNullable2Method(lowered final self::Class2 #this) → () → self::Class2
   return () → self::Class2 => self::Extension2|nonNullable2Method(#this);
 static method Extension2|[](lowered final self::Class2 #this, self::Class2? key) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|[]=(lowered final self::Class2 #this, self::Class2? key, self::Class2? value) → void
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|+(lowered final self::Class2 #this, core::int value) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|unary-(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|get#nonNullable2(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|set#nonNullable2(lowered final self::Class2 #this, self::Class2 value) → void {
   #this.{self::Class2::property} = value;
 }
 static method Extension3|[](lowered final self::Class3 #this, self::Class3? key) → self::Class2?
-  return #this.{self::Class3::property}{self::Class2?};
+  return #this.{self::Class3::property};
 static method main() → dynamic {
   self::propertyAccess(null);
   self::indexAccess(null, null, null);
@@ -128,168 +128,168 @@
 }
 static method propertyAccess(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t1 = n1 in #t1 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
-  let final self::Class1? #t2 = n1 in #t2 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
-  nullable1 = let final self::Class1? #t3 = n1 in #t3 == null ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
-  let final self::Class1? #t6 = n1 in #t6 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
-  let final self::Class1? #t7 = n1 in #t7 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
-  let final self::Class1? #t8 = n1 in #t8 == null ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
-  let final self::Class1? #t10 = n1 in #t10 == null ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
-  let final self::Class1? #t12 = n1 in #t12 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t13 = n1 in #t13 == null ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t15 = n1 in #t15 == null ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
+  let final self::Class1? #t1 = n1 in #t1.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
+  let final self::Class1? #t2 = n1 in #t2.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
+  nullable1 = let final self::Class1? #t3 = n1 in #t3.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
+  let final self::Class1? #t6 = n1 in #t6.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
+  let final self::Class1? #t7 = n1 in #t7.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
+  let final self::Class1? #t8 = n1 in #t8.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
+  let final self::Class1? #t10 = n1 in #t10.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
+  let final self::Class1? #t12 = n1 in #t12.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t13 = n1 in #t13.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t15 = n1 in #t15.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
   self::throws(() → void => let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:93:47: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nullable1 = new Class1()).nullable1);
-                                              ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20 == null ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
+                                              ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
   self::throws(() → void => let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:94:43: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nonNullable1Method()).nullable1);
-                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
-  nullable1 = let final self::Class1? #t25 = n1 in #t25 == null ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
-  nullable1 = let final self::Class1? #t28 = n1 in #t28 == null ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29 == null ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
-  nullable1 = let final self::Class1? #t32 = n1 in #t32 == null ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33 == null ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
-  let final self::Class1? #t36 = n1 in #t36 == null ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
-  let final self::Class1? #t38 = n1 in #t38 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t39 = n1 in #t39 == null ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
-  let final self::Class1? #t42 = n1 in #t42 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
-  nullable1 = let final self::Class1? #t45 = n1 in #t45 == null ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
-  let final self::Class1? #t50 = n1 in #t50 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t51 = n1 in #t51 == null ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
-  let final self::Class1? #t54 = n1 in #t54 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
-  let final self::Class1? #t55 = n1 in #t55 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t56 = n1 in #t56 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
-  let final self::Class1? #t57 = n1 in #t57 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
-  let final self::Class1? #t58 = n1 in #t58 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t59 = n1 in #t59 == null ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
-  let final self::Class1? #t62 = n1 in #t62 == null ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
-  let final self::Class1? #t64 = n1 in #t64 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t65 = n1 in #t65 == null ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
-  let final self::Class1? #t68 = n1 in #t68 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
-  nullable1 = let final self::Class1? #t71 = n1 in #t71 == null ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
-  let final self::Class1? #t76 = n1 in #t76 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t77 = n1 in #t77 == null ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
-  let final self::Class1? #t80 = n1 in #t80 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
-  let final self::Class1? #t81 = n1 in #t81 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t82 = n1 in #t82 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
-  let final self::Class1? #t83 = n1 in #t83 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t84 = n1 in #t84 == null ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
-  let final self::Class1? #t87 = n1 in #t87 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
-  nullable1 = let final self::Class1? #t90 = n1 in #t90 == null ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
-  let final self::Class1? #t95 = n1 in #t95 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t96 = n1 in #t96 == null ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
-  let final self::Class1? #t99 = n1 in #t99 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
-  nullable1 = let final self::Class1? #t102 = n1 in #t102 == null ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
-  let final self::Class1? #t107 = n1 in #t107 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
-  nullable1 = let final self::Class1? #t112 = n1 in #t112 == null ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
-  let final self::Class1? #t119 = n1 in #t119 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
-  nullable1 = let final self::Class1? #t122 = n1 in #t122 == null ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
-  let final self::Class1? #t127 = n1 in #t127 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t128 = n1 in #t128 == null ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
-  let final self::Class1? #t131 = n1 in #t131 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
-  nullable1 = let final self::Class1? #t134 = n1 in #t134 == null ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
-  let final self::Class1? #t139 = n1 in #t139 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t140 = n1 in #t140 == null ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
-  let final self::Class1? #t143 = n1 in #t143 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
-  let final self::Class1? #t144 = n1 in #t144 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t145 = n1 in #t145 == null ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
-  let final self::Class1? #t148 = n1 in #t148 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
-  let final self::Class1? #t149 = n1 in #t149 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t150 = n1 in #t150 == null ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
-  let final self::Class1? #t153 = n1 in #t153 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
-  nullable1 = let final self::Class1? #t156 = n1 in #t156 == null ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
-  let final self::Class1? #t161 = n1 in #t161 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t162 = n1 in #t162 == null ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
-  let final self::Class1? #t165 = n1 in #t165 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
-  let final self::Class1? #t166 = n1 in #t166 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t167 = n1 in #t167 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
-  let final self::Class1? #t168 = n1 in #t168 == null ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
+                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
+  nullable1 = let final self::Class1? #t25 = n1 in #t25.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
+  nullable1 = let final self::Class1? #t28 = n1 in #t28.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
+  nullable1 = let final self::Class1? #t32 = n1 in #t32.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
+  let final self::Class1? #t36 = n1 in #t36.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
+  let final self::Class1? #t38 = n1 in #t38.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t39 = n1 in #t39.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
+  let final self::Class1? #t42 = n1 in #t42.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
+  nullable1 = let final self::Class1? #t45 = n1 in #t45.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
+  let final self::Class1? #t50 = n1 in #t50.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t51 = n1 in #t51.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
+  let final self::Class1? #t54 = n1 in #t54.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
+  let final self::Class1? #t55 = n1 in #t55.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t56 = n1 in #t56.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
+  let final self::Class1? #t57 = n1 in #t57.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
+  let final self::Class1? #t58 = n1 in #t58.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t59 = n1 in #t59.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
+  let final self::Class1? #t62 = n1 in #t62.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
+  let final self::Class1? #t64 = n1 in #t64.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t65 = n1 in #t65.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
+  let final self::Class1? #t68 = n1 in #t68.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
+  nullable1 = let final self::Class1? #t71 = n1 in #t71.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
+  let final self::Class1? #t76 = n1 in #t76.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t77 = n1 in #t77.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
+  let final self::Class1? #t80 = n1 in #t80.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
+  let final self::Class1? #t81 = n1 in #t81.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t82 = n1 in #t82.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
+  let final self::Class1? #t83 = n1 in #t83.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t84 = n1 in #t84.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
+  let final self::Class1? #t87 = n1 in #t87.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
+  nullable1 = let final self::Class1? #t90 = n1 in #t90.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
+  let final self::Class1? #t95 = n1 in #t95.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t96 = n1 in #t96.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
+  let final self::Class1? #t99 = n1 in #t99.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
+  nullable1 = let final self::Class1? #t102 = n1 in #t102.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
+  let final self::Class1? #t107 = n1 in #t107.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
+  nullable1 = let final self::Class1? #t112 = n1 in #t112.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
+  let final self::Class1? #t119 = n1 in #t119.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
+  nullable1 = let final self::Class1? #t122 = n1 in #t122.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
+  let final self::Class1? #t127 = n1 in #t127.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t128 = n1 in #t128.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
+  let final self::Class1? #t131 = n1 in #t131.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
+  nullable1 = let final self::Class1? #t134 = n1 in #t134.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
+  let final self::Class1? #t139 = n1 in #t139.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t140 = n1 in #t140.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
+  let final self::Class1? #t143 = n1 in #t143.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
+  let final self::Class1? #t144 = n1 in #t144.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t145 = n1 in #t145.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
+  let final self::Class1? #t148 = n1 in #t148.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
+  let final self::Class1? #t149 = n1 in #t149.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t150 = n1 in #t150.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
+  let final self::Class1? #t153 = n1 in #t153.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
+  nullable1 = let final self::Class1? #t156 = n1 in #t156.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
+  let final self::Class1? #t161 = n1 in #t161.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t162 = n1 in #t162.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
+  let final self::Class1? #t165 = n1 in #t165.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
+  let final self::Class1? #t166 = n1 in #t166.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t167 = n1 in #t167.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
+  let final self::Class1? #t168 = n1 in #t168.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
 }
 static method indexAccess(self::Class1? n1, self::Class2? n2, self::Class3? n3) → void {
   self::Class1? nullable1 = n1;
   self::Class2? nullable2 = n2;
   self::Class3? nullable3 = n3;
-  let final self::Class1? #t170 = n1 in #t170 == null ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
-  let final self::Class1? #t171 = n1 in #t171 == null ?{self::Class1?} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
-  let final self::Class1? #t172 = n1 in #t172 == null ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
-  let final self::Class1? #t174 = n1 in #t174 == null ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
-  let final self::Class1? #t175 = n1 in #t175 == null ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t176 = n1 in #t176 == null ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
-  let final self::Class1? #t181 = n1 in #t181 == null ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
-  let final self::Class1? #t183 = n1 in #t183 == null ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
-  nullable2 = let final self::Class1? #t186 = n1 in #t186 == null ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
-  let final self::Class1? #t191 = n1 in #t191 == null ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192) == null ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
-  nullable1 = let final self::Class1? #t193 = n1 in #t193 == null ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195 == null ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
-  let final self::Class2? #t198 = n2 in #t198 == null ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
-  nullable2 = let final self::Class2? #t200 = n2 in #t200 == null ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
-  let final self::Class2? #t204 = n2 in #t204 == null ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
-  nullable2 = let final self::Class2? #t206 = n2 in #t206 == null ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
-  let final self::Class2? #t210 = n2 in #t210 == null ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
-  nullable2 = let final self::Class2? #t212 = n2 in #t212 == null ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
-  let final self::Class2? #t216 = n2 in #t216 == null ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
-  nullable2 = let final self::Class2? #t220 = n2 in #t220 == null ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
-  let final self::Class1? #t224 = n1 in #t224 == null ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
-  nullable2 = let final self::Class1? #t227 = n1 in #t227 == null ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
-  let final self::Class1? #t232 = n1 in #t232 == null ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
-  nullable2 = let final self::Class1? #t237 = n1 in #t237 == null ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
-  let final self::Class1? #t242 = n1 in #t242 == null ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
-  let final self::Class1? #t243 = n1 in #t243 == null ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
-  nullable2 = let final self::Class1? #t244 = n1 in #t244 == null ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
-  let final self::Class1? #t249 = n1 in #t249 == null ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250 == null ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
-  let final self::Class1? #t251 = n1 in #t251 == null ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
-  nullable2 = let final self::Class1? #t254 = n1 in #t254 == null ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
-  let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
-  nullable2 = let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
-  let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
-  nullable2 = let final self::Class1? #t272 = n1 in #t272 == null ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
-  let final self::Class1? #t277 = n1 in #t277 == null ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278 == null ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
-  let final self::Class1? #t279 = n1 in #t279 == null ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280 == null ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t281 = n1 in #t281 == null ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282 == null ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
-  let final self::Class1? #t286 = n1 in #t286 == null ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287 == null ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
-  nullable1 = let final self::Class1? #t289 = n1 in #t289 == null ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290 == null ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
-  let final self::Class1? #t292 = n1 in #t292 == null ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293 == null ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294) == null ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
-  nullable1 = let final self::Class1? #t295 = n1 in #t295 == null ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296 == null ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298 == null ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
-  let final self::Class3? #t301 = n3 in #t301 == null ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302 == null ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
-  nullable2 = let final self::Class3? #t304 = n3 in #t304 == null ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305 == null ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
-  let final self::Class3? #t309 = n3 in #t309 == null ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310 == null ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
-  nullable2 = let final self::Class3? #t312 = n3 in #t312 == null ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313 == null ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
-  let final self::Class3? #t317 = n3 in #t317 == null ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318 == null ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
-  nullable2 = let final self::Class3? #t322 = n3 in #t322 == null ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323 == null ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
+  let final self::Class1? #t170 = n1 in #t170.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
+  let final self::Class1? #t171 = n1 in #t171.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
+  let final self::Class1? #t172 = n1 in #t172.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
+  let final self::Class1? #t174 = n1 in #t174.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
+  let final self::Class1? #t175 = n1 in #t175.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t176 = n1 in #t176.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
+  let final self::Class1? #t181 = n1 in #t181.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
+  let final self::Class1? #t183 = n1 in #t183.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
+  nullable2 = let final self::Class1? #t186 = n1 in #t186.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
+  let final self::Class1? #t191 = n1 in #t191.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
+  nullable1 = let final self::Class1? #t193 = n1 in #t193.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
+  let final self::Class2? #t198 = n2 in #t198.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
+  nullable2 = let final self::Class2? #t200 = n2 in #t200.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
+  let final self::Class2? #t204 = n2 in #t204.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
+  nullable2 = let final self::Class2? #t206 = n2 in #t206.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
+  let final self::Class2? #t210 = n2 in #t210.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
+  nullable2 = let final self::Class2? #t212 = n2 in #t212.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
+  let final self::Class2? #t216 = n2 in #t216.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
+  nullable2 = let final self::Class2? #t220 = n2 in #t220.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
+  let final self::Class1? #t224 = n1 in #t224.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
+  nullable2 = let final self::Class1? #t227 = n1 in #t227.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
+  let final self::Class1? #t232 = n1 in #t232.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
+  nullable2 = let final self::Class1? #t237 = n1 in #t237.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
+  let final self::Class1? #t242 = n1 in #t242.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
+  let final self::Class1? #t243 = n1 in #t243.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
+  nullable2 = let final self::Class1? #t244 = n1 in #t244.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
+  let final self::Class1? #t249 = n1 in #t249.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
+  let final self::Class1? #t251 = n1 in #t251.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
+  nullable2 = let final self::Class1? #t254 = n1 in #t254.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
+  let final self::Class1? #t259 = n1 in #t259.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
+  nullable2 = let final self::Class1? #t262 = n1 in #t262.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
+  let final self::Class1? #t267 = n1 in #t267.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
+  nullable2 = let final self::Class1? #t272 = n1 in #t272.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
+  let final self::Class1? #t277 = n1 in #t277.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
+  let final self::Class1? #t279 = n1 in #t279.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t281 = n1 in #t281.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
+  let final self::Class1? #t286 = n1 in #t286.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
+  nullable1 = let final self::Class1? #t289 = n1 in #t289.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
+  let final self::Class1? #t292 = n1 in #t292.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
+  nullable1 = let final self::Class1? #t295 = n1 in #t295.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
+  let final self::Class3? #t301 = n3 in #t301.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
+  nullable2 = let final self::Class3? #t304 = n3 in #t304.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
+  let final self::Class3? #t309 = n3 in #t309.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
+  nullable2 = let final self::Class3? #t312 = n3 in #t312.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
+  let final self::Class3? #t317 = n3 in #t317.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
+  nullable2 = let final self::Class3? #t322 = n3 in #t322.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
 }
 static method operatorAccess(self::Class1? n1, self::Class2? n2) → void {
   self::Class2? nullable2 = n2;
   self::throws(() → void => let final Never #t327 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:226:33: Error: Operator '+' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
   throws(() => n1?.nonNullable1 + 0);
-                                ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
+                                ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
   self::throws(() → void => let final Never #t329 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:227:16: Error: Operator 'unary-' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
   throws(() => -n1?.nonNullable1);
-               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
-  let final self::Class2? #t331 = n2 in #t331 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331, self::Extension2|+(self::Extension2|get#nonNullable2(#t331), 0));
-  nullable2 = let final self::Class2? #t332 = n2 in #t332 == null ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332, #t333) in #t333;
-  let final self::Class2? #t335 = n2 in #t335 == null ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
-  nullable2 = let final self::Class2? #t337 = n2 in #t337 == null ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
-  let final self::Class2? #t341 = n2 in #t341 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341, self::Extension2|+(self::Extension2|get#nonNullable2(#t341), 1));
-  nullable2 = let final self::Class2? #t342 = n2 in #t342 == null ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342) in let final void #t344 = self::Extension2|set#nonNullable2(#t342, self::Extension2|+(#t343, 1)) in #t343;
-  let final self::Class2? #t345 = n2 in #t345 == null ?{self::Class2?} null : let final self::Class2 #t346 = self::Extension2|+(self::Extension2|get#nonNullable2(#t345), 1) in let final void #t347 = self::Extension2|set#nonNullable2(#t345, #t346) in #t346;
-  nullable2 = let final self::Class2? #t348 = n2 in #t348 == null ?{self::Class2?} null : let final self::Class2 #t349 = self::Extension2|+(self::Extension2|get#nonNullable2(#t348), 1) in let final void #t350 = self::Extension2|set#nonNullable2(#t348, #t349) in #t349;
+               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
+  let final self::Class2? #t331 = n2 in #t331.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331, self::Extension2|+(self::Extension2|get#nonNullable2(#t331), 0));
+  nullable2 = let final self::Class2? #t332 = n2 in #t332.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332, #t333) in #t333;
+  let final self::Class2? #t335 = n2 in #t335.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
+  nullable2 = let final self::Class2? #t337 = n2 in #t337.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
+  let final self::Class2? #t341 = n2 in #t341.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341, self::Extension2|+(self::Extension2|get#nonNullable2(#t341), 1));
+  nullable2 = let final self::Class2? #t342 = n2 in #t342.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342) in let final void #t344 = self::Extension2|set#nonNullable2(#t342, self::Extension2|+(#t343, 1)) in #t343;
+  let final self::Class2? #t345 = n2 in #t345.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t346 = self::Extension2|+(self::Extension2|get#nonNullable2(#t345), 1) in let final void #t347 = self::Extension2|set#nonNullable2(#t345, #t346) in #t346;
+  nullable2 = let final self::Class2? #t348 = n2 in #t348.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t349 = self::Extension2|+(self::Extension2|get#nonNullable2(#t348), 1) in let final void #t350 = self::Extension2|set#nonNullable2(#t348, #t349) in #t349;
 }
 static method ifNull(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t351 = n1 in #t351 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t351) == null ?{self::Class1} self::Extension1|set#nullable1(#t351, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1? #t353 = self::Extension1|get#nullable1(#t352) in #t353 == null ?{self::Class1} let final self::Class1 #t354 = n1{self::Class1} in let final void #t355 = self::Extension1|set#nullable1(#t352, #t354) in #t354 : #t353{self::Class1};
-  let final self::Class1? #t356 = n1 in #t356 == null ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in self::Extension1|get#nullable1(#t357) == null ?{self::Class1} self::Extension1|set#nullable1(#t357, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t358 = n1 in #t358 == null ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in let final self::Class1? #t360 = self::Extension1|get#nullable1(#t359) in #t360 == null ?{self::Class1} let final self::Class1 #t361 = n1{self::Class1} in let final void #t362 = self::Extension1|set#nullable1(#t359, #t361) in #t361 : #t360{self::Class1};
-  let final self::Class1? #t363 = n1 in #t363 == null ?{self::Class1?} null : let final self::Class1 #t364 = self::Extension1|get#nonNullable1(#t363{self::Class1}) in let final self::Class1 #t365 = n1{self::Class1} in self::Extension1|[](#t364, #t365) == null ?{self::Class1} self::Extension1|[]=(#t364, #t365, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t366 = n1 in #t366 == null ?{self::Class1?} null : let final self::Class1 #t367 = self::Extension1|get#nonNullable1(#t366{self::Class1}) in let final self::Class1 #t368 = n1{self::Class1} in let final self::Class1? #t369 = self::Extension1|[](#t367, #t368) in #t369 == null ?{self::Class1} let final self::Class1 #t370 = n1{self::Class1} in let final void #t371 = self::Extension1|[]=(#t367, #t368, #t370) in #t370 : #t369{self::Class1};
+  let final self::Class1? #t351 = n1 in #t351.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t351).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t351, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t352 = n1 in #t352.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t353 = self::Extension1|get#nullable1(#t352) in #t353.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t354 = n1{self::Class1} in let final void #t355 = self::Extension1|set#nullable1(#t352, #t354) in #t354 : #t353{self::Class1};
+  let final self::Class1? #t356 = n1 in #t356.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in self::Extension1|get#nullable1(#t357).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t357, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t358 = n1 in #t358.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in let final self::Class1? #t360 = self::Extension1|get#nullable1(#t359) in #t360.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t361 = n1{self::Class1} in let final void #t362 = self::Extension1|set#nullable1(#t359, #t361) in #t361 : #t360{self::Class1};
+  let final self::Class1? #t363 = n1 in #t363.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t364 = self::Extension1|get#nonNullable1(#t363{self::Class1}) in let final self::Class1 #t365 = n1{self::Class1} in self::Extension1|[](#t364, #t365).{core::Object::==}(null) ?{self::Class1} self::Extension1|[]=(#t364, #t365, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t366 = n1 in #t366.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t367 = self::Extension1|get#nonNullable1(#t366{self::Class1}) in let final self::Class1 #t368 = n1{self::Class1} in let final self::Class1? #t369 = self::Extension1|[](#t367, #t368) in #t369.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t370 = n1{self::Class1} in let final void #t371 = self::Extension1|[]=(#t367, #t368, #t370) in #t370 : #t369{self::Class1};
 }
 static method throws(() → void f) → void {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.expect
index 38237dc..83c8b22 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.expect
@@ -80,7 +80,7 @@
   operator [] = self::Extension3|[];
 }
 static method Extension1|get#nullable1(lowered final self::Class1 #this) → self::Class1?
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|set#nullable1(lowered final self::Class1 #this, self::Class1? value) → void {
   #this.{self::Class1::property} = value;
 }
@@ -98,28 +98,28 @@
 static method Extension1|unary-(lowered final self::Class1 #this) → self::Class1?
   return self::Extension1|get#nullable1(#this);
 static method Extension1|get#nonNullable1(lowered final self::Class1 #this) → self::Class1
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|get#nonNullable2(lowered final self::Class1 #this) → self::Class2
-  return #this.{self::Class1::property2}{self::Class2};
+  return #this.{self::Class1::property2};
 static method Extension2|nonNullable2Method(lowered final self::Class2 #this) → self::Class2
   return self::Extension2|get#nonNullable2(#this);
 static method Extension2|get#nonNullable2Method(lowered final self::Class2 #this) → () → self::Class2
   return () → self::Class2 => self::Extension2|nonNullable2Method(#this);
 static method Extension2|[](lowered final self::Class2 #this, self::Class2? key) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|[]=(lowered final self::Class2 #this, self::Class2? key, self::Class2? value) → void
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|+(lowered final self::Class2 #this, core::int value) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|unary-(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|get#nonNullable2(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|set#nonNullable2(lowered final self::Class2 #this, self::Class2 value) → void {
   #this.{self::Class2::property} = value;
 }
 static method Extension3|[](lowered final self::Class3 #this, self::Class3? key) → self::Class2?
-  return #this.{self::Class3::property}{self::Class2?};
+  return #this.{self::Class3::property};
 static method main() → dynamic {
   self::propertyAccess(null);
   self::indexAccess(null, null, null);
@@ -128,168 +128,168 @@
 }
 static method propertyAccess(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t1 = n1 in #t1 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
-  let final self::Class1? #t2 = n1 in #t2 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
-  nullable1 = let final self::Class1? #t3 = n1 in #t3 == null ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
-  let final self::Class1? #t6 = n1 in #t6 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
-  let final self::Class1? #t7 = n1 in #t7 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
-  let final self::Class1? #t8 = n1 in #t8 == null ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
-  let final self::Class1? #t10 = n1 in #t10 == null ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
-  let final self::Class1? #t12 = n1 in #t12 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t13 = n1 in #t13 == null ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t15 = n1 in #t15 == null ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
+  let final self::Class1? #t1 = n1 in #t1.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
+  let final self::Class1? #t2 = n1 in #t2.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
+  nullable1 = let final self::Class1? #t3 = n1 in #t3.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
+  let final self::Class1? #t6 = n1 in #t6.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
+  let final self::Class1? #t7 = n1 in #t7.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
+  let final self::Class1? #t8 = n1 in #t8.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
+  let final self::Class1? #t10 = n1 in #t10.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
+  let final self::Class1? #t12 = n1 in #t12.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t13 = n1 in #t13.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t15 = n1 in #t15.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
   self::throws(() → void => let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:93:47: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nullable1 = new Class1()).nullable1);
-                                              ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20 == null ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
+                                              ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
   self::throws(() → void => let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:94:43: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nonNullable1Method()).nullable1);
-                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
-  nullable1 = let final self::Class1? #t25 = n1 in #t25 == null ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
-  nullable1 = let final self::Class1? #t28 = n1 in #t28 == null ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29 == null ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
-  nullable1 = let final self::Class1? #t32 = n1 in #t32 == null ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33 == null ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
-  let final self::Class1? #t36 = n1 in #t36 == null ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
-  let final self::Class1? #t38 = n1 in #t38 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t39 = n1 in #t39 == null ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
-  let final self::Class1? #t42 = n1 in #t42 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
-  nullable1 = let final self::Class1? #t45 = n1 in #t45 == null ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
-  let final self::Class1? #t50 = n1 in #t50 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t51 = n1 in #t51 == null ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
-  let final self::Class1? #t54 = n1 in #t54 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
-  let final self::Class1? #t55 = n1 in #t55 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t56 = n1 in #t56 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
-  let final self::Class1? #t57 = n1 in #t57 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
-  let final self::Class1? #t58 = n1 in #t58 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t59 = n1 in #t59 == null ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
-  let final self::Class1? #t62 = n1 in #t62 == null ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
-  let final self::Class1? #t64 = n1 in #t64 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t65 = n1 in #t65 == null ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
-  let final self::Class1? #t68 = n1 in #t68 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
-  nullable1 = let final self::Class1? #t71 = n1 in #t71 == null ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
-  let final self::Class1? #t76 = n1 in #t76 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t77 = n1 in #t77 == null ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
-  let final self::Class1? #t80 = n1 in #t80 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
-  let final self::Class1? #t81 = n1 in #t81 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t82 = n1 in #t82 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
-  let final self::Class1? #t83 = n1 in #t83 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t84 = n1 in #t84 == null ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
-  let final self::Class1? #t87 = n1 in #t87 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
-  nullable1 = let final self::Class1? #t90 = n1 in #t90 == null ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
-  let final self::Class1? #t95 = n1 in #t95 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t96 = n1 in #t96 == null ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
-  let final self::Class1? #t99 = n1 in #t99 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
-  nullable1 = let final self::Class1? #t102 = n1 in #t102 == null ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
-  let final self::Class1? #t107 = n1 in #t107 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
-  nullable1 = let final self::Class1? #t112 = n1 in #t112 == null ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
-  let final self::Class1? #t119 = n1 in #t119 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
-  nullable1 = let final self::Class1? #t122 = n1 in #t122 == null ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
-  let final self::Class1? #t127 = n1 in #t127 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t128 = n1 in #t128 == null ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
-  let final self::Class1? #t131 = n1 in #t131 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
-  nullable1 = let final self::Class1? #t134 = n1 in #t134 == null ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
-  let final self::Class1? #t139 = n1 in #t139 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t140 = n1 in #t140 == null ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
-  let final self::Class1? #t143 = n1 in #t143 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
-  let final self::Class1? #t144 = n1 in #t144 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t145 = n1 in #t145 == null ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
-  let final self::Class1? #t148 = n1 in #t148 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
-  let final self::Class1? #t149 = n1 in #t149 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t150 = n1 in #t150 == null ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
-  let final self::Class1? #t153 = n1 in #t153 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
-  nullable1 = let final self::Class1? #t156 = n1 in #t156 == null ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
-  let final self::Class1? #t161 = n1 in #t161 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t162 = n1 in #t162 == null ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
-  let final self::Class1? #t165 = n1 in #t165 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
-  let final self::Class1? #t166 = n1 in #t166 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t167 = n1 in #t167 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
-  let final self::Class1? #t168 = n1 in #t168 == null ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
+                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
+  nullable1 = let final self::Class1? #t25 = n1 in #t25.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
+  nullable1 = let final self::Class1? #t28 = n1 in #t28.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
+  nullable1 = let final self::Class1? #t32 = n1 in #t32.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
+  let final self::Class1? #t36 = n1 in #t36.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
+  let final self::Class1? #t38 = n1 in #t38.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t39 = n1 in #t39.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
+  let final self::Class1? #t42 = n1 in #t42.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
+  nullable1 = let final self::Class1? #t45 = n1 in #t45.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
+  let final self::Class1? #t50 = n1 in #t50.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t51 = n1 in #t51.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
+  let final self::Class1? #t54 = n1 in #t54.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
+  let final self::Class1? #t55 = n1 in #t55.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t56 = n1 in #t56.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
+  let final self::Class1? #t57 = n1 in #t57.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
+  let final self::Class1? #t58 = n1 in #t58.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t59 = n1 in #t59.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
+  let final self::Class1? #t62 = n1 in #t62.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
+  let final self::Class1? #t64 = n1 in #t64.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t65 = n1 in #t65.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
+  let final self::Class1? #t68 = n1 in #t68.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
+  nullable1 = let final self::Class1? #t71 = n1 in #t71.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
+  let final self::Class1? #t76 = n1 in #t76.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t77 = n1 in #t77.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
+  let final self::Class1? #t80 = n1 in #t80.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
+  let final self::Class1? #t81 = n1 in #t81.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t82 = n1 in #t82.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
+  let final self::Class1? #t83 = n1 in #t83.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t84 = n1 in #t84.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
+  let final self::Class1? #t87 = n1 in #t87.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
+  nullable1 = let final self::Class1? #t90 = n1 in #t90.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
+  let final self::Class1? #t95 = n1 in #t95.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t96 = n1 in #t96.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
+  let final self::Class1? #t99 = n1 in #t99.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
+  nullable1 = let final self::Class1? #t102 = n1 in #t102.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
+  let final self::Class1? #t107 = n1 in #t107.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
+  nullable1 = let final self::Class1? #t112 = n1 in #t112.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
+  let final self::Class1? #t119 = n1 in #t119.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
+  nullable1 = let final self::Class1? #t122 = n1 in #t122.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
+  let final self::Class1? #t127 = n1 in #t127.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t128 = n1 in #t128.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
+  let final self::Class1? #t131 = n1 in #t131.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
+  nullable1 = let final self::Class1? #t134 = n1 in #t134.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
+  let final self::Class1? #t139 = n1 in #t139.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t140 = n1 in #t140.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
+  let final self::Class1? #t143 = n1 in #t143.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
+  let final self::Class1? #t144 = n1 in #t144.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t145 = n1 in #t145.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
+  let final self::Class1? #t148 = n1 in #t148.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
+  let final self::Class1? #t149 = n1 in #t149.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t150 = n1 in #t150.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
+  let final self::Class1? #t153 = n1 in #t153.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
+  nullable1 = let final self::Class1? #t156 = n1 in #t156.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
+  let final self::Class1? #t161 = n1 in #t161.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t162 = n1 in #t162.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
+  let final self::Class1? #t165 = n1 in #t165.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
+  let final self::Class1? #t166 = n1 in #t166.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t167 = n1 in #t167.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
+  let final self::Class1? #t168 = n1 in #t168.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
 }
 static method indexAccess(self::Class1? n1, self::Class2? n2, self::Class3? n3) → void {
   self::Class1? nullable1 = n1;
   self::Class2? nullable2 = n2;
   self::Class3? nullable3 = n3;
-  let final self::Class1? #t170 = n1 in #t170 == null ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
-  let final self::Class1? #t171 = n1 in #t171 == null ?{self::Class1?} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
-  let final self::Class1? #t172 = n1 in #t172 == null ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
-  let final self::Class1? #t174 = n1 in #t174 == null ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
-  let final self::Class1? #t175 = n1 in #t175 == null ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t176 = n1 in #t176 == null ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
-  let final self::Class1? #t181 = n1 in #t181 == null ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
-  let final self::Class1? #t183 = n1 in #t183 == null ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
-  nullable2 = let final self::Class1? #t186 = n1 in #t186 == null ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
-  let final self::Class1? #t191 = n1 in #t191 == null ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192) == null ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
-  nullable1 = let final self::Class1? #t193 = n1 in #t193 == null ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195 == null ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
-  let final self::Class2? #t198 = n2 in #t198 == null ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
-  nullable2 = let final self::Class2? #t200 = n2 in #t200 == null ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
-  let final self::Class2? #t204 = n2 in #t204 == null ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
-  nullable2 = let final self::Class2? #t206 = n2 in #t206 == null ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
-  let final self::Class2? #t210 = n2 in #t210 == null ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
-  nullable2 = let final self::Class2? #t212 = n2 in #t212 == null ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
-  let final self::Class2? #t216 = n2 in #t216 == null ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
-  nullable2 = let final self::Class2? #t220 = n2 in #t220 == null ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
-  let final self::Class1? #t224 = n1 in #t224 == null ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
-  nullable2 = let final self::Class1? #t227 = n1 in #t227 == null ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
-  let final self::Class1? #t232 = n1 in #t232 == null ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
-  nullable2 = let final self::Class1? #t237 = n1 in #t237 == null ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
-  let final self::Class1? #t242 = n1 in #t242 == null ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
-  let final self::Class1? #t243 = n1 in #t243 == null ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
-  nullable2 = let final self::Class1? #t244 = n1 in #t244 == null ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
-  let final self::Class1? #t249 = n1 in #t249 == null ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250 == null ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
-  let final self::Class1? #t251 = n1 in #t251 == null ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
-  nullable2 = let final self::Class1? #t254 = n1 in #t254 == null ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
-  let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
-  nullable2 = let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
-  let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
-  nullable2 = let final self::Class1? #t272 = n1 in #t272 == null ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
-  let final self::Class1? #t277 = n1 in #t277 == null ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278 == null ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
-  let final self::Class1? #t279 = n1 in #t279 == null ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280 == null ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t281 = n1 in #t281 == null ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282 == null ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
-  let final self::Class1? #t286 = n1 in #t286 == null ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287 == null ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
-  nullable1 = let final self::Class1? #t289 = n1 in #t289 == null ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290 == null ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
-  let final self::Class1? #t292 = n1 in #t292 == null ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293 == null ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294) == null ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
-  nullable1 = let final self::Class1? #t295 = n1 in #t295 == null ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296 == null ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298 == null ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
-  let final self::Class3? #t301 = n3 in #t301 == null ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302 == null ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
-  nullable2 = let final self::Class3? #t304 = n3 in #t304 == null ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305 == null ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
-  let final self::Class3? #t309 = n3 in #t309 == null ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310 == null ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
-  nullable2 = let final self::Class3? #t312 = n3 in #t312 == null ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313 == null ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
-  let final self::Class3? #t317 = n3 in #t317 == null ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318 == null ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
-  nullable2 = let final self::Class3? #t322 = n3 in #t322 == null ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323 == null ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
+  let final self::Class1? #t170 = n1 in #t170.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
+  let final self::Class1? #t171 = n1 in #t171.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
+  let final self::Class1? #t172 = n1 in #t172.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
+  let final self::Class1? #t174 = n1 in #t174.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
+  let final self::Class1? #t175 = n1 in #t175.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t176 = n1 in #t176.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
+  let final self::Class1? #t181 = n1 in #t181.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
+  let final self::Class1? #t183 = n1 in #t183.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
+  nullable2 = let final self::Class1? #t186 = n1 in #t186.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
+  let final self::Class1? #t191 = n1 in #t191.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
+  nullable1 = let final self::Class1? #t193 = n1 in #t193.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
+  let final self::Class2? #t198 = n2 in #t198.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
+  nullable2 = let final self::Class2? #t200 = n2 in #t200.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
+  let final self::Class2? #t204 = n2 in #t204.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
+  nullable2 = let final self::Class2? #t206 = n2 in #t206.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
+  let final self::Class2? #t210 = n2 in #t210.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
+  nullable2 = let final self::Class2? #t212 = n2 in #t212.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
+  let final self::Class2? #t216 = n2 in #t216.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
+  nullable2 = let final self::Class2? #t220 = n2 in #t220.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
+  let final self::Class1? #t224 = n1 in #t224.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
+  nullable2 = let final self::Class1? #t227 = n1 in #t227.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
+  let final self::Class1? #t232 = n1 in #t232.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
+  nullable2 = let final self::Class1? #t237 = n1 in #t237.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
+  let final self::Class1? #t242 = n1 in #t242.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
+  let final self::Class1? #t243 = n1 in #t243.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
+  nullable2 = let final self::Class1? #t244 = n1 in #t244.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
+  let final self::Class1? #t249 = n1 in #t249.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
+  let final self::Class1? #t251 = n1 in #t251.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
+  nullable2 = let final self::Class1? #t254 = n1 in #t254.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
+  let final self::Class1? #t259 = n1 in #t259.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
+  nullable2 = let final self::Class1? #t262 = n1 in #t262.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
+  let final self::Class1? #t267 = n1 in #t267.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
+  nullable2 = let final self::Class1? #t272 = n1 in #t272.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
+  let final self::Class1? #t277 = n1 in #t277.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
+  let final self::Class1? #t279 = n1 in #t279.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t281 = n1 in #t281.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
+  let final self::Class1? #t286 = n1 in #t286.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
+  nullable1 = let final self::Class1? #t289 = n1 in #t289.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
+  let final self::Class1? #t292 = n1 in #t292.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
+  nullable1 = let final self::Class1? #t295 = n1 in #t295.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
+  let final self::Class3? #t301 = n3 in #t301.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
+  nullable2 = let final self::Class3? #t304 = n3 in #t304.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
+  let final self::Class3? #t309 = n3 in #t309.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
+  nullable2 = let final self::Class3? #t312 = n3 in #t312.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
+  let final self::Class3? #t317 = n3 in #t317.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
+  nullable2 = let final self::Class3? #t322 = n3 in #t322.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
 }
 static method operatorAccess(self::Class1? n1, self::Class2? n2) → void {
   self::Class2? nullable2 = n2;
   self::throws(() → void => let final Never #t327 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:226:33: Error: Operator '+' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
   throws(() => n1?.nonNullable1 + 0);
-                                ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
+                                ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
   self::throws(() → void => let final Never #t329 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:227:16: Error: Operator 'unary-' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
   throws(() => -n1?.nonNullable1);
-               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
-  let final self::Class2? #t331 = n2 in #t331 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331, self::Extension2|+(self::Extension2|get#nonNullable2(#t331), 0));
-  nullable2 = let final self::Class2? #t332 = n2 in #t332 == null ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332, #t333) in #t333;
-  let final self::Class2? #t335 = n2 in #t335 == null ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
-  nullable2 = let final self::Class2? #t337 = n2 in #t337 == null ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
-  let final self::Class2? #t341 = n2 in #t341 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341, self::Extension2|+(self::Extension2|get#nonNullable2(#t341), 1));
-  nullable2 = let final self::Class2? #t342 = n2 in #t342 == null ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342) in let final void #t344 = self::Extension2|set#nonNullable2(#t342, self::Extension2|+(#t343, 1)) in #t343;
-  let final self::Class2? #t345 = n2 in #t345 == null ?{self::Class2?} null : let final self::Class2 #t346 = self::Extension2|+(self::Extension2|get#nonNullable2(#t345), 1) in let final void #t347 = self::Extension2|set#nonNullable2(#t345, #t346) in #t346;
-  nullable2 = let final self::Class2? #t348 = n2 in #t348 == null ?{self::Class2?} null : let final self::Class2 #t349 = self::Extension2|+(self::Extension2|get#nonNullable2(#t348), 1) in let final void #t350 = self::Extension2|set#nonNullable2(#t348, #t349) in #t349;
+               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
+  let final self::Class2? #t331 = n2 in #t331.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331, self::Extension2|+(self::Extension2|get#nonNullable2(#t331), 0));
+  nullable2 = let final self::Class2? #t332 = n2 in #t332.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332, #t333) in #t333;
+  let final self::Class2? #t335 = n2 in #t335.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
+  nullable2 = let final self::Class2? #t337 = n2 in #t337.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
+  let final self::Class2? #t341 = n2 in #t341.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341, self::Extension2|+(self::Extension2|get#nonNullable2(#t341), 1));
+  nullable2 = let final self::Class2? #t342 = n2 in #t342.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342) in let final void #t344 = self::Extension2|set#nonNullable2(#t342, self::Extension2|+(#t343, 1)) in #t343;
+  let final self::Class2? #t345 = n2 in #t345.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t346 = self::Extension2|+(self::Extension2|get#nonNullable2(#t345), 1) in let final void #t347 = self::Extension2|set#nonNullable2(#t345, #t346) in #t346;
+  nullable2 = let final self::Class2? #t348 = n2 in #t348.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t349 = self::Extension2|+(self::Extension2|get#nonNullable2(#t348), 1) in let final void #t350 = self::Extension2|set#nonNullable2(#t348, #t349) in #t349;
 }
 static method ifNull(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t351 = n1 in #t351 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t351) == null ?{self::Class1} self::Extension1|set#nullable1(#t351, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1? #t353 = self::Extension1|get#nullable1(#t352) in #t353 == null ?{self::Class1} let final self::Class1 #t354 = n1{self::Class1} in let final void #t355 = self::Extension1|set#nullable1(#t352, #t354) in #t354 : #t353{self::Class1};
-  let final self::Class1? #t356 = n1 in #t356 == null ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in self::Extension1|get#nullable1(#t357) == null ?{self::Class1} self::Extension1|set#nullable1(#t357, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t358 = n1 in #t358 == null ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in let final self::Class1? #t360 = self::Extension1|get#nullable1(#t359) in #t360 == null ?{self::Class1} let final self::Class1 #t361 = n1{self::Class1} in let final void #t362 = self::Extension1|set#nullable1(#t359, #t361) in #t361 : #t360{self::Class1};
-  let final self::Class1? #t363 = n1 in #t363 == null ?{self::Class1?} null : let final self::Class1 #t364 = self::Extension1|get#nonNullable1(#t363{self::Class1}) in let final self::Class1 #t365 = n1{self::Class1} in self::Extension1|[](#t364, #t365) == null ?{self::Class1} self::Extension1|[]=(#t364, #t365, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t366 = n1 in #t366 == null ?{self::Class1?} null : let final self::Class1 #t367 = self::Extension1|get#nonNullable1(#t366{self::Class1}) in let final self::Class1 #t368 = n1{self::Class1} in let final self::Class1? #t369 = self::Extension1|[](#t367, #t368) in #t369 == null ?{self::Class1} let final self::Class1 #t370 = n1{self::Class1} in let final void #t371 = self::Extension1|[]=(#t367, #t368, #t370) in #t370 : #t369{self::Class1};
+  let final self::Class1? #t351 = n1 in #t351.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t351).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t351, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t352 = n1 in #t352.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t353 = self::Extension1|get#nullable1(#t352) in #t353.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t354 = n1{self::Class1} in let final void #t355 = self::Extension1|set#nullable1(#t352, #t354) in #t354 : #t353{self::Class1};
+  let final self::Class1? #t356 = n1 in #t356.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in self::Extension1|get#nullable1(#t357).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t357, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t358 = n1 in #t358.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in let final self::Class1? #t360 = self::Extension1|get#nullable1(#t359) in #t360.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t361 = n1{self::Class1} in let final void #t362 = self::Extension1|set#nullable1(#t359, #t361) in #t361 : #t360{self::Class1};
+  let final self::Class1? #t363 = n1 in #t363.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t364 = self::Extension1|get#nonNullable1(#t363{self::Class1}) in let final self::Class1 #t365 = n1{self::Class1} in self::Extension1|[](#t364, #t365).{core::Object::==}(null) ?{self::Class1} self::Extension1|[]=(#t364, #t365, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t366 = n1 in #t366.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t367 = self::Extension1|get#nonNullable1(#t366{self::Class1}) in let final self::Class1 #t368 = n1{self::Class1} in let final self::Class1? #t369 = self::Extension1|[](#t367, #t368) in #t369.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t370 = n1{self::Class1} in let final void #t371 = self::Extension1|[]=(#t367, #t368, #t370) in #t370 : #t369{self::Class1};
 }
 static method throws(() → void f) → void {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.transformed.expect
index 38237dc..83c8b22 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.transformed.expect
@@ -80,7 +80,7 @@
   operator [] = self::Extension3|[];
 }
 static method Extension1|get#nullable1(lowered final self::Class1 #this) → self::Class1?
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|set#nullable1(lowered final self::Class1 #this, self::Class1? value) → void {
   #this.{self::Class1::property} = value;
 }
@@ -98,28 +98,28 @@
 static method Extension1|unary-(lowered final self::Class1 #this) → self::Class1?
   return self::Extension1|get#nullable1(#this);
 static method Extension1|get#nonNullable1(lowered final self::Class1 #this) → self::Class1
-  return #this.{self::Class1::property1}{self::Class1};
+  return #this.{self::Class1::property1};
 static method Extension1|get#nonNullable2(lowered final self::Class1 #this) → self::Class2
-  return #this.{self::Class1::property2}{self::Class2};
+  return #this.{self::Class1::property2};
 static method Extension2|nonNullable2Method(lowered final self::Class2 #this) → self::Class2
   return self::Extension2|get#nonNullable2(#this);
 static method Extension2|get#nonNullable2Method(lowered final self::Class2 #this) → () → self::Class2
   return () → self::Class2 => self::Extension2|nonNullable2Method(#this);
 static method Extension2|[](lowered final self::Class2 #this, self::Class2? key) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|[]=(lowered final self::Class2 #this, self::Class2? key, self::Class2? value) → void
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|+(lowered final self::Class2 #this, core::int value) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|unary-(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|get#nonNullable2(lowered final self::Class2 #this) → self::Class2
-  return #this.{self::Class2::property}{self::Class2};
+  return #this.{self::Class2::property};
 static method Extension2|set#nonNullable2(lowered final self::Class2 #this, self::Class2 value) → void {
   #this.{self::Class2::property} = value;
 }
 static method Extension3|[](lowered final self::Class3 #this, self::Class3? key) → self::Class2?
-  return #this.{self::Class3::property}{self::Class2?};
+  return #this.{self::Class3::property};
 static method main() → dynamic {
   self::propertyAccess(null);
   self::indexAccess(null, null, null);
@@ -128,168 +128,168 @@
 }
 static method propertyAccess(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t1 = n1 in #t1 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
-  let final self::Class1? #t2 = n1 in #t2 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
-  nullable1 = let final self::Class1? #t3 = n1 in #t3 == null ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
-  let final self::Class1? #t6 = n1 in #t6 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
-  let final self::Class1? #t7 = n1 in #t7 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
-  let final self::Class1? #t8 = n1 in #t8 == null ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
-  let final self::Class1? #t10 = n1 in #t10 == null ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
-  let final self::Class1? #t12 = n1 in #t12 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t13 = n1 in #t13 == null ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t15 = n1 in #t15 == null ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
-  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
+  let final self::Class1? #t1 = n1 in #t1.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t1{self::Class1});
+  let final self::Class1? #t2 = n1 in #t2.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t2{self::Class1}, new self::Class1::•());
+  nullable1 = let final self::Class1? #t3 = n1 in #t3.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t4 = new self::Class1::•() in let final void #t5 = self::Extension1|set#nullable1(#t3{self::Class1}, #t4) in #t4;
+  let final self::Class1? #t6 = n1 in #t6.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t6{self::Class1});
+  let final self::Class1? #t7 = n1 in #t7.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t7{self::Class1}));
+  let final self::Class1? #t8 = n1 in #t8.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t9 = self::Extension1|get#nullable1(#t8{self::Class1}) in #t9.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t9{self::Class1});
+  let final self::Class1? #t10 = n1 in #t10.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t11 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t10{self::Class1})) in #t11.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t11{self::Class1});
+  let final self::Class1? #t12 = n1 in #t12.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t12{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t13 = n1 in #t13.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t14 = self::Extension1|get#nullable1(#t13{self::Class1}) in #t14.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t14{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t15 = n1 in #t15.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t16 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t15{self::Class1})) in #t16.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t16{self::Class1}, new self::Class1::•());
+  let final self::Class1? #t17 = let final self::Class1? #t18 = n1 in #t18.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t18{self::Class1}) in #t17.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t17{self::Class1});
   self::throws(() → void => let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:93:47: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nullable1 = new Class1()).nullable1);
-                                              ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20 == null ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
+                                              ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t20 = n1 in #t20.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t21 = new self::Class1::•() in let final void #t22 = self::Extension1|set#nullable1(#t20{self::Class1}, #t21) in #t21));
   self::throws(() → void => let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:94:43: Error: Property 'nullable1' cannot be accessed on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
 Try accessing using ?. instead.
   throws(() => (n1?.nonNullable1Method()).nullable1);
-                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
-  nullable1 = let final self::Class1? #t25 = n1 in #t25 == null ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
-  nullable1 = let final self::Class1? #t28 = n1 in #t28 == null ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29 == null ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
-  nullable1 = let final self::Class1? #t32 = n1 in #t32 == null ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33 == null ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
-  let final self::Class1? #t36 = n1 in #t36 == null ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
-  let final self::Class1? #t38 = n1 in #t38 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t39 = n1 in #t39 == null ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
-  let final self::Class1? #t42 = n1 in #t42 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
-  nullable1 = let final self::Class1? #t45 = n1 in #t45 == null ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
-  let final self::Class1? #t50 = n1 in #t50 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t51 = n1 in #t51 == null ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
-  let final self::Class1? #t54 = n1 in #t54 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
-  let final self::Class1? #t55 = n1 in #t55 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
-  let final self::Class1? #t56 = n1 in #t56 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
-  let final self::Class1? #t57 = n1 in #t57 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
-  let final self::Class1? #t58 = n1 in #t58 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t59 = n1 in #t59 == null ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
-  let final self::Class1? #t62 = n1 in #t62 == null ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
-  let final self::Class1? #t64 = n1 in #t64 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t65 = n1 in #t65 == null ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
-  let final self::Class1? #t68 = n1 in #t68 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
-  nullable1 = let final self::Class1? #t71 = n1 in #t71 == null ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
-  let final self::Class1? #t76 = n1 in #t76 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t77 = n1 in #t77 == null ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
-  let final self::Class1? #t80 = n1 in #t80 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
-  let final self::Class1? #t81 = n1 in #t81 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t82 = n1 in #t82 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
-  let final self::Class1? #t83 = n1 in #t83 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t84 = n1 in #t84 == null ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
-  let final self::Class1? #t87 = n1 in #t87 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
-  nullable1 = let final self::Class1? #t90 = n1 in #t90 == null ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
-  let final self::Class1? #t95 = n1 in #t95 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t96 = n1 in #t96 == null ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
-  let final self::Class1? #t99 = n1 in #t99 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
-  nullable1 = let final self::Class1? #t102 = n1 in #t102 == null ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
-  let final self::Class1? #t107 = n1 in #t107 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
-  nullable1 = let final self::Class1? #t112 = n1 in #t112 == null ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
-  let final self::Class1? #t119 = n1 in #t119 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
-  nullable1 = let final self::Class1? #t122 = n1 in #t122 == null ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
-  let final self::Class1? #t127 = n1 in #t127 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t128 = n1 in #t128 == null ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
-  let final self::Class1? #t131 = n1 in #t131 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
-  nullable1 = let final self::Class1? #t134 = n1 in #t134 == null ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
-  let final self::Class1? #t139 = n1 in #t139 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
-  nullable1 = let final self::Class1? #t140 = n1 in #t140 == null ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
-  let final self::Class1? #t143 = n1 in #t143 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
-  let final self::Class1? #t144 = n1 in #t144 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
-  nullable1 = let final self::Class1? #t145 = n1 in #t145 == null ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
-  let final self::Class1? #t148 = n1 in #t148 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
-  let final self::Class1? #t149 = n1 in #t149 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t150 = n1 in #t150 == null ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
-  let final self::Class1? #t153 = n1 in #t153 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
-  nullable1 = let final self::Class1? #t156 = n1 in #t156 == null ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
-  let final self::Class1? #t161 = n1 in #t161 == null ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
-  nullable1 = let final self::Class1? #t162 = n1 in #t162 == null ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
-  let final self::Class1? #t165 = n1 in #t165 == null ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
-  let final self::Class1? #t166 = n1 in #t166 == null ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
-  let final self::Class1? #t167 = n1 in #t167 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
-  let final self::Class1? #t168 = n1 in #t168 == null ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
+                                          ^^^^^^^^^" in self::Extension1|get#nullable1(let final self::Class1? #t24 = n1 in #t24.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t24{self::Class1})));
+  nullable1 = let final self::Class1? #t25 = n1 in #t25.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t26 = new self::Class1::•() in let final void #t27 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t25{self::Class1}), #t26) in #t26;
+  nullable1 = let final self::Class1? #t28 = n1 in #t28.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t29 = self::Extension1|get#nullable1(#t28{self::Class1}) in #t29.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t30 = new self::Class1::•() in let final void #t31 = self::Extension1|set#nullable1(#t29{self::Class1}, #t30) in #t30;
+  nullable1 = let final self::Class1? #t32 = n1 in #t32.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t33 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t32{self::Class1})) in #t33.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t34 = new self::Class1::•() in let final void #t35 = self::Extension1|set#nullable1(#t33{self::Class1}, #t34) in #t34;
+  let final self::Class1? #t36 = n1 in #t36.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t37 = self::Extension1|get#nullable1(#t36{self::Class1}) in #t37.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t37{self::Class1});
+  let final self::Class1? #t38 = n1 in #t38.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t38{self::Class1}, self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t39 = n1 in #t39.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t40 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t41 = self::Extension1|set#nullable1(#t39{self::Class1}, #t40) in #t40;
+  let final self::Class1? #t42 = n1 in #t42.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t42{self::Class1}, let final self::Class1 #t43 = new self::Class1::•() in let final void #t44 = self::Extension1|set#nullable1(new self::Class1::•(), #t43) in #t43);
+  nullable1 = let final self::Class1? #t45 = n1 in #t45.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t46 = let final self::Class1 #t47 = new self::Class1::•() in let final void #t48 = self::Extension1|set#nullable1(new self::Class1::•(), #t47) in #t47 in let final void #t49 = self::Extension1|set#nullable1(#t45{self::Class1}, #t46) in #t46;
+  let final self::Class1? #t50 = n1 in #t50.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t50{self::Class1}, self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t51 = n1 in #t51.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t52 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t53 = self::Extension1|set#nullable1(#t51{self::Class1}, #t52) in #t52;
+  let final self::Class1? #t54 = n1 in #t54.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(#t54{self::Class1}));
+  let final self::Class1? #t55 = n1 in #t55.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t55{self::Class1}), new self::Class1::•());
+  let final self::Class1? #t56 = n1 in #t56.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t56{self::Class1}));
+  let final self::Class1? #t57 = n1 in #t57.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t57{self::Class1})));
+  let final self::Class1? #t58 = n1 in #t58.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t58{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t59 = n1 in #t59.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t60 = new self::Class1::•() in let final void #t61 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|get#nonNullable1(#t59{self::Class1})), #t60) in #t60;
+  let final self::Class1? #t62 = n1 in #t62.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t63 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(#t62{self::Class1})) in #t63.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t63{self::Class1});
+  let final self::Class1? #t64 = n1 in #t64.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t64{self::Class1}, self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t65 = n1 in #t65.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t66 = self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t67 = self::Extension1|set#nullable1(#t65{self::Class1}, #t66) in #t66;
+  let final self::Class1? #t68 = n1 in #t68.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t68{self::Class1}, let final self::Class1 #t69 = new self::Class1::•() in let final void #t70 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t69) in #t69);
+  nullable1 = let final self::Class1? #t71 = n1 in #t71.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t72 = let final self::Class1 #t73 = new self::Class1::•() in let final void #t74 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(new self::Class1::•()), #t73) in #t73 in let final void #t75 = self::Extension1|set#nullable1(#t71{self::Class1}, #t72) in #t72;
+  let final self::Class1? #t76 = n1 in #t76.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t76{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t77 = n1 in #t77.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t78 = self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(new self::Class1::•())) in let final void #t79 = self::Extension1|set#nullable1(#t77{self::Class1}, #t78) in #t78;
+  let final self::Class1? #t80 = n1 in #t80.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t80{self::Class1})));
+  let final self::Class1? #t81 = n1 in #t81.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t81{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t82 = n1 in #t82.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(self::Extension1|nonNullable1Method(#t82{self::Class1})));
+  let final self::Class1? #t83 = n1 in #t83.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t83{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t84 = n1 in #t84.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t85 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t86 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t84{self::Class1}), #t85) in #t85;
+  let final self::Class1? #t87 = n1 in #t87.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t87{self::Class1}), let final self::Class1 #t88 = new self::Class1::•() in let final void #t89 = self::Extension1|set#nullable1(new self::Class1::•(), #t88) in #t88);
+  nullable1 = let final self::Class1? #t90 = n1 in #t90.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t91 = let final self::Class1 #t92 = new self::Class1::•() in let final void #t93 = self::Extension1|set#nullable1(new self::Class1::•(), #t92) in #t92 in let final void #t94 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t90{self::Class1}), #t91) in #t91;
+  let final self::Class1? #t95 = n1 in #t95.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t95{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t96 = n1 in #t96.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t97 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t98 = self::Extension1|set#nullable1(self::Extension1|get#nonNullable1(#t96{self::Class1}), #t97) in #t97;
+  let final self::Class1? #t99 = n1 in #t99.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t99{self::Class1}, let final self::Class1? #t100 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t101 = self::Extension1|set#nullable1(new self::Class1::•(), #t100) in #t100);
+  nullable1 = let final self::Class1? #t102 = n1 in #t102.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t103 = let final self::Class1? #t104 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t105 = self::Extension1|set#nullable1(new self::Class1::•(), #t104) in #t104 in let final void #t106 = self::Extension1|set#nullable1(#t102{self::Class1}, #t103) in #t103;
+  let final self::Class1? #t107 = n1 in #t107.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t107{self::Class1}, let final self::Class1 #t108 = let final self::Class1 #t109 = new self::Class1::•() in let final void #t110 = self::Extension1|set#nullable1(new self::Class1::•(), #t109) in #t109 in let final void #t111 = self::Extension1|set#nullable1(new self::Class1::•(), #t108) in #t108);
+  nullable1 = let final self::Class1? #t112 = n1 in #t112.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t113 = let final self::Class1 #t114 = let final self::Class1 #t115 = new self::Class1::•() in let final void #t116 = self::Extension1|set#nullable1(new self::Class1::•(), #t115) in #t115 in let final void #t117 = self::Extension1|set#nullable1(new self::Class1::•(), #t114) in #t114 in let final void #t118 = self::Extension1|set#nullable1(#t112{self::Class1}, #t113) in #t113;
+  let final self::Class1? #t119 = n1 in #t119.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t119{self::Class1}, let final self::Class1 #t120 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t121 = self::Extension1|set#nullable1(new self::Class1::•(), #t120) in #t120);
+  nullable1 = let final self::Class1? #t122 = n1 in #t122.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t123 = let final self::Class1 #t124 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t125 = self::Extension1|set#nullable1(new self::Class1::•(), #t124) in #t124 in let final void #t126 = self::Extension1|set#nullable1(#t122{self::Class1}, #t123) in #t123;
+  let final self::Class1? #t127 = n1 in #t127.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t127{self::Class1}), self::Extension1|get#nullable1(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t128 = n1 in #t128.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t129 = self::Extension1|get#nullable1(new self::Class1::•()) in let final void #t130 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t128{self::Class1}), #t129) in #t129;
+  let final self::Class1? #t131 = n1 in #t131.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t131{self::Class1}), let final self::Class1 #t132 = new self::Class1::•() in let final void #t133 = self::Extension1|set#nullable1(new self::Class1::•(), #t132) in #t132);
+  nullable1 = let final self::Class1? #t134 = n1 in #t134.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t135 = let final self::Class1 #t136 = new self::Class1::•() in let final void #t137 = self::Extension1|set#nullable1(new self::Class1::•(), #t136) in #t136 in let final void #t138 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t134{self::Class1}), #t135) in #t135;
+  let final self::Class1? #t139 = n1 in #t139.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t139{self::Class1}), self::Extension1|nonNullable1Method(new self::Class1::•()));
+  nullable1 = let final self::Class1? #t140 = n1 in #t140.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t141 = self::Extension1|nonNullable1Method(new self::Class1::•()) in let final void #t142 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(#t140{self::Class1}), #t141) in #t141;
+  let final self::Class1? #t143 = n1 in #t143.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t143{self::Class1})));
+  let final self::Class1? #t144 = n1 in #t144.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t144{self::Class1})), new self::Class1::•());
+  nullable1 = let final self::Class1? #t145 = n1 in #t145.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t146 = new self::Class1::•() in let final void #t147 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t145{self::Class1})), #t146) in #t146;
+  let final self::Class1? #t148 = n1 in #t148.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|get#nonNullable1(#t148{self::Class1})));
+  let final self::Class1? #t149 = n1 in #t149.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t149{self::Class1}, self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t150 = n1 in #t150.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t151 = self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t152 = self::Extension1|set#nullable1(#t150{self::Class1}, #t151) in #t151;
+  let final self::Class1? #t153 = n1 in #t153.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t153{self::Class1}, let final self::Class1 #t154 = new self::Class1::•() in let final void #t155 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t154) in #t154);
+  nullable1 = let final self::Class1? #t156 = n1 in #t156.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t157 = let final self::Class1 #t158 = new self::Class1::•() in let final void #t159 = self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(new self::Class1::•()), #t158) in #t158 in let final void #t160 = self::Extension1|set#nullable1(#t156{self::Class1}, #t157) in #t157;
+  let final self::Class1? #t161 = n1 in #t161.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(#t161{self::Class1}, self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())));
+  nullable1 = let final self::Class1? #t162 = n1 in #t162.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t163 = self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(new self::Class1::•())) in let final void #t164 = self::Extension1|set#nullable1(#t162{self::Class1}, #t163) in #t163;
+  let final self::Class1? #t165 = n1 in #t165.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t165{self::Class1})));
+  let final self::Class1? #t166 = n1 in #t166.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|set#nullable1(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t166{self::Class1})), new self::Class1::•());
+  let final self::Class1? #t167 = n1 in #t167.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(self::Extension1|nonNullable1Method(#t167{self::Class1})));
+  let final self::Class1? #t168 = n1 in #t168.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t169 = self::Extension1|nonNullable1Method(#t168{self::Class1}) in #t169.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t169{self::Class1});
 }
 static method indexAccess(self::Class1? n1, self::Class2? n2, self::Class3? n3) → void {
   self::Class1? nullable1 = n1;
   self::Class2? nullable2 = n2;
   self::Class3? nullable3 = n3;
-  let final self::Class1? #t170 = n1 in #t170 == null ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
-  let final self::Class1? #t171 = n1 in #t171 == null ?{self::Class1?} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
-  let final self::Class1? #t172 = n1 in #t172 == null ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
-  let final self::Class1? #t174 = n1 in #t174 == null ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
-  let final self::Class1? #t175 = n1 in #t175 == null ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t176 = n1 in #t176 == null ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
-  let final self::Class1? #t181 = n1 in #t181 == null ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
-  let final self::Class1? #t183 = n1 in #t183 == null ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
-  nullable2 = let final self::Class1? #t186 = n1 in #t186 == null ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
-  let final self::Class1? #t191 = n1 in #t191 == null ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192) == null ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
-  nullable1 = let final self::Class1? #t193 = n1 in #t193 == null ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195 == null ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
-  let final self::Class2? #t198 = n2 in #t198 == null ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
-  nullable2 = let final self::Class2? #t200 = n2 in #t200 == null ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
-  let final self::Class2? #t204 = n2 in #t204 == null ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
-  nullable2 = let final self::Class2? #t206 = n2 in #t206 == null ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
-  let final self::Class2? #t210 = n2 in #t210 == null ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
-  nullable2 = let final self::Class2? #t212 = n2 in #t212 == null ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
-  let final self::Class2? #t216 = n2 in #t216 == null ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
-  nullable2 = let final self::Class2? #t220 = n2 in #t220 == null ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
-  let final self::Class1? #t224 = n1 in #t224 == null ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
-  nullable2 = let final self::Class1? #t227 = n1 in #t227 == null ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
-  let final self::Class1? #t232 = n1 in #t232 == null ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
-  nullable2 = let final self::Class1? #t237 = n1 in #t237 == null ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
-  let final self::Class1? #t242 = n1 in #t242 == null ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
-  let final self::Class1? #t243 = n1 in #t243 == null ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
-  nullable2 = let final self::Class1? #t244 = n1 in #t244 == null ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
-  let final self::Class1? #t249 = n1 in #t249 == null ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250 == null ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
-  let final self::Class1? #t251 = n1 in #t251 == null ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
-  nullable2 = let final self::Class1? #t254 = n1 in #t254 == null ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
-  let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
-  nullable2 = let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
-  let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
-  nullable2 = let final self::Class1? #t272 = n1 in #t272 == null ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
-  let final self::Class1? #t277 = n1 in #t277 == null ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278 == null ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
-  let final self::Class1? #t279 = n1 in #t279 == null ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280 == null ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
-  nullable1 = let final self::Class1? #t281 = n1 in #t281 == null ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282 == null ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
-  let final self::Class1? #t286 = n1 in #t286 == null ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287 == null ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
-  nullable1 = let final self::Class1? #t289 = n1 in #t289 == null ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290 == null ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291 == null ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
-  let final self::Class1? #t292 = n1 in #t292 == null ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293 == null ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294) == null ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
-  nullable1 = let final self::Class1? #t295 = n1 in #t295 == null ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296 == null ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298 == null ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
-  let final self::Class3? #t301 = n3 in #t301 == null ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302 == null ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
-  nullable2 = let final self::Class3? #t304 = n3 in #t304 == null ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305 == null ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
-  let final self::Class3? #t309 = n3 in #t309 == null ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310 == null ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
-  nullable2 = let final self::Class3? #t312 = n3 in #t312 == null ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313 == null ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
-  let final self::Class3? #t317 = n3 in #t317 == null ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318 == null ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
-  nullable2 = let final self::Class3? #t322 = n3 in #t322 == null ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323 == null ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
+  let final self::Class1? #t170 = n1 in #t170.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t170{self::Class1}, nullable1);
+  let final self::Class1? #t171 = n1 in #t171.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(#t171{self::Class1}, nullable1, new self::Class1::•());
+  let final self::Class1? #t172 = n1 in #t172.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t173 = self::Extension1|[](#t172{self::Class1}, nullable1) in #t173.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t173{self::Class1});
+  let final self::Class1? #t174 = n1 in #t174.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](self::Extension1|get#nonNullable1(#t174{self::Class1}), nullable1);
+  let final self::Class1? #t175 = n1 in #t175.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(self::Extension1|get#nonNullable1(#t175{self::Class1}), nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t176 = n1 in #t176.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t177 = self::Extension1|get#nonNullable1(#t176{self::Class1}) in let final self::Class1? #t178 = nullable1 in let final self::Class1 #t179 = new self::Class1::•() in let final void #t180 = self::Extension1|[]=(#t177, #t178, #t179) in #t179;
+  let final self::Class1? #t181 = n1 in #t181.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t182 = self::Extension1|[](self::Extension1|get#nonNullable1(#t181{self::Class1}), nullable1) in #t182.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t182{self::Class1});
+  let final self::Class1? #t183 = n1 in #t183.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t184 = self::Extension1|get#nonNullable2(#t183{self::Class1}) in let final self::Class2? #t185 = nullable2 in self::Extension2|[]=(#t184, #t185, self::Extension2|+(self::Extension2|[](#t184, #t185), 0));
+  nullable2 = let final self::Class1? #t186 = n1 in #t186.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t187 = self::Extension1|get#nonNullable2(#t186{self::Class1}) in let final self::Class2? #t188 = nullable2 in let final self::Class2 #t189 = self::Extension2|+(self::Extension2|[](#t187, #t188), 0) in let final void #t190 = self::Extension2|[]=(#t187, #t188, #t189) in #t189;
+  let final self::Class1? #t191 = n1 in #t191.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t192 = nullable1 in self::Extension1|[](#t191{self::Class1}, #t192).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t191{self::Class1}, #t192, nullable1) : null;
+  nullable1 = let final self::Class1? #t193 = n1 in #t193.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t194 = nullable1 in let final self::Class1? #t195 = self::Extension1|[](#t193{self::Class1}, #t194) in #t195.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t196 = nullable1 in let final void #t197 = self::Extension1|[]=(#t193{self::Class1}, #t194, #t196) in #t196 : #t195{self::Class1};
+  let final self::Class2? #t198 = n2 in #t198.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t199 = nullable2 in self::Extension2|[]=(#t198{self::Class2}, #t199, self::Extension2|+(self::Extension2|[](#t198{self::Class2}, #t199), 0));
+  nullable2 = let final self::Class2? #t200 = n2 in #t200.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t201 = nullable2 in let final self::Class2 #t202 = self::Extension2|+(self::Extension2|[](#t200{self::Class2}, #t201), 0) in let final void #t203 = self::Extension2|[]=(#t200{self::Class2}, #t201, #t202) in #t202;
+  let final self::Class2? #t204 = n2 in #t204.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t205 = nullable2 in self::Extension2|[]=(#t204{self::Class2}, #t205, self::Extension2|+(self::Extension2|[](#t204{self::Class2}, #t205), 0));
+  nullable2 = let final self::Class2? #t206 = n2 in #t206.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t207 = nullable2 in let final self::Class2 #t208 = self::Extension2|+(self::Extension2|[](#t206{self::Class2}, #t207), 0) in let final void #t209 = self::Extension2|[]=(#t206{self::Class2}, #t207, #t208) in #t208;
+  let final self::Class2? #t210 = n2 in #t210.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t211 = nullable2 in self::Extension2|[]=(#t210{self::Class2}, #t211, self::Extension2|+(self::Extension2|[](#t210{self::Class2}, #t211), 1));
+  nullable2 = let final self::Class2? #t212 = n2 in #t212.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t213 = nullable2 in let final self::Class2 #t214 = self::Extension2|[](#t212{self::Class2}, #t213) in let final void #t215 = self::Extension2|[]=(#t212{self::Class2}, #t213, self::Extension2|+(#t214, 1)) in #t214;
+  let final self::Class2? #t216 = n2 in #t216.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t217 = nullable2 in let final self::Class2 #t218 = self::Extension2|+(self::Extension2|[](#t216{self::Class2}, #t217), 1) in let final void #t219 = self::Extension2|[]=(#t216{self::Class2}, #t217, #t218) in #t218;
+  nullable2 = let final self::Class2? #t220 = n2 in #t220.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t221 = nullable2 in let final self::Class2 #t222 = self::Extension2|+(self::Extension2|[](#t220{self::Class2}, #t221), 1) in let final void #t223 = self::Extension2|[]=(#t220{self::Class2}, #t221, #t222) in #t222;
+  let final self::Class1? #t224 = n1 in #t224.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t225 = self::Extension1|get#nonNullable2(#t224{self::Class1}) in let final self::Class2? #t226 = nullable2 in self::Extension2|[]=(#t225, #t226, self::Extension2|+(self::Extension2|[](#t225, #t226), 1));
+  nullable2 = let final self::Class1? #t227 = n1 in #t227.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t228 = self::Extension1|get#nonNullable2(#t227{self::Class1}) in let final self::Class2? #t229 = nullable2 in let final self::Class2 #t230 = self::Extension2|[](#t228, #t229) in let final void #t231 = self::Extension2|[]=(#t228, #t229, self::Extension2|+(#t230, 1)) in #t230;
+  let final self::Class1? #t232 = n1 in #t232.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t233 = self::Extension1|get#nonNullable2(#t232{self::Class1}) in let final self::Class2? #t234 = nullable2 in let final self::Class2 #t235 = self::Extension2|+(self::Extension2|[](#t233, #t234), 1) in let final void #t236 = self::Extension2|[]=(#t233, #t234, #t235) in #t235;
+  nullable2 = let final self::Class1? #t237 = n1 in #t237.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t238 = self::Extension1|get#nonNullable2(#t237{self::Class1}) in let final self::Class2? #t239 = nullable2 in let final self::Class2 #t240 = self::Extension2|+(self::Extension2|[](#t238, #t239), 1) in let final void #t241 = self::Extension2|[]=(#t238, #t239, #t240) in #t240;
+  let final self::Class1? #t242 = n1 in #t242.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t242{self::Class1}), nullable2), nullable2);
+  let final self::Class1? #t243 = n1 in #t243.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|[]=(self::Extension2|[](self::Extension1|get#nonNullable2(#t243{self::Class1}), nullable2), nullable2, new self::Class2::•());
+  nullable2 = let final self::Class1? #t244 = n1 in #t244.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t245 = self::Extension2|[](self::Extension1|get#nonNullable2(#t244{self::Class1}), nullable2) in let final self::Class2? #t246 = nullable2 in let final self::Class2 #t247 = new self::Class2::•() in let final void #t248 = self::Extension2|[]=(#t245, #t246, #t247) in #t247;
+  let final self::Class1? #t249 = n1 in #t249.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t250 = self::Extension2|[](self::Extension2|[](self::Extension1|get#nonNullable2(#t249{self::Class1}), nullable2), nullable2) in #t250.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|nonNullable2Method(#t250{self::Class2});
+  let final self::Class1? #t251 = n1 in #t251.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t252 = self::Extension2|[](self::Extension1|get#nonNullable2(#t251{self::Class1}), nullable2) in let final self::Class2? #t253 = nullable2 in self::Extension2|[]=(#t252, #t253, self::Extension2|+(self::Extension2|[](#t252, #t253), 0));
+  nullable2 = let final self::Class1? #t254 = n1 in #t254.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t255 = self::Extension2|[](self::Extension1|get#nonNullable2(#t254{self::Class1}), nullable2) in let final self::Class2? #t256 = nullable2 in let final self::Class2 #t257 = self::Extension2|+(self::Extension2|[](#t255, #t256), 0) in let final void #t258 = self::Extension2|[]=(#t255, #t256, #t257) in #t257;
+  let final self::Class1? #t259 = n1 in #t259.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t260 = self::Extension2|[](self::Extension1|get#nonNullable2(#t259{self::Class1}), nullable2) in let final self::Class2? #t261 = nullable2 in self::Extension2|[]=(#t260, #t261, self::Extension2|+(self::Extension2|[](#t260, #t261), 1));
+  nullable2 = let final self::Class1? #t262 = n1 in #t262.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t263 = self::Extension2|[](self::Extension1|get#nonNullable2(#t262{self::Class1}), nullable2) in let final self::Class2? #t264 = nullable2 in let final self::Class2 #t265 = self::Extension2|[](#t263, #t264) in let final void #t266 = self::Extension2|[]=(#t263, #t264, self::Extension2|+(#t265, 1)) in #t265;
+  let final self::Class1? #t267 = n1 in #t267.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t268 = self::Extension2|[](self::Extension1|get#nonNullable2(#t267{self::Class1}), nullable2) in let final self::Class2? #t269 = nullable2 in let final self::Class2 #t270 = self::Extension2|+(self::Extension2|[](#t268, #t269), 1) in let final void #t271 = self::Extension2|[]=(#t268, #t269, #t270) in #t270;
+  nullable2 = let final self::Class1? #t272 = n1 in #t272.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t273 = self::Extension2|[](self::Extension1|get#nonNullable2(#t272{self::Class1}), nullable2) in let final self::Class2? #t274 = nullable2 in let final self::Class2 #t275 = self::Extension2|+(self::Extension2|[](#t273, #t274), 1) in let final void #t276 = self::Extension2|[]=(#t273, #t274, #t275) in #t275;
+  let final self::Class1? #t277 = n1 in #t277.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t278 = self::Extension1|[](#t277{self::Class1}, nullable1) in #t278.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[](#t278{self::Class1}, nullable1);
+  let final self::Class1? #t279 = n1 in #t279.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t280 = self::Extension1|[](#t279{self::Class1}, nullable1) in #t280.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|[]=(#t280{self::Class1}, nullable1, new self::Class1::•());
+  nullable1 = let final self::Class1? #t281 = n1 in #t281.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t282 = self::Extension1|[](#t281{self::Class1}, nullable1) in #t282.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t283 = nullable1 in let final self::Class1 #t284 = new self::Class1::•() in let final void #t285 = self::Extension1|[]=(#t282{self::Class1}, #t283, #t284) in #t284;
+  let final self::Class1? #t286 = n1 in #t286.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t287 = self::Extension1|[](#t286{self::Class1}, nullable1) in #t287.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t288 = self::Extension1|[](#t287{self::Class1}, nullable1) in #t288.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t288{self::Class1});
+  nullable1 = let final self::Class1? #t289 = n1 in #t289.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t290 = self::Extension1|[](#t289{self::Class1}, nullable1) in #t290.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t291 = self::Extension1|[](#t290{self::Class1}, nullable1) in #t291.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|nonNullable1Method(#t291{self::Class1});
+  let final self::Class1? #t292 = n1 in #t292.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t293 = self::Extension1|[](#t292{self::Class1}, nullable1) in #t293.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t294 = nullable1 in self::Extension1|[](#t293{self::Class1}, #t294).{core::Object::==}(null) ?{self::Class1?} self::Extension1|[]=(#t293{self::Class1}, #t294, nullable1) : null;
+  nullable1 = let final self::Class1? #t295 = n1 in #t295.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t296 = self::Extension1|[](#t295{self::Class1}, nullable1) in #t296.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t297 = nullable1 in let final self::Class1? #t298 = self::Extension1|[](#t296{self::Class1}, #t297) in #t298.{core::Object::==}(null) ?{self::Class1?} let final self::Class1? #t299 = nullable1 in let final void #t300 = self::Extension1|[]=(#t296{self::Class1}, #t297, #t299) in #t299 : #t298{self::Class1};
+  let final self::Class3? #t301 = n3 in #t301.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t302 = self::Extension3|[](#t301{self::Class3}, nullable3) in #t302.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t303 = nullable2 in self::Extension2|[]=(#t302{self::Class2}, #t303, self::Extension2|+(self::Extension2|[](#t302{self::Class2}, #t303), 0));
+  nullable2 = let final self::Class3? #t304 = n3 in #t304.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t305 = self::Extension3|[](#t304{self::Class3}, nullable3) in #t305.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t306 = nullable2 in let final self::Class2 #t307 = self::Extension2|+(self::Extension2|[](#t305{self::Class2}, #t306), 0) in let final void #t308 = self::Extension2|[]=(#t305{self::Class2}, #t306, #t307) in #t307;
+  let final self::Class3? #t309 = n3 in #t309.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t310 = self::Extension3|[](#t309{self::Class3}, nullable3) in #t310.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t311 = nullable2 in self::Extension2|[]=(#t310{self::Class2}, #t311, self::Extension2|+(self::Extension2|[](#t310{self::Class2}, #t311), 1));
+  nullable2 = let final self::Class3? #t312 = n3 in #t312.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t313 = self::Extension3|[](#t312{self::Class3}, nullable3) in #t313.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t314 = nullable2 in let final self::Class2 #t315 = self::Extension2|[](#t313{self::Class2}, #t314) in let final void #t316 = self::Extension2|[]=(#t313{self::Class2}, #t314, self::Extension2|+(#t315, 1)) in #t315;
+  let final self::Class3? #t317 = n3 in #t317.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t318 = self::Extension3|[](#t317{self::Class3}, nullable3) in #t318.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t319 = nullable2 in let final self::Class2 #t320 = self::Extension2|+(self::Extension2|[](#t318{self::Class2}, #t319), 1) in let final void #t321 = self::Extension2|[]=(#t318{self::Class2}, #t319, #t320) in #t320;
+  nullable2 = let final self::Class3? #t322 = n3 in #t322.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t323 = self::Extension3|[](#t322{self::Class3}, nullable3) in #t323.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2? #t324 = nullable2 in let final self::Class2 #t325 = self::Extension2|+(self::Extension2|[](#t323{self::Class2}, #t324), 1) in let final void #t326 = self::Extension2|[]=(#t323{self::Class2}, #t324, #t325) in #t325;
 }
 static method operatorAccess(self::Class1? n1, self::Class2? n2) → void {
   self::Class2? nullable2 = n2;
   self::throws(() → void => let final Never #t327 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:226:33: Error: Operator '+' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
   throws(() => n1?.nonNullable1 + 0);
-                                ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
+                                ^" in self::Extension1|+(let final self::Class1? #t328 = n1 in #t328.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t328{self::Class1}), 0));
   self::throws(() → void => let final Never #t329 = invalid-expression "pkg/front_end/testcases/nnbd/null_shorting_extension.dart:227:16: Error: Operator 'unary-' cannot be called on 'Class1?' because it is potentially null.
  - 'Class1' is from 'pkg/front_end/testcases/nnbd/null_shorting_extension.dart'.
   throws(() => -n1?.nonNullable1);
-               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330 == null ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
-  let final self::Class2? #t331 = n2 in #t331 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331, self::Extension2|+(self::Extension2|get#nonNullable2(#t331), 0));
-  nullable2 = let final self::Class2? #t332 = n2 in #t332 == null ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332, #t333) in #t333;
-  let final self::Class2? #t335 = n2 in #t335 == null ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
-  nullable2 = let final self::Class2? #t337 = n2 in #t337 == null ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
-  let final self::Class2? #t341 = n2 in #t341 == null ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341, self::Extension2|+(self::Extension2|get#nonNullable2(#t341), 1));
-  nullable2 = let final self::Class2? #t342 = n2 in #t342 == null ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342) in let final void #t344 = self::Extension2|set#nonNullable2(#t342, self::Extension2|+(#t343, 1)) in #t343;
-  let final self::Class2? #t345 = n2 in #t345 == null ?{self::Class2?} null : let final self::Class2 #t346 = self::Extension2|+(self::Extension2|get#nonNullable2(#t345), 1) in let final void #t347 = self::Extension2|set#nonNullable2(#t345, #t346) in #t346;
-  nullable2 = let final self::Class2? #t348 = n2 in #t348 == null ?{self::Class2?} null : let final self::Class2 #t349 = self::Extension2|+(self::Extension2|get#nonNullable2(#t348), 1) in let final void #t350 = self::Extension2|set#nonNullable2(#t348, #t349) in #t349;
+               ^" in self::Extension1|unary-(let final self::Class1? #t330 = n1 in #t330.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nonNullable1(#t330{self::Class1})));
+  let final self::Class2? #t331 = n2 in #t331.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t331, self::Extension2|+(self::Extension2|get#nonNullable2(#t331), 0));
+  nullable2 = let final self::Class2? #t332 = n2 in #t332.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t333 = self::Extension2|+(self::Extension2|get#nonNullable2(#t332), 0) in let final void #t334 = self::Extension2|set#nonNullable2(#t332, #t333) in #t333;
+  let final self::Class2? #t335 = n2 in #t335.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t336 = self::Extension2|get#nonNullable2(#t335{self::Class2}) in self::Extension2|set#nonNullable2(#t336, self::Extension2|+(self::Extension2|get#nonNullable2(#t336), 0));
+  nullable2 = let final self::Class2? #t337 = n2 in #t337.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t338 = self::Extension2|get#nonNullable2(#t337{self::Class2}) in let final self::Class2 #t339 = self::Extension2|+(self::Extension2|get#nonNullable2(#t338), 0) in let final void #t340 = self::Extension2|set#nonNullable2(#t338, #t339) in #t339;
+  let final self::Class2? #t341 = n2 in #t341.{core::Object::==}(null) ?{self::Class2?} null : self::Extension2|set#nonNullable2(#t341, self::Extension2|+(self::Extension2|get#nonNullable2(#t341), 1));
+  nullable2 = let final self::Class2? #t342 = n2 in #t342.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t343 = self::Extension2|get#nonNullable2(#t342) in let final void #t344 = self::Extension2|set#nonNullable2(#t342, self::Extension2|+(#t343, 1)) in #t343;
+  let final self::Class2? #t345 = n2 in #t345.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t346 = self::Extension2|+(self::Extension2|get#nonNullable2(#t345), 1) in let final void #t347 = self::Extension2|set#nonNullable2(#t345, #t346) in #t346;
+  nullable2 = let final self::Class2? #t348 = n2 in #t348.{core::Object::==}(null) ?{self::Class2?} null : let final self::Class2 #t349 = self::Extension2|+(self::Extension2|get#nonNullable2(#t348), 1) in let final void #t350 = self::Extension2|set#nonNullable2(#t348, #t349) in #t349;
 }
 static method ifNull(self::Class1? n1) → void {
   self::Class1? nullable1 = n1;
-  let final self::Class1? #t351 = n1 in #t351 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t351) == null ?{self::Class1} self::Extension1|set#nullable1(#t351, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1? #t353 = self::Extension1|get#nullable1(#t352) in #t353 == null ?{self::Class1} let final self::Class1 #t354 = n1{self::Class1} in let final void #t355 = self::Extension1|set#nullable1(#t352, #t354) in #t354 : #t353{self::Class1};
-  let final self::Class1? #t356 = n1 in #t356 == null ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in self::Extension1|get#nullable1(#t357) == null ?{self::Class1} self::Extension1|set#nullable1(#t357, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t358 = n1 in #t358 == null ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in let final self::Class1? #t360 = self::Extension1|get#nullable1(#t359) in #t360 == null ?{self::Class1} let final self::Class1 #t361 = n1{self::Class1} in let final void #t362 = self::Extension1|set#nullable1(#t359, #t361) in #t361 : #t360{self::Class1};
-  let final self::Class1? #t363 = n1 in #t363 == null ?{self::Class1?} null : let final self::Class1 #t364 = self::Extension1|get#nonNullable1(#t363{self::Class1}) in let final self::Class1 #t365 = n1{self::Class1} in self::Extension1|[](#t364, #t365) == null ?{self::Class1} self::Extension1|[]=(#t364, #t365, n1{self::Class1}) : null;
-  n1 = let final self::Class1? #t366 = n1 in #t366 == null ?{self::Class1?} null : let final self::Class1 #t367 = self::Extension1|get#nonNullable1(#t366{self::Class1}) in let final self::Class1 #t368 = n1{self::Class1} in let final self::Class1? #t369 = self::Extension1|[](#t367, #t368) in #t369 == null ?{self::Class1} let final self::Class1 #t370 = n1{self::Class1} in let final void #t371 = self::Extension1|[]=(#t367, #t368, #t370) in #t370 : #t369{self::Class1};
+  let final self::Class1? #t351 = n1 in #t351.{core::Object::==}(null) ?{self::Class1?} null : self::Extension1|get#nullable1(#t351).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t351, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t352 = n1 in #t352.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1? #t353 = self::Extension1|get#nullable1(#t352) in #t353.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t354 = n1{self::Class1} in let final void #t355 = self::Extension1|set#nullable1(#t352, #t354) in #t354 : #t353{self::Class1};
+  let final self::Class1? #t356 = n1 in #t356.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in self::Extension1|get#nullable1(#t357).{core::Object::==}(null) ?{self::Class1} self::Extension1|set#nullable1(#t357, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t358 = n1 in #t358.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t359 = self::Extension1|get#nonNullable1(#t358{self::Class1}) in let final self::Class1? #t360 = self::Extension1|get#nullable1(#t359) in #t360.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t361 = n1{self::Class1} in let final void #t362 = self::Extension1|set#nullable1(#t359, #t361) in #t361 : #t360{self::Class1};
+  let final self::Class1? #t363 = n1 in #t363.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t364 = self::Extension1|get#nonNullable1(#t363{self::Class1}) in let final self::Class1 #t365 = n1{self::Class1} in self::Extension1|[](#t364, #t365).{core::Object::==}(null) ?{self::Class1} self::Extension1|[]=(#t364, #t365, n1{self::Class1}) : null;
+  n1 = let final self::Class1? #t366 = n1 in #t366.{core::Object::==}(null) ?{self::Class1?} null : let final self::Class1 #t367 = self::Extension1|get#nonNullable1(#t366{self::Class1}) in let final self::Class1 #t368 = n1{self::Class1} in let final self::Class1? #t369 = self::Extension1|[](#t367, #t368) in #t369.{core::Object::==}(null) ?{self::Class1} let final self::Class1 #t370 = n1{self::Class1} in let final void #t371 = self::Extension1|[]=(#t367, #t368, #t370) in #t370 : #t369{self::Class1};
 }
 static method throws(() → void f) → void {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.expect
index 438791b..dc52187 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.expect
@@ -78,56 +78,56 @@
   operator []= = self::Extension|[]=;
 }
 static method Extension|[](lowered final self::Class2 #this, core::int index) → core::int
-  return #this.{self::Class2::field}{core::int};
+  return #this.{self::Class2::field};
 static method Extension|[]=(lowered final self::Class2 #this, core::int index, core::int value) → void {
   #this.{self::Class2::field} = value;
 }
 static method main() → dynamic {
   self::Class1? c1;
-  let final self::Class1? #t1 = c1 in #t1 == null ?{core::int?} null : #t1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int};
-  let final self::Class1? #t2 = c1 in #t2 == null ?{core::int?} null : #t2{self::Class1}.{self::Class1::[]=}(0, 1){(core::int, core::int) → void};
-  let final self::Class1? #t3 = c1 in #t3 == null ?{core::int?} null : #t3{self::Class1}.{self::Class1::[]=}(0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t4 = c1 in #t4 == null ?{core::int?} null : let final core::int #t5 = 0 in #t4{self::Class1}.{self::Class1::[]=}(#t5, #t4{self::Class1}.{self::Class1::[]}(#t5){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t6 = c1 in #t6 == null ?{core::int?} null : let final core::int #t7 = 0 in #t6{self::Class1}.{self::Class1::[]=}(#t7, #t6{self::Class1}.{self::Class1::[]}(#t7){(core::int) → core::int}.{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t8 = c1 in #t8 == null ?{core::int?} null : let final core::int #t9 = 0 in let final core::int #t10 = #t8{self::Class1}.{self::Class1::[]}(#t9){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int} in let final void #t11 = #t8{self::Class1}.{self::Class1::[]=}(#t9, #t10){(core::int, core::int) → void} in #t10;
-  let final self::Class1? #t12 = c1 in #t12 == null ?{core::int?} null : let final core::int #t13 = 0 in #t12{self::Class1}.{self::Class1::[]=}(#t13, #t12{self::Class1}.{self::Class1::[]}(#t13){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t14 = c1 in #t14 == null ?{core::int?} null : let final core::int #t15 = 0 in #t14{self::Class1}.{self::Class1::[]}(#t15){(core::int) → core::int} == null ?{core::int} #t14{self::Class1}.{self::Class1::[]=}(#t15, 1){(core::int, core::int) → void} : null;
-  let final self::Class1? #t16 = c1 in #t16 == null ?{core::int?} null : let final core::int #t17 = 0 in #t16{self::Class1}.{self::Class1::[]}(#t17){(core::int) → core::int} == null ?{core::int} #t16{self::Class1}.{self::Class1::[]=}(#t17, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1){(core::int) → core::int}){(core::num) → core::int}){(core::int, core::int) → void} : null;
+  let final self::Class1? #t1 = c1 in #t1.{core::Object::==}(null) ?{core::int?} null : #t1{self::Class1}.{self::Class1::[]}(0);
+  let final self::Class1? #t2 = c1 in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{self::Class1}.{self::Class1::[]=}(0, 1);
+  let final self::Class1? #t3 = c1 in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{self::Class1}.{self::Class1::[]=}(0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0)));
+  let final self::Class1? #t4 = c1 in #t4.{core::Object::==}(null) ?{core::int?} null : let final core::int #t5 = 0 in #t4{self::Class1}.{self::Class1::[]=}(#t5, #t4{self::Class1}.{self::Class1::[]}(#t5).{core::num::+}(1));
+  let final self::Class1? #t6 = c1 in #t6.{core::Object::==}(null) ?{core::int?} null : let final core::int #t7 = 0 in #t6{self::Class1}.{self::Class1::[]=}(#t7, #t6{self::Class1}.{self::Class1::[]}(#t7).{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0))));
+  let final self::Class1? #t8 = c1 in #t8.{core::Object::==}(null) ?{core::int?} null : let final core::int #t9 = 0 in let final core::int #t10 = #t8{self::Class1}.{self::Class1::[]}(#t9).{core::num::+}(1) in let final void #t11 = #t8{self::Class1}.{self::Class1::[]=}(#t9, #t10) in #t10;
+  let final self::Class1? #t12 = c1 in #t12.{core::Object::==}(null) ?{core::int?} null : let final core::int #t13 = 0 in #t12{self::Class1}.{self::Class1::[]=}(#t13, #t12{self::Class1}.{self::Class1::[]}(#t13).{core::num::+}(1));
+  let final self::Class1? #t14 = c1 in #t14.{core::Object::==}(null) ?{core::int?} null : let final core::int #t15 = 0 in #t14{self::Class1}.{self::Class1::[]}(#t15).{core::num::==}(null) ?{core::int} #t14{self::Class1}.{self::Class1::[]=}(#t15, 1) : null;
+  let final self::Class1? #t16 = c1 in #t16.{core::Object::==}(null) ?{core::int?} null : let final core::int #t17 = 0 in #t16{self::Class1}.{self::Class1::[]}(#t17).{core::num::==}(null) ?{core::int} #t16{self::Class1}.{self::Class1::[]=}(#t17, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1))) : null;
   self::Class2? c2;
-  let final self::Class2? #t18 = c2 in #t18 == null ?{core::int?} null : self::Extension|[](#t18{self::Class2}, 0);
-  let final self::Class2? #t19 = c2 in #t19 == null ?{core::int?} null : self::Extension|[]=(#t19{self::Class2}, 0, 1);
-  let final self::Class2? #t20 = c2 in #t20 == null ?{core::int?} null : self::Extension|[]=(#t20{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int});
-  let final self::Class2? #t21 = c2 in #t21 == null ?{core::int?} null : let final core::int #t22 = 0 in self::Extension|[]=(#t21{self::Class2}, #t22, self::Extension|[](#t21{self::Class2}, #t22).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t23 = c2 in #t23 == null ?{core::int?} null : let final core::int #t24 = 0 in self::Extension|[]=(#t23{self::Class2}, #t24, self::Extension|[](#t23{self::Class2}, #t24).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class2? #t25 = c2 in #t25 == null ?{core::int?} null : let final core::int #t26 = 0 in let final core::int #t27 = self::Extension|[](#t25{self::Class2}, #t26).{core::num::+}(1){(core::num) → core::int} in let final void #t28 = self::Extension|[]=(#t25{self::Class2}, #t26, #t27) in #t27;
-  let final self::Class2? #t29 = c2 in #t29 == null ?{core::int?} null : let final core::int #t30 = 0 in self::Extension|[]=(#t29{self::Class2}, #t30, self::Extension|[](#t29{self::Class2}, #t30).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t31 = c2 in #t31 == null ?{core::int?} null : let final core::int #t32 = 0 in self::Extension|[](#t31{self::Class2}, #t32) == null ?{core::int} self::Extension|[]=(#t31{self::Class2}, #t32, 1) : null;
-  let final self::Class2? #t33 = c2 in #t33 == null ?{core::int?} null : let final core::int #t34 = 0 in self::Extension|[](#t33{self::Class2}, #t34) == null ?{core::int} self::Extension|[]=(#t33{self::Class2}, #t34, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null;
-  let final self::Class2? #t35 = c2 in #t35 == null ?{core::int?} null : self::Extension|[](#t35{self::Class2}, 0);
-  let final self::Class2? #t36 = c2 in #t36 == null ?{void} null : self::Extension|[]=(#t36{self::Class2}, 0, 1);
-  let final self::Class2? #t37 = c2 in #t37 == null ?{void} null : self::Extension|[]=(#t37{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int});
-  let final self::Class2? #t38 = c2 in #t38 == null ?{core::int?} null : let final core::int #t39 = 0 in self::Extension|[]=(#t38{self::Class2}, #t39, self::Extension|[](#t38{self::Class2}, #t39).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t40 = c2 in #t40 == null ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class2? #t42 = c2 in #t42 == null ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1){(core::num) → core::int} in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44;
-  let final self::Class2? #t46 = c2 in #t46 == null ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null;
-  let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null;
-  let final self::Class1? #t52 = c1 in #t52 == null ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field}{self::Class2?} in #t53 == null ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0);
-  let final self::Class1? #t54 = c1 in #t54 == null ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field}{self::Class2?} in #t55 == null ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1);
-  let final self::Class1? #t56 = c1 in #t56 == null ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field}{self::Class2?} in #t57 == null ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int});
-  let final self::Class1? #t58 = c1 in #t58 == null ?{core::int?} null : let final self::Class2? #t59 = #t58{self::Class1}.{self::Class1::field}{self::Class2?} in #t59 == null ?{core::int?} null : let final core::int #t60 = 0 in self::Extension|[]=(#t59{self::Class2}, #t60, self::Extension|[](#t59{self::Class2}, #t60).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t61 = c1 in #t61 == null ?{core::int?} null : let final self::Class2? #t62 = #t61{self::Class1}.{self::Class1::field}{self::Class2?} in #t62 == null ?{core::int?} null : let final core::int #t63 = 0 in self::Extension|[]=(#t62{self::Class2}, #t63, self::Extension|[](#t62{self::Class2}, #t63).{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class1? #t64 = c1 in #t64 == null ?{core::int?} null : let final self::Class2? #t65 = #t64{self::Class1}.{self::Class1::field}{self::Class2?} in #t65 == null ?{core::int?} null : let final core::int #t66 = 0 in let final core::int #t67 = self::Extension|[](#t65{self::Class2}, #t66).{core::num::+}(1){(core::num) → core::int} in let final void #t68 = self::Extension|[]=(#t65{self::Class2}, #t66, #t67) in #t67;
-  let final self::Class1? #t69 = c1 in #t69 == null ?{core::int?} null : let final self::Class2? #t70 = #t69{self::Class1}.{self::Class1::field}{self::Class2?} in #t70 == null ?{core::int?} null : let final core::int #t71 = 0 in self::Extension|[]=(#t70{self::Class2}, #t71, self::Extension|[](#t70{self::Class2}, #t71).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t72 = c1 in #t72 == null ?{core::int?} null : let final self::Class2? #t73 = #t72{self::Class1}.{self::Class1::field}{self::Class2?} in #t73 == null ?{core::int?} null : let final core::int #t74 = 0 in self::Extension|[](#t73{self::Class2}, #t74) == null ?{core::int} self::Extension|[]=(#t73{self::Class2}, #t74, 1) : null;
-  let final self::Class1? #t75 = c1 in #t75 == null ?{core::int?} null : let final self::Class2? #t76 = #t75{self::Class1}.{self::Class1::field}{self::Class2?} in #t76 == null ?{core::int?} null : let final core::int #t77 = 0 in self::Extension|[](#t76{self::Class2}, #t77) == null ?{core::int} self::Extension|[]=(#t76{self::Class2}, #t77, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1){(core::int) → core::int}){(core::num) → core::int}) : null;
-  let final self::Class1? #t78 = c1 in #t78 == null ?{core::int?} null : let final self::Class2? #t79 = #t78{self::Class1}.{self::Class1::field}{self::Class2?} in #t79 == null ?{core::int?} null : self::Extension|[](#t79{self::Class2}, 0);
-  let final self::Class1? #t80 = c1 in #t80 == null ?{void} null : let final self::Class2? #t81 = #t80{self::Class1}.{self::Class1::field}{self::Class2?} in #t81 == null ?{void} null : self::Extension|[]=(#t81{self::Class2}, 0, 1);
-  let final self::Class1? #t82 = c1 in #t82 == null ?{void} null : let final self::Class2? #t83 = #t82{self::Class1}.{self::Class1::field}{self::Class2?} in #t83 == null ?{void} null : self::Extension|[]=(#t83{self::Class2}, 0, 1.{core::num::+}((let final self::Class2? #t84 = c2 in #t84 == null ?{core::int?} null : self::Extension|[](#t84{self::Class2}, 0)!) as{ForNonNullableByDefault} core::int){(core::num) → core::int});
-  let final self::Class1? #t85 = c1 in #t85 == null ?{core::int?} null : let final self::Class2? #t86 = #t85{self::Class1}.{self::Class1::field}{self::Class2?} in #t86 == null ?{core::int?} null : let final core::int #t87 = 0 in self::Extension|[]=(#t86{self::Class2}, #t87, self::Extension|[](#t86{self::Class2}, #t87).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t88 = c1 in #t88 == null ?{core::int?} null : let final self::Class2? #t89 = #t88{self::Class1}.{self::Class1::field}{self::Class2?} in #t89 == null ?{core::int?} null : let final core::int #t90 = 0 in self::Extension|[]=(#t89{self::Class2}, #t90, self::Extension|[](#t89{self::Class2}, #t90).{core::num::+}(1.{core::num::+}((let final self::Class2? #t91 = c2 in #t91 == null ?{core::int?} null : self::Extension|[](#t91{self::Class2}, 0)!) as{ForNonNullableByDefault} core::int){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class1? #t92 = c1 in #t92 == null ?{core::int?} null : let final self::Class2? #t93 = #t92{self::Class1}.{self::Class1::field}{self::Class2?} in #t93 == null ?{core::int?} null : let final core::int #t94 = 0 in let final core::int #t95 = self::Extension|[](#t93{self::Class2}, #t94).{core::num::+}(1){(core::num) → core::int} in let final void #t96 = self::Extension|[]=(#t93{self::Class2}, #t94, #t95) in #t95;
-  let final self::Class1? #t97 = c1 in #t97 == null ?{core::int?} null : let final self::Class2? #t98 = #t97{self::Class1}.{self::Class1::field}{self::Class2?} in #t98 == null ?{core::int?} null : let final core::int #t99 = 0 in self::Extension|[]=(#t98{self::Class2}, #t99, self::Extension|[](#t98{self::Class2}, #t99).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t100 = c1 in #t100 == null ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field}{self::Class2?} in #t101 == null ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102) == null ?{core::int} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null;
-  let final self::Class1? #t103 = c1 in #t103 == null ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field}{self::Class2?} in #t104 == null ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105) == null ?{core::int} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106 == null ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as{ForNonNullableByDefault} core::int){(core::num) → core::int}) : null;
+  let final self::Class2? #t18 = c2 in #t18.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t18{self::Class2}, 0);
+  let final self::Class2? #t19 = c2 in #t19.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t19{self::Class2}, 0, 1);
+  let final self::Class2? #t20 = c2 in #t20.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t20{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)));
+  let final self::Class2? #t21 = c2 in #t21.{core::Object::==}(null) ?{core::int?} null : let final core::int #t22 = 0 in self::Extension|[]=(#t21{self::Class2}, #t22, self::Extension|[](#t21{self::Class2}, #t22).{core::num::+}(1));
+  let final self::Class2? #t23 = c2 in #t23.{core::Object::==}(null) ?{core::int?} null : let final core::int #t24 = 0 in self::Extension|[]=(#t23{self::Class2}, #t24, self::Extension|[](#t23{self::Class2}, #t24).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0))));
+  let final self::Class2? #t25 = c2 in #t25.{core::Object::==}(null) ?{core::int?} null : let final core::int #t26 = 0 in let final core::int #t27 = self::Extension|[](#t25{self::Class2}, #t26).{core::num::+}(1) in let final void #t28 = self::Extension|[]=(#t25{self::Class2}, #t26, #t27) in #t27;
+  let final self::Class2? #t29 = c2 in #t29.{core::Object::==}(null) ?{core::int?} null : let final core::int #t30 = 0 in self::Extension|[]=(#t29{self::Class2}, #t30, self::Extension|[](#t29{self::Class2}, #t30).{core::num::+}(1));
+  let final self::Class2? #t31 = c2 in #t31.{core::Object::==}(null) ?{core::int?} null : let final core::int #t32 = 0 in self::Extension|[](#t31{self::Class2}, #t32).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t31{self::Class2}, #t32, 1) : null;
+  let final self::Class2? #t33 = c2 in #t33.{core::Object::==}(null) ?{core::int?} null : let final core::int #t34 = 0 in self::Extension|[](#t33{self::Class2}, #t34).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t33{self::Class2}, #t34, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1))) : null;
+  let final self::Class2? #t35 = c2 in #t35.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t35{self::Class2}, 0);
+  let final self::Class2? #t36 = c2 in #t36.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t36{self::Class2}, 0, 1);
+  let final self::Class2? #t37 = c2 in #t37.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t37{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)));
+  let final self::Class2? #t38 = c2 in #t38.{core::Object::==}(null) ?{core::int?} null : let final core::int #t39 = 0 in self::Extension|[]=(#t38{self::Class2}, #t39, self::Extension|[](#t38{self::Class2}, #t39).{core::num::+}(1));
+  let final self::Class2? #t40 = c2 in #t40.{core::Object::==}(null) ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0))));
+  let final self::Class2? #t42 = c2 in #t42.{core::Object::==}(null) ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1) in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44;
+  let final self::Class2? #t46 = c2 in #t46.{core::Object::==}(null) ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1));
+  let final self::Class2? #t48 = c2 in #t48.{core::Object::==}(null) ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null;
+  let final self::Class2? #t50 = c2 in #t50.{core::Object::==}(null) ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1))) : null;
+  let final self::Class1? #t52 = c1 in #t52.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field} in #t53.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0);
+  let final self::Class1? #t54 = c1 in #t54.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field} in #t55.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1);
+  let final self::Class1? #t56 = c1 in #t56.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field} in #t57.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0)));
+  let final self::Class1? #t58 = c1 in #t58.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t59 = #t58{self::Class1}.{self::Class1::field} in #t59.{core::Object::==}(null) ?{core::int?} null : let final core::int #t60 = 0 in self::Extension|[]=(#t59{self::Class2}, #t60, self::Extension|[](#t59{self::Class2}, #t60).{core::num::+}(1));
+  let final self::Class1? #t61 = c1 in #t61.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t62 = #t61{self::Class1}.{self::Class1::field} in #t62.{core::Object::==}(null) ?{core::int?} null : let final core::int #t63 = 0 in self::Extension|[]=(#t62{self::Class2}, #t63, self::Extension|[](#t62{self::Class2}, #t63).{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0))));
+  let final self::Class1? #t64 = c1 in #t64.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t65 = #t64{self::Class1}.{self::Class1::field} in #t65.{core::Object::==}(null) ?{core::int?} null : let final core::int #t66 = 0 in let final core::int #t67 = self::Extension|[](#t65{self::Class2}, #t66).{core::num::+}(1) in let final void #t68 = self::Extension|[]=(#t65{self::Class2}, #t66, #t67) in #t67;
+  let final self::Class1? #t69 = c1 in #t69.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t70 = #t69{self::Class1}.{self::Class1::field} in #t70.{core::Object::==}(null) ?{core::int?} null : let final core::int #t71 = 0 in self::Extension|[]=(#t70{self::Class2}, #t71, self::Extension|[](#t70{self::Class2}, #t71).{core::num::+}(1));
+  let final self::Class1? #t72 = c1 in #t72.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t73 = #t72{self::Class1}.{self::Class1::field} in #t73.{core::Object::==}(null) ?{core::int?} null : let final core::int #t74 = 0 in self::Extension|[](#t73{self::Class2}, #t74).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t73{self::Class2}, #t74, 1) : null;
+  let final self::Class1? #t75 = c1 in #t75.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t76 = #t75{self::Class1}.{self::Class1::field} in #t76.{core::Object::==}(null) ?{core::int?} null : let final core::int #t77 = 0 in self::Extension|[](#t76{self::Class2}, #t77).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t76{self::Class2}, #t77, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1))) : null;
+  let final self::Class1? #t78 = c1 in #t78.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t79 = #t78{self::Class1}.{self::Class1::field} in #t79.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t79{self::Class2}, 0);
+  let final self::Class1? #t80 = c1 in #t80.{core::Object::==}(null) ?{void} null : let final self::Class2? #t81 = #t80{self::Class1}.{self::Class1::field} in #t81.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t81{self::Class2}, 0, 1);
+  let final self::Class1? #t82 = c1 in #t82.{core::Object::==}(null) ?{void} null : let final self::Class2? #t83 = #t82{self::Class1}.{self::Class1::field} in #t83.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t83{self::Class2}, 0, 1.{core::num::+}((let final self::Class2? #t84 = c2 in #t84.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t84{self::Class2}, 0)!) as{ForNonNullableByDefault} core::int));
+  let final self::Class1? #t85 = c1 in #t85.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t86 = #t85{self::Class1}.{self::Class1::field} in #t86.{core::Object::==}(null) ?{core::int?} null : let final core::int #t87 = 0 in self::Extension|[]=(#t86{self::Class2}, #t87, self::Extension|[](#t86{self::Class2}, #t87).{core::num::+}(1));
+  let final self::Class1? #t88 = c1 in #t88.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t89 = #t88{self::Class1}.{self::Class1::field} in #t89.{core::Object::==}(null) ?{core::int?} null : let final core::int #t90 = 0 in self::Extension|[]=(#t89{self::Class2}, #t90, self::Extension|[](#t89{self::Class2}, #t90).{core::num::+}(1.{core::num::+}((let final self::Class2? #t91 = c2 in #t91.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t91{self::Class2}, 0)!) as{ForNonNullableByDefault} core::int)));
+  let final self::Class1? #t92 = c1 in #t92.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t93 = #t92{self::Class1}.{self::Class1::field} in #t93.{core::Object::==}(null) ?{core::int?} null : let final core::int #t94 = 0 in let final core::int #t95 = self::Extension|[](#t93{self::Class2}, #t94).{core::num::+}(1) in let final void #t96 = self::Extension|[]=(#t93{self::Class2}, #t94, #t95) in #t95;
+  let final self::Class1? #t97 = c1 in #t97.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t98 = #t97{self::Class1}.{self::Class1::field} in #t98.{core::Object::==}(null) ?{core::int?} null : let final core::int #t99 = 0 in self::Extension|[]=(#t98{self::Class2}, #t99, self::Extension|[](#t98{self::Class2}, #t99).{core::num::+}(1));
+  let final self::Class1? #t100 = c1 in #t100.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field} in #t101.{core::Object::==}(null) ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null;
+  let final self::Class1? #t103 = c1 in #t103.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field} in #t104.{core::Object::==}(null) ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as{ForNonNullableByDefault} core::int)) : null;
 }
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.transformed.expect
index 7c865b5..5b7b144 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.transformed.expect
@@ -78,58 +78,58 @@
   operator []= = self::Extension|[]=;
 }
 static method Extension|[](lowered final self::Class2 #this, core::int index) → core::int
-  return #this.{self::Class2::field}{core::int};
+  return #this.{self::Class2::field};
 static method Extension|[]=(lowered final self::Class2 #this, core::int index, core::int value) → void {
   #this.{self::Class2::field} = value;
 }
 static method main() → dynamic {
   self::Class1? c1;
-  let final self::Class1? #t1 = c1 in #t1 == null ?{core::int?} null : #t1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int};
-  let final self::Class1? #t2 = c1 in #t2 == null ?{core::int?} null : #t2{self::Class1}.{self::Class1::[]=}(0, 1){(core::int, core::int) → void};
-  let final self::Class1? #t3 = c1 in #t3 == null ?{core::int?} null : #t3{self::Class1}.{self::Class1::[]=}(0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t4 = c1 in #t4 == null ?{core::int?} null : let final core::int #t5 = 0 in #t4{self::Class1}.{self::Class1::[]=}(#t5, #t4{self::Class1}.{self::Class1::[]}(#t5){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t6 = c1 in #t6 == null ?{core::int?} null : let final core::int #t7 = 0 in #t6{self::Class1}.{self::Class1::[]=}(#t7, #t6{self::Class1}.{self::Class1::[]}(#t7){(core::int) → core::int}.{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t8 = c1 in #t8 == null ?{core::int?} null : let final core::int #t9 = 0 in let final core::int #t10 = #t8{self::Class1}.{self::Class1::[]}(#t9){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int} in let final void #t11 = #t8{self::Class1}.{self::Class1::[]=}(#t9, #t10){(core::int, core::int) → void} in #t10;
-  let final self::Class1? #t12 = c1 in #t12 == null ?{core::int?} null : let final core::int #t13 = 0 in #t12{self::Class1}.{self::Class1::[]=}(#t13, #t12{self::Class1}.{self::Class1::[]}(#t13){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t14 = c1 in #t14 == null ?{core::int?} null : let final core::int #t15 = 0 in #t14{self::Class1}.{self::Class1::[]}(#t15){(core::int) → core::int} == null ?{core::int} #t14{self::Class1}.{self::Class1::[]=}(#t15, 1){(core::int, core::int) → void} : null;
-  let final self::Class1? #t16 = c1 in #t16 == null ?{core::int?} null : let final core::int #t17 = 0 in #t16{self::Class1}.{self::Class1::[]}(#t17){(core::int) → core::int} == null ?{core::int} #t16{self::Class1}.{self::Class1::[]=}(#t17, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1){(core::int) → core::int}){(core::num) → core::int}){(core::int, core::int) → void} : null;
+  let final self::Class1? #t1 = c1 in #t1.{core::Object::==}(null) ?{core::int?} null : #t1{self::Class1}.{self::Class1::[]}(0);
+  let final self::Class1? #t2 = c1 in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{self::Class1}.{self::Class1::[]=}(0, 1);
+  let final self::Class1? #t3 = c1 in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{self::Class1}.{self::Class1::[]=}(0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0)));
+  let final self::Class1? #t4 = c1 in #t4.{core::Object::==}(null) ?{core::int?} null : let final core::int #t5 = 0 in #t4{self::Class1}.{self::Class1::[]=}(#t5, #t4{self::Class1}.{self::Class1::[]}(#t5).{core::num::+}(1));
+  let final self::Class1? #t6 = c1 in #t6.{core::Object::==}(null) ?{core::int?} null : let final core::int #t7 = 0 in #t6{self::Class1}.{self::Class1::[]=}(#t7, #t6{self::Class1}.{self::Class1::[]}(#t7).{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0))));
+  let final self::Class1? #t8 = c1 in #t8.{core::Object::==}(null) ?{core::int?} null : let final core::int #t9 = 0 in let final core::int #t10 = #t8{self::Class1}.{self::Class1::[]}(#t9).{core::num::+}(1) in let final void #t11 = #t8{self::Class1}.{self::Class1::[]=}(#t9, #t10) in #t10;
+  let final self::Class1? #t12 = c1 in #t12.{core::Object::==}(null) ?{core::int?} null : let final core::int #t13 = 0 in #t12{self::Class1}.{self::Class1::[]=}(#t13, #t12{self::Class1}.{self::Class1::[]}(#t13).{core::num::+}(1));
+  let final self::Class1? #t14 = c1 in #t14.{core::Object::==}(null) ?{core::int?} null : let final core::int #t15 = 0 in #t14{self::Class1}.{self::Class1::[]}(#t15).{core::num::==}(null) ?{core::int} #t14{self::Class1}.{self::Class1::[]=}(#t15, 1) : null;
+  let final self::Class1? #t16 = c1 in #t16.{core::Object::==}(null) ?{core::int?} null : let final core::int #t17 = 0 in #t16{self::Class1}.{self::Class1::[]}(#t17).{core::num::==}(null) ?{core::int} #t16{self::Class1}.{self::Class1::[]=}(#t17, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1))) : null;
   self::Class2? c2;
-  let final self::Class2? #t18 = c2 in #t18 == null ?{core::int?} null : self::Extension|[](#t18{self::Class2}, 0);
-  let final self::Class2? #t19 = c2 in #t19 == null ?{core::int?} null : self::Extension|[]=(#t19{self::Class2}, 0, 1);
-  let final self::Class2? #t20 = c2 in #t20 == null ?{core::int?} null : self::Extension|[]=(#t20{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int});
-  let final self::Class2? #t21 = c2 in #t21 == null ?{core::int?} null : let final core::int #t22 = 0 in self::Extension|[]=(#t21{self::Class2}, #t22, self::Extension|[](#t21{self::Class2}, #t22).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t23 = c2 in #t23 == null ?{core::int?} null : let final core::int #t24 = 0 in self::Extension|[]=(#t23{self::Class2}, #t24, self::Extension|[](#t23{self::Class2}, #t24).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class2? #t25 = c2 in #t25 == null ?{core::int?} null : let final core::int #t26 = 0 in let final core::int #t27 = self::Extension|[](#t25{self::Class2}, #t26).{core::num::+}(1){(core::num) → core::int} in let final void #t28 = self::Extension|[]=(#t25{self::Class2}, #t26, #t27) in #t27;
-  let final self::Class2? #t29 = c2 in #t29 == null ?{core::int?} null : let final core::int #t30 = 0 in self::Extension|[]=(#t29{self::Class2}, #t30, self::Extension|[](#t29{self::Class2}, #t30).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t31 = c2 in #t31 == null ?{core::int?} null : let final core::int #t32 = 0 in self::Extension|[](#t31{self::Class2}, #t32) == null ?{core::int} self::Extension|[]=(#t31{self::Class2}, #t32, 1) : null;
-  let final self::Class2? #t33 = c2 in #t33 == null ?{core::int?} null : let final core::int #t34 = 0 in self::Extension|[](#t33{self::Class2}, #t34) == null ?{core::int} self::Extension|[]=(#t33{self::Class2}, #t34, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null;
-  let final self::Class2? #t35 = c2 in #t35 == null ?{core::int?} null : self::Extension|[](#t35{self::Class2}, 0);
-  let final self::Class2? #t36 = c2 in #t36 == null ?{void} null : self::Extension|[]=(#t36{self::Class2}, 0, 1);
-  let final self::Class2? #t37 = c2 in #t37 == null ?{void} null : self::Extension|[]=(#t37{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int});
-  let final self::Class2? #t38 = c2 in #t38 == null ?{core::int?} null : let final core::int #t39 = 0 in self::Extension|[]=(#t38{self::Class2}, #t39, self::Extension|[](#t38{self::Class2}, #t39).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t40 = c2 in #t40 == null ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class2? #t42 = c2 in #t42 == null ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1){(core::num) → core::int} in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44;
-  let final self::Class2? #t46 = c2 in #t46 == null ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null;
-  let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null;
-  let final self::Class1? #t52 = c1 in #t52 == null ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field}{self::Class2?} in #t53 == null ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0);
-  let final self::Class1? #t54 = c1 in #t54 == null ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field}{self::Class2?} in #t55 == null ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1);
-  let final self::Class1? #t56 = c1 in #t56 == null ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field}{self::Class2?} in #t57 == null ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int});
-  let final self::Class1? #t58 = c1 in #t58 == null ?{core::int?} null : let final self::Class2? #t59 = #t58{self::Class1}.{self::Class1::field}{self::Class2?} in #t59 == null ?{core::int?} null : let final core::int #t60 = 0 in self::Extension|[]=(#t59{self::Class2}, #t60, self::Extension|[](#t59{self::Class2}, #t60).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t61 = c1 in #t61 == null ?{core::int?} null : let final self::Class2? #t62 = #t61{self::Class1}.{self::Class1::field}{self::Class2?} in #t62 == null ?{core::int?} null : let final core::int #t63 = 0 in self::Extension|[]=(#t62{self::Class2}, #t63, self::Extension|[](#t62{self::Class2}, #t63).{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class1? #t64 = c1 in #t64 == null ?{core::int?} null : let final self::Class2? #t65 = #t64{self::Class1}.{self::Class1::field}{self::Class2?} in #t65 == null ?{core::int?} null : let final core::int #t66 = 0 in let final core::int #t67 = self::Extension|[](#t65{self::Class2}, #t66).{core::num::+}(1){(core::num) → core::int} in let final void #t68 = self::Extension|[]=(#t65{self::Class2}, #t66, #t67) in #t67;
-  let final self::Class1? #t69 = c1 in #t69 == null ?{core::int?} null : let final self::Class2? #t70 = #t69{self::Class1}.{self::Class1::field}{self::Class2?} in #t70 == null ?{core::int?} null : let final core::int #t71 = 0 in self::Extension|[]=(#t70{self::Class2}, #t71, self::Extension|[](#t70{self::Class2}, #t71).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t72 = c1 in #t72 == null ?{core::int?} null : let final self::Class2? #t73 = #t72{self::Class1}.{self::Class1::field}{self::Class2?} in #t73 == null ?{core::int?} null : let final core::int #t74 = 0 in self::Extension|[](#t73{self::Class2}, #t74) == null ?{core::int} self::Extension|[]=(#t73{self::Class2}, #t74, 1) : null;
-  let final self::Class1? #t75 = c1 in #t75 == null ?{core::int?} null : let final self::Class2? #t76 = #t75{self::Class1}.{self::Class1::field}{self::Class2?} in #t76 == null ?{core::int?} null : let final core::int #t77 = 0 in self::Extension|[](#t76{self::Class2}, #t77) == null ?{core::int} self::Extension|[]=(#t76{self::Class2}, #t77, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1){(core::int) → core::int}){(core::num) → core::int}) : null;
-  let final self::Class1? #t78 = c1 in #t78 == null ?{core::int?} null : let final self::Class2? #t79 = #t78{self::Class1}.{self::Class1::field}{self::Class2?} in #t79 == null ?{core::int?} null : self::Extension|[](#t79{self::Class2}, 0);
-  let final self::Class1? #t80 = c1 in #t80 == null ?{void} null : let final self::Class2? #t81 = #t80{self::Class1}.{self::Class1::field}{self::Class2?} in #t81 == null ?{void} null : self::Extension|[]=(#t81{self::Class2}, 0, 1);
-  let final self::Class1? #t82 = c1 in #t82 == null ?{void} null : let final self::Class2? #t83 = #t82{self::Class1}.{self::Class1::field}{self::Class2?} in #t83 == null ?{void} null : self::Extension|[]=(#t83{self::Class2}, 0, 1.{core::num::+}(let core::int? #t84 = let final self::Class2? #t85 = c2 in #t85 == null ?{core::int?} null : self::Extension|[](#t85{self::Class2}, 0)! in #t84.==(null) ?{core::int} #t84 as{ForNonNullableByDefault} core::int : #t84{core::int}){(core::num) → core::int});
-  let final self::Class1? #t86 = c1 in #t86 == null ?{core::int?} null : let final self::Class2? #t87 = #t86{self::Class1}.{self::Class1::field}{self::Class2?} in #t87 == null ?{core::int?} null : let final core::int #t88 = 0 in self::Extension|[]=(#t87{self::Class2}, #t88, self::Extension|[](#t87{self::Class2}, #t88).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t89 = c1 in #t89 == null ?{core::int?} null : let final self::Class2? #t90 = #t89{self::Class1}.{self::Class1::field}{self::Class2?} in #t90 == null ?{core::int?} null : let final core::int #t91 = 0 in self::Extension|[]=(#t90{self::Class2}, #t91, self::Extension|[](#t90{self::Class2}, #t91).{core::num::+}(1.{core::num::+}(let core::int? #t92 = let final self::Class2? #t93 = c2 in #t93 == null ?{core::int?} null : self::Extension|[](#t93{self::Class2}, 0)! in #t92.==(null) ?{core::int} #t92 as{ForNonNullableByDefault} core::int : #t92{core::int}){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class1? #t94 = c1 in #t94 == null ?{core::int?} null : let final self::Class2? #t95 = #t94{self::Class1}.{self::Class1::field}{self::Class2?} in #t95 == null ?{core::int?} null : let final core::int #t96 = 0 in let final core::int #t97 = self::Extension|[](#t95{self::Class2}, #t96).{core::num::+}(1){(core::num) → core::int} in let final void #t98 = self::Extension|[]=(#t95{self::Class2}, #t96, #t97) in #t97;
-  let final self::Class1? #t99 = c1 in #t99 == null ?{core::int?} null : let final self::Class2? #t100 = #t99{self::Class1}.{self::Class1::field}{self::Class2?} in #t100 == null ?{core::int?} null : let final core::int #t101 = 0 in self::Extension|[]=(#t100{self::Class2}, #t101, self::Extension|[](#t100{self::Class2}, #t101).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t102 = c1 in #t102 == null ?{core::int?} null : let final self::Class2? #t103 = #t102{self::Class1}.{self::Class1::field}{self::Class2?} in #t103 == null ?{core::int?} null : let final core::int #t104 = 0 in self::Extension|[](#t103{self::Class2}, #t104) == null ?{core::int} self::Extension|[]=(#t103{self::Class2}, #t104, 1) : null;
-  let final self::Class1? #t105 = c1 in #t105 == null ?{core::int?} null : let final self::Class2? #t106 = #t105{self::Class1}.{self::Class1::field}{self::Class2?} in #t106 == null ?{core::int?} null : let final core::int #t107 = 0 in self::Extension|[](#t106{self::Class2}, #t107) == null ?{core::int} self::Extension|[]=(#t106{self::Class2}, #t107, 1.{core::num::+}(let core::int? #t108 = let final self::Class2? #t109 = c2 in #t109 == null ?{core::int?} null : self::Extension|[](#t109{self::Class2}, 1)! in #t108.==(null) ?{core::int} #t108 as{ForNonNullableByDefault} core::int : #t108{core::int}){(core::num) → core::int}) : null;
+  let final self::Class2? #t18 = c2 in #t18.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t18{self::Class2}, 0);
+  let final self::Class2? #t19 = c2 in #t19.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t19{self::Class2}, 0, 1);
+  let final self::Class2? #t20 = c2 in #t20.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t20{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)));
+  let final self::Class2? #t21 = c2 in #t21.{core::Object::==}(null) ?{core::int?} null : let final core::int #t22 = 0 in self::Extension|[]=(#t21{self::Class2}, #t22, self::Extension|[](#t21{self::Class2}, #t22).{core::num::+}(1));
+  let final self::Class2? #t23 = c2 in #t23.{core::Object::==}(null) ?{core::int?} null : let final core::int #t24 = 0 in self::Extension|[]=(#t23{self::Class2}, #t24, self::Extension|[](#t23{self::Class2}, #t24).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0))));
+  let final self::Class2? #t25 = c2 in #t25.{core::Object::==}(null) ?{core::int?} null : let final core::int #t26 = 0 in let final core::int #t27 = self::Extension|[](#t25{self::Class2}, #t26).{core::num::+}(1) in let final void #t28 = self::Extension|[]=(#t25{self::Class2}, #t26, #t27) in #t27;
+  let final self::Class2? #t29 = c2 in #t29.{core::Object::==}(null) ?{core::int?} null : let final core::int #t30 = 0 in self::Extension|[]=(#t29{self::Class2}, #t30, self::Extension|[](#t29{self::Class2}, #t30).{core::num::+}(1));
+  let final self::Class2? #t31 = c2 in #t31.{core::Object::==}(null) ?{core::int?} null : let final core::int #t32 = 0 in self::Extension|[](#t31{self::Class2}, #t32).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t31{self::Class2}, #t32, 1) : null;
+  let final self::Class2? #t33 = c2 in #t33.{core::Object::==}(null) ?{core::int?} null : let final core::int #t34 = 0 in self::Extension|[](#t33{self::Class2}, #t34).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t33{self::Class2}, #t34, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1))) : null;
+  let final self::Class2? #t35 = c2 in #t35.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t35{self::Class2}, 0);
+  let final self::Class2? #t36 = c2 in #t36.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t36{self::Class2}, 0, 1);
+  let final self::Class2? #t37 = c2 in #t37.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t37{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)));
+  let final self::Class2? #t38 = c2 in #t38.{core::Object::==}(null) ?{core::int?} null : let final core::int #t39 = 0 in self::Extension|[]=(#t38{self::Class2}, #t39, self::Extension|[](#t38{self::Class2}, #t39).{core::num::+}(1));
+  let final self::Class2? #t40 = c2 in #t40.{core::Object::==}(null) ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0))));
+  let final self::Class2? #t42 = c2 in #t42.{core::Object::==}(null) ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1) in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44;
+  let final self::Class2? #t46 = c2 in #t46.{core::Object::==}(null) ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1));
+  let final self::Class2? #t48 = c2 in #t48.{core::Object::==}(null) ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null;
+  let final self::Class2? #t50 = c2 in #t50.{core::Object::==}(null) ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1))) : null;
+  let final self::Class1? #t52 = c1 in #t52.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field} in #t53.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0);
+  let final self::Class1? #t54 = c1 in #t54.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field} in #t55.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1);
+  let final self::Class1? #t56 = c1 in #t56.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field} in #t57.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0)));
+  let final self::Class1? #t58 = c1 in #t58.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t59 = #t58{self::Class1}.{self::Class1::field} in #t59.{core::Object::==}(null) ?{core::int?} null : let final core::int #t60 = 0 in self::Extension|[]=(#t59{self::Class2}, #t60, self::Extension|[](#t59{self::Class2}, #t60).{core::num::+}(1));
+  let final self::Class1? #t61 = c1 in #t61.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t62 = #t61{self::Class1}.{self::Class1::field} in #t62.{core::Object::==}(null) ?{core::int?} null : let final core::int #t63 = 0 in self::Extension|[]=(#t62{self::Class2}, #t63, self::Extension|[](#t62{self::Class2}, #t63).{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0))));
+  let final self::Class1? #t64 = c1 in #t64.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t65 = #t64{self::Class1}.{self::Class1::field} in #t65.{core::Object::==}(null) ?{core::int?} null : let final core::int #t66 = 0 in let final core::int #t67 = self::Extension|[](#t65{self::Class2}, #t66).{core::num::+}(1) in let final void #t68 = self::Extension|[]=(#t65{self::Class2}, #t66, #t67) in #t67;
+  let final self::Class1? #t69 = c1 in #t69.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t70 = #t69{self::Class1}.{self::Class1::field} in #t70.{core::Object::==}(null) ?{core::int?} null : let final core::int #t71 = 0 in self::Extension|[]=(#t70{self::Class2}, #t71, self::Extension|[](#t70{self::Class2}, #t71).{core::num::+}(1));
+  let final self::Class1? #t72 = c1 in #t72.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t73 = #t72{self::Class1}.{self::Class1::field} in #t73.{core::Object::==}(null) ?{core::int?} null : let final core::int #t74 = 0 in self::Extension|[](#t73{self::Class2}, #t74).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t73{self::Class2}, #t74, 1) : null;
+  let final self::Class1? #t75 = c1 in #t75.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t76 = #t75{self::Class1}.{self::Class1::field} in #t76.{core::Object::==}(null) ?{core::int?} null : let final core::int #t77 = 0 in self::Extension|[](#t76{self::Class2}, #t77).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t76{self::Class2}, #t77, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1))) : null;
+  let final self::Class1? #t78 = c1 in #t78.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t79 = #t78{self::Class1}.{self::Class1::field} in #t79.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t79{self::Class2}, 0);
+  let final self::Class1? #t80 = c1 in #t80.{core::Object::==}(null) ?{void} null : let final self::Class2? #t81 = #t80{self::Class1}.{self::Class1::field} in #t81.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t81{self::Class2}, 0, 1);
+  let final self::Class1? #t82 = c1 in #t82.{core::Object::==}(null) ?{void} null : let final self::Class2? #t83 = #t82{self::Class1}.{self::Class1::field} in #t83.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t83{self::Class2}, 0, 1.{core::num::+}(let core::int? #t84 = let final self::Class2? #t85 = c2 in #t85.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t85{self::Class2}, 0)! in #t84.==(null) ?{core::int} #t84 as{ForNonNullableByDefault} core::int : #t84{core::int}));
+  let final self::Class1? #t86 = c1 in #t86.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t87 = #t86{self::Class1}.{self::Class1::field} in #t87.{core::Object::==}(null) ?{core::int?} null : let final core::int #t88 = 0 in self::Extension|[]=(#t87{self::Class2}, #t88, self::Extension|[](#t87{self::Class2}, #t88).{core::num::+}(1));
+  let final self::Class1? #t89 = c1 in #t89.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t90 = #t89{self::Class1}.{self::Class1::field} in #t90.{core::Object::==}(null) ?{core::int?} null : let final core::int #t91 = 0 in self::Extension|[]=(#t90{self::Class2}, #t91, self::Extension|[](#t90{self::Class2}, #t91).{core::num::+}(1.{core::num::+}(let core::int? #t92 = let final self::Class2? #t93 = c2 in #t93.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t93{self::Class2}, 0)! in #t92.==(null) ?{core::int} #t92 as{ForNonNullableByDefault} core::int : #t92{core::int})));
+  let final self::Class1? #t94 = c1 in #t94.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t95 = #t94{self::Class1}.{self::Class1::field} in #t95.{core::Object::==}(null) ?{core::int?} null : let final core::int #t96 = 0 in let final core::int #t97 = self::Extension|[](#t95{self::Class2}, #t96).{core::num::+}(1) in let final void #t98 = self::Extension|[]=(#t95{self::Class2}, #t96, #t97) in #t97;
+  let final self::Class1? #t99 = c1 in #t99.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t100 = #t99{self::Class1}.{self::Class1::field} in #t100.{core::Object::==}(null) ?{core::int?} null : let final core::int #t101 = 0 in self::Extension|[]=(#t100{self::Class2}, #t101, self::Extension|[](#t100{self::Class2}, #t101).{core::num::+}(1));
+  let final self::Class1? #t102 = c1 in #t102.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t103 = #t102{self::Class1}.{self::Class1::field} in #t103.{core::Object::==}(null) ?{core::int?} null : let final core::int #t104 = 0 in self::Extension|[](#t103{self::Class2}, #t104).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t103{self::Class2}, #t104, 1) : null;
+  let final self::Class1? #t105 = c1 in #t105.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t106 = #t105{self::Class1}.{self::Class1::field} in #t106.{core::Object::==}(null) ?{core::int?} null : let final core::int #t107 = 0 in self::Extension|[](#t106{self::Class2}, #t107).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t106{self::Class2}, #t107, 1.{core::num::+}(let core::int? #t108 = let final self::Class2? #t109 = c2 in #t109.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t109{self::Class2}, 1)! in #t108.==(null) ?{core::int} #t108 as{ForNonNullableByDefault} core::int : #t108{core::int})) : null;
 }
 
 
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.expect
index 438791b..dc52187 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.expect
@@ -78,56 +78,56 @@
   operator []= = self::Extension|[]=;
 }
 static method Extension|[](lowered final self::Class2 #this, core::int index) → core::int
-  return #this.{self::Class2::field}{core::int};
+  return #this.{self::Class2::field};
 static method Extension|[]=(lowered final self::Class2 #this, core::int index, core::int value) → void {
   #this.{self::Class2::field} = value;
 }
 static method main() → dynamic {
   self::Class1? c1;
-  let final self::Class1? #t1 = c1 in #t1 == null ?{core::int?} null : #t1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int};
-  let final self::Class1? #t2 = c1 in #t2 == null ?{core::int?} null : #t2{self::Class1}.{self::Class1::[]=}(0, 1){(core::int, core::int) → void};
-  let final self::Class1? #t3 = c1 in #t3 == null ?{core::int?} null : #t3{self::Class1}.{self::Class1::[]=}(0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t4 = c1 in #t4 == null ?{core::int?} null : let final core::int #t5 = 0 in #t4{self::Class1}.{self::Class1::[]=}(#t5, #t4{self::Class1}.{self::Class1::[]}(#t5){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t6 = c1 in #t6 == null ?{core::int?} null : let final core::int #t7 = 0 in #t6{self::Class1}.{self::Class1::[]=}(#t7, #t6{self::Class1}.{self::Class1::[]}(#t7){(core::int) → core::int}.{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t8 = c1 in #t8 == null ?{core::int?} null : let final core::int #t9 = 0 in let final core::int #t10 = #t8{self::Class1}.{self::Class1::[]}(#t9){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int} in let final void #t11 = #t8{self::Class1}.{self::Class1::[]=}(#t9, #t10){(core::int, core::int) → void} in #t10;
-  let final self::Class1? #t12 = c1 in #t12 == null ?{core::int?} null : let final core::int #t13 = 0 in #t12{self::Class1}.{self::Class1::[]=}(#t13, #t12{self::Class1}.{self::Class1::[]}(#t13){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t14 = c1 in #t14 == null ?{core::int?} null : let final core::int #t15 = 0 in #t14{self::Class1}.{self::Class1::[]}(#t15){(core::int) → core::int} == null ?{core::int} #t14{self::Class1}.{self::Class1::[]=}(#t15, 1){(core::int, core::int) → void} : null;
-  let final self::Class1? #t16 = c1 in #t16 == null ?{core::int?} null : let final core::int #t17 = 0 in #t16{self::Class1}.{self::Class1::[]}(#t17){(core::int) → core::int} == null ?{core::int} #t16{self::Class1}.{self::Class1::[]=}(#t17, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1){(core::int) → core::int}){(core::num) → core::int}){(core::int, core::int) → void} : null;
+  let final self::Class1? #t1 = c1 in #t1.{core::Object::==}(null) ?{core::int?} null : #t1{self::Class1}.{self::Class1::[]}(0);
+  let final self::Class1? #t2 = c1 in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{self::Class1}.{self::Class1::[]=}(0, 1);
+  let final self::Class1? #t3 = c1 in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{self::Class1}.{self::Class1::[]=}(0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0)));
+  let final self::Class1? #t4 = c1 in #t4.{core::Object::==}(null) ?{core::int?} null : let final core::int #t5 = 0 in #t4{self::Class1}.{self::Class1::[]=}(#t5, #t4{self::Class1}.{self::Class1::[]}(#t5).{core::num::+}(1));
+  let final self::Class1? #t6 = c1 in #t6.{core::Object::==}(null) ?{core::int?} null : let final core::int #t7 = 0 in #t6{self::Class1}.{self::Class1::[]=}(#t7, #t6{self::Class1}.{self::Class1::[]}(#t7).{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0))));
+  let final self::Class1? #t8 = c1 in #t8.{core::Object::==}(null) ?{core::int?} null : let final core::int #t9 = 0 in let final core::int #t10 = #t8{self::Class1}.{self::Class1::[]}(#t9).{core::num::+}(1) in let final void #t11 = #t8{self::Class1}.{self::Class1::[]=}(#t9, #t10) in #t10;
+  let final self::Class1? #t12 = c1 in #t12.{core::Object::==}(null) ?{core::int?} null : let final core::int #t13 = 0 in #t12{self::Class1}.{self::Class1::[]=}(#t13, #t12{self::Class1}.{self::Class1::[]}(#t13).{core::num::+}(1));
+  let final self::Class1? #t14 = c1 in #t14.{core::Object::==}(null) ?{core::int?} null : let final core::int #t15 = 0 in #t14{self::Class1}.{self::Class1::[]}(#t15).{core::num::==}(null) ?{core::int} #t14{self::Class1}.{self::Class1::[]=}(#t15, 1) : null;
+  let final self::Class1? #t16 = c1 in #t16.{core::Object::==}(null) ?{core::int?} null : let final core::int #t17 = 0 in #t16{self::Class1}.{self::Class1::[]}(#t17).{core::num::==}(null) ?{core::int} #t16{self::Class1}.{self::Class1::[]=}(#t17, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1))) : null;
   self::Class2? c2;
-  let final self::Class2? #t18 = c2 in #t18 == null ?{core::int?} null : self::Extension|[](#t18{self::Class2}, 0);
-  let final self::Class2? #t19 = c2 in #t19 == null ?{core::int?} null : self::Extension|[]=(#t19{self::Class2}, 0, 1);
-  let final self::Class2? #t20 = c2 in #t20 == null ?{core::int?} null : self::Extension|[]=(#t20{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int});
-  let final self::Class2? #t21 = c2 in #t21 == null ?{core::int?} null : let final core::int #t22 = 0 in self::Extension|[]=(#t21{self::Class2}, #t22, self::Extension|[](#t21{self::Class2}, #t22).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t23 = c2 in #t23 == null ?{core::int?} null : let final core::int #t24 = 0 in self::Extension|[]=(#t23{self::Class2}, #t24, self::Extension|[](#t23{self::Class2}, #t24).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class2? #t25 = c2 in #t25 == null ?{core::int?} null : let final core::int #t26 = 0 in let final core::int #t27 = self::Extension|[](#t25{self::Class2}, #t26).{core::num::+}(1){(core::num) → core::int} in let final void #t28 = self::Extension|[]=(#t25{self::Class2}, #t26, #t27) in #t27;
-  let final self::Class2? #t29 = c2 in #t29 == null ?{core::int?} null : let final core::int #t30 = 0 in self::Extension|[]=(#t29{self::Class2}, #t30, self::Extension|[](#t29{self::Class2}, #t30).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t31 = c2 in #t31 == null ?{core::int?} null : let final core::int #t32 = 0 in self::Extension|[](#t31{self::Class2}, #t32) == null ?{core::int} self::Extension|[]=(#t31{self::Class2}, #t32, 1) : null;
-  let final self::Class2? #t33 = c2 in #t33 == null ?{core::int?} null : let final core::int #t34 = 0 in self::Extension|[](#t33{self::Class2}, #t34) == null ?{core::int} self::Extension|[]=(#t33{self::Class2}, #t34, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null;
-  let final self::Class2? #t35 = c2 in #t35 == null ?{core::int?} null : self::Extension|[](#t35{self::Class2}, 0);
-  let final self::Class2? #t36 = c2 in #t36 == null ?{void} null : self::Extension|[]=(#t36{self::Class2}, 0, 1);
-  let final self::Class2? #t37 = c2 in #t37 == null ?{void} null : self::Extension|[]=(#t37{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int});
-  let final self::Class2? #t38 = c2 in #t38 == null ?{core::int?} null : let final core::int #t39 = 0 in self::Extension|[]=(#t38{self::Class2}, #t39, self::Extension|[](#t38{self::Class2}, #t39).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t40 = c2 in #t40 == null ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class2? #t42 = c2 in #t42 == null ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1){(core::num) → core::int} in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44;
-  let final self::Class2? #t46 = c2 in #t46 == null ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null;
-  let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null;
-  let final self::Class1? #t52 = c1 in #t52 == null ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field}{self::Class2?} in #t53 == null ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0);
-  let final self::Class1? #t54 = c1 in #t54 == null ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field}{self::Class2?} in #t55 == null ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1);
-  let final self::Class1? #t56 = c1 in #t56 == null ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field}{self::Class2?} in #t57 == null ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int});
-  let final self::Class1? #t58 = c1 in #t58 == null ?{core::int?} null : let final self::Class2? #t59 = #t58{self::Class1}.{self::Class1::field}{self::Class2?} in #t59 == null ?{core::int?} null : let final core::int #t60 = 0 in self::Extension|[]=(#t59{self::Class2}, #t60, self::Extension|[](#t59{self::Class2}, #t60).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t61 = c1 in #t61 == null ?{core::int?} null : let final self::Class2? #t62 = #t61{self::Class1}.{self::Class1::field}{self::Class2?} in #t62 == null ?{core::int?} null : let final core::int #t63 = 0 in self::Extension|[]=(#t62{self::Class2}, #t63, self::Extension|[](#t62{self::Class2}, #t63).{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class1? #t64 = c1 in #t64 == null ?{core::int?} null : let final self::Class2? #t65 = #t64{self::Class1}.{self::Class1::field}{self::Class2?} in #t65 == null ?{core::int?} null : let final core::int #t66 = 0 in let final core::int #t67 = self::Extension|[](#t65{self::Class2}, #t66).{core::num::+}(1){(core::num) → core::int} in let final void #t68 = self::Extension|[]=(#t65{self::Class2}, #t66, #t67) in #t67;
-  let final self::Class1? #t69 = c1 in #t69 == null ?{core::int?} null : let final self::Class2? #t70 = #t69{self::Class1}.{self::Class1::field}{self::Class2?} in #t70 == null ?{core::int?} null : let final core::int #t71 = 0 in self::Extension|[]=(#t70{self::Class2}, #t71, self::Extension|[](#t70{self::Class2}, #t71).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t72 = c1 in #t72 == null ?{core::int?} null : let final self::Class2? #t73 = #t72{self::Class1}.{self::Class1::field}{self::Class2?} in #t73 == null ?{core::int?} null : let final core::int #t74 = 0 in self::Extension|[](#t73{self::Class2}, #t74) == null ?{core::int} self::Extension|[]=(#t73{self::Class2}, #t74, 1) : null;
-  let final self::Class1? #t75 = c1 in #t75 == null ?{core::int?} null : let final self::Class2? #t76 = #t75{self::Class1}.{self::Class1::field}{self::Class2?} in #t76 == null ?{core::int?} null : let final core::int #t77 = 0 in self::Extension|[](#t76{self::Class2}, #t77) == null ?{core::int} self::Extension|[]=(#t76{self::Class2}, #t77, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1){(core::int) → core::int}){(core::num) → core::int}) : null;
-  let final self::Class1? #t78 = c1 in #t78 == null ?{core::int?} null : let final self::Class2? #t79 = #t78{self::Class1}.{self::Class1::field}{self::Class2?} in #t79 == null ?{core::int?} null : self::Extension|[](#t79{self::Class2}, 0);
-  let final self::Class1? #t80 = c1 in #t80 == null ?{void} null : let final self::Class2? #t81 = #t80{self::Class1}.{self::Class1::field}{self::Class2?} in #t81 == null ?{void} null : self::Extension|[]=(#t81{self::Class2}, 0, 1);
-  let final self::Class1? #t82 = c1 in #t82 == null ?{void} null : let final self::Class2? #t83 = #t82{self::Class1}.{self::Class1::field}{self::Class2?} in #t83 == null ?{void} null : self::Extension|[]=(#t83{self::Class2}, 0, 1.{core::num::+}((let final self::Class2? #t84 = c2 in #t84 == null ?{core::int?} null : self::Extension|[](#t84{self::Class2}, 0)!) as{ForNonNullableByDefault} core::int){(core::num) → core::int});
-  let final self::Class1? #t85 = c1 in #t85 == null ?{core::int?} null : let final self::Class2? #t86 = #t85{self::Class1}.{self::Class1::field}{self::Class2?} in #t86 == null ?{core::int?} null : let final core::int #t87 = 0 in self::Extension|[]=(#t86{self::Class2}, #t87, self::Extension|[](#t86{self::Class2}, #t87).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t88 = c1 in #t88 == null ?{core::int?} null : let final self::Class2? #t89 = #t88{self::Class1}.{self::Class1::field}{self::Class2?} in #t89 == null ?{core::int?} null : let final core::int #t90 = 0 in self::Extension|[]=(#t89{self::Class2}, #t90, self::Extension|[](#t89{self::Class2}, #t90).{core::num::+}(1.{core::num::+}((let final self::Class2? #t91 = c2 in #t91 == null ?{core::int?} null : self::Extension|[](#t91{self::Class2}, 0)!) as{ForNonNullableByDefault} core::int){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class1? #t92 = c1 in #t92 == null ?{core::int?} null : let final self::Class2? #t93 = #t92{self::Class1}.{self::Class1::field}{self::Class2?} in #t93 == null ?{core::int?} null : let final core::int #t94 = 0 in let final core::int #t95 = self::Extension|[](#t93{self::Class2}, #t94).{core::num::+}(1){(core::num) → core::int} in let final void #t96 = self::Extension|[]=(#t93{self::Class2}, #t94, #t95) in #t95;
-  let final self::Class1? #t97 = c1 in #t97 == null ?{core::int?} null : let final self::Class2? #t98 = #t97{self::Class1}.{self::Class1::field}{self::Class2?} in #t98 == null ?{core::int?} null : let final core::int #t99 = 0 in self::Extension|[]=(#t98{self::Class2}, #t99, self::Extension|[](#t98{self::Class2}, #t99).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t100 = c1 in #t100 == null ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field}{self::Class2?} in #t101 == null ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102) == null ?{core::int} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null;
-  let final self::Class1? #t103 = c1 in #t103 == null ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field}{self::Class2?} in #t104 == null ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105) == null ?{core::int} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106 == null ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as{ForNonNullableByDefault} core::int){(core::num) → core::int}) : null;
+  let final self::Class2? #t18 = c2 in #t18.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t18{self::Class2}, 0);
+  let final self::Class2? #t19 = c2 in #t19.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t19{self::Class2}, 0, 1);
+  let final self::Class2? #t20 = c2 in #t20.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t20{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)));
+  let final self::Class2? #t21 = c2 in #t21.{core::Object::==}(null) ?{core::int?} null : let final core::int #t22 = 0 in self::Extension|[]=(#t21{self::Class2}, #t22, self::Extension|[](#t21{self::Class2}, #t22).{core::num::+}(1));
+  let final self::Class2? #t23 = c2 in #t23.{core::Object::==}(null) ?{core::int?} null : let final core::int #t24 = 0 in self::Extension|[]=(#t23{self::Class2}, #t24, self::Extension|[](#t23{self::Class2}, #t24).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0))));
+  let final self::Class2? #t25 = c2 in #t25.{core::Object::==}(null) ?{core::int?} null : let final core::int #t26 = 0 in let final core::int #t27 = self::Extension|[](#t25{self::Class2}, #t26).{core::num::+}(1) in let final void #t28 = self::Extension|[]=(#t25{self::Class2}, #t26, #t27) in #t27;
+  let final self::Class2? #t29 = c2 in #t29.{core::Object::==}(null) ?{core::int?} null : let final core::int #t30 = 0 in self::Extension|[]=(#t29{self::Class2}, #t30, self::Extension|[](#t29{self::Class2}, #t30).{core::num::+}(1));
+  let final self::Class2? #t31 = c2 in #t31.{core::Object::==}(null) ?{core::int?} null : let final core::int #t32 = 0 in self::Extension|[](#t31{self::Class2}, #t32).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t31{self::Class2}, #t32, 1) : null;
+  let final self::Class2? #t33 = c2 in #t33.{core::Object::==}(null) ?{core::int?} null : let final core::int #t34 = 0 in self::Extension|[](#t33{self::Class2}, #t34).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t33{self::Class2}, #t34, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1))) : null;
+  let final self::Class2? #t35 = c2 in #t35.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t35{self::Class2}, 0);
+  let final self::Class2? #t36 = c2 in #t36.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t36{self::Class2}, 0, 1);
+  let final self::Class2? #t37 = c2 in #t37.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t37{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)));
+  let final self::Class2? #t38 = c2 in #t38.{core::Object::==}(null) ?{core::int?} null : let final core::int #t39 = 0 in self::Extension|[]=(#t38{self::Class2}, #t39, self::Extension|[](#t38{self::Class2}, #t39).{core::num::+}(1));
+  let final self::Class2? #t40 = c2 in #t40.{core::Object::==}(null) ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0))));
+  let final self::Class2? #t42 = c2 in #t42.{core::Object::==}(null) ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1) in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44;
+  let final self::Class2? #t46 = c2 in #t46.{core::Object::==}(null) ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1));
+  let final self::Class2? #t48 = c2 in #t48.{core::Object::==}(null) ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null;
+  let final self::Class2? #t50 = c2 in #t50.{core::Object::==}(null) ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1))) : null;
+  let final self::Class1? #t52 = c1 in #t52.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field} in #t53.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0);
+  let final self::Class1? #t54 = c1 in #t54.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field} in #t55.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1);
+  let final self::Class1? #t56 = c1 in #t56.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field} in #t57.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0)));
+  let final self::Class1? #t58 = c1 in #t58.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t59 = #t58{self::Class1}.{self::Class1::field} in #t59.{core::Object::==}(null) ?{core::int?} null : let final core::int #t60 = 0 in self::Extension|[]=(#t59{self::Class2}, #t60, self::Extension|[](#t59{self::Class2}, #t60).{core::num::+}(1));
+  let final self::Class1? #t61 = c1 in #t61.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t62 = #t61{self::Class1}.{self::Class1::field} in #t62.{core::Object::==}(null) ?{core::int?} null : let final core::int #t63 = 0 in self::Extension|[]=(#t62{self::Class2}, #t63, self::Extension|[](#t62{self::Class2}, #t63).{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0))));
+  let final self::Class1? #t64 = c1 in #t64.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t65 = #t64{self::Class1}.{self::Class1::field} in #t65.{core::Object::==}(null) ?{core::int?} null : let final core::int #t66 = 0 in let final core::int #t67 = self::Extension|[](#t65{self::Class2}, #t66).{core::num::+}(1) in let final void #t68 = self::Extension|[]=(#t65{self::Class2}, #t66, #t67) in #t67;
+  let final self::Class1? #t69 = c1 in #t69.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t70 = #t69{self::Class1}.{self::Class1::field} in #t70.{core::Object::==}(null) ?{core::int?} null : let final core::int #t71 = 0 in self::Extension|[]=(#t70{self::Class2}, #t71, self::Extension|[](#t70{self::Class2}, #t71).{core::num::+}(1));
+  let final self::Class1? #t72 = c1 in #t72.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t73 = #t72{self::Class1}.{self::Class1::field} in #t73.{core::Object::==}(null) ?{core::int?} null : let final core::int #t74 = 0 in self::Extension|[](#t73{self::Class2}, #t74).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t73{self::Class2}, #t74, 1) : null;
+  let final self::Class1? #t75 = c1 in #t75.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t76 = #t75{self::Class1}.{self::Class1::field} in #t76.{core::Object::==}(null) ?{core::int?} null : let final core::int #t77 = 0 in self::Extension|[](#t76{self::Class2}, #t77).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t76{self::Class2}, #t77, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1))) : null;
+  let final self::Class1? #t78 = c1 in #t78.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t79 = #t78{self::Class1}.{self::Class1::field} in #t79.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t79{self::Class2}, 0);
+  let final self::Class1? #t80 = c1 in #t80.{core::Object::==}(null) ?{void} null : let final self::Class2? #t81 = #t80{self::Class1}.{self::Class1::field} in #t81.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t81{self::Class2}, 0, 1);
+  let final self::Class1? #t82 = c1 in #t82.{core::Object::==}(null) ?{void} null : let final self::Class2? #t83 = #t82{self::Class1}.{self::Class1::field} in #t83.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t83{self::Class2}, 0, 1.{core::num::+}((let final self::Class2? #t84 = c2 in #t84.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t84{self::Class2}, 0)!) as{ForNonNullableByDefault} core::int));
+  let final self::Class1? #t85 = c1 in #t85.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t86 = #t85{self::Class1}.{self::Class1::field} in #t86.{core::Object::==}(null) ?{core::int?} null : let final core::int #t87 = 0 in self::Extension|[]=(#t86{self::Class2}, #t87, self::Extension|[](#t86{self::Class2}, #t87).{core::num::+}(1));
+  let final self::Class1? #t88 = c1 in #t88.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t89 = #t88{self::Class1}.{self::Class1::field} in #t89.{core::Object::==}(null) ?{core::int?} null : let final core::int #t90 = 0 in self::Extension|[]=(#t89{self::Class2}, #t90, self::Extension|[](#t89{self::Class2}, #t90).{core::num::+}(1.{core::num::+}((let final self::Class2? #t91 = c2 in #t91.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t91{self::Class2}, 0)!) as{ForNonNullableByDefault} core::int)));
+  let final self::Class1? #t92 = c1 in #t92.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t93 = #t92{self::Class1}.{self::Class1::field} in #t93.{core::Object::==}(null) ?{core::int?} null : let final core::int #t94 = 0 in let final core::int #t95 = self::Extension|[](#t93{self::Class2}, #t94).{core::num::+}(1) in let final void #t96 = self::Extension|[]=(#t93{self::Class2}, #t94, #t95) in #t95;
+  let final self::Class1? #t97 = c1 in #t97.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t98 = #t97{self::Class1}.{self::Class1::field} in #t98.{core::Object::==}(null) ?{core::int?} null : let final core::int #t99 = 0 in self::Extension|[]=(#t98{self::Class2}, #t99, self::Extension|[](#t98{self::Class2}, #t99).{core::num::+}(1));
+  let final self::Class1? #t100 = c1 in #t100.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field} in #t101.{core::Object::==}(null) ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null;
+  let final self::Class1? #t103 = c1 in #t103.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field} in #t104.{core::Object::==}(null) ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as{ForNonNullableByDefault} core::int)) : null;
 }
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.transformed.expect
index 4ddf30e..e604a49 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.transformed.expect
@@ -78,58 +78,58 @@
   operator []= = self::Extension|[]=;
 }
 static method Extension|[](lowered final self::Class2 #this, core::int index) → core::int
-  return #this.{self::Class2::field}{core::int};
+  return #this.{self::Class2::field};
 static method Extension|[]=(lowered final self::Class2 #this, core::int index, core::int value) → void {
   #this.{self::Class2::field} = value;
 }
 static method main() → dynamic {
   self::Class1? c1;
-  let final self::Class1? #t1 = c1 in #t1 == null ?{core::int?} null : #t1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int};
-  let final self::Class1? #t2 = c1 in #t2 == null ?{core::int?} null : #t2{self::Class1}.{self::Class1::[]=}(0, 1){(core::int, core::int) → void};
-  let final self::Class1? #t3 = c1 in #t3 == null ?{core::int?} null : #t3{self::Class1}.{self::Class1::[]=}(0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t4 = c1 in #t4 == null ?{core::int?} null : let final core::int #t5 = 0 in #t4{self::Class1}.{self::Class1::[]=}(#t5, #t4{self::Class1}.{self::Class1::[]}(#t5){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t6 = c1 in #t6 == null ?{core::int?} null : let final core::int #t7 = 0 in #t6{self::Class1}.{self::Class1::[]=}(#t7, #t6{self::Class1}.{self::Class1::[]}(#t7){(core::int) → core::int}.{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t8 = c1 in #t8 == null ?{core::int?} null : let final core::int #t9 = 0 in let final core::int #t10 = #t8{self::Class1}.{self::Class1::[]}(#t9){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int} in let final void #t11 = #t8{self::Class1}.{self::Class1::[]=}(#t9, #t10){(core::int, core::int) → void} in #t10;
-  let final self::Class1? #t12 = c1 in #t12 == null ?{core::int?} null : let final core::int #t13 = 0 in #t12{self::Class1}.{self::Class1::[]=}(#t13, #t12{self::Class1}.{self::Class1::[]}(#t13){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::int, core::int) → void};
-  let final self::Class1? #t14 = c1 in #t14 == null ?{core::int?} null : let final core::int #t15 = 0 in #t14{self::Class1}.{self::Class1::[]}(#t15){(core::int) → core::int} == null ?{core::int} #t14{self::Class1}.{self::Class1::[]=}(#t15, 1){(core::int, core::int) → void} : null;
-  let final self::Class1? #t16 = c1 in #t16 == null ?{core::int?} null : let final core::int #t17 = 0 in #t16{self::Class1}.{self::Class1::[]}(#t17){(core::int) → core::int} == null ?{core::int} #t16{self::Class1}.{self::Class1::[]=}(#t17, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1){(core::int) → core::int}){(core::num) → core::int}){(core::int, core::int) → void} : null;
+  let final self::Class1? #t1 = c1 in #t1.{core::Object::==}(null) ?{core::int?} null : #t1{self::Class1}.{self::Class1::[]}(0);
+  let final self::Class1? #t2 = c1 in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{self::Class1}.{self::Class1::[]=}(0, 1);
+  let final self::Class1? #t3 = c1 in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{self::Class1}.{self::Class1::[]=}(0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0)));
+  let final self::Class1? #t4 = c1 in #t4.{core::Object::==}(null) ?{core::int?} null : let final core::int #t5 = 0 in #t4{self::Class1}.{self::Class1::[]=}(#t5, #t4{self::Class1}.{self::Class1::[]}(#t5).{core::num::+}(1));
+  let final self::Class1? #t6 = c1 in #t6.{core::Object::==}(null) ?{core::int?} null : let final core::int #t7 = 0 in #t6{self::Class1}.{self::Class1::[]=}(#t7, #t6{self::Class1}.{self::Class1::[]}(#t7).{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0))));
+  let final self::Class1? #t8 = c1 in #t8.{core::Object::==}(null) ?{core::int?} null : let final core::int #t9 = 0 in let final core::int #t10 = #t8{self::Class1}.{self::Class1::[]}(#t9).{core::num::+}(1) in let final void #t11 = #t8{self::Class1}.{self::Class1::[]=}(#t9, #t10) in #t10;
+  let final self::Class1? #t12 = c1 in #t12.{core::Object::==}(null) ?{core::int?} null : let final core::int #t13 = 0 in #t12{self::Class1}.{self::Class1::[]=}(#t13, #t12{self::Class1}.{self::Class1::[]}(#t13).{core::num::+}(1));
+  let final self::Class1? #t14 = c1 in #t14.{core::Object::==}(null) ?{core::int?} null : let final core::int #t15 = 0 in #t14{self::Class1}.{self::Class1::[]}(#t15).{core::num::==}(null) ?{core::int} #t14{self::Class1}.{self::Class1::[]=}(#t15, 1) : null;
+  let final self::Class1? #t16 = c1 in #t16.{core::Object::==}(null) ?{core::int?} null : let final core::int #t17 = 0 in #t16{self::Class1}.{self::Class1::[]}(#t17).{core::num::==}(null) ?{core::int} #t16{self::Class1}.{self::Class1::[]=}(#t17, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1))) : null;
   self::Class2? c2;
-  let final self::Class2? #t18 = c2 in #t18 == null ?{core::int?} null : self::Extension|[](#t18{self::Class2}, 0);
-  let final self::Class2? #t19 = c2 in #t19 == null ?{core::int?} null : self::Extension|[]=(#t19{self::Class2}, 0, 1);
-  let final self::Class2? #t20 = c2 in #t20 == null ?{core::int?} null : self::Extension|[]=(#t20{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int});
-  let final self::Class2? #t21 = c2 in #t21 == null ?{core::int?} null : let final core::int #t22 = 0 in self::Extension|[]=(#t21{self::Class2}, #t22, self::Extension|[](#t21{self::Class2}, #t22).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t23 = c2 in #t23 == null ?{core::int?} null : let final core::int #t24 = 0 in self::Extension|[]=(#t23{self::Class2}, #t24, self::Extension|[](#t23{self::Class2}, #t24).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class2? #t25 = c2 in #t25 == null ?{core::int?} null : let final core::int #t26 = 0 in let final core::int #t27 = self::Extension|[](#t25{self::Class2}, #t26).{core::num::+}(1){(core::num) → core::int} in let final void #t28 = self::Extension|[]=(#t25{self::Class2}, #t26, #t27) in #t27;
-  let final self::Class2? #t29 = c2 in #t29 == null ?{core::int?} null : let final core::int #t30 = 0 in self::Extension|[]=(#t29{self::Class2}, #t30, self::Extension|[](#t29{self::Class2}, #t30).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t31 = c2 in #t31 == null ?{core::int?} null : let final core::int #t32 = 0 in self::Extension|[](#t31{self::Class2}, #t32) == null ?{core::int} self::Extension|[]=(#t31{self::Class2}, #t32, 1) : null;
-  let final self::Class2? #t33 = c2 in #t33 == null ?{core::int?} null : let final core::int #t34 = 0 in self::Extension|[](#t33{self::Class2}, #t34) == null ?{core::int} self::Extension|[]=(#t33{self::Class2}, #t34, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null;
-  let final self::Class2? #t35 = c2 in #t35 == null ?{core::int?} null : self::Extension|[](#t35{self::Class2}, 0);
-  let final self::Class2? #t36 = c2 in #t36 == null ?{void} null : self::Extension|[]=(#t36{self::Class2}, 0, 1);
-  let final self::Class2? #t37 = c2 in #t37 == null ?{void} null : self::Extension|[]=(#t37{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int});
-  let final self::Class2? #t38 = c2 in #t38 == null ?{core::int?} null : let final core::int #t39 = 0 in self::Extension|[]=(#t38{self::Class2}, #t39, self::Extension|[](#t38{self::Class2}, #t39).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t40 = c2 in #t40 == null ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class2? #t42 = c2 in #t42 == null ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1){(core::num) → core::int} in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44;
-  let final self::Class2? #t46 = c2 in #t46 == null ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null;
-  let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null;
-  let final self::Class1? #t52 = c1 in #t52 == null ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field}{self::Class2?} in #t53 == null ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0);
-  let final self::Class1? #t54 = c1 in #t54 == null ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field}{self::Class2?} in #t55 == null ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1);
-  let final self::Class1? #t56 = c1 in #t56 == null ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field}{self::Class2?} in #t57 == null ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int});
-  let final self::Class1? #t58 = c1 in #t58 == null ?{core::int?} null : let final self::Class2? #t59 = #t58{self::Class1}.{self::Class1::field}{self::Class2?} in #t59 == null ?{core::int?} null : let final core::int #t60 = 0 in self::Extension|[]=(#t59{self::Class2}, #t60, self::Extension|[](#t59{self::Class2}, #t60).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t61 = c1 in #t61 == null ?{core::int?} null : let final self::Class2? #t62 = #t61{self::Class1}.{self::Class1::field}{self::Class2?} in #t62 == null ?{core::int?} null : let final core::int #t63 = 0 in self::Extension|[]=(#t62{self::Class2}, #t63, self::Extension|[](#t62{self::Class2}, #t63).{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class1? #t64 = c1 in #t64 == null ?{core::int?} null : let final self::Class2? #t65 = #t64{self::Class1}.{self::Class1::field}{self::Class2?} in #t65 == null ?{core::int?} null : let final core::int #t66 = 0 in let final core::int #t67 = self::Extension|[](#t65{self::Class2}, #t66).{core::num::+}(1){(core::num) → core::int} in let final void #t68 = self::Extension|[]=(#t65{self::Class2}, #t66, #t67) in #t67;
-  let final self::Class1? #t69 = c1 in #t69 == null ?{core::int?} null : let final self::Class2? #t70 = #t69{self::Class1}.{self::Class1::field}{self::Class2?} in #t70 == null ?{core::int?} null : let final core::int #t71 = 0 in self::Extension|[]=(#t70{self::Class2}, #t71, self::Extension|[](#t70{self::Class2}, #t71).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t72 = c1 in #t72 == null ?{core::int?} null : let final self::Class2? #t73 = #t72{self::Class1}.{self::Class1::field}{self::Class2?} in #t73 == null ?{core::int?} null : let final core::int #t74 = 0 in self::Extension|[](#t73{self::Class2}, #t74) == null ?{core::int} self::Extension|[]=(#t73{self::Class2}, #t74, 1) : null;
-  let final self::Class1? #t75 = c1 in #t75 == null ?{core::int?} null : let final self::Class2? #t76 = #t75{self::Class1}.{self::Class1::field}{self::Class2?} in #t76 == null ?{core::int?} null : let final core::int #t77 = 0 in self::Extension|[](#t76{self::Class2}, #t77) == null ?{core::int} self::Extension|[]=(#t76{self::Class2}, #t77, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1){(core::int) → core::int}){(core::num) → core::int}) : null;
-  let final self::Class1? #t78 = c1 in #t78 == null ?{core::int?} null : let final self::Class2? #t79 = #t78{self::Class1}.{self::Class1::field}{self::Class2?} in #t79 == null ?{core::int?} null : self::Extension|[](#t79{self::Class2}, 0);
-  let final self::Class1? #t80 = c1 in #t80 == null ?{void} null : let final self::Class2? #t81 = #t80{self::Class1}.{self::Class1::field}{self::Class2?} in #t81 == null ?{void} null : self::Extension|[]=(#t81{self::Class2}, 0, 1);
-  let final self::Class1? #t82 = c1 in #t82 == null ?{void} null : let final self::Class2? #t83 = #t82{self::Class1}.{self::Class1::field}{self::Class2?} in #t83 == null ?{void} null : self::Extension|[]=(#t83{self::Class2}, 0, 1.{core::num::+}(let final self::Class2? #t84 = c2 in #t84 == null ?{core::int?} null : self::Extension|[](#t84{self::Class2}, 0)!){(core::num) → core::int});
-  let final self::Class1? #t85 = c1 in #t85 == null ?{core::int?} null : let final self::Class2? #t86 = #t85{self::Class1}.{self::Class1::field}{self::Class2?} in #t86 == null ?{core::int?} null : let final core::int #t87 = 0 in self::Extension|[]=(#t86{self::Class2}, #t87, self::Extension|[](#t86{self::Class2}, #t87).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t88 = c1 in #t88 == null ?{core::int?} null : let final self::Class2? #t89 = #t88{self::Class1}.{self::Class1::field}{self::Class2?} in #t89 == null ?{core::int?} null : let final core::int #t90 = 0 in self::Extension|[]=(#t89{self::Class2}, #t90, self::Extension|[](#t89{self::Class2}, #t90).{core::num::+}(1.{core::num::+}(let final self::Class2? #t91 = c2 in #t91 == null ?{core::int?} null : self::Extension|[](#t91{self::Class2}, 0)!){(core::num) → core::int}){(core::num) → core::int});
-  let final self::Class1? #t92 = c1 in #t92 == null ?{core::int?} null : let final self::Class2? #t93 = #t92{self::Class1}.{self::Class1::field}{self::Class2?} in #t93 == null ?{core::int?} null : let final core::int #t94 = 0 in let final core::int #t95 = self::Extension|[](#t93{self::Class2}, #t94).{core::num::+}(1){(core::num) → core::int} in let final void #t96 = self::Extension|[]=(#t93{self::Class2}, #t94, #t95) in #t95;
-  let final self::Class1? #t97 = c1 in #t97 == null ?{core::int?} null : let final self::Class2? #t98 = #t97{self::Class1}.{self::Class1::field}{self::Class2?} in #t98 == null ?{core::int?} null : let final core::int #t99 = 0 in self::Extension|[]=(#t98{self::Class2}, #t99, self::Extension|[](#t98{self::Class2}, #t99).{core::num::+}(1){(core::num) → core::int});
-  let final self::Class1? #t100 = c1 in #t100 == null ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field}{self::Class2?} in #t101 == null ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102) == null ?{core::int} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null;
-  let final self::Class1? #t103 = c1 in #t103 == null ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field}{self::Class2?} in #t104 == null ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105) == null ?{core::int} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}(let final self::Class2? #t106 = c2 in #t106 == null ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!){(core::num) → core::int}) : null;
+  let final self::Class2? #t18 = c2 in #t18.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t18{self::Class2}, 0);
+  let final self::Class2? #t19 = c2 in #t19.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t19{self::Class2}, 0, 1);
+  let final self::Class2? #t20 = c2 in #t20.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t20{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)));
+  let final self::Class2? #t21 = c2 in #t21.{core::Object::==}(null) ?{core::int?} null : let final core::int #t22 = 0 in self::Extension|[]=(#t21{self::Class2}, #t22, self::Extension|[](#t21{self::Class2}, #t22).{core::num::+}(1));
+  let final self::Class2? #t23 = c2 in #t23.{core::Object::==}(null) ?{core::int?} null : let final core::int #t24 = 0 in self::Extension|[]=(#t23{self::Class2}, #t24, self::Extension|[](#t23{self::Class2}, #t24).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0))));
+  let final self::Class2? #t25 = c2 in #t25.{core::Object::==}(null) ?{core::int?} null : let final core::int #t26 = 0 in let final core::int #t27 = self::Extension|[](#t25{self::Class2}, #t26).{core::num::+}(1) in let final void #t28 = self::Extension|[]=(#t25{self::Class2}, #t26, #t27) in #t27;
+  let final self::Class2? #t29 = c2 in #t29.{core::Object::==}(null) ?{core::int?} null : let final core::int #t30 = 0 in self::Extension|[]=(#t29{self::Class2}, #t30, self::Extension|[](#t29{self::Class2}, #t30).{core::num::+}(1));
+  let final self::Class2? #t31 = c2 in #t31.{core::Object::==}(null) ?{core::int?} null : let final core::int #t32 = 0 in self::Extension|[](#t31{self::Class2}, #t32).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t31{self::Class2}, #t32, 1) : null;
+  let final self::Class2? #t33 = c2 in #t33.{core::Object::==}(null) ?{core::int?} null : let final core::int #t34 = 0 in self::Extension|[](#t33{self::Class2}, #t34).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t33{self::Class2}, #t34, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1))) : null;
+  let final self::Class2? #t35 = c2 in #t35.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t35{self::Class2}, 0);
+  let final self::Class2? #t36 = c2 in #t36.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t36{self::Class2}, 0, 1);
+  let final self::Class2? #t37 = c2 in #t37.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t37{self::Class2}, 0, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)));
+  let final self::Class2? #t38 = c2 in #t38.{core::Object::==}(null) ?{core::int?} null : let final core::int #t39 = 0 in self::Extension|[]=(#t38{self::Class2}, #t39, self::Extension|[](#t38{self::Class2}, #t39).{core::num::+}(1));
+  let final self::Class2? #t40 = c2 in #t40.{core::Object::==}(null) ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0))));
+  let final self::Class2? #t42 = c2 in #t42.{core::Object::==}(null) ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1) in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44;
+  let final self::Class2? #t46 = c2 in #t46.{core::Object::==}(null) ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1));
+  let final self::Class2? #t48 = c2 in #t48.{core::Object::==}(null) ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null;
+  let final self::Class2? #t50 = c2 in #t50.{core::Object::==}(null) ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1))) : null;
+  let final self::Class1? #t52 = c1 in #t52.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field} in #t53.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0);
+  let final self::Class1? #t54 = c1 in #t54.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field} in #t55.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1);
+  let final self::Class1? #t56 = c1 in #t56.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field} in #t57.{core::Object::==}(null) ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0)));
+  let final self::Class1? #t58 = c1 in #t58.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t59 = #t58{self::Class1}.{self::Class1::field} in #t59.{core::Object::==}(null) ?{core::int?} null : let final core::int #t60 = 0 in self::Extension|[]=(#t59{self::Class2}, #t60, self::Extension|[](#t59{self::Class2}, #t60).{core::num::+}(1));
+  let final self::Class1? #t61 = c1 in #t61.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t62 = #t61{self::Class1}.{self::Class1::field} in #t62.{core::Object::==}(null) ?{core::int?} null : let final core::int #t63 = 0 in self::Extension|[]=(#t62{self::Class2}, #t63, self::Extension|[](#t62{self::Class2}, #t63).{core::num::+}(1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0))));
+  let final self::Class1? #t64 = c1 in #t64.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t65 = #t64{self::Class1}.{self::Class1::field} in #t65.{core::Object::==}(null) ?{core::int?} null : let final core::int #t66 = 0 in let final core::int #t67 = self::Extension|[](#t65{self::Class2}, #t66).{core::num::+}(1) in let final void #t68 = self::Extension|[]=(#t65{self::Class2}, #t66, #t67) in #t67;
+  let final self::Class1? #t69 = c1 in #t69.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t70 = #t69{self::Class1}.{self::Class1::field} in #t70.{core::Object::==}(null) ?{core::int?} null : let final core::int #t71 = 0 in self::Extension|[]=(#t70{self::Class2}, #t71, self::Extension|[](#t70{self::Class2}, #t71).{core::num::+}(1));
+  let final self::Class1? #t72 = c1 in #t72.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t73 = #t72{self::Class1}.{self::Class1::field} in #t73.{core::Object::==}(null) ?{core::int?} null : let final core::int #t74 = 0 in self::Extension|[](#t73{self::Class2}, #t74).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t73{self::Class2}, #t74, 1) : null;
+  let final self::Class1? #t75 = c1 in #t75.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t76 = #t75{self::Class1}.{self::Class1::field} in #t76.{core::Object::==}(null) ?{core::int?} null : let final core::int #t77 = 0 in self::Extension|[](#t76{self::Class2}, #t77).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t76{self::Class2}, #t77, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1))) : null;
+  let final self::Class1? #t78 = c1 in #t78.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t79 = #t78{self::Class1}.{self::Class1::field} in #t79.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t79{self::Class2}, 0);
+  let final self::Class1? #t80 = c1 in #t80.{core::Object::==}(null) ?{void} null : let final self::Class2? #t81 = #t80{self::Class1}.{self::Class1::field} in #t81.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t81{self::Class2}, 0, 1);
+  let final self::Class1? #t82 = c1 in #t82.{core::Object::==}(null) ?{void} null : let final self::Class2? #t83 = #t82{self::Class1}.{self::Class1::field} in #t83.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t83{self::Class2}, 0, 1.{core::num::+}(let final self::Class2? #t84 = c2 in #t84.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t84{self::Class2}, 0)!));
+  let final self::Class1? #t85 = c1 in #t85.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t86 = #t85{self::Class1}.{self::Class1::field} in #t86.{core::Object::==}(null) ?{core::int?} null : let final core::int #t87 = 0 in self::Extension|[]=(#t86{self::Class2}, #t87, self::Extension|[](#t86{self::Class2}, #t87).{core::num::+}(1));
+  let final self::Class1? #t88 = c1 in #t88.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t89 = #t88{self::Class1}.{self::Class1::field} in #t89.{core::Object::==}(null) ?{core::int?} null : let final core::int #t90 = 0 in self::Extension|[]=(#t89{self::Class2}, #t90, self::Extension|[](#t89{self::Class2}, #t90).{core::num::+}(1.{core::num::+}(let final self::Class2? #t91 = c2 in #t91.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t91{self::Class2}, 0)!)));
+  let final self::Class1? #t92 = c1 in #t92.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t93 = #t92{self::Class1}.{self::Class1::field} in #t93.{core::Object::==}(null) ?{core::int?} null : let final core::int #t94 = 0 in let final core::int #t95 = self::Extension|[](#t93{self::Class2}, #t94).{core::num::+}(1) in let final void #t96 = self::Extension|[]=(#t93{self::Class2}, #t94, #t95) in #t95;
+  let final self::Class1? #t97 = c1 in #t97.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t98 = #t97{self::Class1}.{self::Class1::field} in #t98.{core::Object::==}(null) ?{core::int?} null : let final core::int #t99 = 0 in self::Extension|[]=(#t98{self::Class2}, #t99, self::Extension|[](#t98{self::Class2}, #t99).{core::num::+}(1));
+  let final self::Class1? #t100 = c1 in #t100.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field} in #t101.{core::Object::==}(null) ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null;
+  let final self::Class1? #t103 = c1 in #t103.{core::Object::==}(null) ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field} in #t104.{core::Object::==}(null) ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105).{core::num::==}(null) ?{core::int} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}(let final self::Class2? #t106 = c2 in #t106.{core::Object::==}(null) ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!)) : null;
 }
 
 
diff --git a/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.expect b/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.expect
index e0b2ca8..40de06c 100644
--- a/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.expect
@@ -17,12 +17,12 @@
     : super core::Object::•()
     ;
   get nonNullableProperty() → self::A
-    return this.{self::Class::nonNullableField}{self::A};
+    return this.{self::Class::nonNullableField};
   set nonNullableProperty(self::A value) → void {
     this.{self::Class::nonNullableField} = value;
   }
   method nonNullableMethod() → self::A
-    return this.{self::Class::nonNullableField}{self::A};
+    return this.{self::Class::nonNullableField};
 }
 class A extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::A
@@ -37,17 +37,17 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/nullable_access.dart'.
 Try accessing using ?. instead.
   throws(() => c.nonNullableField);
-                 ^^^^^^^^^^^^^^^^" in c.{self::Class::nonNullableField}{<nullable>}.{self::A});
-  self::expect(null, let final self::Class? #t2 = c in #t2 == null ?{self::A?} null : #t2{self::Class}.{self::Class::nonNullableField}{self::A});
-  self::expect(null, let final self::Class? #t3 = c in #t3 == null ?{self::A?} null : #t3{self::Class}.{self::Class::nonNullableField}{self::A}.{self::A::nonNullableProperty}{self::A});
+                 ^^^^^^^^^^^^^^^^" in c.{self::Class::nonNullableField});
+  self::expect(null, let final self::Class? #t2 = c in #t2.{core::Object::==}(null) ?{self::A?} null : #t2{self::Class}.{self::Class::nonNullableField});
+  self::expect(null, let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{self::A?} null : #t3{self::Class}.{self::Class::nonNullableField}.{self::A::nonNullableProperty});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.transformed.expect
index e0b2ca8..40de06c 100644
--- a/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.transformed.expect
@@ -17,12 +17,12 @@
     : super core::Object::•()
     ;
   get nonNullableProperty() → self::A
-    return this.{self::Class::nonNullableField}{self::A};
+    return this.{self::Class::nonNullableField};
   set nonNullableProperty(self::A value) → void {
     this.{self::Class::nonNullableField} = value;
   }
   method nonNullableMethod() → self::A
-    return this.{self::Class::nonNullableField}{self::A};
+    return this.{self::Class::nonNullableField};
 }
 class A extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::A
@@ -37,17 +37,17 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/nullable_access.dart'.
 Try accessing using ?. instead.
   throws(() => c.nonNullableField);
-                 ^^^^^^^^^^^^^^^^" in c.{self::Class::nonNullableField}{<nullable>}.{self::A});
-  self::expect(null, let final self::Class? #t2 = c in #t2 == null ?{self::A?} null : #t2{self::Class}.{self::Class::nonNullableField}{self::A});
-  self::expect(null, let final self::Class? #t3 = c in #t3 == null ?{self::A?} null : #t3{self::Class}.{self::Class::nonNullableField}{self::A}.{self::A::nonNullableProperty}{self::A});
+                 ^^^^^^^^^^^^^^^^" in c.{self::Class::nonNullableField});
+  self::expect(null, let final self::Class? #t2 = c in #t2.{core::Object::==}(null) ?{self::A?} null : #t2{self::Class}.{self::Class::nonNullableField});
+  self::expect(null, let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{self::A?} null : #t3{self::Class}.{self::Class::nonNullableField}.{self::A::nonNullableProperty});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.expect b/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.expect
index e0b2ca8..40de06c 100644
--- a/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.expect
@@ -17,12 +17,12 @@
     : super core::Object::•()
     ;
   get nonNullableProperty() → self::A
-    return this.{self::Class::nonNullableField}{self::A};
+    return this.{self::Class::nonNullableField};
   set nonNullableProperty(self::A value) → void {
     this.{self::Class::nonNullableField} = value;
   }
   method nonNullableMethod() → self::A
-    return this.{self::Class::nonNullableField}{self::A};
+    return this.{self::Class::nonNullableField};
 }
 class A extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::A
@@ -37,17 +37,17 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/nullable_access.dart'.
 Try accessing using ?. instead.
   throws(() => c.nonNullableField);
-                 ^^^^^^^^^^^^^^^^" in c.{self::Class::nonNullableField}{<nullable>}.{self::A});
-  self::expect(null, let final self::Class? #t2 = c in #t2 == null ?{self::A?} null : #t2{self::Class}.{self::Class::nonNullableField}{self::A});
-  self::expect(null, let final self::Class? #t3 = c in #t3 == null ?{self::A?} null : #t3{self::Class}.{self::Class::nonNullableField}{self::A}.{self::A::nonNullableProperty}{self::A});
+                 ^^^^^^^^^^^^^^^^" in c.{self::Class::nonNullableField});
+  self::expect(null, let final self::Class? #t2 = c in #t2.{core::Object::==}(null) ?{self::A?} null : #t2{self::Class}.{self::Class::nonNullableField});
+  self::expect(null, let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{self::A?} null : #t3{self::Class}.{self::Class::nonNullableField}.{self::A::nonNullableProperty});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.transformed.expect
index e0b2ca8..40de06c 100644
--- a/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.transformed.expect
@@ -17,12 +17,12 @@
     : super core::Object::•()
     ;
   get nonNullableProperty() → self::A
-    return this.{self::Class::nonNullableField}{self::A};
+    return this.{self::Class::nonNullableField};
   set nonNullableProperty(self::A value) → void {
     this.{self::Class::nonNullableField} = value;
   }
   method nonNullableMethod() → self::A
-    return this.{self::Class::nonNullableField}{self::A};
+    return this.{self::Class::nonNullableField};
 }
 class A extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::A
@@ -37,17 +37,17 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/nullable_access.dart'.
 Try accessing using ?. instead.
   throws(() => c.nonNullableField);
-                 ^^^^^^^^^^^^^^^^" in c.{self::Class::nonNullableField}{<nullable>}.{self::A});
-  self::expect(null, let final self::Class? #t2 = c in #t2 == null ?{self::A?} null : #t2{self::Class}.{self::Class::nonNullableField}{self::A});
-  self::expect(null, let final self::Class? #t3 = c in #t3 == null ?{self::A?} null : #t3{self::Class}.{self::Class::nonNullableField}{self::A}.{self::A::nonNullableProperty}{self::A});
+                 ^^^^^^^^^^^^^^^^" in c.{self::Class::nonNullableField});
+  self::expect(null, let final self::Class? #t2 = c in #t2.{core::Object::==}(null) ?{self::A?} null : #t2{self::Class}.{self::Class::nonNullableField});
+  self::expect(null, let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{self::A?} null : #t3{self::Class}.{self::Class::nonNullableField}.{self::A::nonNullableProperty});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object e) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/nullable_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/nullable_extension.dart.strong.expect
index 62d3a21..a732aa4 100644
--- a/pkg/front_end/testcases/nnbd/nullable_extension.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_extension.dart.strong.expect
@@ -18,6 +18,6 @@
   self::expect("Lily was here", self::_extension#0|get#text(a));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/nullable_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_extension.dart.strong.transformed.expect
index 62d3a21..a732aa4 100644
--- a/pkg/front_end/testcases/nnbd/nullable_extension.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_extension.dart.strong.transformed.expect
@@ -18,6 +18,6 @@
   self::expect("Lily was here", self::_extension#0|get#text(a));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/nullable_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/nullable_extension.dart.weak.expect
index 62d3a21..a732aa4 100644
--- a/pkg/front_end/testcases/nnbd/nullable_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_extension.dart.weak.expect
@@ -18,6 +18,6 @@
   self::expect("Lily was here", self::_extension#0|get#text(a));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/nullable_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_extension.dart.weak.transformed.expect
index 62d3a21..a732aa4 100644
--- a/pkg/front_end/testcases/nnbd/nullable_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_extension.dart.weak.transformed.expect
@@ -18,6 +18,6 @@
   self::expect("Lily was here", self::_extension#0|get#text(a));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/nullable_object_access.dart.strong.expect b/pkg/front_end/testcases/nnbd/nullable_object_access.dart.strong.expect
index fd1b424..db3769e 100644
--- a/pkg/front_end/testcases/nnbd/nullable_object_access.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_object_access.dart.strong.expect
@@ -70,32 +70,32 @@
 }
 static method main() → dynamic {}
 static method test(self::Class c1, self::Class? c2, core::Invocation invocation, self::CustomInvocation customInvocation) → void {
-  self::CustomType runtimeType1 = c1.{self::Class::runtimeType}{self::CustomType};
-  self::CustomType runtimeTypeVariable1 = c1.{self::Class::runtimeType}{self::CustomType};
-  c1.{self::Class::runtimeType}{self::CustomType}.{self::CustomType::call}(){() → void};
-  (self::CustomInvocation) → core::String noSuchMethodTearOff1 = c1.{self::Class::noSuchMethod}{(self::CustomInvocation) → core::String};
-  (self::CustomInvocation) → core::String noSuchMethodTearOffVariable1 = c1.{self::Class::noSuchMethod}{(self::CustomInvocation) → core::String};
-  core::String noSuchMethod1a = c1.{self::Class::noSuchMethod}(customInvocation){(self::CustomInvocation) → core::String};
+  self::CustomType runtimeType1 = c1.{self::Class::runtimeType};
+  self::CustomType runtimeTypeVariable1 = c1.{self::Class::runtimeType};
+  c1.{self::Class::runtimeType}.{self::CustomType::call}();
+  (self::CustomInvocation) → core::String noSuchMethodTearOff1 = c1.{self::Class::noSuchMethod};
+  (self::CustomInvocation) → core::String noSuchMethodTearOffVariable1 = c1.{self::Class::noSuchMethod};
+  core::String noSuchMethod1a = c1.{self::Class::noSuchMethod}(customInvocation);
   core::String noSuchMethod1b = c1.{self::Class::noSuchMethod}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:31:43: Error: The argument type 'Invocation' can't be assigned to the parameter type 'CustomInvocation'.
  - 'Invocation' is from 'dart:core'.
  - 'CustomInvocation' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
   String noSuchMethod1b = c1.noSuchMethod(invocation); // error
-                                          ^" in invocation as{TypeError,ForNonNullableByDefault} self::CustomInvocation){(self::CustomInvocation) → core::String};
-  core::String noSuchMethodVariable1 = c1.{self::Class::noSuchMethod}(customInvocation){(self::CustomInvocation) → core::String};
-  c1 =={self::Class::==}{(self::Class) → core::bool} (let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:34:9: Error: The argument type 'String' can't be assigned to the parameter type 'Class?'.
+                                          ^" in invocation as{TypeError,ForNonNullableByDefault} self::CustomInvocation);
+  core::String noSuchMethodVariable1 = c1.{self::Class::noSuchMethod}(customInvocation);
+  c1.{self::Class::==}(let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:34:9: Error: The argument type 'String' can't be assigned to the parameter type 'Class?'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
   c1 == ''; // error
         ^" in "" as{TypeError,ForNonNullableByDefault} self::Class?);
-  c1 =={self::Class::==}{(self::Class) → core::bool} c2;
-  ({o: core::Object}) → core::String toStringTearOff1 = c1.{self::Class::toString}{({o: core::Object}) → core::String};
-  ({o: core::Object}) → core::String toStringTearOffVariable1 = c1.{self::Class::toString}{({o: core::Object}) → core::String};
-  c1.{self::Class::toString}(o: c1){({o: core::Object}) → core::String};
+  c1.{self::Class::==}(c2);
+  ({o: core::Object}) → core::String toStringTearOff1 = c1.{self::Class::toString};
+  ({o: core::Object}) → core::String toStringTearOffVariable1 = c1.{self::Class::toString};
+  c1.{self::Class::toString}(o: c1);
   self::CustomType runtimeType2 = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:42:32: Error: A value of type 'Type' can't be assigned to a variable of type 'CustomType'.
  - 'Type' is from 'dart:core'.
  - 'CustomType' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
   CustomType runtimeType2 = c2.runtimeType; // error
-                               ^" in c2.{core::Object::runtimeType}{core::Type} as{TypeError,ForNonNullableByDefault} self::CustomType;
-  core::Type runtimeTypeVariable2 = c2.{core::Object::runtimeType}{core::Type};
+                               ^" in c2.{core::Object::runtimeType} as{TypeError,ForNonNullableByDefault} self::CustomType;
+  core::Type runtimeTypeVariable2 = c2.{core::Object::runtimeType};
   invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:44:17: Error: 'runtimeType' isn't a function or method and can't be invoked.
   c2.runtimeType(); // error
                 ^^^^^^^^^^^";
@@ -103,23 +103,23 @@
  - 'Invocation' is from 'dart:core'.
  - 'CustomInvocation' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
       c2.noSuchMethod; // error
-         ^" in c2.{core::Object::noSuchMethod}{(core::Invocation) → dynamic} as{TypeError,ForNonNullableByDefault} (self::CustomInvocation) → core::String;
-  (core::Invocation) → dynamic noSuchMethodTearOffVariable2 = c2.{core::Object::noSuchMethod}{(core::Invocation) → dynamic};
-  core::int noSuchMethod2 = c2.{core::Object::noSuchMethod}(invocation){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-  dynamic noSuchMethodVariable2 = c2.{core::Object::noSuchMethod}(invocation){(core::Invocation) → dynamic};
-  c2 =={self::Class::==}{(self::Class) → core::bool} (let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:56:9: Error: The argument type 'String' can't be assigned to the parameter type 'Class?'.
+         ^" in c2.{core::Object::noSuchMethod} as{TypeError,ForNonNullableByDefault} (self::CustomInvocation) → core::String;
+  (core::Invocation) → dynamic noSuchMethodTearOffVariable2 = c2.{core::Object::noSuchMethod};
+  core::int noSuchMethod2 = c2.{core::Object::noSuchMethod}(invocation) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+  dynamic noSuchMethodVariable2 = c2.{core::Object::noSuchMethod}(invocation);
+  c2.{self::Class::==}(let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:56:9: Error: The argument type 'String' can't be assigned to the parameter type 'Class?'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
   c2 == ''; // ok or error?
         ^" in "" as{TypeError,ForNonNullableByDefault} self::Class?);
-  c2 =={self::Class::==}{(self::Class) → core::bool} c1;
+  c2.{self::Class::==}(c1);
   ({o: core::Object}) → core::String toStringTearOff2 = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:59:53: Error: A value of type 'String Function()' can't be assigned to a variable of type 'String Function({Object o})'.
  - 'Object' is from 'dart:core'.
   String Function({Object o}) toStringTearOff2 = c2.toString; // error
-                                                    ^" in c2.{core::Object::toString}{() → core::String} as{TypeError,ForNonNullableByDefault} ({o: core::Object}) → core::String;
-  () → core::String toStringTearOffVariable2 = c2.{core::Object::toString}{() → core::String};
+                                                    ^" in c2.{core::Object::toString} as{TypeError,ForNonNullableByDefault} ({o: core::Object}) → core::String;
+  () → core::String toStringTearOffVariable2 = c2.{core::Object::toString};
   let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:62:15: Error: No named parameter with the name 'o'.
   c2.toString(o: c1); // error
-              ^" in c2.{core::Object::toString}{<inapplicable>}.(o: c1){({o: invalid-type}) → invalid-type};
+              ^" in c2.{core::Object::toString}(o: c1);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/nullable_object_access.dart.weak.expect b/pkg/front_end/testcases/nnbd/nullable_object_access.dart.weak.expect
index fd1b424..db3769e 100644
--- a/pkg/front_end/testcases/nnbd/nullable_object_access.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_object_access.dart.weak.expect
@@ -70,32 +70,32 @@
 }
 static method main() → dynamic {}
 static method test(self::Class c1, self::Class? c2, core::Invocation invocation, self::CustomInvocation customInvocation) → void {
-  self::CustomType runtimeType1 = c1.{self::Class::runtimeType}{self::CustomType};
-  self::CustomType runtimeTypeVariable1 = c1.{self::Class::runtimeType}{self::CustomType};
-  c1.{self::Class::runtimeType}{self::CustomType}.{self::CustomType::call}(){() → void};
-  (self::CustomInvocation) → core::String noSuchMethodTearOff1 = c1.{self::Class::noSuchMethod}{(self::CustomInvocation) → core::String};
-  (self::CustomInvocation) → core::String noSuchMethodTearOffVariable1 = c1.{self::Class::noSuchMethod}{(self::CustomInvocation) → core::String};
-  core::String noSuchMethod1a = c1.{self::Class::noSuchMethod}(customInvocation){(self::CustomInvocation) → core::String};
+  self::CustomType runtimeType1 = c1.{self::Class::runtimeType};
+  self::CustomType runtimeTypeVariable1 = c1.{self::Class::runtimeType};
+  c1.{self::Class::runtimeType}.{self::CustomType::call}();
+  (self::CustomInvocation) → core::String noSuchMethodTearOff1 = c1.{self::Class::noSuchMethod};
+  (self::CustomInvocation) → core::String noSuchMethodTearOffVariable1 = c1.{self::Class::noSuchMethod};
+  core::String noSuchMethod1a = c1.{self::Class::noSuchMethod}(customInvocation);
   core::String noSuchMethod1b = c1.{self::Class::noSuchMethod}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:31:43: Error: The argument type 'Invocation' can't be assigned to the parameter type 'CustomInvocation'.
  - 'Invocation' is from 'dart:core'.
  - 'CustomInvocation' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
   String noSuchMethod1b = c1.noSuchMethod(invocation); // error
-                                          ^" in invocation as{TypeError,ForNonNullableByDefault} self::CustomInvocation){(self::CustomInvocation) → core::String};
-  core::String noSuchMethodVariable1 = c1.{self::Class::noSuchMethod}(customInvocation){(self::CustomInvocation) → core::String};
-  c1 =={self::Class::==}{(self::Class) → core::bool} (let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:34:9: Error: The argument type 'String' can't be assigned to the parameter type 'Class?'.
+                                          ^" in invocation as{TypeError,ForNonNullableByDefault} self::CustomInvocation);
+  core::String noSuchMethodVariable1 = c1.{self::Class::noSuchMethod}(customInvocation);
+  c1.{self::Class::==}(let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:34:9: Error: The argument type 'String' can't be assigned to the parameter type 'Class?'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
   c1 == ''; // error
         ^" in "" as{TypeError,ForNonNullableByDefault} self::Class?);
-  c1 =={self::Class::==}{(self::Class) → core::bool} c2;
-  ({o: core::Object}) → core::String toStringTearOff1 = c1.{self::Class::toString}{({o: core::Object}) → core::String};
-  ({o: core::Object}) → core::String toStringTearOffVariable1 = c1.{self::Class::toString}{({o: core::Object}) → core::String};
-  c1.{self::Class::toString}(o: c1){({o: core::Object}) → core::String};
+  c1.{self::Class::==}(c2);
+  ({o: core::Object}) → core::String toStringTearOff1 = c1.{self::Class::toString};
+  ({o: core::Object}) → core::String toStringTearOffVariable1 = c1.{self::Class::toString};
+  c1.{self::Class::toString}(o: c1);
   self::CustomType runtimeType2 = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:42:32: Error: A value of type 'Type' can't be assigned to a variable of type 'CustomType'.
  - 'Type' is from 'dart:core'.
  - 'CustomType' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
   CustomType runtimeType2 = c2.runtimeType; // error
-                               ^" in c2.{core::Object::runtimeType}{core::Type} as{TypeError,ForNonNullableByDefault} self::CustomType;
-  core::Type runtimeTypeVariable2 = c2.{core::Object::runtimeType}{core::Type};
+                               ^" in c2.{core::Object::runtimeType} as{TypeError,ForNonNullableByDefault} self::CustomType;
+  core::Type runtimeTypeVariable2 = c2.{core::Object::runtimeType};
   invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:44:17: Error: 'runtimeType' isn't a function or method and can't be invoked.
   c2.runtimeType(); // error
                 ^^^^^^^^^^^";
@@ -103,23 +103,23 @@
  - 'Invocation' is from 'dart:core'.
  - 'CustomInvocation' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
       c2.noSuchMethod; // error
-         ^" in c2.{core::Object::noSuchMethod}{(core::Invocation) → dynamic} as{TypeError,ForNonNullableByDefault} (self::CustomInvocation) → core::String;
-  (core::Invocation) → dynamic noSuchMethodTearOffVariable2 = c2.{core::Object::noSuchMethod}{(core::Invocation) → dynamic};
-  core::int noSuchMethod2 = c2.{core::Object::noSuchMethod}(invocation){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
-  dynamic noSuchMethodVariable2 = c2.{core::Object::noSuchMethod}(invocation){(core::Invocation) → dynamic};
-  c2 =={self::Class::==}{(self::Class) → core::bool} (let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:56:9: Error: The argument type 'String' can't be assigned to the parameter type 'Class?'.
+         ^" in c2.{core::Object::noSuchMethod} as{TypeError,ForNonNullableByDefault} (self::CustomInvocation) → core::String;
+  (core::Invocation) → dynamic noSuchMethodTearOffVariable2 = c2.{core::Object::noSuchMethod};
+  core::int noSuchMethod2 = c2.{core::Object::noSuchMethod}(invocation) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+  dynamic noSuchMethodVariable2 = c2.{core::Object::noSuchMethod}(invocation);
+  c2.{self::Class::==}(let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:56:9: Error: The argument type 'String' can't be assigned to the parameter type 'Class?'.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
   c2 == ''; // ok or error?
         ^" in "" as{TypeError,ForNonNullableByDefault} self::Class?);
-  c2 =={self::Class::==}{(self::Class) → core::bool} c1;
+  c2.{self::Class::==}(c1);
   ({o: core::Object}) → core::String toStringTearOff2 = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:59:53: Error: A value of type 'String Function()' can't be assigned to a variable of type 'String Function({Object o})'.
  - 'Object' is from 'dart:core'.
   String Function({Object o}) toStringTearOff2 = c2.toString; // error
-                                                    ^" in c2.{core::Object::toString}{() → core::String} as{TypeError,ForNonNullableByDefault} ({o: core::Object}) → core::String;
-  () → core::String toStringTearOffVariable2 = c2.{core::Object::toString}{() → core::String};
+                                                    ^" in c2.{core::Object::toString} as{TypeError,ForNonNullableByDefault} ({o: core::Object}) → core::String;
+  () → core::String toStringTearOffVariable2 = c2.{core::Object::toString};
   let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:62:15: Error: No named parameter with the name 'o'.
   c2.toString(o: c1); // error
-              ^" in c2.{core::Object::toString}{<inapplicable>}.(o: c1){({o: invalid-type}) → invalid-type};
+              ^" in c2.{core::Object::toString}(o: c1);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.expect b/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.expect
index 1d7f270..701d5d6 100644
--- a/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.expect
@@ -12,11 +12,11 @@
 static method main() → dynamic {
   self::Foo foo = new self::Foo::•();
   foo.{self::Foo::field} = 5;
-  foo.{self::Foo::bar}(6){(core::int?) → core::int?};
+  foo.{self::Foo::bar}(6);
   self::test_nullable_function_type_formal_param(f: () → core::int => 2);
 }
 static method test_nullable_function_type_formal_param({() →? core::int f = #C1}) → core::int {
-  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2 == null ?{core::int?} null : #t2{() → core::int}(){() → core::int} in #t1 == null ?{core::int} 1.{core::int::unary-}(){() → core::int} : #t1{core::int};
+  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int} 1.{core::int::unary-}() : #t1{core::int};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.transformed.expect
index 492b1de..49de6f1 100644
--- a/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.transformed.expect
@@ -12,11 +12,11 @@
 static method main() → dynamic {
   self::Foo foo = new self::Foo::•();
   foo.{self::Foo::field} = 5;
-  foo.{self::Foo::bar}(6){(core::int?) → core::int?};
+  foo.{self::Foo::bar}(6);
   self::test_nullable_function_type_formal_param(f: () → core::int => 2);
 }
 static method test_nullable_function_type_formal_param({() →? core::int f = #C1}) → core::int {
-  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2 == null ?{core::int?} null : #t2{() → core::int}(){() → core::int} in #t1 == null ?{core::int} 1.{core::int::unary-}(){() → core::int} : #t1{core::int};
+  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int} 1.{core::int::unary-}() : #t1{core::int};
 }
 
 constants  {
@@ -24,5 +24,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///nullable_param.dart:19:23 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///nullable_param.dart:19:23 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 20, effectively constant: 1
diff --git a/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.expect b/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.expect
index 1d7f270..701d5d6 100644
--- a/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.expect
@@ -12,11 +12,11 @@
 static method main() → dynamic {
   self::Foo foo = new self::Foo::•();
   foo.{self::Foo::field} = 5;
-  foo.{self::Foo::bar}(6){(core::int?) → core::int?};
+  foo.{self::Foo::bar}(6);
   self::test_nullable_function_type_formal_param(f: () → core::int => 2);
 }
 static method test_nullable_function_type_formal_param({() →? core::int f = #C1}) → core::int {
-  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2 == null ?{core::int?} null : #t2{() → core::int}(){() → core::int} in #t1 == null ?{core::int} 1.{core::int::unary-}(){() → core::int} : #t1{core::int};
+  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int} 1.{core::int::unary-}() : #t1{core::int};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.transformed.expect
index 492b1de..49de6f1 100644
--- a/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.transformed.expect
@@ -12,11 +12,11 @@
 static method main() → dynamic {
   self::Foo foo = new self::Foo::•();
   foo.{self::Foo::field} = 5;
-  foo.{self::Foo::bar}(6){(core::int?) → core::int?};
+  foo.{self::Foo::bar}(6);
   self::test_nullable_function_type_formal_param(f: () → core::int => 2);
 }
 static method test_nullable_function_type_formal_param({() →? core::int f = #C1}) → core::int {
-  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2 == null ?{core::int?} null : #t2{() → core::int}(){() → core::int} in #t1 == null ?{core::int} 1.{core::int::unary-}(){() → core::int} : #t1{core::int};
+  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int} 1.{core::int::unary-}() : #t1{core::int};
 }
 
 constants  {
@@ -24,5 +24,5 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///nullable_param.dart:19:23 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///nullable_param.dart:19:23 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 20, effectively constant: 1
diff --git a/pkg/front_end/testcases/nnbd/nullable_receiver.dart.strong.expect b/pkg/front_end/testcases/nnbd/nullable_receiver.dart.strong.expect
index f1e425b..2c6ff57 100644
--- a/pkg/front_end/testcases/nnbd/nullable_receiver.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_receiver.dart.strong.expect
@@ -77,35 +77,35 @@
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:20:5: Error: Property 'length' cannot be accessed on 'String?' because it is potentially null.
 Try accessing using ?. instead.
   s.length;
-    ^^^^^^" in s.{core::String::length}{<nullable>}.{core::int};
+    ^^^^^^" in s.{core::String::length};
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:21:5: Error: Method 'substring' cannot be called on 'String?' because it is potentially null.
 Try calling using ?. instead.
   s.substring(1, 1);
-    ^^^^^^^^^" in s.{core::String::substring}{<nullable>}.(1, 1){(core::int, [core::int?]) → core::String};
+    ^^^^^^^^^" in s.{core::String::substring}(1, 1);
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:23:5: Error: Method 'foo' cannot be called on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/nullable_receiver.dart'.
 Try calling using ?. instead.
   a.foo();
-    ^^^" in a.{self::A::foo}{<nullable>}.(){() → dynamic};
+    ^^^" in a.{self::A::foo}();
   let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:24:5: Error: Property 'bar' cannot be accessed on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/nullable_receiver.dart'.
 Try accessing using ?. instead.
   a.bar;
-    ^^^" in a.{self::A::bar}{<nullable>}.{core::int};
+    ^^^" in a.{self::A::bar};
   let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:25:5: Error: Property 'baz' cannot be accessed on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/nullable_receiver.dart'.
 Try accessing using ?. instead.
   a.baz = 42;
-    ^^^" in a.{self::A::baz}{<nullable>}. = 42;
+    ^^^" in a.{self::A::baz} = 42;
   let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:26:4: Error: Can't use an expression of type 'A?' as a function because it's potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/nullable_receiver.dart'.
 Try calling using ?.call instead.
   a();
-   ^" in a.{self::A::call}{<nullable>}.(){() → void};
+   ^" in a.{self::A::call}();
   let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:27:13: Error: Too many positional arguments: 0 allowed, but 1 found.
 Try removing the extra positional arguments.
   b.toString(0);
-            ^" in b.{core::Object::toString}{<inapplicable>}.(0){(invalid-type) → invalid-type};
+            ^" in b.{core::Object::toString}(0);
   core::Function f1 = let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:29:17: Error: Can't tear off method 'call' from a potentially null value.
   Function f1 = a;
                 ^" in a as{TypeError} core::Function;
@@ -117,42 +117,42 @@
                         ^" in a as{TypeError} () →? void;
 }
 static method ok<T extends core::Object?>(core::String? s, self::A? a, self::ok::T% t, self::B? b, core::Invocation i) → dynamic {
-  s =={core::String::==}{(core::Object) → core::bool} s;
-  a =={core::Object::==}{(core::Object) → core::bool} a;
-  t =={core::Object::==}{(core::Object) → core::bool} t;
-  b =={core::Object::==}{(core::Object) → core::bool} b;
-  s.{core::Object::hashCode}{core::int};
-  a.{core::Object::hashCode}{core::int};
-  t.{core::Object::hashCode}{core::int};
-  b.{core::Object::hashCode}{core::int};
-  s.{core::Object::toString}(){() → core::String};
-  a.{core::Object::toString}(){() → core::String};
-  t.{core::Object::toString}(){() → core::String};
-  b.{core::Object::toString}(){() → core::String};
+  s.{core::String::==}(s);
+  a.{core::Object::==}(a);
+  t.{core::Object::==}(t);
+  b.{core::Object::==}(b);
+  s.{core::Object::hashCode};
+  a.{core::Object::hashCode};
+  t.{core::Object::hashCode};
+  b.{core::Object::hashCode};
+  s.{core::Object::toString}();
+  a.{core::Object::toString}();
+  t.{core::Object::toString}();
+  b.{core::Object::toString}();
   try {
-    s.{core::Object::noSuchMethod}(i){(core::Invocation) → dynamic};
+    s.{core::Object::noSuchMethod}(i);
   }
   on core::Object catch(final core::Object e, final core::StackTrace t) {
   }
   try {
-    a.{core::Object::noSuchMethod}(i){(core::Invocation) → dynamic};
+    a.{core::Object::noSuchMethod}(i);
   }
   on core::Object catch(final core::Object e, final core::StackTrace t) {
   }
   try {
-    t.{core::Object::noSuchMethod}(i){(core::Invocation) → dynamic};
+    t.{core::Object::noSuchMethod}(i);
   }
   on core::Object catch(final core::Object e, final core::StackTrace t) {
   }
   try {
-    b.{core::Object::noSuchMethod}(i){(core::Invocation) → dynamic};
+    b.{core::Object::noSuchMethod}(i);
   }
   on core::Object catch(final core::Object e, final core::StackTrace t) {
   }
-  s.{core::Object::runtimeType}{core::Type};
-  a.{core::Object::runtimeType}{core::Type};
-  t.{core::Object::runtimeType}{core::Type};
-  b.{core::Object::runtimeType}{core::Type};
+  s.{core::Object::runtimeType};
+  a.{core::Object::runtimeType};
+  t.{core::Object::runtimeType};
+  b.{core::Object::runtimeType};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/nullable_receiver.dart.weak.expect b/pkg/front_end/testcases/nnbd/nullable_receiver.dart.weak.expect
index f1e425b..2c6ff57 100644
--- a/pkg/front_end/testcases/nnbd/nullable_receiver.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_receiver.dart.weak.expect
@@ -77,35 +77,35 @@
   let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:20:5: Error: Property 'length' cannot be accessed on 'String?' because it is potentially null.
 Try accessing using ?. instead.
   s.length;
-    ^^^^^^" in s.{core::String::length}{<nullable>}.{core::int};
+    ^^^^^^" in s.{core::String::length};
   let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:21:5: Error: Method 'substring' cannot be called on 'String?' because it is potentially null.
 Try calling using ?. instead.
   s.substring(1, 1);
-    ^^^^^^^^^" in s.{core::String::substring}{<nullable>}.(1, 1){(core::int, [core::int?]) → core::String};
+    ^^^^^^^^^" in s.{core::String::substring}(1, 1);
   let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:23:5: Error: Method 'foo' cannot be called on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/nullable_receiver.dart'.
 Try calling using ?. instead.
   a.foo();
-    ^^^" in a.{self::A::foo}{<nullable>}.(){() → dynamic};
+    ^^^" in a.{self::A::foo}();
   let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:24:5: Error: Property 'bar' cannot be accessed on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/nullable_receiver.dart'.
 Try accessing using ?. instead.
   a.bar;
-    ^^^" in a.{self::A::bar}{<nullable>}.{core::int};
+    ^^^" in a.{self::A::bar};
   let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:25:5: Error: Property 'baz' cannot be accessed on 'A?' because it is potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/nullable_receiver.dart'.
 Try accessing using ?. instead.
   a.baz = 42;
-    ^^^" in a.{self::A::baz}{<nullable>}. = 42;
+    ^^^" in a.{self::A::baz} = 42;
   let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:26:4: Error: Can't use an expression of type 'A?' as a function because it's potentially null.
  - 'A' is from 'pkg/front_end/testcases/nnbd/nullable_receiver.dart'.
 Try calling using ?.call instead.
   a();
-   ^" in a.{self::A::call}{<nullable>}.(){() → void};
+   ^" in a.{self::A::call}();
   let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:27:13: Error: Too many positional arguments: 0 allowed, but 1 found.
 Try removing the extra positional arguments.
   b.toString(0);
-            ^" in b.{core::Object::toString}{<inapplicable>}.(0){(invalid-type) → invalid-type};
+            ^" in b.{core::Object::toString}(0);
   core::Function f1 = let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_receiver.dart:29:17: Error: Can't tear off method 'call' from a potentially null value.
   Function f1 = a;
                 ^" in a as{TypeError} core::Function;
@@ -117,42 +117,42 @@
                         ^" in a as{TypeError} () →? void;
 }
 static method ok<T extends core::Object?>(core::String? s, self::A? a, self::ok::T% t, self::B? b, core::Invocation i) → dynamic {
-  s =={core::String::==}{(core::Object) → core::bool} s;
-  a =={core::Object::==}{(core::Object) → core::bool} a;
-  t =={core::Object::==}{(core::Object) → core::bool} t;
-  b =={core::Object::==}{(core::Object) → core::bool} b;
-  s.{core::Object::hashCode}{core::int};
-  a.{core::Object::hashCode}{core::int};
-  t.{core::Object::hashCode}{core::int};
-  b.{core::Object::hashCode}{core::int};
-  s.{core::Object::toString}(){() → core::String};
-  a.{core::Object::toString}(){() → core::String};
-  t.{core::Object::toString}(){() → core::String};
-  b.{core::Object::toString}(){() → core::String};
+  s.{core::String::==}(s);
+  a.{core::Object::==}(a);
+  t.{core::Object::==}(t);
+  b.{core::Object::==}(b);
+  s.{core::Object::hashCode};
+  a.{core::Object::hashCode};
+  t.{core::Object::hashCode};
+  b.{core::Object::hashCode};
+  s.{core::Object::toString}();
+  a.{core::Object::toString}();
+  t.{core::Object::toString}();
+  b.{core::Object::toString}();
   try {
-    s.{core::Object::noSuchMethod}(i){(core::Invocation) → dynamic};
+    s.{core::Object::noSuchMethod}(i);
   }
   on core::Object catch(final core::Object e, final core::StackTrace t) {
   }
   try {
-    a.{core::Object::noSuchMethod}(i){(core::Invocation) → dynamic};
+    a.{core::Object::noSuchMethod}(i);
   }
   on core::Object catch(final core::Object e, final core::StackTrace t) {
   }
   try {
-    t.{core::Object::noSuchMethod}(i){(core::Invocation) → dynamic};
+    t.{core::Object::noSuchMethod}(i);
   }
   on core::Object catch(final core::Object e, final core::StackTrace t) {
   }
   try {
-    b.{core::Object::noSuchMethod}(i){(core::Invocation) → dynamic};
+    b.{core::Object::noSuchMethod}(i);
   }
   on core::Object catch(final core::Object e, final core::StackTrace t) {
   }
-  s.{core::Object::runtimeType}{core::Type};
-  a.{core::Object::runtimeType}{core::Type};
-  t.{core::Object::runtimeType}{core::Type};
-  b.{core::Object::runtimeType}{core::Type};
+  s.{core::Object::runtimeType};
+  a.{core::Object::runtimeType};
+  t.{core::Object::runtimeType};
+  b.{core::Object::runtimeType};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/nullable_setter.dart.strong.expect b/pkg/front_end/testcases/nnbd/nullable_setter.dart.strong.expect
index 297e474..4e21e645 100644
--- a/pkg/front_end/testcases/nnbd/nullable_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_setter.dart.strong.expect
@@ -15,20 +15,20 @@
   set setter = self::_extension#0|set#setter;
 }
 static method _extension#0|set#setter(lowered final self::C? #this, core::String v) → void {
-  let final self::C? #t1 = #this in #t1 == null ?{core::String?} null : #t1{self::C}.{self::C::m} = v;
+  let final self::C? #t1 = #this in #t1.{core::Object::==}(null) ?{core::String?} null : #t1{self::C}.{self::C::m} = v;
 }
 static method _extension#0|[]=(lowered final self::C? #this, core::int index, core::String value) → void {
-  let final self::C? #t2 = #this in #t2 == null ?{core::String?} null : #t2{self::C}.{self::C::m} = "${index}${value}";
+  let final self::C? #t2 = #this in #t2.{core::Object::==}(null) ?{core::String?} null : #t2{self::C}.{self::C::m} = "${index}${value}";
 }
 static method main() → dynamic {
   self::C? c = new self::C::•() as{ForNonNullableByDefault} self::C?;
-  self::expect("", let final self::C? #t3 = c in #t3 == null ?{core::String?} null : #t3{self::C}.{self::C::m}{core::String});
+  self::expect("", let final self::C? #t3 = c in #t3.{core::Object::==}(null) ?{core::String?} null : #t3{self::C}.{self::C::m});
   self::_extension#0|set#setter(c, "42");
-  self::expect("42", let final self::C? #t4 = c in #t4 == null ?{core::String?} null : #t4{self::C}.{self::C::m}{core::String});
+  self::expect("42", let final self::C? #t4 = c in #t4.{core::Object::==}(null) ?{core::String?} null : #t4{self::C}.{self::C::m});
   self::_extension#0|[]=(c, 42, "87");
-  self::expect("4287", let final self::C? #t5 = c in #t5 == null ?{core::String?} null : #t5{self::C}.{self::C::m}{core::String});
+  self::expect("4287", let final self::C? #t5 = c in #t5.{core::Object::==}(null) ?{core::String?} null : #t5{self::C}.{self::C::m});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/nullable_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_setter.dart.strong.transformed.expect
index 321c92b..fdac0fc 100644
--- a/pkg/front_end/testcases/nnbd/nullable_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_setter.dart.strong.transformed.expect
@@ -15,20 +15,20 @@
   set setter = self::_extension#0|set#setter;
 }
 static method _extension#0|set#setter(lowered final self::C? #this, core::String v) → void {
-  let final self::C? #t1 = #this in #t1 == null ?{core::String?} null : #t1{self::C}.{self::C::m} = v;
+  let final self::C? #t1 = #this in #t1.{core::Object::==}(null) ?{core::String?} null : #t1{self::C}.{self::C::m} = v;
 }
 static method _extension#0|[]=(lowered final self::C? #this, core::int index, core::String value) → void {
-  let final self::C? #t2 = #this in #t2 == null ?{core::String?} null : #t2{self::C}.{self::C::m} = "${index}${value}";
+  let final self::C? #t2 = #this in #t2.{core::Object::==}(null) ?{core::String?} null : #t2{self::C}.{self::C::m} = "${index}${value}";
 }
 static method main() → dynamic {
   self::C? c = new self::C::•();
-  self::expect("", let final self::C? #t3 = c in #t3 == null ?{core::String?} null : #t3{self::C}.{self::C::m}{core::String});
+  self::expect("", let final self::C? #t3 = c in #t3.{core::Object::==}(null) ?{core::String?} null : #t3{self::C}.{self::C::m});
   self::_extension#0|set#setter(c, "42");
-  self::expect("42", let final self::C? #t4 = c in #t4 == null ?{core::String?} null : #t4{self::C}.{self::C::m}{core::String});
+  self::expect("42", let final self::C? #t4 = c in #t4.{core::Object::==}(null) ?{core::String?} null : #t4{self::C}.{self::C::m});
   self::_extension#0|[]=(c, 42, "87");
-  self::expect("4287", let final self::C? #t5 = c in #t5 == null ?{core::String?} null : #t5{self::C}.{self::C::m}{core::String});
+  self::expect("4287", let final self::C? #t5 = c in #t5.{core::Object::==}(null) ?{core::String?} null : #t5{self::C}.{self::C::m});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/nullable_setter.dart.weak.expect b/pkg/front_end/testcases/nnbd/nullable_setter.dart.weak.expect
index 297e474..4e21e645 100644
--- a/pkg/front_end/testcases/nnbd/nullable_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_setter.dart.weak.expect
@@ -15,20 +15,20 @@
   set setter = self::_extension#0|set#setter;
 }
 static method _extension#0|set#setter(lowered final self::C? #this, core::String v) → void {
-  let final self::C? #t1 = #this in #t1 == null ?{core::String?} null : #t1{self::C}.{self::C::m} = v;
+  let final self::C? #t1 = #this in #t1.{core::Object::==}(null) ?{core::String?} null : #t1{self::C}.{self::C::m} = v;
 }
 static method _extension#0|[]=(lowered final self::C? #this, core::int index, core::String value) → void {
-  let final self::C? #t2 = #this in #t2 == null ?{core::String?} null : #t2{self::C}.{self::C::m} = "${index}${value}";
+  let final self::C? #t2 = #this in #t2.{core::Object::==}(null) ?{core::String?} null : #t2{self::C}.{self::C::m} = "${index}${value}";
 }
 static method main() → dynamic {
   self::C? c = new self::C::•() as{ForNonNullableByDefault} self::C?;
-  self::expect("", let final self::C? #t3 = c in #t3 == null ?{core::String?} null : #t3{self::C}.{self::C::m}{core::String});
+  self::expect("", let final self::C? #t3 = c in #t3.{core::Object::==}(null) ?{core::String?} null : #t3{self::C}.{self::C::m});
   self::_extension#0|set#setter(c, "42");
-  self::expect("42", let final self::C? #t4 = c in #t4 == null ?{core::String?} null : #t4{self::C}.{self::C::m}{core::String});
+  self::expect("42", let final self::C? #t4 = c in #t4.{core::Object::==}(null) ?{core::String?} null : #t4{self::C}.{self::C::m});
   self::_extension#0|[]=(c, 42, "87");
-  self::expect("4287", let final self::C? #t5 = c in #t5 == null ?{core::String?} null : #t5{self::C}.{self::C::m}{core::String});
+  self::expect("4287", let final self::C? #t5 = c in #t5.{core::Object::==}(null) ?{core::String?} null : #t5{self::C}.{self::C::m});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/nullable_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_setter.dart.weak.transformed.expect
index 321c92b..fdac0fc 100644
--- a/pkg/front_end/testcases/nnbd/nullable_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_setter.dart.weak.transformed.expect
@@ -15,20 +15,20 @@
   set setter = self::_extension#0|set#setter;
 }
 static method _extension#0|set#setter(lowered final self::C? #this, core::String v) → void {
-  let final self::C? #t1 = #this in #t1 == null ?{core::String?} null : #t1{self::C}.{self::C::m} = v;
+  let final self::C? #t1 = #this in #t1.{core::Object::==}(null) ?{core::String?} null : #t1{self::C}.{self::C::m} = v;
 }
 static method _extension#0|[]=(lowered final self::C? #this, core::int index, core::String value) → void {
-  let final self::C? #t2 = #this in #t2 == null ?{core::String?} null : #t2{self::C}.{self::C::m} = "${index}${value}";
+  let final self::C? #t2 = #this in #t2.{core::Object::==}(null) ?{core::String?} null : #t2{self::C}.{self::C::m} = "${index}${value}";
 }
 static method main() → dynamic {
   self::C? c = new self::C::•();
-  self::expect("", let final self::C? #t3 = c in #t3 == null ?{core::String?} null : #t3{self::C}.{self::C::m}{core::String});
+  self::expect("", let final self::C? #t3 = c in #t3.{core::Object::==}(null) ?{core::String?} null : #t3{self::C}.{self::C::m});
   self::_extension#0|set#setter(c, "42");
-  self::expect("42", let final self::C? #t4 = c in #t4 == null ?{core::String?} null : #t4{self::C}.{self::C::m}{core::String});
+  self::expect("42", let final self::C? #t4 = c in #t4.{core::Object::==}(null) ?{core::String?} null : #t4{self::C}.{self::C::m});
   self::_extension#0|[]=(c, 42, "87");
-  self::expect("4287", let final self::C? #t5 = c in #t5 == null ?{core::String?} null : #t5{self::C}.{self::C::m}{core::String});
+  self::expect("4287", let final self::C? #t5 = c in #t5.{core::Object::==}(null) ?{core::String?} null : #t5{self::C}.{self::C::m});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/numbers.dart.strong.expect b/pkg/front_end/testcases/nnbd/numbers.dart.strong.expect
index babfb04..d52aac2 100644
--- a/pkg/front_end/testcases/nnbd/numbers.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/numbers.dart.strong.expect
@@ -3,411 +3,411 @@
 import "dart:core" as core;
 
 static method add<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::add::X x, self::add::Y y, self::add::Z z) → dynamic {
-  core::num n_n = n.{core::num::+}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::+}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::+}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::+}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::+}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::+}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::+}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::+}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::+}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::+}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::+}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::+}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::+}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::+}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::+}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::+}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::+}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::+}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::+}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::+}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::+}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::+}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::+}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::+}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::+}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::+}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::+}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::+}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::+}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::+}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::+}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::+}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::+}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::+}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::+}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::+}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::+}(n);
+  core::num n_i = n.{core::num::+}(i);
+  core::double n_d = n.{core::num::+}(d);
+  core::num n_x = n.{core::num::+}(x);
+  core::num n_y = n.{core::num::+}(y);
+  core::double n_z = n.{core::num::+}(z);
+  core::num i_n = i.{core::num::+}(n);
+  core::int i_i = i.{core::num::+}(i);
+  core::double i_d = i.{core::num::+}(d);
+  core::num i_x = i.{core::num::+}(x);
+  core::int i_y = i.{core::num::+}(y);
+  core::double i_z = i.{core::num::+}(z);
+  core::double d_n = d.{core::double::+}(n);
+  core::double d_i = d.{core::double::+}(i);
+  core::double d_d = d.{core::double::+}(d);
+  core::double d_x = d.{core::double::+}(x);
+  core::double d_y = d.{core::double::+}(y);
+  core::double d_z = d.{core::double::+}(z);
+  core::num x_n = x.{core::num::+}(n);
+  core::num x_i = x.{core::num::+}(i);
+  core::double x_d = x.{core::num::+}(d);
+  core::num x_x = x.{core::num::+}(x);
+  core::num x_y = x.{core::num::+}(y);
+  core::double x_z = x.{core::num::+}(z);
+  core::num y_n = y.{core::num::+}(n);
+  core::int y_i = y.{core::num::+}(i);
+  core::double y_d = y.{core::num::+}(d);
+  core::num y_x = y.{core::num::+}(x);
+  core::int y_y = y.{core::num::+}(y);
+  core::double y_z = y.{core::num::+}(z);
+  core::double z_n = z.{core::double::+}(n);
+  core::double z_i = z.{core::double::+}(i);
+  core::double z_d = z.{core::double::+}(d);
+  core::double z_x = z.{core::double::+}(x);
+  core::double z_y = z.{core::double::+}(y);
+  core::double z_z = z.{core::double::+}(z);
 }
 static method sub<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::sub::X x, self::sub::Y y, self::sub::Z z) → dynamic {
-  core::num n_n = n.{core::num::-}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::-}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::-}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::-}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::-}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::-}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::-}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::-}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::-}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::-}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::-}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::-}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::-}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::-}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::-}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::-}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::-}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::-}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::-}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::-}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::-}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::-}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::-}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::-}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::-}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::-}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::-}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::-}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::-}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::-}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::-}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::-}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::-}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::-}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::-}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::-}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::-}(n);
+  core::num n_i = n.{core::num::-}(i);
+  core::double n_d = n.{core::num::-}(d);
+  core::num n_x = n.{core::num::-}(x);
+  core::num n_y = n.{core::num::-}(y);
+  core::double n_z = n.{core::num::-}(z);
+  core::num i_n = i.{core::num::-}(n);
+  core::int i_i = i.{core::num::-}(i);
+  core::double i_d = i.{core::num::-}(d);
+  core::num i_x = i.{core::num::-}(x);
+  core::int i_y = i.{core::num::-}(y);
+  core::double i_z = i.{core::num::-}(z);
+  core::double d_n = d.{core::double::-}(n);
+  core::double d_i = d.{core::double::-}(i);
+  core::double d_d = d.{core::double::-}(d);
+  core::double d_x = d.{core::double::-}(x);
+  core::double d_y = d.{core::double::-}(y);
+  core::double d_z = d.{core::double::-}(z);
+  core::num x_n = x.{core::num::-}(n);
+  core::num x_i = x.{core::num::-}(i);
+  core::double x_d = x.{core::num::-}(d);
+  core::num x_x = x.{core::num::-}(x);
+  core::num x_y = x.{core::num::-}(y);
+  core::double x_z = x.{core::num::-}(z);
+  core::num y_n = y.{core::num::-}(n);
+  core::int y_i = y.{core::num::-}(i);
+  core::double y_d = y.{core::num::-}(d);
+  core::num y_x = y.{core::num::-}(x);
+  core::int y_y = y.{core::num::-}(y);
+  core::double y_z = y.{core::num::-}(z);
+  core::double z_n = z.{core::double::-}(n);
+  core::double z_i = z.{core::double::-}(i);
+  core::double z_d = z.{core::double::-}(d);
+  core::double z_x = z.{core::double::-}(x);
+  core::double z_y = z.{core::double::-}(y);
+  core::double z_z = z.{core::double::-}(z);
 }
 static method mul<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mul::X x, self::mul::Y y, self::mul::Z z) → dynamic {
-  core::num n_n = n.{core::num::*}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::*}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::*}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::*}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::*}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::*}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::*}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::*}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::*}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::*}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::*}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::*}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::*}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::*}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::*}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::*}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::*}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::*}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::*}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::*}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::*}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::*}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::*}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::*}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::*}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::*}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::*}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::*}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::*}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::*}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::*}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::*}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::*}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::*}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::*}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::*}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::*}(n);
+  core::num n_i = n.{core::num::*}(i);
+  core::double n_d = n.{core::num::*}(d);
+  core::num n_x = n.{core::num::*}(x);
+  core::num n_y = n.{core::num::*}(y);
+  core::double n_z = n.{core::num::*}(z);
+  core::num i_n = i.{core::num::*}(n);
+  core::int i_i = i.{core::num::*}(i);
+  core::double i_d = i.{core::num::*}(d);
+  core::num i_x = i.{core::num::*}(x);
+  core::int i_y = i.{core::num::*}(y);
+  core::double i_z = i.{core::num::*}(z);
+  core::double d_n = d.{core::double::*}(n);
+  core::double d_i = d.{core::double::*}(i);
+  core::double d_d = d.{core::double::*}(d);
+  core::double d_x = d.{core::double::*}(x);
+  core::double d_y = d.{core::double::*}(y);
+  core::double d_z = d.{core::double::*}(z);
+  core::num x_n = x.{core::num::*}(n);
+  core::num x_i = x.{core::num::*}(i);
+  core::double x_d = x.{core::num::*}(d);
+  core::num x_x = x.{core::num::*}(x);
+  core::num x_y = x.{core::num::*}(y);
+  core::double x_z = x.{core::num::*}(z);
+  core::num y_n = y.{core::num::*}(n);
+  core::int y_i = y.{core::num::*}(i);
+  core::double y_d = y.{core::num::*}(d);
+  core::num y_x = y.{core::num::*}(x);
+  core::int y_y = y.{core::num::*}(y);
+  core::double y_z = y.{core::num::*}(z);
+  core::double z_n = z.{core::double::*}(n);
+  core::double z_i = z.{core::double::*}(i);
+  core::double z_d = z.{core::double::*}(d);
+  core::double z_x = z.{core::double::*}(x);
+  core::double z_y = z.{core::double::*}(y);
+  core::double z_z = z.{core::double::*}(z);
 }
 static method mod<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mod::X x, self::mod::Y y, self::mod::Z z) → dynamic {
-  core::num n_n = n.{core::num::%}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::%}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::%}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::%}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::%}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::%}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::%}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::%}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::%}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::%}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::%}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::%}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::%}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::%}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::%}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::%}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::%}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::%}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::%}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::%}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::%}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::%}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::%}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::%}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::%}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::%}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::%}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::%}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::%}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::%}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::%}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::%}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::%}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::%}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::%}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::%}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::%}(n);
+  core::num n_i = n.{core::num::%}(i);
+  core::double n_d = n.{core::num::%}(d);
+  core::num n_x = n.{core::num::%}(x);
+  core::num n_y = n.{core::num::%}(y);
+  core::double n_z = n.{core::num::%}(z);
+  core::num i_n = i.{core::num::%}(n);
+  core::int i_i = i.{core::num::%}(i);
+  core::double i_d = i.{core::num::%}(d);
+  core::num i_x = i.{core::num::%}(x);
+  core::int i_y = i.{core::num::%}(y);
+  core::double i_z = i.{core::num::%}(z);
+  core::double d_n = d.{core::double::%}(n);
+  core::double d_i = d.{core::double::%}(i);
+  core::double d_d = d.{core::double::%}(d);
+  core::double d_x = d.{core::double::%}(x);
+  core::double d_y = d.{core::double::%}(y);
+  core::double d_z = d.{core::double::%}(z);
+  core::num x_n = x.{core::num::%}(n);
+  core::num x_i = x.{core::num::%}(i);
+  core::double x_d = x.{core::num::%}(d);
+  core::num x_x = x.{core::num::%}(x);
+  core::num x_y = x.{core::num::%}(y);
+  core::double x_z = x.{core::num::%}(z);
+  core::num y_n = y.{core::num::%}(n);
+  core::int y_i = y.{core::num::%}(i);
+  core::double y_d = y.{core::num::%}(d);
+  core::num y_x = y.{core::num::%}(x);
+  core::int y_y = y.{core::num::%}(y);
+  core::double y_z = y.{core::num::%}(z);
+  core::double z_n = z.{core::double::%}(n);
+  core::double z_i = z.{core::double::%}(i);
+  core::double z_d = z.{core::double::%}(d);
+  core::double z_x = z.{core::double::%}(x);
+  core::double z_y = z.{core::double::%}(y);
+  core::double z_z = z.{core::double::%}(z);
 }
 static method remainder<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::remainder::X x, self::remainder::Y y, self::remainder::Z z) → dynamic {
-  core::num n_n = n.{core::num::remainder}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::remainder}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::remainder}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::remainder}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::remainder}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::remainder}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::remainder}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::remainder}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::remainder}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::remainder}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::remainder}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::remainder}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::remainder}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::remainder}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::remainder}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::remainder}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::remainder}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::remainder}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::remainder}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::remainder}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::remainder}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::remainder}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::remainder}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::remainder}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::remainder}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::remainder}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::remainder}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::remainder}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::remainder}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::remainder}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::remainder}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::remainder}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::remainder}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::remainder}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::remainder}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::remainder}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::remainder}(n);
+  core::num n_i = n.{core::num::remainder}(i);
+  core::double n_d = n.{core::num::remainder}(d);
+  core::num n_x = n.{core::num::remainder}(x);
+  core::num n_y = n.{core::num::remainder}(y);
+  core::double n_z = n.{core::num::remainder}(z);
+  core::num i_n = i.{core::num::remainder}(n);
+  core::int i_i = i.{core::num::remainder}(i);
+  core::double i_d = i.{core::num::remainder}(d);
+  core::num i_x = i.{core::num::remainder}(x);
+  core::int i_y = i.{core::num::remainder}(y);
+  core::double i_z = i.{core::num::remainder}(z);
+  core::double d_n = d.{core::double::remainder}(n);
+  core::double d_i = d.{core::double::remainder}(i);
+  core::double d_d = d.{core::double::remainder}(d);
+  core::double d_x = d.{core::double::remainder}(x);
+  core::double d_y = d.{core::double::remainder}(y);
+  core::double d_z = d.{core::double::remainder}(z);
+  core::num x_n = x.{core::num::remainder}(n);
+  core::num x_i = x.{core::num::remainder}(i);
+  core::double x_d = x.{core::num::remainder}(d);
+  core::num x_x = x.{core::num::remainder}(x);
+  core::num x_y = x.{core::num::remainder}(y);
+  core::double x_z = x.{core::num::remainder}(z);
+  core::num y_n = y.{core::num::remainder}(n);
+  core::int y_i = y.{core::num::remainder}(i);
+  core::double y_d = y.{core::num::remainder}(d);
+  core::num y_x = y.{core::num::remainder}(x);
+  core::int y_y = y.{core::num::remainder}(y);
+  core::double y_z = y.{core::num::remainder}(z);
+  core::double z_n = z.{core::double::remainder}(n);
+  core::double z_i = z.{core::double::remainder}(i);
+  core::double z_d = z.{core::double::remainder}(d);
+  core::double z_x = z.{core::double::remainder}(x);
+  core::double z_y = z.{core::double::remainder}(y);
+  core::double z_z = z.{core::double::remainder}(z);
 }
 static method clamp<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::clamp::X x, self::clamp::Y y, self::clamp::Z z) → dynamic {
-  core::num n_n_n = n.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num n_i_n = n.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num n_d_n = n.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num n_x_n = n.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num n_y_n = n.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num n_z_n = n.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num n_n_i = n.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num n_i_i = n.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num n_d_i = n.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num n_x_i = n.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num n_y_i = n.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num n_z_i = n.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num n_n_d = n.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num n_i_d = n.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num n_d_d = n.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num n_x_d = n.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num n_y_d = n.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num n_z_d = n.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num n_n_x = n.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num n_i_x = n.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num n_d_x = n.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num n_x_x = n.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num n_y_x = n.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num n_z_x = n.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num n_n_y = n.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num n_i_y = n.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num n_d_y = n.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num n_x_y = n.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num n_y_y = n.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num n_z_y = n.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num n_n_z = n.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num n_i_z = n.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num n_d_z = n.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num n_x_z = n.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num n_y_z = n.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num n_z_z = n.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num i_n_n = i.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num i_i_n = i.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num i_d_n = i.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num i_x_n = i.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num i_y_n = i.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num i_z_n = i.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num i_n_i = i.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::int i_i_i = i.{core::num::clamp}(i, i){(core::num, core::num) → core::int};
-  core::num i_d_i = i.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num i_x_i = i.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::int i_y_i = i.{core::num::clamp}(y, i){(core::num, core::num) → core::int};
-  core::num i_z_i = i.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num i_n_d = i.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num i_i_d = i.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num i_d_d = i.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num i_x_d = i.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num i_y_d = i.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num i_z_d = i.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num i_n_x = i.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num i_i_x = i.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num i_d_x = i.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num i_x_x = i.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num i_y_x = i.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num i_z_x = i.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num i_n_y = i.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::int i_i_y = i.{core::num::clamp}(i, y){(core::num, core::num) → core::int};
-  core::num i_d_y = i.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num i_x_y = i.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::int i_y_y = i.{core::num::clamp}(y, y){(core::num, core::num) → core::int};
-  core::num i_z_y = i.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num i_n_z = i.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num i_i_z = i.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num i_d_z = i.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num i_x_z = i.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num i_y_z = i.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num i_z_z = i.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num d_n_n = d.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num d_i_n = d.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num d_d_n = d.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num d_x_n = d.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num d_y_n = d.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num d_z_n = d.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num d_n_i = d.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num d_i_i = d.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num d_d_i = d.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num d_x_i = d.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num d_y_i = d.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num d_z_i = d.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num d_n_d = d.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num d_i_d = d.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::double d_d_d = d.{core::num::clamp}(d, d){(core::num, core::num) → core::double};
-  core::num d_x_d = d.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num d_y_d = d.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::double d_z_d = d.{core::num::clamp}(z, d){(core::num, core::num) → core::double};
-  core::num d_n_x = d.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num d_i_x = d.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num d_d_x = d.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num d_x_x = d.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num d_y_x = d.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num d_z_x = d.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num d_n_y = d.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num d_i_y = d.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num d_d_y = d.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num d_x_y = d.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num d_y_y = d.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num d_z_y = d.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num d_n_z = d.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num d_i_z = d.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::double d_d_z = d.{core::num::clamp}(d, z){(core::num, core::num) → core::double};
-  core::num d_x_z = d.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num d_y_z = d.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::double d_z_z = d.{core::num::clamp}(z, z){(core::num, core::num) → core::double};
-  core::num x_n_n = x.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num x_i_n = x.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num x_d_n = x.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num x_x_n = x.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num x_y_n = x.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num x_z_n = x.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num x_n_i = x.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num x_i_i = x.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num x_d_i = x.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num x_x_i = x.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num x_y_i = x.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num x_z_i = x.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num x_n_d = x.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num x_i_d = x.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num x_d_d = x.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num x_x_d = x.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num x_y_d = x.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num x_z_d = x.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num x_n_x = x.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num x_i_x = x.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num x_d_x = x.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num x_x_x = x.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num x_y_x = x.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num x_z_x = x.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num x_n_y = x.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num x_i_y = x.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num x_d_y = x.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num x_x_y = x.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num x_y_y = x.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num x_z_y = x.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num x_n_z = x.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num x_i_z = x.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num x_d_z = x.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num x_x_z = x.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num x_y_z = x.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num x_z_z = x.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num y_n_n = y.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num y_i_n = y.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num y_d_n = y.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num y_x_n = y.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num y_y_n = y.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num y_z_n = y.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num y_n_i = y.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::int y_i_i = y.{core::num::clamp}(i, i){(core::num, core::num) → core::int};
-  core::num y_d_i = y.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num y_x_i = y.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::int y_y_i = y.{core::num::clamp}(y, i){(core::num, core::num) → core::int};
-  core::num y_z_i = y.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num y_n_d = y.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num y_i_d = y.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num y_d_d = y.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num y_x_d = y.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num y_y_d = y.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num y_z_d = y.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num y_n_x = y.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num y_i_x = y.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num y_d_x = y.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num y_x_x = y.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num y_y_x = y.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num y_z_x = y.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num y_n_y = y.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::int y_i_y = y.{core::num::clamp}(i, y){(core::num, core::num) → core::int};
-  core::num y_d_y = y.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num y_x_y = y.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::int y_y_y = y.{core::num::clamp}(y, y){(core::num, core::num) → core::int};
-  core::num y_z_y = y.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num y_n_z = y.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num y_i_z = y.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num y_d_z = y.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num y_x_z = y.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num y_y_z = y.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num y_z_z = y.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num z_n_n = z.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num z_i_n = z.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num z_d_n = z.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num z_x_n = z.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num z_y_n = z.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num z_z_n = z.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num z_n_i = z.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num z_i_i = z.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num z_d_i = z.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num z_x_i = z.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num z_y_i = z.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num z_z_i = z.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num z_n_d = z.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num z_i_d = z.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::double z_d_d = z.{core::num::clamp}(d, d){(core::num, core::num) → core::double};
-  core::num z_x_d = z.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num z_y_d = z.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::double z_z_d = z.{core::num::clamp}(z, d){(core::num, core::num) → core::double};
-  core::num z_n_x = z.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num z_i_x = z.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num z_d_x = z.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num z_x_x = z.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num z_y_x = z.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num z_z_x = z.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num z_n_y = z.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num z_i_y = z.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num z_d_y = z.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num z_x_y = z.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num z_y_y = z.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num z_z_y = z.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num z_n_z = z.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num z_i_z = z.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::double z_d_z = z.{core::num::clamp}(d, z){(core::num, core::num) → core::double};
-  core::num z_x_z = z.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num z_y_z = z.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::double z_z_z = z.{core::num::clamp}(z, z){(core::num, core::num) → core::double};
+  core::num n_n_n = n.{core::num::clamp}(n, n);
+  core::num n_i_n = n.{core::num::clamp}(i, n);
+  core::num n_d_n = n.{core::num::clamp}(d, n);
+  core::num n_x_n = n.{core::num::clamp}(x, n);
+  core::num n_y_n = n.{core::num::clamp}(y, n);
+  core::num n_z_n = n.{core::num::clamp}(z, n);
+  core::num n_n_i = n.{core::num::clamp}(n, i);
+  core::num n_i_i = n.{core::num::clamp}(i, i);
+  core::num n_d_i = n.{core::num::clamp}(d, i);
+  core::num n_x_i = n.{core::num::clamp}(x, i);
+  core::num n_y_i = n.{core::num::clamp}(y, i);
+  core::num n_z_i = n.{core::num::clamp}(z, i);
+  core::num n_n_d = n.{core::num::clamp}(n, d);
+  core::num n_i_d = n.{core::num::clamp}(i, d);
+  core::num n_d_d = n.{core::num::clamp}(d, d);
+  core::num n_x_d = n.{core::num::clamp}(x, d);
+  core::num n_y_d = n.{core::num::clamp}(y, d);
+  core::num n_z_d = n.{core::num::clamp}(z, d);
+  core::num n_n_x = n.{core::num::clamp}(n, x);
+  core::num n_i_x = n.{core::num::clamp}(i, x);
+  core::num n_d_x = n.{core::num::clamp}(d, x);
+  core::num n_x_x = n.{core::num::clamp}(x, x);
+  core::num n_y_x = n.{core::num::clamp}(y, x);
+  core::num n_z_x = n.{core::num::clamp}(z, x);
+  core::num n_n_y = n.{core::num::clamp}(n, y);
+  core::num n_i_y = n.{core::num::clamp}(i, y);
+  core::num n_d_y = n.{core::num::clamp}(d, y);
+  core::num n_x_y = n.{core::num::clamp}(x, y);
+  core::num n_y_y = n.{core::num::clamp}(y, y);
+  core::num n_z_y = n.{core::num::clamp}(z, y);
+  core::num n_n_z = n.{core::num::clamp}(n, z);
+  core::num n_i_z = n.{core::num::clamp}(i, z);
+  core::num n_d_z = n.{core::num::clamp}(d, z);
+  core::num n_x_z = n.{core::num::clamp}(x, z);
+  core::num n_y_z = n.{core::num::clamp}(y, z);
+  core::num n_z_z = n.{core::num::clamp}(z, z);
+  core::num i_n_n = i.{core::num::clamp}(n, n);
+  core::num i_i_n = i.{core::num::clamp}(i, n);
+  core::num i_d_n = i.{core::num::clamp}(d, n);
+  core::num i_x_n = i.{core::num::clamp}(x, n);
+  core::num i_y_n = i.{core::num::clamp}(y, n);
+  core::num i_z_n = i.{core::num::clamp}(z, n);
+  core::num i_n_i = i.{core::num::clamp}(n, i);
+  core::int i_i_i = i.{core::num::clamp}(i, i);
+  core::num i_d_i = i.{core::num::clamp}(d, i);
+  core::num i_x_i = i.{core::num::clamp}(x, i);
+  core::int i_y_i = i.{core::num::clamp}(y, i);
+  core::num i_z_i = i.{core::num::clamp}(z, i);
+  core::num i_n_d = i.{core::num::clamp}(n, d);
+  core::num i_i_d = i.{core::num::clamp}(i, d);
+  core::num i_d_d = i.{core::num::clamp}(d, d);
+  core::num i_x_d = i.{core::num::clamp}(x, d);
+  core::num i_y_d = i.{core::num::clamp}(y, d);
+  core::num i_z_d = i.{core::num::clamp}(z, d);
+  core::num i_n_x = i.{core::num::clamp}(n, x);
+  core::num i_i_x = i.{core::num::clamp}(i, x);
+  core::num i_d_x = i.{core::num::clamp}(d, x);
+  core::num i_x_x = i.{core::num::clamp}(x, x);
+  core::num i_y_x = i.{core::num::clamp}(y, x);
+  core::num i_z_x = i.{core::num::clamp}(z, x);
+  core::num i_n_y = i.{core::num::clamp}(n, y);
+  core::int i_i_y = i.{core::num::clamp}(i, y);
+  core::num i_d_y = i.{core::num::clamp}(d, y);
+  core::num i_x_y = i.{core::num::clamp}(x, y);
+  core::int i_y_y = i.{core::num::clamp}(y, y);
+  core::num i_z_y = i.{core::num::clamp}(z, y);
+  core::num i_n_z = i.{core::num::clamp}(n, z);
+  core::num i_i_z = i.{core::num::clamp}(i, z);
+  core::num i_d_z = i.{core::num::clamp}(d, z);
+  core::num i_x_z = i.{core::num::clamp}(x, z);
+  core::num i_y_z = i.{core::num::clamp}(y, z);
+  core::num i_z_z = i.{core::num::clamp}(z, z);
+  core::num d_n_n = d.{core::num::clamp}(n, n);
+  core::num d_i_n = d.{core::num::clamp}(i, n);
+  core::num d_d_n = d.{core::num::clamp}(d, n);
+  core::num d_x_n = d.{core::num::clamp}(x, n);
+  core::num d_y_n = d.{core::num::clamp}(y, n);
+  core::num d_z_n = d.{core::num::clamp}(z, n);
+  core::num d_n_i = d.{core::num::clamp}(n, i);
+  core::num d_i_i = d.{core::num::clamp}(i, i);
+  core::num d_d_i = d.{core::num::clamp}(d, i);
+  core::num d_x_i = d.{core::num::clamp}(x, i);
+  core::num d_y_i = d.{core::num::clamp}(y, i);
+  core::num d_z_i = d.{core::num::clamp}(z, i);
+  core::num d_n_d = d.{core::num::clamp}(n, d);
+  core::num d_i_d = d.{core::num::clamp}(i, d);
+  core::double d_d_d = d.{core::num::clamp}(d, d);
+  core::num d_x_d = d.{core::num::clamp}(x, d);
+  core::num d_y_d = d.{core::num::clamp}(y, d);
+  core::double d_z_d = d.{core::num::clamp}(z, d);
+  core::num d_n_x = d.{core::num::clamp}(n, x);
+  core::num d_i_x = d.{core::num::clamp}(i, x);
+  core::num d_d_x = d.{core::num::clamp}(d, x);
+  core::num d_x_x = d.{core::num::clamp}(x, x);
+  core::num d_y_x = d.{core::num::clamp}(y, x);
+  core::num d_z_x = d.{core::num::clamp}(z, x);
+  core::num d_n_y = d.{core::num::clamp}(n, y);
+  core::num d_i_y = d.{core::num::clamp}(i, y);
+  core::num d_d_y = d.{core::num::clamp}(d, y);
+  core::num d_x_y = d.{core::num::clamp}(x, y);
+  core::num d_y_y = d.{core::num::clamp}(y, y);
+  core::num d_z_y = d.{core::num::clamp}(z, y);
+  core::num d_n_z = d.{core::num::clamp}(n, z);
+  core::num d_i_z = d.{core::num::clamp}(i, z);
+  core::double d_d_z = d.{core::num::clamp}(d, z);
+  core::num d_x_z = d.{core::num::clamp}(x, z);
+  core::num d_y_z = d.{core::num::clamp}(y, z);
+  core::double d_z_z = d.{core::num::clamp}(z, z);
+  core::num x_n_n = x.{core::num::clamp}(n, n);
+  core::num x_i_n = x.{core::num::clamp}(i, n);
+  core::num x_d_n = x.{core::num::clamp}(d, n);
+  core::num x_x_n = x.{core::num::clamp}(x, n);
+  core::num x_y_n = x.{core::num::clamp}(y, n);
+  core::num x_z_n = x.{core::num::clamp}(z, n);
+  core::num x_n_i = x.{core::num::clamp}(n, i);
+  core::num x_i_i = x.{core::num::clamp}(i, i);
+  core::num x_d_i = x.{core::num::clamp}(d, i);
+  core::num x_x_i = x.{core::num::clamp}(x, i);
+  core::num x_y_i = x.{core::num::clamp}(y, i);
+  core::num x_z_i = x.{core::num::clamp}(z, i);
+  core::num x_n_d = x.{core::num::clamp}(n, d);
+  core::num x_i_d = x.{core::num::clamp}(i, d);
+  core::num x_d_d = x.{core::num::clamp}(d, d);
+  core::num x_x_d = x.{core::num::clamp}(x, d);
+  core::num x_y_d = x.{core::num::clamp}(y, d);
+  core::num x_z_d = x.{core::num::clamp}(z, d);
+  core::num x_n_x = x.{core::num::clamp}(n, x);
+  core::num x_i_x = x.{core::num::clamp}(i, x);
+  core::num x_d_x = x.{core::num::clamp}(d, x);
+  core::num x_x_x = x.{core::num::clamp}(x, x);
+  core::num x_y_x = x.{core::num::clamp}(y, x);
+  core::num x_z_x = x.{core::num::clamp}(z, x);
+  core::num x_n_y = x.{core::num::clamp}(n, y);
+  core::num x_i_y = x.{core::num::clamp}(i, y);
+  core::num x_d_y = x.{core::num::clamp}(d, y);
+  core::num x_x_y = x.{core::num::clamp}(x, y);
+  core::num x_y_y = x.{core::num::clamp}(y, y);
+  core::num x_z_y = x.{core::num::clamp}(z, y);
+  core::num x_n_z = x.{core::num::clamp}(n, z);
+  core::num x_i_z = x.{core::num::clamp}(i, z);
+  core::num x_d_z = x.{core::num::clamp}(d, z);
+  core::num x_x_z = x.{core::num::clamp}(x, z);
+  core::num x_y_z = x.{core::num::clamp}(y, z);
+  core::num x_z_z = x.{core::num::clamp}(z, z);
+  core::num y_n_n = y.{core::num::clamp}(n, n);
+  core::num y_i_n = y.{core::num::clamp}(i, n);
+  core::num y_d_n = y.{core::num::clamp}(d, n);
+  core::num y_x_n = y.{core::num::clamp}(x, n);
+  core::num y_y_n = y.{core::num::clamp}(y, n);
+  core::num y_z_n = y.{core::num::clamp}(z, n);
+  core::num y_n_i = y.{core::num::clamp}(n, i);
+  core::int y_i_i = y.{core::num::clamp}(i, i);
+  core::num y_d_i = y.{core::num::clamp}(d, i);
+  core::num y_x_i = y.{core::num::clamp}(x, i);
+  core::int y_y_i = y.{core::num::clamp}(y, i);
+  core::num y_z_i = y.{core::num::clamp}(z, i);
+  core::num y_n_d = y.{core::num::clamp}(n, d);
+  core::num y_i_d = y.{core::num::clamp}(i, d);
+  core::num y_d_d = y.{core::num::clamp}(d, d);
+  core::num y_x_d = y.{core::num::clamp}(x, d);
+  core::num y_y_d = y.{core::num::clamp}(y, d);
+  core::num y_z_d = y.{core::num::clamp}(z, d);
+  core::num y_n_x = y.{core::num::clamp}(n, x);
+  core::num y_i_x = y.{core::num::clamp}(i, x);
+  core::num y_d_x = y.{core::num::clamp}(d, x);
+  core::num y_x_x = y.{core::num::clamp}(x, x);
+  core::num y_y_x = y.{core::num::clamp}(y, x);
+  core::num y_z_x = y.{core::num::clamp}(z, x);
+  core::num y_n_y = y.{core::num::clamp}(n, y);
+  core::int y_i_y = y.{core::num::clamp}(i, y);
+  core::num y_d_y = y.{core::num::clamp}(d, y);
+  core::num y_x_y = y.{core::num::clamp}(x, y);
+  core::int y_y_y = y.{core::num::clamp}(y, y);
+  core::num y_z_y = y.{core::num::clamp}(z, y);
+  core::num y_n_z = y.{core::num::clamp}(n, z);
+  core::num y_i_z = y.{core::num::clamp}(i, z);
+  core::num y_d_z = y.{core::num::clamp}(d, z);
+  core::num y_x_z = y.{core::num::clamp}(x, z);
+  core::num y_y_z = y.{core::num::clamp}(y, z);
+  core::num y_z_z = y.{core::num::clamp}(z, z);
+  core::num z_n_n = z.{core::num::clamp}(n, n);
+  core::num z_i_n = z.{core::num::clamp}(i, n);
+  core::num z_d_n = z.{core::num::clamp}(d, n);
+  core::num z_x_n = z.{core::num::clamp}(x, n);
+  core::num z_y_n = z.{core::num::clamp}(y, n);
+  core::num z_z_n = z.{core::num::clamp}(z, n);
+  core::num z_n_i = z.{core::num::clamp}(n, i);
+  core::num z_i_i = z.{core::num::clamp}(i, i);
+  core::num z_d_i = z.{core::num::clamp}(d, i);
+  core::num z_x_i = z.{core::num::clamp}(x, i);
+  core::num z_y_i = z.{core::num::clamp}(y, i);
+  core::num z_z_i = z.{core::num::clamp}(z, i);
+  core::num z_n_d = z.{core::num::clamp}(n, d);
+  core::num z_i_d = z.{core::num::clamp}(i, d);
+  core::double z_d_d = z.{core::num::clamp}(d, d);
+  core::num z_x_d = z.{core::num::clamp}(x, d);
+  core::num z_y_d = z.{core::num::clamp}(y, d);
+  core::double z_z_d = z.{core::num::clamp}(z, d);
+  core::num z_n_x = z.{core::num::clamp}(n, x);
+  core::num z_i_x = z.{core::num::clamp}(i, x);
+  core::num z_d_x = z.{core::num::clamp}(d, x);
+  core::num z_x_x = z.{core::num::clamp}(x, x);
+  core::num z_y_x = z.{core::num::clamp}(y, x);
+  core::num z_z_x = z.{core::num::clamp}(z, x);
+  core::num z_n_y = z.{core::num::clamp}(n, y);
+  core::num z_i_y = z.{core::num::clamp}(i, y);
+  core::num z_d_y = z.{core::num::clamp}(d, y);
+  core::num z_x_y = z.{core::num::clamp}(x, y);
+  core::num z_y_y = z.{core::num::clamp}(y, y);
+  core::num z_z_y = z.{core::num::clamp}(z, y);
+  core::num z_n_z = z.{core::num::clamp}(n, z);
+  core::num z_i_z = z.{core::num::clamp}(i, z);
+  core::double z_d_z = z.{core::num::clamp}(d, z);
+  core::num z_x_z = z.{core::num::clamp}(x, z);
+  core::num z_y_z = z.{core::num::clamp}(y, z);
+  core::double z_z_z = z.{core::num::clamp}(z, z);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/numbers.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/numbers.dart.strong.transformed.expect
index babfb04..d52aac2 100644
--- a/pkg/front_end/testcases/nnbd/numbers.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/numbers.dart.strong.transformed.expect
@@ -3,411 +3,411 @@
 import "dart:core" as core;
 
 static method add<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::add::X x, self::add::Y y, self::add::Z z) → dynamic {
-  core::num n_n = n.{core::num::+}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::+}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::+}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::+}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::+}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::+}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::+}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::+}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::+}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::+}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::+}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::+}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::+}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::+}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::+}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::+}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::+}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::+}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::+}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::+}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::+}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::+}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::+}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::+}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::+}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::+}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::+}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::+}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::+}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::+}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::+}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::+}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::+}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::+}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::+}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::+}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::+}(n);
+  core::num n_i = n.{core::num::+}(i);
+  core::double n_d = n.{core::num::+}(d);
+  core::num n_x = n.{core::num::+}(x);
+  core::num n_y = n.{core::num::+}(y);
+  core::double n_z = n.{core::num::+}(z);
+  core::num i_n = i.{core::num::+}(n);
+  core::int i_i = i.{core::num::+}(i);
+  core::double i_d = i.{core::num::+}(d);
+  core::num i_x = i.{core::num::+}(x);
+  core::int i_y = i.{core::num::+}(y);
+  core::double i_z = i.{core::num::+}(z);
+  core::double d_n = d.{core::double::+}(n);
+  core::double d_i = d.{core::double::+}(i);
+  core::double d_d = d.{core::double::+}(d);
+  core::double d_x = d.{core::double::+}(x);
+  core::double d_y = d.{core::double::+}(y);
+  core::double d_z = d.{core::double::+}(z);
+  core::num x_n = x.{core::num::+}(n);
+  core::num x_i = x.{core::num::+}(i);
+  core::double x_d = x.{core::num::+}(d);
+  core::num x_x = x.{core::num::+}(x);
+  core::num x_y = x.{core::num::+}(y);
+  core::double x_z = x.{core::num::+}(z);
+  core::num y_n = y.{core::num::+}(n);
+  core::int y_i = y.{core::num::+}(i);
+  core::double y_d = y.{core::num::+}(d);
+  core::num y_x = y.{core::num::+}(x);
+  core::int y_y = y.{core::num::+}(y);
+  core::double y_z = y.{core::num::+}(z);
+  core::double z_n = z.{core::double::+}(n);
+  core::double z_i = z.{core::double::+}(i);
+  core::double z_d = z.{core::double::+}(d);
+  core::double z_x = z.{core::double::+}(x);
+  core::double z_y = z.{core::double::+}(y);
+  core::double z_z = z.{core::double::+}(z);
 }
 static method sub<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::sub::X x, self::sub::Y y, self::sub::Z z) → dynamic {
-  core::num n_n = n.{core::num::-}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::-}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::-}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::-}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::-}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::-}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::-}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::-}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::-}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::-}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::-}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::-}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::-}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::-}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::-}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::-}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::-}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::-}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::-}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::-}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::-}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::-}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::-}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::-}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::-}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::-}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::-}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::-}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::-}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::-}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::-}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::-}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::-}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::-}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::-}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::-}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::-}(n);
+  core::num n_i = n.{core::num::-}(i);
+  core::double n_d = n.{core::num::-}(d);
+  core::num n_x = n.{core::num::-}(x);
+  core::num n_y = n.{core::num::-}(y);
+  core::double n_z = n.{core::num::-}(z);
+  core::num i_n = i.{core::num::-}(n);
+  core::int i_i = i.{core::num::-}(i);
+  core::double i_d = i.{core::num::-}(d);
+  core::num i_x = i.{core::num::-}(x);
+  core::int i_y = i.{core::num::-}(y);
+  core::double i_z = i.{core::num::-}(z);
+  core::double d_n = d.{core::double::-}(n);
+  core::double d_i = d.{core::double::-}(i);
+  core::double d_d = d.{core::double::-}(d);
+  core::double d_x = d.{core::double::-}(x);
+  core::double d_y = d.{core::double::-}(y);
+  core::double d_z = d.{core::double::-}(z);
+  core::num x_n = x.{core::num::-}(n);
+  core::num x_i = x.{core::num::-}(i);
+  core::double x_d = x.{core::num::-}(d);
+  core::num x_x = x.{core::num::-}(x);
+  core::num x_y = x.{core::num::-}(y);
+  core::double x_z = x.{core::num::-}(z);
+  core::num y_n = y.{core::num::-}(n);
+  core::int y_i = y.{core::num::-}(i);
+  core::double y_d = y.{core::num::-}(d);
+  core::num y_x = y.{core::num::-}(x);
+  core::int y_y = y.{core::num::-}(y);
+  core::double y_z = y.{core::num::-}(z);
+  core::double z_n = z.{core::double::-}(n);
+  core::double z_i = z.{core::double::-}(i);
+  core::double z_d = z.{core::double::-}(d);
+  core::double z_x = z.{core::double::-}(x);
+  core::double z_y = z.{core::double::-}(y);
+  core::double z_z = z.{core::double::-}(z);
 }
 static method mul<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mul::X x, self::mul::Y y, self::mul::Z z) → dynamic {
-  core::num n_n = n.{core::num::*}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::*}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::*}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::*}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::*}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::*}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::*}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::*}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::*}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::*}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::*}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::*}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::*}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::*}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::*}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::*}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::*}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::*}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::*}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::*}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::*}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::*}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::*}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::*}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::*}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::*}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::*}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::*}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::*}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::*}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::*}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::*}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::*}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::*}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::*}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::*}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::*}(n);
+  core::num n_i = n.{core::num::*}(i);
+  core::double n_d = n.{core::num::*}(d);
+  core::num n_x = n.{core::num::*}(x);
+  core::num n_y = n.{core::num::*}(y);
+  core::double n_z = n.{core::num::*}(z);
+  core::num i_n = i.{core::num::*}(n);
+  core::int i_i = i.{core::num::*}(i);
+  core::double i_d = i.{core::num::*}(d);
+  core::num i_x = i.{core::num::*}(x);
+  core::int i_y = i.{core::num::*}(y);
+  core::double i_z = i.{core::num::*}(z);
+  core::double d_n = d.{core::double::*}(n);
+  core::double d_i = d.{core::double::*}(i);
+  core::double d_d = d.{core::double::*}(d);
+  core::double d_x = d.{core::double::*}(x);
+  core::double d_y = d.{core::double::*}(y);
+  core::double d_z = d.{core::double::*}(z);
+  core::num x_n = x.{core::num::*}(n);
+  core::num x_i = x.{core::num::*}(i);
+  core::double x_d = x.{core::num::*}(d);
+  core::num x_x = x.{core::num::*}(x);
+  core::num x_y = x.{core::num::*}(y);
+  core::double x_z = x.{core::num::*}(z);
+  core::num y_n = y.{core::num::*}(n);
+  core::int y_i = y.{core::num::*}(i);
+  core::double y_d = y.{core::num::*}(d);
+  core::num y_x = y.{core::num::*}(x);
+  core::int y_y = y.{core::num::*}(y);
+  core::double y_z = y.{core::num::*}(z);
+  core::double z_n = z.{core::double::*}(n);
+  core::double z_i = z.{core::double::*}(i);
+  core::double z_d = z.{core::double::*}(d);
+  core::double z_x = z.{core::double::*}(x);
+  core::double z_y = z.{core::double::*}(y);
+  core::double z_z = z.{core::double::*}(z);
 }
 static method mod<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mod::X x, self::mod::Y y, self::mod::Z z) → dynamic {
-  core::num n_n = n.{core::num::%}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::%}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::%}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::%}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::%}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::%}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::%}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::%}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::%}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::%}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::%}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::%}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::%}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::%}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::%}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::%}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::%}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::%}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::%}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::%}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::%}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::%}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::%}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::%}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::%}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::%}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::%}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::%}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::%}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::%}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::%}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::%}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::%}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::%}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::%}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::%}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::%}(n);
+  core::num n_i = n.{core::num::%}(i);
+  core::double n_d = n.{core::num::%}(d);
+  core::num n_x = n.{core::num::%}(x);
+  core::num n_y = n.{core::num::%}(y);
+  core::double n_z = n.{core::num::%}(z);
+  core::num i_n = i.{core::num::%}(n);
+  core::int i_i = i.{core::num::%}(i);
+  core::double i_d = i.{core::num::%}(d);
+  core::num i_x = i.{core::num::%}(x);
+  core::int i_y = i.{core::num::%}(y);
+  core::double i_z = i.{core::num::%}(z);
+  core::double d_n = d.{core::double::%}(n);
+  core::double d_i = d.{core::double::%}(i);
+  core::double d_d = d.{core::double::%}(d);
+  core::double d_x = d.{core::double::%}(x);
+  core::double d_y = d.{core::double::%}(y);
+  core::double d_z = d.{core::double::%}(z);
+  core::num x_n = x.{core::num::%}(n);
+  core::num x_i = x.{core::num::%}(i);
+  core::double x_d = x.{core::num::%}(d);
+  core::num x_x = x.{core::num::%}(x);
+  core::num x_y = x.{core::num::%}(y);
+  core::double x_z = x.{core::num::%}(z);
+  core::num y_n = y.{core::num::%}(n);
+  core::int y_i = y.{core::num::%}(i);
+  core::double y_d = y.{core::num::%}(d);
+  core::num y_x = y.{core::num::%}(x);
+  core::int y_y = y.{core::num::%}(y);
+  core::double y_z = y.{core::num::%}(z);
+  core::double z_n = z.{core::double::%}(n);
+  core::double z_i = z.{core::double::%}(i);
+  core::double z_d = z.{core::double::%}(d);
+  core::double z_x = z.{core::double::%}(x);
+  core::double z_y = z.{core::double::%}(y);
+  core::double z_z = z.{core::double::%}(z);
 }
 static method remainder<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::remainder::X x, self::remainder::Y y, self::remainder::Z z) → dynamic {
-  core::num n_n = n.{core::num::remainder}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::remainder}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::remainder}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::remainder}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::remainder}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::remainder}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::remainder}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::remainder}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::remainder}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::remainder}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::remainder}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::remainder}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::remainder}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::remainder}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::remainder}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::remainder}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::remainder}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::remainder}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::remainder}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::remainder}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::remainder}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::remainder}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::remainder}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::remainder}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::remainder}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::remainder}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::remainder}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::remainder}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::remainder}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::remainder}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::remainder}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::remainder}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::remainder}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::remainder}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::remainder}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::remainder}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::remainder}(n);
+  core::num n_i = n.{core::num::remainder}(i);
+  core::double n_d = n.{core::num::remainder}(d);
+  core::num n_x = n.{core::num::remainder}(x);
+  core::num n_y = n.{core::num::remainder}(y);
+  core::double n_z = n.{core::num::remainder}(z);
+  core::num i_n = i.{core::num::remainder}(n);
+  core::int i_i = i.{core::num::remainder}(i);
+  core::double i_d = i.{core::num::remainder}(d);
+  core::num i_x = i.{core::num::remainder}(x);
+  core::int i_y = i.{core::num::remainder}(y);
+  core::double i_z = i.{core::num::remainder}(z);
+  core::double d_n = d.{core::double::remainder}(n);
+  core::double d_i = d.{core::double::remainder}(i);
+  core::double d_d = d.{core::double::remainder}(d);
+  core::double d_x = d.{core::double::remainder}(x);
+  core::double d_y = d.{core::double::remainder}(y);
+  core::double d_z = d.{core::double::remainder}(z);
+  core::num x_n = x.{core::num::remainder}(n);
+  core::num x_i = x.{core::num::remainder}(i);
+  core::double x_d = x.{core::num::remainder}(d);
+  core::num x_x = x.{core::num::remainder}(x);
+  core::num x_y = x.{core::num::remainder}(y);
+  core::double x_z = x.{core::num::remainder}(z);
+  core::num y_n = y.{core::num::remainder}(n);
+  core::int y_i = y.{core::num::remainder}(i);
+  core::double y_d = y.{core::num::remainder}(d);
+  core::num y_x = y.{core::num::remainder}(x);
+  core::int y_y = y.{core::num::remainder}(y);
+  core::double y_z = y.{core::num::remainder}(z);
+  core::double z_n = z.{core::double::remainder}(n);
+  core::double z_i = z.{core::double::remainder}(i);
+  core::double z_d = z.{core::double::remainder}(d);
+  core::double z_x = z.{core::double::remainder}(x);
+  core::double z_y = z.{core::double::remainder}(y);
+  core::double z_z = z.{core::double::remainder}(z);
 }
 static method clamp<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::clamp::X x, self::clamp::Y y, self::clamp::Z z) → dynamic {
-  core::num n_n_n = n.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num n_i_n = n.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num n_d_n = n.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num n_x_n = n.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num n_y_n = n.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num n_z_n = n.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num n_n_i = n.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num n_i_i = n.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num n_d_i = n.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num n_x_i = n.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num n_y_i = n.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num n_z_i = n.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num n_n_d = n.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num n_i_d = n.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num n_d_d = n.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num n_x_d = n.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num n_y_d = n.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num n_z_d = n.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num n_n_x = n.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num n_i_x = n.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num n_d_x = n.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num n_x_x = n.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num n_y_x = n.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num n_z_x = n.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num n_n_y = n.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num n_i_y = n.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num n_d_y = n.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num n_x_y = n.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num n_y_y = n.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num n_z_y = n.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num n_n_z = n.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num n_i_z = n.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num n_d_z = n.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num n_x_z = n.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num n_y_z = n.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num n_z_z = n.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num i_n_n = i.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num i_i_n = i.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num i_d_n = i.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num i_x_n = i.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num i_y_n = i.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num i_z_n = i.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num i_n_i = i.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::int i_i_i = i.{core::num::clamp}(i, i){(core::num, core::num) → core::int};
-  core::num i_d_i = i.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num i_x_i = i.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::int i_y_i = i.{core::num::clamp}(y, i){(core::num, core::num) → core::int};
-  core::num i_z_i = i.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num i_n_d = i.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num i_i_d = i.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num i_d_d = i.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num i_x_d = i.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num i_y_d = i.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num i_z_d = i.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num i_n_x = i.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num i_i_x = i.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num i_d_x = i.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num i_x_x = i.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num i_y_x = i.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num i_z_x = i.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num i_n_y = i.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::int i_i_y = i.{core::num::clamp}(i, y){(core::num, core::num) → core::int};
-  core::num i_d_y = i.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num i_x_y = i.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::int i_y_y = i.{core::num::clamp}(y, y){(core::num, core::num) → core::int};
-  core::num i_z_y = i.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num i_n_z = i.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num i_i_z = i.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num i_d_z = i.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num i_x_z = i.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num i_y_z = i.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num i_z_z = i.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num d_n_n = d.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num d_i_n = d.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num d_d_n = d.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num d_x_n = d.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num d_y_n = d.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num d_z_n = d.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num d_n_i = d.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num d_i_i = d.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num d_d_i = d.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num d_x_i = d.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num d_y_i = d.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num d_z_i = d.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num d_n_d = d.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num d_i_d = d.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::double d_d_d = d.{core::num::clamp}(d, d){(core::num, core::num) → core::double};
-  core::num d_x_d = d.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num d_y_d = d.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::double d_z_d = d.{core::num::clamp}(z, d){(core::num, core::num) → core::double};
-  core::num d_n_x = d.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num d_i_x = d.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num d_d_x = d.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num d_x_x = d.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num d_y_x = d.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num d_z_x = d.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num d_n_y = d.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num d_i_y = d.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num d_d_y = d.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num d_x_y = d.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num d_y_y = d.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num d_z_y = d.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num d_n_z = d.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num d_i_z = d.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::double d_d_z = d.{core::num::clamp}(d, z){(core::num, core::num) → core::double};
-  core::num d_x_z = d.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num d_y_z = d.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::double d_z_z = d.{core::num::clamp}(z, z){(core::num, core::num) → core::double};
-  core::num x_n_n = x.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num x_i_n = x.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num x_d_n = x.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num x_x_n = x.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num x_y_n = x.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num x_z_n = x.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num x_n_i = x.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num x_i_i = x.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num x_d_i = x.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num x_x_i = x.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num x_y_i = x.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num x_z_i = x.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num x_n_d = x.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num x_i_d = x.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num x_d_d = x.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num x_x_d = x.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num x_y_d = x.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num x_z_d = x.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num x_n_x = x.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num x_i_x = x.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num x_d_x = x.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num x_x_x = x.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num x_y_x = x.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num x_z_x = x.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num x_n_y = x.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num x_i_y = x.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num x_d_y = x.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num x_x_y = x.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num x_y_y = x.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num x_z_y = x.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num x_n_z = x.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num x_i_z = x.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num x_d_z = x.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num x_x_z = x.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num x_y_z = x.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num x_z_z = x.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num y_n_n = y.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num y_i_n = y.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num y_d_n = y.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num y_x_n = y.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num y_y_n = y.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num y_z_n = y.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num y_n_i = y.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::int y_i_i = y.{core::num::clamp}(i, i){(core::num, core::num) → core::int};
-  core::num y_d_i = y.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num y_x_i = y.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::int y_y_i = y.{core::num::clamp}(y, i){(core::num, core::num) → core::int};
-  core::num y_z_i = y.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num y_n_d = y.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num y_i_d = y.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num y_d_d = y.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num y_x_d = y.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num y_y_d = y.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num y_z_d = y.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num y_n_x = y.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num y_i_x = y.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num y_d_x = y.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num y_x_x = y.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num y_y_x = y.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num y_z_x = y.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num y_n_y = y.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::int y_i_y = y.{core::num::clamp}(i, y){(core::num, core::num) → core::int};
-  core::num y_d_y = y.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num y_x_y = y.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::int y_y_y = y.{core::num::clamp}(y, y){(core::num, core::num) → core::int};
-  core::num y_z_y = y.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num y_n_z = y.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num y_i_z = y.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num y_d_z = y.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num y_x_z = y.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num y_y_z = y.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num y_z_z = y.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num z_n_n = z.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num z_i_n = z.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num z_d_n = z.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num z_x_n = z.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num z_y_n = z.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num z_z_n = z.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num z_n_i = z.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num z_i_i = z.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num z_d_i = z.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num z_x_i = z.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num z_y_i = z.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num z_z_i = z.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num z_n_d = z.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num z_i_d = z.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::double z_d_d = z.{core::num::clamp}(d, d){(core::num, core::num) → core::double};
-  core::num z_x_d = z.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num z_y_d = z.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::double z_z_d = z.{core::num::clamp}(z, d){(core::num, core::num) → core::double};
-  core::num z_n_x = z.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num z_i_x = z.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num z_d_x = z.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num z_x_x = z.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num z_y_x = z.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num z_z_x = z.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num z_n_y = z.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num z_i_y = z.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num z_d_y = z.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num z_x_y = z.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num z_y_y = z.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num z_z_y = z.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num z_n_z = z.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num z_i_z = z.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::double z_d_z = z.{core::num::clamp}(d, z){(core::num, core::num) → core::double};
-  core::num z_x_z = z.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num z_y_z = z.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::double z_z_z = z.{core::num::clamp}(z, z){(core::num, core::num) → core::double};
+  core::num n_n_n = n.{core::num::clamp}(n, n);
+  core::num n_i_n = n.{core::num::clamp}(i, n);
+  core::num n_d_n = n.{core::num::clamp}(d, n);
+  core::num n_x_n = n.{core::num::clamp}(x, n);
+  core::num n_y_n = n.{core::num::clamp}(y, n);
+  core::num n_z_n = n.{core::num::clamp}(z, n);
+  core::num n_n_i = n.{core::num::clamp}(n, i);
+  core::num n_i_i = n.{core::num::clamp}(i, i);
+  core::num n_d_i = n.{core::num::clamp}(d, i);
+  core::num n_x_i = n.{core::num::clamp}(x, i);
+  core::num n_y_i = n.{core::num::clamp}(y, i);
+  core::num n_z_i = n.{core::num::clamp}(z, i);
+  core::num n_n_d = n.{core::num::clamp}(n, d);
+  core::num n_i_d = n.{core::num::clamp}(i, d);
+  core::num n_d_d = n.{core::num::clamp}(d, d);
+  core::num n_x_d = n.{core::num::clamp}(x, d);
+  core::num n_y_d = n.{core::num::clamp}(y, d);
+  core::num n_z_d = n.{core::num::clamp}(z, d);
+  core::num n_n_x = n.{core::num::clamp}(n, x);
+  core::num n_i_x = n.{core::num::clamp}(i, x);
+  core::num n_d_x = n.{core::num::clamp}(d, x);
+  core::num n_x_x = n.{core::num::clamp}(x, x);
+  core::num n_y_x = n.{core::num::clamp}(y, x);
+  core::num n_z_x = n.{core::num::clamp}(z, x);
+  core::num n_n_y = n.{core::num::clamp}(n, y);
+  core::num n_i_y = n.{core::num::clamp}(i, y);
+  core::num n_d_y = n.{core::num::clamp}(d, y);
+  core::num n_x_y = n.{core::num::clamp}(x, y);
+  core::num n_y_y = n.{core::num::clamp}(y, y);
+  core::num n_z_y = n.{core::num::clamp}(z, y);
+  core::num n_n_z = n.{core::num::clamp}(n, z);
+  core::num n_i_z = n.{core::num::clamp}(i, z);
+  core::num n_d_z = n.{core::num::clamp}(d, z);
+  core::num n_x_z = n.{core::num::clamp}(x, z);
+  core::num n_y_z = n.{core::num::clamp}(y, z);
+  core::num n_z_z = n.{core::num::clamp}(z, z);
+  core::num i_n_n = i.{core::num::clamp}(n, n);
+  core::num i_i_n = i.{core::num::clamp}(i, n);
+  core::num i_d_n = i.{core::num::clamp}(d, n);
+  core::num i_x_n = i.{core::num::clamp}(x, n);
+  core::num i_y_n = i.{core::num::clamp}(y, n);
+  core::num i_z_n = i.{core::num::clamp}(z, n);
+  core::num i_n_i = i.{core::num::clamp}(n, i);
+  core::int i_i_i = i.{core::num::clamp}(i, i);
+  core::num i_d_i = i.{core::num::clamp}(d, i);
+  core::num i_x_i = i.{core::num::clamp}(x, i);
+  core::int i_y_i = i.{core::num::clamp}(y, i);
+  core::num i_z_i = i.{core::num::clamp}(z, i);
+  core::num i_n_d = i.{core::num::clamp}(n, d);
+  core::num i_i_d = i.{core::num::clamp}(i, d);
+  core::num i_d_d = i.{core::num::clamp}(d, d);
+  core::num i_x_d = i.{core::num::clamp}(x, d);
+  core::num i_y_d = i.{core::num::clamp}(y, d);
+  core::num i_z_d = i.{core::num::clamp}(z, d);
+  core::num i_n_x = i.{core::num::clamp}(n, x);
+  core::num i_i_x = i.{core::num::clamp}(i, x);
+  core::num i_d_x = i.{core::num::clamp}(d, x);
+  core::num i_x_x = i.{core::num::clamp}(x, x);
+  core::num i_y_x = i.{core::num::clamp}(y, x);
+  core::num i_z_x = i.{core::num::clamp}(z, x);
+  core::num i_n_y = i.{core::num::clamp}(n, y);
+  core::int i_i_y = i.{core::num::clamp}(i, y);
+  core::num i_d_y = i.{core::num::clamp}(d, y);
+  core::num i_x_y = i.{core::num::clamp}(x, y);
+  core::int i_y_y = i.{core::num::clamp}(y, y);
+  core::num i_z_y = i.{core::num::clamp}(z, y);
+  core::num i_n_z = i.{core::num::clamp}(n, z);
+  core::num i_i_z = i.{core::num::clamp}(i, z);
+  core::num i_d_z = i.{core::num::clamp}(d, z);
+  core::num i_x_z = i.{core::num::clamp}(x, z);
+  core::num i_y_z = i.{core::num::clamp}(y, z);
+  core::num i_z_z = i.{core::num::clamp}(z, z);
+  core::num d_n_n = d.{core::num::clamp}(n, n);
+  core::num d_i_n = d.{core::num::clamp}(i, n);
+  core::num d_d_n = d.{core::num::clamp}(d, n);
+  core::num d_x_n = d.{core::num::clamp}(x, n);
+  core::num d_y_n = d.{core::num::clamp}(y, n);
+  core::num d_z_n = d.{core::num::clamp}(z, n);
+  core::num d_n_i = d.{core::num::clamp}(n, i);
+  core::num d_i_i = d.{core::num::clamp}(i, i);
+  core::num d_d_i = d.{core::num::clamp}(d, i);
+  core::num d_x_i = d.{core::num::clamp}(x, i);
+  core::num d_y_i = d.{core::num::clamp}(y, i);
+  core::num d_z_i = d.{core::num::clamp}(z, i);
+  core::num d_n_d = d.{core::num::clamp}(n, d);
+  core::num d_i_d = d.{core::num::clamp}(i, d);
+  core::double d_d_d = d.{core::num::clamp}(d, d);
+  core::num d_x_d = d.{core::num::clamp}(x, d);
+  core::num d_y_d = d.{core::num::clamp}(y, d);
+  core::double d_z_d = d.{core::num::clamp}(z, d);
+  core::num d_n_x = d.{core::num::clamp}(n, x);
+  core::num d_i_x = d.{core::num::clamp}(i, x);
+  core::num d_d_x = d.{core::num::clamp}(d, x);
+  core::num d_x_x = d.{core::num::clamp}(x, x);
+  core::num d_y_x = d.{core::num::clamp}(y, x);
+  core::num d_z_x = d.{core::num::clamp}(z, x);
+  core::num d_n_y = d.{core::num::clamp}(n, y);
+  core::num d_i_y = d.{core::num::clamp}(i, y);
+  core::num d_d_y = d.{core::num::clamp}(d, y);
+  core::num d_x_y = d.{core::num::clamp}(x, y);
+  core::num d_y_y = d.{core::num::clamp}(y, y);
+  core::num d_z_y = d.{core::num::clamp}(z, y);
+  core::num d_n_z = d.{core::num::clamp}(n, z);
+  core::num d_i_z = d.{core::num::clamp}(i, z);
+  core::double d_d_z = d.{core::num::clamp}(d, z);
+  core::num d_x_z = d.{core::num::clamp}(x, z);
+  core::num d_y_z = d.{core::num::clamp}(y, z);
+  core::double d_z_z = d.{core::num::clamp}(z, z);
+  core::num x_n_n = x.{core::num::clamp}(n, n);
+  core::num x_i_n = x.{core::num::clamp}(i, n);
+  core::num x_d_n = x.{core::num::clamp}(d, n);
+  core::num x_x_n = x.{core::num::clamp}(x, n);
+  core::num x_y_n = x.{core::num::clamp}(y, n);
+  core::num x_z_n = x.{core::num::clamp}(z, n);
+  core::num x_n_i = x.{core::num::clamp}(n, i);
+  core::num x_i_i = x.{core::num::clamp}(i, i);
+  core::num x_d_i = x.{core::num::clamp}(d, i);
+  core::num x_x_i = x.{core::num::clamp}(x, i);
+  core::num x_y_i = x.{core::num::clamp}(y, i);
+  core::num x_z_i = x.{core::num::clamp}(z, i);
+  core::num x_n_d = x.{core::num::clamp}(n, d);
+  core::num x_i_d = x.{core::num::clamp}(i, d);
+  core::num x_d_d = x.{core::num::clamp}(d, d);
+  core::num x_x_d = x.{core::num::clamp}(x, d);
+  core::num x_y_d = x.{core::num::clamp}(y, d);
+  core::num x_z_d = x.{core::num::clamp}(z, d);
+  core::num x_n_x = x.{core::num::clamp}(n, x);
+  core::num x_i_x = x.{core::num::clamp}(i, x);
+  core::num x_d_x = x.{core::num::clamp}(d, x);
+  core::num x_x_x = x.{core::num::clamp}(x, x);
+  core::num x_y_x = x.{core::num::clamp}(y, x);
+  core::num x_z_x = x.{core::num::clamp}(z, x);
+  core::num x_n_y = x.{core::num::clamp}(n, y);
+  core::num x_i_y = x.{core::num::clamp}(i, y);
+  core::num x_d_y = x.{core::num::clamp}(d, y);
+  core::num x_x_y = x.{core::num::clamp}(x, y);
+  core::num x_y_y = x.{core::num::clamp}(y, y);
+  core::num x_z_y = x.{core::num::clamp}(z, y);
+  core::num x_n_z = x.{core::num::clamp}(n, z);
+  core::num x_i_z = x.{core::num::clamp}(i, z);
+  core::num x_d_z = x.{core::num::clamp}(d, z);
+  core::num x_x_z = x.{core::num::clamp}(x, z);
+  core::num x_y_z = x.{core::num::clamp}(y, z);
+  core::num x_z_z = x.{core::num::clamp}(z, z);
+  core::num y_n_n = y.{core::num::clamp}(n, n);
+  core::num y_i_n = y.{core::num::clamp}(i, n);
+  core::num y_d_n = y.{core::num::clamp}(d, n);
+  core::num y_x_n = y.{core::num::clamp}(x, n);
+  core::num y_y_n = y.{core::num::clamp}(y, n);
+  core::num y_z_n = y.{core::num::clamp}(z, n);
+  core::num y_n_i = y.{core::num::clamp}(n, i);
+  core::int y_i_i = y.{core::num::clamp}(i, i);
+  core::num y_d_i = y.{core::num::clamp}(d, i);
+  core::num y_x_i = y.{core::num::clamp}(x, i);
+  core::int y_y_i = y.{core::num::clamp}(y, i);
+  core::num y_z_i = y.{core::num::clamp}(z, i);
+  core::num y_n_d = y.{core::num::clamp}(n, d);
+  core::num y_i_d = y.{core::num::clamp}(i, d);
+  core::num y_d_d = y.{core::num::clamp}(d, d);
+  core::num y_x_d = y.{core::num::clamp}(x, d);
+  core::num y_y_d = y.{core::num::clamp}(y, d);
+  core::num y_z_d = y.{core::num::clamp}(z, d);
+  core::num y_n_x = y.{core::num::clamp}(n, x);
+  core::num y_i_x = y.{core::num::clamp}(i, x);
+  core::num y_d_x = y.{core::num::clamp}(d, x);
+  core::num y_x_x = y.{core::num::clamp}(x, x);
+  core::num y_y_x = y.{core::num::clamp}(y, x);
+  core::num y_z_x = y.{core::num::clamp}(z, x);
+  core::num y_n_y = y.{core::num::clamp}(n, y);
+  core::int y_i_y = y.{core::num::clamp}(i, y);
+  core::num y_d_y = y.{core::num::clamp}(d, y);
+  core::num y_x_y = y.{core::num::clamp}(x, y);
+  core::int y_y_y = y.{core::num::clamp}(y, y);
+  core::num y_z_y = y.{core::num::clamp}(z, y);
+  core::num y_n_z = y.{core::num::clamp}(n, z);
+  core::num y_i_z = y.{core::num::clamp}(i, z);
+  core::num y_d_z = y.{core::num::clamp}(d, z);
+  core::num y_x_z = y.{core::num::clamp}(x, z);
+  core::num y_y_z = y.{core::num::clamp}(y, z);
+  core::num y_z_z = y.{core::num::clamp}(z, z);
+  core::num z_n_n = z.{core::num::clamp}(n, n);
+  core::num z_i_n = z.{core::num::clamp}(i, n);
+  core::num z_d_n = z.{core::num::clamp}(d, n);
+  core::num z_x_n = z.{core::num::clamp}(x, n);
+  core::num z_y_n = z.{core::num::clamp}(y, n);
+  core::num z_z_n = z.{core::num::clamp}(z, n);
+  core::num z_n_i = z.{core::num::clamp}(n, i);
+  core::num z_i_i = z.{core::num::clamp}(i, i);
+  core::num z_d_i = z.{core::num::clamp}(d, i);
+  core::num z_x_i = z.{core::num::clamp}(x, i);
+  core::num z_y_i = z.{core::num::clamp}(y, i);
+  core::num z_z_i = z.{core::num::clamp}(z, i);
+  core::num z_n_d = z.{core::num::clamp}(n, d);
+  core::num z_i_d = z.{core::num::clamp}(i, d);
+  core::double z_d_d = z.{core::num::clamp}(d, d);
+  core::num z_x_d = z.{core::num::clamp}(x, d);
+  core::num z_y_d = z.{core::num::clamp}(y, d);
+  core::double z_z_d = z.{core::num::clamp}(z, d);
+  core::num z_n_x = z.{core::num::clamp}(n, x);
+  core::num z_i_x = z.{core::num::clamp}(i, x);
+  core::num z_d_x = z.{core::num::clamp}(d, x);
+  core::num z_x_x = z.{core::num::clamp}(x, x);
+  core::num z_y_x = z.{core::num::clamp}(y, x);
+  core::num z_z_x = z.{core::num::clamp}(z, x);
+  core::num z_n_y = z.{core::num::clamp}(n, y);
+  core::num z_i_y = z.{core::num::clamp}(i, y);
+  core::num z_d_y = z.{core::num::clamp}(d, y);
+  core::num z_x_y = z.{core::num::clamp}(x, y);
+  core::num z_y_y = z.{core::num::clamp}(y, y);
+  core::num z_z_y = z.{core::num::clamp}(z, y);
+  core::num z_n_z = z.{core::num::clamp}(n, z);
+  core::num z_i_z = z.{core::num::clamp}(i, z);
+  core::double z_d_z = z.{core::num::clamp}(d, z);
+  core::num z_x_z = z.{core::num::clamp}(x, z);
+  core::num z_y_z = z.{core::num::clamp}(y, z);
+  core::double z_z_z = z.{core::num::clamp}(z, z);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/numbers.dart.weak.expect b/pkg/front_end/testcases/nnbd/numbers.dart.weak.expect
index babfb04..d52aac2 100644
--- a/pkg/front_end/testcases/nnbd/numbers.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/numbers.dart.weak.expect
@@ -3,411 +3,411 @@
 import "dart:core" as core;
 
 static method add<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::add::X x, self::add::Y y, self::add::Z z) → dynamic {
-  core::num n_n = n.{core::num::+}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::+}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::+}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::+}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::+}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::+}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::+}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::+}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::+}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::+}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::+}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::+}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::+}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::+}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::+}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::+}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::+}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::+}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::+}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::+}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::+}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::+}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::+}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::+}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::+}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::+}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::+}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::+}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::+}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::+}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::+}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::+}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::+}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::+}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::+}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::+}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::+}(n);
+  core::num n_i = n.{core::num::+}(i);
+  core::double n_d = n.{core::num::+}(d);
+  core::num n_x = n.{core::num::+}(x);
+  core::num n_y = n.{core::num::+}(y);
+  core::double n_z = n.{core::num::+}(z);
+  core::num i_n = i.{core::num::+}(n);
+  core::int i_i = i.{core::num::+}(i);
+  core::double i_d = i.{core::num::+}(d);
+  core::num i_x = i.{core::num::+}(x);
+  core::int i_y = i.{core::num::+}(y);
+  core::double i_z = i.{core::num::+}(z);
+  core::double d_n = d.{core::double::+}(n);
+  core::double d_i = d.{core::double::+}(i);
+  core::double d_d = d.{core::double::+}(d);
+  core::double d_x = d.{core::double::+}(x);
+  core::double d_y = d.{core::double::+}(y);
+  core::double d_z = d.{core::double::+}(z);
+  core::num x_n = x.{core::num::+}(n);
+  core::num x_i = x.{core::num::+}(i);
+  core::double x_d = x.{core::num::+}(d);
+  core::num x_x = x.{core::num::+}(x);
+  core::num x_y = x.{core::num::+}(y);
+  core::double x_z = x.{core::num::+}(z);
+  core::num y_n = y.{core::num::+}(n);
+  core::int y_i = y.{core::num::+}(i);
+  core::double y_d = y.{core::num::+}(d);
+  core::num y_x = y.{core::num::+}(x);
+  core::int y_y = y.{core::num::+}(y);
+  core::double y_z = y.{core::num::+}(z);
+  core::double z_n = z.{core::double::+}(n);
+  core::double z_i = z.{core::double::+}(i);
+  core::double z_d = z.{core::double::+}(d);
+  core::double z_x = z.{core::double::+}(x);
+  core::double z_y = z.{core::double::+}(y);
+  core::double z_z = z.{core::double::+}(z);
 }
 static method sub<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::sub::X x, self::sub::Y y, self::sub::Z z) → dynamic {
-  core::num n_n = n.{core::num::-}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::-}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::-}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::-}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::-}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::-}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::-}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::-}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::-}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::-}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::-}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::-}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::-}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::-}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::-}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::-}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::-}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::-}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::-}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::-}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::-}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::-}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::-}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::-}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::-}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::-}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::-}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::-}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::-}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::-}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::-}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::-}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::-}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::-}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::-}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::-}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::-}(n);
+  core::num n_i = n.{core::num::-}(i);
+  core::double n_d = n.{core::num::-}(d);
+  core::num n_x = n.{core::num::-}(x);
+  core::num n_y = n.{core::num::-}(y);
+  core::double n_z = n.{core::num::-}(z);
+  core::num i_n = i.{core::num::-}(n);
+  core::int i_i = i.{core::num::-}(i);
+  core::double i_d = i.{core::num::-}(d);
+  core::num i_x = i.{core::num::-}(x);
+  core::int i_y = i.{core::num::-}(y);
+  core::double i_z = i.{core::num::-}(z);
+  core::double d_n = d.{core::double::-}(n);
+  core::double d_i = d.{core::double::-}(i);
+  core::double d_d = d.{core::double::-}(d);
+  core::double d_x = d.{core::double::-}(x);
+  core::double d_y = d.{core::double::-}(y);
+  core::double d_z = d.{core::double::-}(z);
+  core::num x_n = x.{core::num::-}(n);
+  core::num x_i = x.{core::num::-}(i);
+  core::double x_d = x.{core::num::-}(d);
+  core::num x_x = x.{core::num::-}(x);
+  core::num x_y = x.{core::num::-}(y);
+  core::double x_z = x.{core::num::-}(z);
+  core::num y_n = y.{core::num::-}(n);
+  core::int y_i = y.{core::num::-}(i);
+  core::double y_d = y.{core::num::-}(d);
+  core::num y_x = y.{core::num::-}(x);
+  core::int y_y = y.{core::num::-}(y);
+  core::double y_z = y.{core::num::-}(z);
+  core::double z_n = z.{core::double::-}(n);
+  core::double z_i = z.{core::double::-}(i);
+  core::double z_d = z.{core::double::-}(d);
+  core::double z_x = z.{core::double::-}(x);
+  core::double z_y = z.{core::double::-}(y);
+  core::double z_z = z.{core::double::-}(z);
 }
 static method mul<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mul::X x, self::mul::Y y, self::mul::Z z) → dynamic {
-  core::num n_n = n.{core::num::*}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::*}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::*}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::*}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::*}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::*}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::*}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::*}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::*}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::*}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::*}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::*}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::*}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::*}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::*}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::*}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::*}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::*}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::*}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::*}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::*}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::*}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::*}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::*}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::*}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::*}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::*}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::*}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::*}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::*}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::*}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::*}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::*}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::*}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::*}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::*}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::*}(n);
+  core::num n_i = n.{core::num::*}(i);
+  core::double n_d = n.{core::num::*}(d);
+  core::num n_x = n.{core::num::*}(x);
+  core::num n_y = n.{core::num::*}(y);
+  core::double n_z = n.{core::num::*}(z);
+  core::num i_n = i.{core::num::*}(n);
+  core::int i_i = i.{core::num::*}(i);
+  core::double i_d = i.{core::num::*}(d);
+  core::num i_x = i.{core::num::*}(x);
+  core::int i_y = i.{core::num::*}(y);
+  core::double i_z = i.{core::num::*}(z);
+  core::double d_n = d.{core::double::*}(n);
+  core::double d_i = d.{core::double::*}(i);
+  core::double d_d = d.{core::double::*}(d);
+  core::double d_x = d.{core::double::*}(x);
+  core::double d_y = d.{core::double::*}(y);
+  core::double d_z = d.{core::double::*}(z);
+  core::num x_n = x.{core::num::*}(n);
+  core::num x_i = x.{core::num::*}(i);
+  core::double x_d = x.{core::num::*}(d);
+  core::num x_x = x.{core::num::*}(x);
+  core::num x_y = x.{core::num::*}(y);
+  core::double x_z = x.{core::num::*}(z);
+  core::num y_n = y.{core::num::*}(n);
+  core::int y_i = y.{core::num::*}(i);
+  core::double y_d = y.{core::num::*}(d);
+  core::num y_x = y.{core::num::*}(x);
+  core::int y_y = y.{core::num::*}(y);
+  core::double y_z = y.{core::num::*}(z);
+  core::double z_n = z.{core::double::*}(n);
+  core::double z_i = z.{core::double::*}(i);
+  core::double z_d = z.{core::double::*}(d);
+  core::double z_x = z.{core::double::*}(x);
+  core::double z_y = z.{core::double::*}(y);
+  core::double z_z = z.{core::double::*}(z);
 }
 static method mod<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mod::X x, self::mod::Y y, self::mod::Z z) → dynamic {
-  core::num n_n = n.{core::num::%}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::%}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::%}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::%}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::%}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::%}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::%}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::%}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::%}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::%}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::%}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::%}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::%}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::%}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::%}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::%}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::%}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::%}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::%}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::%}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::%}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::%}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::%}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::%}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::%}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::%}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::%}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::%}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::%}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::%}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::%}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::%}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::%}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::%}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::%}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::%}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::%}(n);
+  core::num n_i = n.{core::num::%}(i);
+  core::double n_d = n.{core::num::%}(d);
+  core::num n_x = n.{core::num::%}(x);
+  core::num n_y = n.{core::num::%}(y);
+  core::double n_z = n.{core::num::%}(z);
+  core::num i_n = i.{core::num::%}(n);
+  core::int i_i = i.{core::num::%}(i);
+  core::double i_d = i.{core::num::%}(d);
+  core::num i_x = i.{core::num::%}(x);
+  core::int i_y = i.{core::num::%}(y);
+  core::double i_z = i.{core::num::%}(z);
+  core::double d_n = d.{core::double::%}(n);
+  core::double d_i = d.{core::double::%}(i);
+  core::double d_d = d.{core::double::%}(d);
+  core::double d_x = d.{core::double::%}(x);
+  core::double d_y = d.{core::double::%}(y);
+  core::double d_z = d.{core::double::%}(z);
+  core::num x_n = x.{core::num::%}(n);
+  core::num x_i = x.{core::num::%}(i);
+  core::double x_d = x.{core::num::%}(d);
+  core::num x_x = x.{core::num::%}(x);
+  core::num x_y = x.{core::num::%}(y);
+  core::double x_z = x.{core::num::%}(z);
+  core::num y_n = y.{core::num::%}(n);
+  core::int y_i = y.{core::num::%}(i);
+  core::double y_d = y.{core::num::%}(d);
+  core::num y_x = y.{core::num::%}(x);
+  core::int y_y = y.{core::num::%}(y);
+  core::double y_z = y.{core::num::%}(z);
+  core::double z_n = z.{core::double::%}(n);
+  core::double z_i = z.{core::double::%}(i);
+  core::double z_d = z.{core::double::%}(d);
+  core::double z_x = z.{core::double::%}(x);
+  core::double z_y = z.{core::double::%}(y);
+  core::double z_z = z.{core::double::%}(z);
 }
 static method remainder<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::remainder::X x, self::remainder::Y y, self::remainder::Z z) → dynamic {
-  core::num n_n = n.{core::num::remainder}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::remainder}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::remainder}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::remainder}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::remainder}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::remainder}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::remainder}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::remainder}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::remainder}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::remainder}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::remainder}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::remainder}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::remainder}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::remainder}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::remainder}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::remainder}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::remainder}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::remainder}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::remainder}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::remainder}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::remainder}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::remainder}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::remainder}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::remainder}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::remainder}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::remainder}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::remainder}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::remainder}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::remainder}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::remainder}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::remainder}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::remainder}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::remainder}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::remainder}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::remainder}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::remainder}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::remainder}(n);
+  core::num n_i = n.{core::num::remainder}(i);
+  core::double n_d = n.{core::num::remainder}(d);
+  core::num n_x = n.{core::num::remainder}(x);
+  core::num n_y = n.{core::num::remainder}(y);
+  core::double n_z = n.{core::num::remainder}(z);
+  core::num i_n = i.{core::num::remainder}(n);
+  core::int i_i = i.{core::num::remainder}(i);
+  core::double i_d = i.{core::num::remainder}(d);
+  core::num i_x = i.{core::num::remainder}(x);
+  core::int i_y = i.{core::num::remainder}(y);
+  core::double i_z = i.{core::num::remainder}(z);
+  core::double d_n = d.{core::double::remainder}(n);
+  core::double d_i = d.{core::double::remainder}(i);
+  core::double d_d = d.{core::double::remainder}(d);
+  core::double d_x = d.{core::double::remainder}(x);
+  core::double d_y = d.{core::double::remainder}(y);
+  core::double d_z = d.{core::double::remainder}(z);
+  core::num x_n = x.{core::num::remainder}(n);
+  core::num x_i = x.{core::num::remainder}(i);
+  core::double x_d = x.{core::num::remainder}(d);
+  core::num x_x = x.{core::num::remainder}(x);
+  core::num x_y = x.{core::num::remainder}(y);
+  core::double x_z = x.{core::num::remainder}(z);
+  core::num y_n = y.{core::num::remainder}(n);
+  core::int y_i = y.{core::num::remainder}(i);
+  core::double y_d = y.{core::num::remainder}(d);
+  core::num y_x = y.{core::num::remainder}(x);
+  core::int y_y = y.{core::num::remainder}(y);
+  core::double y_z = y.{core::num::remainder}(z);
+  core::double z_n = z.{core::double::remainder}(n);
+  core::double z_i = z.{core::double::remainder}(i);
+  core::double z_d = z.{core::double::remainder}(d);
+  core::double z_x = z.{core::double::remainder}(x);
+  core::double z_y = z.{core::double::remainder}(y);
+  core::double z_z = z.{core::double::remainder}(z);
 }
 static method clamp<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::clamp::X x, self::clamp::Y y, self::clamp::Z z) → dynamic {
-  core::num n_n_n = n.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num n_i_n = n.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num n_d_n = n.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num n_x_n = n.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num n_y_n = n.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num n_z_n = n.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num n_n_i = n.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num n_i_i = n.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num n_d_i = n.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num n_x_i = n.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num n_y_i = n.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num n_z_i = n.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num n_n_d = n.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num n_i_d = n.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num n_d_d = n.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num n_x_d = n.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num n_y_d = n.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num n_z_d = n.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num n_n_x = n.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num n_i_x = n.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num n_d_x = n.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num n_x_x = n.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num n_y_x = n.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num n_z_x = n.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num n_n_y = n.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num n_i_y = n.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num n_d_y = n.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num n_x_y = n.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num n_y_y = n.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num n_z_y = n.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num n_n_z = n.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num n_i_z = n.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num n_d_z = n.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num n_x_z = n.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num n_y_z = n.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num n_z_z = n.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num i_n_n = i.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num i_i_n = i.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num i_d_n = i.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num i_x_n = i.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num i_y_n = i.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num i_z_n = i.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num i_n_i = i.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::int i_i_i = i.{core::num::clamp}(i, i){(core::num, core::num) → core::int};
-  core::num i_d_i = i.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num i_x_i = i.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::int i_y_i = i.{core::num::clamp}(y, i){(core::num, core::num) → core::int};
-  core::num i_z_i = i.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num i_n_d = i.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num i_i_d = i.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num i_d_d = i.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num i_x_d = i.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num i_y_d = i.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num i_z_d = i.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num i_n_x = i.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num i_i_x = i.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num i_d_x = i.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num i_x_x = i.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num i_y_x = i.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num i_z_x = i.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num i_n_y = i.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::int i_i_y = i.{core::num::clamp}(i, y){(core::num, core::num) → core::int};
-  core::num i_d_y = i.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num i_x_y = i.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::int i_y_y = i.{core::num::clamp}(y, y){(core::num, core::num) → core::int};
-  core::num i_z_y = i.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num i_n_z = i.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num i_i_z = i.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num i_d_z = i.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num i_x_z = i.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num i_y_z = i.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num i_z_z = i.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num d_n_n = d.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num d_i_n = d.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num d_d_n = d.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num d_x_n = d.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num d_y_n = d.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num d_z_n = d.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num d_n_i = d.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num d_i_i = d.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num d_d_i = d.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num d_x_i = d.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num d_y_i = d.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num d_z_i = d.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num d_n_d = d.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num d_i_d = d.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::double d_d_d = d.{core::num::clamp}(d, d){(core::num, core::num) → core::double};
-  core::num d_x_d = d.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num d_y_d = d.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::double d_z_d = d.{core::num::clamp}(z, d){(core::num, core::num) → core::double};
-  core::num d_n_x = d.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num d_i_x = d.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num d_d_x = d.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num d_x_x = d.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num d_y_x = d.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num d_z_x = d.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num d_n_y = d.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num d_i_y = d.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num d_d_y = d.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num d_x_y = d.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num d_y_y = d.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num d_z_y = d.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num d_n_z = d.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num d_i_z = d.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::double d_d_z = d.{core::num::clamp}(d, z){(core::num, core::num) → core::double};
-  core::num d_x_z = d.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num d_y_z = d.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::double d_z_z = d.{core::num::clamp}(z, z){(core::num, core::num) → core::double};
-  core::num x_n_n = x.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num x_i_n = x.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num x_d_n = x.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num x_x_n = x.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num x_y_n = x.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num x_z_n = x.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num x_n_i = x.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num x_i_i = x.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num x_d_i = x.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num x_x_i = x.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num x_y_i = x.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num x_z_i = x.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num x_n_d = x.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num x_i_d = x.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num x_d_d = x.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num x_x_d = x.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num x_y_d = x.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num x_z_d = x.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num x_n_x = x.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num x_i_x = x.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num x_d_x = x.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num x_x_x = x.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num x_y_x = x.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num x_z_x = x.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num x_n_y = x.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num x_i_y = x.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num x_d_y = x.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num x_x_y = x.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num x_y_y = x.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num x_z_y = x.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num x_n_z = x.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num x_i_z = x.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num x_d_z = x.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num x_x_z = x.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num x_y_z = x.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num x_z_z = x.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num y_n_n = y.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num y_i_n = y.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num y_d_n = y.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num y_x_n = y.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num y_y_n = y.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num y_z_n = y.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num y_n_i = y.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::int y_i_i = y.{core::num::clamp}(i, i){(core::num, core::num) → core::int};
-  core::num y_d_i = y.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num y_x_i = y.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::int y_y_i = y.{core::num::clamp}(y, i){(core::num, core::num) → core::int};
-  core::num y_z_i = y.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num y_n_d = y.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num y_i_d = y.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num y_d_d = y.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num y_x_d = y.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num y_y_d = y.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num y_z_d = y.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num y_n_x = y.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num y_i_x = y.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num y_d_x = y.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num y_x_x = y.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num y_y_x = y.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num y_z_x = y.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num y_n_y = y.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::int y_i_y = y.{core::num::clamp}(i, y){(core::num, core::num) → core::int};
-  core::num y_d_y = y.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num y_x_y = y.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::int y_y_y = y.{core::num::clamp}(y, y){(core::num, core::num) → core::int};
-  core::num y_z_y = y.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num y_n_z = y.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num y_i_z = y.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num y_d_z = y.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num y_x_z = y.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num y_y_z = y.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num y_z_z = y.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num z_n_n = z.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num z_i_n = z.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num z_d_n = z.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num z_x_n = z.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num z_y_n = z.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num z_z_n = z.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num z_n_i = z.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num z_i_i = z.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num z_d_i = z.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num z_x_i = z.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num z_y_i = z.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num z_z_i = z.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num z_n_d = z.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num z_i_d = z.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::double z_d_d = z.{core::num::clamp}(d, d){(core::num, core::num) → core::double};
-  core::num z_x_d = z.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num z_y_d = z.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::double z_z_d = z.{core::num::clamp}(z, d){(core::num, core::num) → core::double};
-  core::num z_n_x = z.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num z_i_x = z.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num z_d_x = z.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num z_x_x = z.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num z_y_x = z.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num z_z_x = z.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num z_n_y = z.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num z_i_y = z.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num z_d_y = z.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num z_x_y = z.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num z_y_y = z.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num z_z_y = z.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num z_n_z = z.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num z_i_z = z.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::double z_d_z = z.{core::num::clamp}(d, z){(core::num, core::num) → core::double};
-  core::num z_x_z = z.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num z_y_z = z.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::double z_z_z = z.{core::num::clamp}(z, z){(core::num, core::num) → core::double};
+  core::num n_n_n = n.{core::num::clamp}(n, n);
+  core::num n_i_n = n.{core::num::clamp}(i, n);
+  core::num n_d_n = n.{core::num::clamp}(d, n);
+  core::num n_x_n = n.{core::num::clamp}(x, n);
+  core::num n_y_n = n.{core::num::clamp}(y, n);
+  core::num n_z_n = n.{core::num::clamp}(z, n);
+  core::num n_n_i = n.{core::num::clamp}(n, i);
+  core::num n_i_i = n.{core::num::clamp}(i, i);
+  core::num n_d_i = n.{core::num::clamp}(d, i);
+  core::num n_x_i = n.{core::num::clamp}(x, i);
+  core::num n_y_i = n.{core::num::clamp}(y, i);
+  core::num n_z_i = n.{core::num::clamp}(z, i);
+  core::num n_n_d = n.{core::num::clamp}(n, d);
+  core::num n_i_d = n.{core::num::clamp}(i, d);
+  core::num n_d_d = n.{core::num::clamp}(d, d);
+  core::num n_x_d = n.{core::num::clamp}(x, d);
+  core::num n_y_d = n.{core::num::clamp}(y, d);
+  core::num n_z_d = n.{core::num::clamp}(z, d);
+  core::num n_n_x = n.{core::num::clamp}(n, x);
+  core::num n_i_x = n.{core::num::clamp}(i, x);
+  core::num n_d_x = n.{core::num::clamp}(d, x);
+  core::num n_x_x = n.{core::num::clamp}(x, x);
+  core::num n_y_x = n.{core::num::clamp}(y, x);
+  core::num n_z_x = n.{core::num::clamp}(z, x);
+  core::num n_n_y = n.{core::num::clamp}(n, y);
+  core::num n_i_y = n.{core::num::clamp}(i, y);
+  core::num n_d_y = n.{core::num::clamp}(d, y);
+  core::num n_x_y = n.{core::num::clamp}(x, y);
+  core::num n_y_y = n.{core::num::clamp}(y, y);
+  core::num n_z_y = n.{core::num::clamp}(z, y);
+  core::num n_n_z = n.{core::num::clamp}(n, z);
+  core::num n_i_z = n.{core::num::clamp}(i, z);
+  core::num n_d_z = n.{core::num::clamp}(d, z);
+  core::num n_x_z = n.{core::num::clamp}(x, z);
+  core::num n_y_z = n.{core::num::clamp}(y, z);
+  core::num n_z_z = n.{core::num::clamp}(z, z);
+  core::num i_n_n = i.{core::num::clamp}(n, n);
+  core::num i_i_n = i.{core::num::clamp}(i, n);
+  core::num i_d_n = i.{core::num::clamp}(d, n);
+  core::num i_x_n = i.{core::num::clamp}(x, n);
+  core::num i_y_n = i.{core::num::clamp}(y, n);
+  core::num i_z_n = i.{core::num::clamp}(z, n);
+  core::num i_n_i = i.{core::num::clamp}(n, i);
+  core::int i_i_i = i.{core::num::clamp}(i, i);
+  core::num i_d_i = i.{core::num::clamp}(d, i);
+  core::num i_x_i = i.{core::num::clamp}(x, i);
+  core::int i_y_i = i.{core::num::clamp}(y, i);
+  core::num i_z_i = i.{core::num::clamp}(z, i);
+  core::num i_n_d = i.{core::num::clamp}(n, d);
+  core::num i_i_d = i.{core::num::clamp}(i, d);
+  core::num i_d_d = i.{core::num::clamp}(d, d);
+  core::num i_x_d = i.{core::num::clamp}(x, d);
+  core::num i_y_d = i.{core::num::clamp}(y, d);
+  core::num i_z_d = i.{core::num::clamp}(z, d);
+  core::num i_n_x = i.{core::num::clamp}(n, x);
+  core::num i_i_x = i.{core::num::clamp}(i, x);
+  core::num i_d_x = i.{core::num::clamp}(d, x);
+  core::num i_x_x = i.{core::num::clamp}(x, x);
+  core::num i_y_x = i.{core::num::clamp}(y, x);
+  core::num i_z_x = i.{core::num::clamp}(z, x);
+  core::num i_n_y = i.{core::num::clamp}(n, y);
+  core::int i_i_y = i.{core::num::clamp}(i, y);
+  core::num i_d_y = i.{core::num::clamp}(d, y);
+  core::num i_x_y = i.{core::num::clamp}(x, y);
+  core::int i_y_y = i.{core::num::clamp}(y, y);
+  core::num i_z_y = i.{core::num::clamp}(z, y);
+  core::num i_n_z = i.{core::num::clamp}(n, z);
+  core::num i_i_z = i.{core::num::clamp}(i, z);
+  core::num i_d_z = i.{core::num::clamp}(d, z);
+  core::num i_x_z = i.{core::num::clamp}(x, z);
+  core::num i_y_z = i.{core::num::clamp}(y, z);
+  core::num i_z_z = i.{core::num::clamp}(z, z);
+  core::num d_n_n = d.{core::num::clamp}(n, n);
+  core::num d_i_n = d.{core::num::clamp}(i, n);
+  core::num d_d_n = d.{core::num::clamp}(d, n);
+  core::num d_x_n = d.{core::num::clamp}(x, n);
+  core::num d_y_n = d.{core::num::clamp}(y, n);
+  core::num d_z_n = d.{core::num::clamp}(z, n);
+  core::num d_n_i = d.{core::num::clamp}(n, i);
+  core::num d_i_i = d.{core::num::clamp}(i, i);
+  core::num d_d_i = d.{core::num::clamp}(d, i);
+  core::num d_x_i = d.{core::num::clamp}(x, i);
+  core::num d_y_i = d.{core::num::clamp}(y, i);
+  core::num d_z_i = d.{core::num::clamp}(z, i);
+  core::num d_n_d = d.{core::num::clamp}(n, d);
+  core::num d_i_d = d.{core::num::clamp}(i, d);
+  core::double d_d_d = d.{core::num::clamp}(d, d);
+  core::num d_x_d = d.{core::num::clamp}(x, d);
+  core::num d_y_d = d.{core::num::clamp}(y, d);
+  core::double d_z_d = d.{core::num::clamp}(z, d);
+  core::num d_n_x = d.{core::num::clamp}(n, x);
+  core::num d_i_x = d.{core::num::clamp}(i, x);
+  core::num d_d_x = d.{core::num::clamp}(d, x);
+  core::num d_x_x = d.{core::num::clamp}(x, x);
+  core::num d_y_x = d.{core::num::clamp}(y, x);
+  core::num d_z_x = d.{core::num::clamp}(z, x);
+  core::num d_n_y = d.{core::num::clamp}(n, y);
+  core::num d_i_y = d.{core::num::clamp}(i, y);
+  core::num d_d_y = d.{core::num::clamp}(d, y);
+  core::num d_x_y = d.{core::num::clamp}(x, y);
+  core::num d_y_y = d.{core::num::clamp}(y, y);
+  core::num d_z_y = d.{core::num::clamp}(z, y);
+  core::num d_n_z = d.{core::num::clamp}(n, z);
+  core::num d_i_z = d.{core::num::clamp}(i, z);
+  core::double d_d_z = d.{core::num::clamp}(d, z);
+  core::num d_x_z = d.{core::num::clamp}(x, z);
+  core::num d_y_z = d.{core::num::clamp}(y, z);
+  core::double d_z_z = d.{core::num::clamp}(z, z);
+  core::num x_n_n = x.{core::num::clamp}(n, n);
+  core::num x_i_n = x.{core::num::clamp}(i, n);
+  core::num x_d_n = x.{core::num::clamp}(d, n);
+  core::num x_x_n = x.{core::num::clamp}(x, n);
+  core::num x_y_n = x.{core::num::clamp}(y, n);
+  core::num x_z_n = x.{core::num::clamp}(z, n);
+  core::num x_n_i = x.{core::num::clamp}(n, i);
+  core::num x_i_i = x.{core::num::clamp}(i, i);
+  core::num x_d_i = x.{core::num::clamp}(d, i);
+  core::num x_x_i = x.{core::num::clamp}(x, i);
+  core::num x_y_i = x.{core::num::clamp}(y, i);
+  core::num x_z_i = x.{core::num::clamp}(z, i);
+  core::num x_n_d = x.{core::num::clamp}(n, d);
+  core::num x_i_d = x.{core::num::clamp}(i, d);
+  core::num x_d_d = x.{core::num::clamp}(d, d);
+  core::num x_x_d = x.{core::num::clamp}(x, d);
+  core::num x_y_d = x.{core::num::clamp}(y, d);
+  core::num x_z_d = x.{core::num::clamp}(z, d);
+  core::num x_n_x = x.{core::num::clamp}(n, x);
+  core::num x_i_x = x.{core::num::clamp}(i, x);
+  core::num x_d_x = x.{core::num::clamp}(d, x);
+  core::num x_x_x = x.{core::num::clamp}(x, x);
+  core::num x_y_x = x.{core::num::clamp}(y, x);
+  core::num x_z_x = x.{core::num::clamp}(z, x);
+  core::num x_n_y = x.{core::num::clamp}(n, y);
+  core::num x_i_y = x.{core::num::clamp}(i, y);
+  core::num x_d_y = x.{core::num::clamp}(d, y);
+  core::num x_x_y = x.{core::num::clamp}(x, y);
+  core::num x_y_y = x.{core::num::clamp}(y, y);
+  core::num x_z_y = x.{core::num::clamp}(z, y);
+  core::num x_n_z = x.{core::num::clamp}(n, z);
+  core::num x_i_z = x.{core::num::clamp}(i, z);
+  core::num x_d_z = x.{core::num::clamp}(d, z);
+  core::num x_x_z = x.{core::num::clamp}(x, z);
+  core::num x_y_z = x.{core::num::clamp}(y, z);
+  core::num x_z_z = x.{core::num::clamp}(z, z);
+  core::num y_n_n = y.{core::num::clamp}(n, n);
+  core::num y_i_n = y.{core::num::clamp}(i, n);
+  core::num y_d_n = y.{core::num::clamp}(d, n);
+  core::num y_x_n = y.{core::num::clamp}(x, n);
+  core::num y_y_n = y.{core::num::clamp}(y, n);
+  core::num y_z_n = y.{core::num::clamp}(z, n);
+  core::num y_n_i = y.{core::num::clamp}(n, i);
+  core::int y_i_i = y.{core::num::clamp}(i, i);
+  core::num y_d_i = y.{core::num::clamp}(d, i);
+  core::num y_x_i = y.{core::num::clamp}(x, i);
+  core::int y_y_i = y.{core::num::clamp}(y, i);
+  core::num y_z_i = y.{core::num::clamp}(z, i);
+  core::num y_n_d = y.{core::num::clamp}(n, d);
+  core::num y_i_d = y.{core::num::clamp}(i, d);
+  core::num y_d_d = y.{core::num::clamp}(d, d);
+  core::num y_x_d = y.{core::num::clamp}(x, d);
+  core::num y_y_d = y.{core::num::clamp}(y, d);
+  core::num y_z_d = y.{core::num::clamp}(z, d);
+  core::num y_n_x = y.{core::num::clamp}(n, x);
+  core::num y_i_x = y.{core::num::clamp}(i, x);
+  core::num y_d_x = y.{core::num::clamp}(d, x);
+  core::num y_x_x = y.{core::num::clamp}(x, x);
+  core::num y_y_x = y.{core::num::clamp}(y, x);
+  core::num y_z_x = y.{core::num::clamp}(z, x);
+  core::num y_n_y = y.{core::num::clamp}(n, y);
+  core::int y_i_y = y.{core::num::clamp}(i, y);
+  core::num y_d_y = y.{core::num::clamp}(d, y);
+  core::num y_x_y = y.{core::num::clamp}(x, y);
+  core::int y_y_y = y.{core::num::clamp}(y, y);
+  core::num y_z_y = y.{core::num::clamp}(z, y);
+  core::num y_n_z = y.{core::num::clamp}(n, z);
+  core::num y_i_z = y.{core::num::clamp}(i, z);
+  core::num y_d_z = y.{core::num::clamp}(d, z);
+  core::num y_x_z = y.{core::num::clamp}(x, z);
+  core::num y_y_z = y.{core::num::clamp}(y, z);
+  core::num y_z_z = y.{core::num::clamp}(z, z);
+  core::num z_n_n = z.{core::num::clamp}(n, n);
+  core::num z_i_n = z.{core::num::clamp}(i, n);
+  core::num z_d_n = z.{core::num::clamp}(d, n);
+  core::num z_x_n = z.{core::num::clamp}(x, n);
+  core::num z_y_n = z.{core::num::clamp}(y, n);
+  core::num z_z_n = z.{core::num::clamp}(z, n);
+  core::num z_n_i = z.{core::num::clamp}(n, i);
+  core::num z_i_i = z.{core::num::clamp}(i, i);
+  core::num z_d_i = z.{core::num::clamp}(d, i);
+  core::num z_x_i = z.{core::num::clamp}(x, i);
+  core::num z_y_i = z.{core::num::clamp}(y, i);
+  core::num z_z_i = z.{core::num::clamp}(z, i);
+  core::num z_n_d = z.{core::num::clamp}(n, d);
+  core::num z_i_d = z.{core::num::clamp}(i, d);
+  core::double z_d_d = z.{core::num::clamp}(d, d);
+  core::num z_x_d = z.{core::num::clamp}(x, d);
+  core::num z_y_d = z.{core::num::clamp}(y, d);
+  core::double z_z_d = z.{core::num::clamp}(z, d);
+  core::num z_n_x = z.{core::num::clamp}(n, x);
+  core::num z_i_x = z.{core::num::clamp}(i, x);
+  core::num z_d_x = z.{core::num::clamp}(d, x);
+  core::num z_x_x = z.{core::num::clamp}(x, x);
+  core::num z_y_x = z.{core::num::clamp}(y, x);
+  core::num z_z_x = z.{core::num::clamp}(z, x);
+  core::num z_n_y = z.{core::num::clamp}(n, y);
+  core::num z_i_y = z.{core::num::clamp}(i, y);
+  core::num z_d_y = z.{core::num::clamp}(d, y);
+  core::num z_x_y = z.{core::num::clamp}(x, y);
+  core::num z_y_y = z.{core::num::clamp}(y, y);
+  core::num z_z_y = z.{core::num::clamp}(z, y);
+  core::num z_n_z = z.{core::num::clamp}(n, z);
+  core::num z_i_z = z.{core::num::clamp}(i, z);
+  core::double z_d_z = z.{core::num::clamp}(d, z);
+  core::num z_x_z = z.{core::num::clamp}(x, z);
+  core::num z_y_z = z.{core::num::clamp}(y, z);
+  core::double z_z_z = z.{core::num::clamp}(z, z);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/numbers.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/numbers.dart.weak.transformed.expect
index babfb04..d52aac2 100644
--- a/pkg/front_end/testcases/nnbd/numbers.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/numbers.dart.weak.transformed.expect
@@ -3,411 +3,411 @@
 import "dart:core" as core;
 
 static method add<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::add::X x, self::add::Y y, self::add::Z z) → dynamic {
-  core::num n_n = n.{core::num::+}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::+}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::+}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::+}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::+}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::+}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::+}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::+}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::+}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::+}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::+}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::+}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::+}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::+}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::+}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::+}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::+}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::+}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::+}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::+}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::+}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::+}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::+}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::+}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::+}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::+}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::+}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::+}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::+}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::+}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::+}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::+}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::+}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::+}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::+}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::+}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::+}(n);
+  core::num n_i = n.{core::num::+}(i);
+  core::double n_d = n.{core::num::+}(d);
+  core::num n_x = n.{core::num::+}(x);
+  core::num n_y = n.{core::num::+}(y);
+  core::double n_z = n.{core::num::+}(z);
+  core::num i_n = i.{core::num::+}(n);
+  core::int i_i = i.{core::num::+}(i);
+  core::double i_d = i.{core::num::+}(d);
+  core::num i_x = i.{core::num::+}(x);
+  core::int i_y = i.{core::num::+}(y);
+  core::double i_z = i.{core::num::+}(z);
+  core::double d_n = d.{core::double::+}(n);
+  core::double d_i = d.{core::double::+}(i);
+  core::double d_d = d.{core::double::+}(d);
+  core::double d_x = d.{core::double::+}(x);
+  core::double d_y = d.{core::double::+}(y);
+  core::double d_z = d.{core::double::+}(z);
+  core::num x_n = x.{core::num::+}(n);
+  core::num x_i = x.{core::num::+}(i);
+  core::double x_d = x.{core::num::+}(d);
+  core::num x_x = x.{core::num::+}(x);
+  core::num x_y = x.{core::num::+}(y);
+  core::double x_z = x.{core::num::+}(z);
+  core::num y_n = y.{core::num::+}(n);
+  core::int y_i = y.{core::num::+}(i);
+  core::double y_d = y.{core::num::+}(d);
+  core::num y_x = y.{core::num::+}(x);
+  core::int y_y = y.{core::num::+}(y);
+  core::double y_z = y.{core::num::+}(z);
+  core::double z_n = z.{core::double::+}(n);
+  core::double z_i = z.{core::double::+}(i);
+  core::double z_d = z.{core::double::+}(d);
+  core::double z_x = z.{core::double::+}(x);
+  core::double z_y = z.{core::double::+}(y);
+  core::double z_z = z.{core::double::+}(z);
 }
 static method sub<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::sub::X x, self::sub::Y y, self::sub::Z z) → dynamic {
-  core::num n_n = n.{core::num::-}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::-}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::-}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::-}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::-}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::-}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::-}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::-}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::-}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::-}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::-}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::-}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::-}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::-}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::-}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::-}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::-}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::-}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::-}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::-}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::-}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::-}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::-}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::-}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::-}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::-}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::-}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::-}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::-}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::-}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::-}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::-}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::-}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::-}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::-}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::-}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::-}(n);
+  core::num n_i = n.{core::num::-}(i);
+  core::double n_d = n.{core::num::-}(d);
+  core::num n_x = n.{core::num::-}(x);
+  core::num n_y = n.{core::num::-}(y);
+  core::double n_z = n.{core::num::-}(z);
+  core::num i_n = i.{core::num::-}(n);
+  core::int i_i = i.{core::num::-}(i);
+  core::double i_d = i.{core::num::-}(d);
+  core::num i_x = i.{core::num::-}(x);
+  core::int i_y = i.{core::num::-}(y);
+  core::double i_z = i.{core::num::-}(z);
+  core::double d_n = d.{core::double::-}(n);
+  core::double d_i = d.{core::double::-}(i);
+  core::double d_d = d.{core::double::-}(d);
+  core::double d_x = d.{core::double::-}(x);
+  core::double d_y = d.{core::double::-}(y);
+  core::double d_z = d.{core::double::-}(z);
+  core::num x_n = x.{core::num::-}(n);
+  core::num x_i = x.{core::num::-}(i);
+  core::double x_d = x.{core::num::-}(d);
+  core::num x_x = x.{core::num::-}(x);
+  core::num x_y = x.{core::num::-}(y);
+  core::double x_z = x.{core::num::-}(z);
+  core::num y_n = y.{core::num::-}(n);
+  core::int y_i = y.{core::num::-}(i);
+  core::double y_d = y.{core::num::-}(d);
+  core::num y_x = y.{core::num::-}(x);
+  core::int y_y = y.{core::num::-}(y);
+  core::double y_z = y.{core::num::-}(z);
+  core::double z_n = z.{core::double::-}(n);
+  core::double z_i = z.{core::double::-}(i);
+  core::double z_d = z.{core::double::-}(d);
+  core::double z_x = z.{core::double::-}(x);
+  core::double z_y = z.{core::double::-}(y);
+  core::double z_z = z.{core::double::-}(z);
 }
 static method mul<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mul::X x, self::mul::Y y, self::mul::Z z) → dynamic {
-  core::num n_n = n.{core::num::*}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::*}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::*}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::*}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::*}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::*}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::*}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::*}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::*}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::*}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::*}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::*}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::*}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::*}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::*}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::*}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::*}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::*}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::*}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::*}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::*}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::*}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::*}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::*}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::*}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::*}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::*}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::*}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::*}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::*}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::*}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::*}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::*}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::*}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::*}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::*}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::*}(n);
+  core::num n_i = n.{core::num::*}(i);
+  core::double n_d = n.{core::num::*}(d);
+  core::num n_x = n.{core::num::*}(x);
+  core::num n_y = n.{core::num::*}(y);
+  core::double n_z = n.{core::num::*}(z);
+  core::num i_n = i.{core::num::*}(n);
+  core::int i_i = i.{core::num::*}(i);
+  core::double i_d = i.{core::num::*}(d);
+  core::num i_x = i.{core::num::*}(x);
+  core::int i_y = i.{core::num::*}(y);
+  core::double i_z = i.{core::num::*}(z);
+  core::double d_n = d.{core::double::*}(n);
+  core::double d_i = d.{core::double::*}(i);
+  core::double d_d = d.{core::double::*}(d);
+  core::double d_x = d.{core::double::*}(x);
+  core::double d_y = d.{core::double::*}(y);
+  core::double d_z = d.{core::double::*}(z);
+  core::num x_n = x.{core::num::*}(n);
+  core::num x_i = x.{core::num::*}(i);
+  core::double x_d = x.{core::num::*}(d);
+  core::num x_x = x.{core::num::*}(x);
+  core::num x_y = x.{core::num::*}(y);
+  core::double x_z = x.{core::num::*}(z);
+  core::num y_n = y.{core::num::*}(n);
+  core::int y_i = y.{core::num::*}(i);
+  core::double y_d = y.{core::num::*}(d);
+  core::num y_x = y.{core::num::*}(x);
+  core::int y_y = y.{core::num::*}(y);
+  core::double y_z = y.{core::num::*}(z);
+  core::double z_n = z.{core::double::*}(n);
+  core::double z_i = z.{core::double::*}(i);
+  core::double z_d = z.{core::double::*}(d);
+  core::double z_x = z.{core::double::*}(x);
+  core::double z_y = z.{core::double::*}(y);
+  core::double z_z = z.{core::double::*}(z);
 }
 static method mod<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mod::X x, self::mod::Y y, self::mod::Z z) → dynamic {
-  core::num n_n = n.{core::num::%}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::%}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::%}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::%}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::%}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::%}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::%}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::%}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::%}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::%}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::%}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::%}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::%}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::%}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::%}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::%}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::%}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::%}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::%}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::%}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::%}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::%}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::%}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::%}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::%}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::%}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::%}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::%}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::%}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::%}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::%}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::%}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::%}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::%}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::%}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::%}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::%}(n);
+  core::num n_i = n.{core::num::%}(i);
+  core::double n_d = n.{core::num::%}(d);
+  core::num n_x = n.{core::num::%}(x);
+  core::num n_y = n.{core::num::%}(y);
+  core::double n_z = n.{core::num::%}(z);
+  core::num i_n = i.{core::num::%}(n);
+  core::int i_i = i.{core::num::%}(i);
+  core::double i_d = i.{core::num::%}(d);
+  core::num i_x = i.{core::num::%}(x);
+  core::int i_y = i.{core::num::%}(y);
+  core::double i_z = i.{core::num::%}(z);
+  core::double d_n = d.{core::double::%}(n);
+  core::double d_i = d.{core::double::%}(i);
+  core::double d_d = d.{core::double::%}(d);
+  core::double d_x = d.{core::double::%}(x);
+  core::double d_y = d.{core::double::%}(y);
+  core::double d_z = d.{core::double::%}(z);
+  core::num x_n = x.{core::num::%}(n);
+  core::num x_i = x.{core::num::%}(i);
+  core::double x_d = x.{core::num::%}(d);
+  core::num x_x = x.{core::num::%}(x);
+  core::num x_y = x.{core::num::%}(y);
+  core::double x_z = x.{core::num::%}(z);
+  core::num y_n = y.{core::num::%}(n);
+  core::int y_i = y.{core::num::%}(i);
+  core::double y_d = y.{core::num::%}(d);
+  core::num y_x = y.{core::num::%}(x);
+  core::int y_y = y.{core::num::%}(y);
+  core::double y_z = y.{core::num::%}(z);
+  core::double z_n = z.{core::double::%}(n);
+  core::double z_i = z.{core::double::%}(i);
+  core::double z_d = z.{core::double::%}(d);
+  core::double z_x = z.{core::double::%}(x);
+  core::double z_y = z.{core::double::%}(y);
+  core::double z_z = z.{core::double::%}(z);
 }
 static method remainder<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::remainder::X x, self::remainder::Y y, self::remainder::Z z) → dynamic {
-  core::num n_n = n.{core::num::remainder}(n){(core::num) → core::num};
-  core::num n_i = n.{core::num::remainder}(i){(core::num) → core::num};
-  core::double n_d = n.{core::num::remainder}(d){(core::num) → core::double};
-  core::num n_x = n.{core::num::remainder}(x){(core::num) → core::num};
-  core::num n_y = n.{core::num::remainder}(y){(core::num) → core::num};
-  core::double n_z = n.{core::num::remainder}(z){(core::num) → core::double};
-  core::num i_n = i.{core::num::remainder}(n){(core::num) → core::num};
-  core::int i_i = i.{core::num::remainder}(i){(core::num) → core::int};
-  core::double i_d = i.{core::num::remainder}(d){(core::num) → core::double};
-  core::num i_x = i.{core::num::remainder}(x){(core::num) → core::num};
-  core::int i_y = i.{core::num::remainder}(y){(core::num) → core::int};
-  core::double i_z = i.{core::num::remainder}(z){(core::num) → core::double};
-  core::double d_n = d.{core::double::remainder}(n){(core::num) → core::double};
-  core::double d_i = d.{core::double::remainder}(i){(core::num) → core::double};
-  core::double d_d = d.{core::double::remainder}(d){(core::num) → core::double};
-  core::double d_x = d.{core::double::remainder}(x){(core::num) → core::double};
-  core::double d_y = d.{core::double::remainder}(y){(core::num) → core::double};
-  core::double d_z = d.{core::double::remainder}(z){(core::num) → core::double};
-  core::num x_n = x.{core::num::remainder}(n){(core::num) → core::num};
-  core::num x_i = x.{core::num::remainder}(i){(core::num) → core::num};
-  core::double x_d = x.{core::num::remainder}(d){(core::num) → core::double};
-  core::num x_x = x.{core::num::remainder}(x){(core::num) → core::num};
-  core::num x_y = x.{core::num::remainder}(y){(core::num) → core::num};
-  core::double x_z = x.{core::num::remainder}(z){(core::num) → core::double};
-  core::num y_n = y.{core::num::remainder}(n){(core::num) → core::num};
-  core::int y_i = y.{core::num::remainder}(i){(core::num) → core::int};
-  core::double y_d = y.{core::num::remainder}(d){(core::num) → core::double};
-  core::num y_x = y.{core::num::remainder}(x){(core::num) → core::num};
-  core::int y_y = y.{core::num::remainder}(y){(core::num) → core::int};
-  core::double y_z = y.{core::num::remainder}(z){(core::num) → core::double};
-  core::double z_n = z.{core::double::remainder}(n){(core::num) → core::double};
-  core::double z_i = z.{core::double::remainder}(i){(core::num) → core::double};
-  core::double z_d = z.{core::double::remainder}(d){(core::num) → core::double};
-  core::double z_x = z.{core::double::remainder}(x){(core::num) → core::double};
-  core::double z_y = z.{core::double::remainder}(y){(core::num) → core::double};
-  core::double z_z = z.{core::double::remainder}(z){(core::num) → core::double};
+  core::num n_n = n.{core::num::remainder}(n);
+  core::num n_i = n.{core::num::remainder}(i);
+  core::double n_d = n.{core::num::remainder}(d);
+  core::num n_x = n.{core::num::remainder}(x);
+  core::num n_y = n.{core::num::remainder}(y);
+  core::double n_z = n.{core::num::remainder}(z);
+  core::num i_n = i.{core::num::remainder}(n);
+  core::int i_i = i.{core::num::remainder}(i);
+  core::double i_d = i.{core::num::remainder}(d);
+  core::num i_x = i.{core::num::remainder}(x);
+  core::int i_y = i.{core::num::remainder}(y);
+  core::double i_z = i.{core::num::remainder}(z);
+  core::double d_n = d.{core::double::remainder}(n);
+  core::double d_i = d.{core::double::remainder}(i);
+  core::double d_d = d.{core::double::remainder}(d);
+  core::double d_x = d.{core::double::remainder}(x);
+  core::double d_y = d.{core::double::remainder}(y);
+  core::double d_z = d.{core::double::remainder}(z);
+  core::num x_n = x.{core::num::remainder}(n);
+  core::num x_i = x.{core::num::remainder}(i);
+  core::double x_d = x.{core::num::remainder}(d);
+  core::num x_x = x.{core::num::remainder}(x);
+  core::num x_y = x.{core::num::remainder}(y);
+  core::double x_z = x.{core::num::remainder}(z);
+  core::num y_n = y.{core::num::remainder}(n);
+  core::int y_i = y.{core::num::remainder}(i);
+  core::double y_d = y.{core::num::remainder}(d);
+  core::num y_x = y.{core::num::remainder}(x);
+  core::int y_y = y.{core::num::remainder}(y);
+  core::double y_z = y.{core::num::remainder}(z);
+  core::double z_n = z.{core::double::remainder}(n);
+  core::double z_i = z.{core::double::remainder}(i);
+  core::double z_d = z.{core::double::remainder}(d);
+  core::double z_x = z.{core::double::remainder}(x);
+  core::double z_y = z.{core::double::remainder}(y);
+  core::double z_z = z.{core::double::remainder}(z);
 }
 static method clamp<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::clamp::X x, self::clamp::Y y, self::clamp::Z z) → dynamic {
-  core::num n_n_n = n.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num n_i_n = n.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num n_d_n = n.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num n_x_n = n.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num n_y_n = n.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num n_z_n = n.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num n_n_i = n.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num n_i_i = n.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num n_d_i = n.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num n_x_i = n.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num n_y_i = n.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num n_z_i = n.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num n_n_d = n.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num n_i_d = n.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num n_d_d = n.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num n_x_d = n.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num n_y_d = n.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num n_z_d = n.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num n_n_x = n.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num n_i_x = n.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num n_d_x = n.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num n_x_x = n.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num n_y_x = n.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num n_z_x = n.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num n_n_y = n.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num n_i_y = n.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num n_d_y = n.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num n_x_y = n.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num n_y_y = n.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num n_z_y = n.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num n_n_z = n.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num n_i_z = n.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num n_d_z = n.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num n_x_z = n.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num n_y_z = n.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num n_z_z = n.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num i_n_n = i.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num i_i_n = i.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num i_d_n = i.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num i_x_n = i.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num i_y_n = i.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num i_z_n = i.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num i_n_i = i.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::int i_i_i = i.{core::num::clamp}(i, i){(core::num, core::num) → core::int};
-  core::num i_d_i = i.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num i_x_i = i.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::int i_y_i = i.{core::num::clamp}(y, i){(core::num, core::num) → core::int};
-  core::num i_z_i = i.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num i_n_d = i.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num i_i_d = i.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num i_d_d = i.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num i_x_d = i.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num i_y_d = i.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num i_z_d = i.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num i_n_x = i.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num i_i_x = i.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num i_d_x = i.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num i_x_x = i.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num i_y_x = i.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num i_z_x = i.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num i_n_y = i.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::int i_i_y = i.{core::num::clamp}(i, y){(core::num, core::num) → core::int};
-  core::num i_d_y = i.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num i_x_y = i.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::int i_y_y = i.{core::num::clamp}(y, y){(core::num, core::num) → core::int};
-  core::num i_z_y = i.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num i_n_z = i.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num i_i_z = i.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num i_d_z = i.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num i_x_z = i.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num i_y_z = i.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num i_z_z = i.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num d_n_n = d.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num d_i_n = d.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num d_d_n = d.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num d_x_n = d.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num d_y_n = d.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num d_z_n = d.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num d_n_i = d.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num d_i_i = d.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num d_d_i = d.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num d_x_i = d.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num d_y_i = d.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num d_z_i = d.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num d_n_d = d.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num d_i_d = d.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::double d_d_d = d.{core::num::clamp}(d, d){(core::num, core::num) → core::double};
-  core::num d_x_d = d.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num d_y_d = d.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::double d_z_d = d.{core::num::clamp}(z, d){(core::num, core::num) → core::double};
-  core::num d_n_x = d.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num d_i_x = d.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num d_d_x = d.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num d_x_x = d.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num d_y_x = d.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num d_z_x = d.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num d_n_y = d.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num d_i_y = d.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num d_d_y = d.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num d_x_y = d.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num d_y_y = d.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num d_z_y = d.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num d_n_z = d.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num d_i_z = d.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::double d_d_z = d.{core::num::clamp}(d, z){(core::num, core::num) → core::double};
-  core::num d_x_z = d.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num d_y_z = d.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::double d_z_z = d.{core::num::clamp}(z, z){(core::num, core::num) → core::double};
-  core::num x_n_n = x.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num x_i_n = x.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num x_d_n = x.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num x_x_n = x.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num x_y_n = x.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num x_z_n = x.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num x_n_i = x.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num x_i_i = x.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num x_d_i = x.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num x_x_i = x.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num x_y_i = x.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num x_z_i = x.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num x_n_d = x.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num x_i_d = x.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num x_d_d = x.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num x_x_d = x.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num x_y_d = x.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num x_z_d = x.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num x_n_x = x.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num x_i_x = x.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num x_d_x = x.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num x_x_x = x.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num x_y_x = x.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num x_z_x = x.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num x_n_y = x.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num x_i_y = x.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num x_d_y = x.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num x_x_y = x.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num x_y_y = x.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num x_z_y = x.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num x_n_z = x.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num x_i_z = x.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num x_d_z = x.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num x_x_z = x.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num x_y_z = x.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num x_z_z = x.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num y_n_n = y.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num y_i_n = y.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num y_d_n = y.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num y_x_n = y.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num y_y_n = y.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num y_z_n = y.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num y_n_i = y.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::int y_i_i = y.{core::num::clamp}(i, i){(core::num, core::num) → core::int};
-  core::num y_d_i = y.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num y_x_i = y.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::int y_y_i = y.{core::num::clamp}(y, i){(core::num, core::num) → core::int};
-  core::num y_z_i = y.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num y_n_d = y.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num y_i_d = y.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::num y_d_d = y.{core::num::clamp}(d, d){(core::num, core::num) → core::num};
-  core::num y_x_d = y.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num y_y_d = y.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::num y_z_d = y.{core::num::clamp}(z, d){(core::num, core::num) → core::num};
-  core::num y_n_x = y.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num y_i_x = y.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num y_d_x = y.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num y_x_x = y.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num y_y_x = y.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num y_z_x = y.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num y_n_y = y.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::int y_i_y = y.{core::num::clamp}(i, y){(core::num, core::num) → core::int};
-  core::num y_d_y = y.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num y_x_y = y.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::int y_y_y = y.{core::num::clamp}(y, y){(core::num, core::num) → core::int};
-  core::num y_z_y = y.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num y_n_z = y.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num y_i_z = y.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::num y_d_z = y.{core::num::clamp}(d, z){(core::num, core::num) → core::num};
-  core::num y_x_z = y.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num y_y_z = y.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::num y_z_z = y.{core::num::clamp}(z, z){(core::num, core::num) → core::num};
-  core::num z_n_n = z.{core::num::clamp}(n, n){(core::num, core::num) → core::num};
-  core::num z_i_n = z.{core::num::clamp}(i, n){(core::num, core::num) → core::num};
-  core::num z_d_n = z.{core::num::clamp}(d, n){(core::num, core::num) → core::num};
-  core::num z_x_n = z.{core::num::clamp}(x, n){(core::num, core::num) → core::num};
-  core::num z_y_n = z.{core::num::clamp}(y, n){(core::num, core::num) → core::num};
-  core::num z_z_n = z.{core::num::clamp}(z, n){(core::num, core::num) → core::num};
-  core::num z_n_i = z.{core::num::clamp}(n, i){(core::num, core::num) → core::num};
-  core::num z_i_i = z.{core::num::clamp}(i, i){(core::num, core::num) → core::num};
-  core::num z_d_i = z.{core::num::clamp}(d, i){(core::num, core::num) → core::num};
-  core::num z_x_i = z.{core::num::clamp}(x, i){(core::num, core::num) → core::num};
-  core::num z_y_i = z.{core::num::clamp}(y, i){(core::num, core::num) → core::num};
-  core::num z_z_i = z.{core::num::clamp}(z, i){(core::num, core::num) → core::num};
-  core::num z_n_d = z.{core::num::clamp}(n, d){(core::num, core::num) → core::num};
-  core::num z_i_d = z.{core::num::clamp}(i, d){(core::num, core::num) → core::num};
-  core::double z_d_d = z.{core::num::clamp}(d, d){(core::num, core::num) → core::double};
-  core::num z_x_d = z.{core::num::clamp}(x, d){(core::num, core::num) → core::num};
-  core::num z_y_d = z.{core::num::clamp}(y, d){(core::num, core::num) → core::num};
-  core::double z_z_d = z.{core::num::clamp}(z, d){(core::num, core::num) → core::double};
-  core::num z_n_x = z.{core::num::clamp}(n, x){(core::num, core::num) → core::num};
-  core::num z_i_x = z.{core::num::clamp}(i, x){(core::num, core::num) → core::num};
-  core::num z_d_x = z.{core::num::clamp}(d, x){(core::num, core::num) → core::num};
-  core::num z_x_x = z.{core::num::clamp}(x, x){(core::num, core::num) → core::num};
-  core::num z_y_x = z.{core::num::clamp}(y, x){(core::num, core::num) → core::num};
-  core::num z_z_x = z.{core::num::clamp}(z, x){(core::num, core::num) → core::num};
-  core::num z_n_y = z.{core::num::clamp}(n, y){(core::num, core::num) → core::num};
-  core::num z_i_y = z.{core::num::clamp}(i, y){(core::num, core::num) → core::num};
-  core::num z_d_y = z.{core::num::clamp}(d, y){(core::num, core::num) → core::num};
-  core::num z_x_y = z.{core::num::clamp}(x, y){(core::num, core::num) → core::num};
-  core::num z_y_y = z.{core::num::clamp}(y, y){(core::num, core::num) → core::num};
-  core::num z_z_y = z.{core::num::clamp}(z, y){(core::num, core::num) → core::num};
-  core::num z_n_z = z.{core::num::clamp}(n, z){(core::num, core::num) → core::num};
-  core::num z_i_z = z.{core::num::clamp}(i, z){(core::num, core::num) → core::num};
-  core::double z_d_z = z.{core::num::clamp}(d, z){(core::num, core::num) → core::double};
-  core::num z_x_z = z.{core::num::clamp}(x, z){(core::num, core::num) → core::num};
-  core::num z_y_z = z.{core::num::clamp}(y, z){(core::num, core::num) → core::num};
-  core::double z_z_z = z.{core::num::clamp}(z, z){(core::num, core::num) → core::double};
+  core::num n_n_n = n.{core::num::clamp}(n, n);
+  core::num n_i_n = n.{core::num::clamp}(i, n);
+  core::num n_d_n = n.{core::num::clamp}(d, n);
+  core::num n_x_n = n.{core::num::clamp}(x, n);
+  core::num n_y_n = n.{core::num::clamp}(y, n);
+  core::num n_z_n = n.{core::num::clamp}(z, n);
+  core::num n_n_i = n.{core::num::clamp}(n, i);
+  core::num n_i_i = n.{core::num::clamp}(i, i);
+  core::num n_d_i = n.{core::num::clamp}(d, i);
+  core::num n_x_i = n.{core::num::clamp}(x, i);
+  core::num n_y_i = n.{core::num::clamp}(y, i);
+  core::num n_z_i = n.{core::num::clamp}(z, i);
+  core::num n_n_d = n.{core::num::clamp}(n, d);
+  core::num n_i_d = n.{core::num::clamp}(i, d);
+  core::num n_d_d = n.{core::num::clamp}(d, d);
+  core::num n_x_d = n.{core::num::clamp}(x, d);
+  core::num n_y_d = n.{core::num::clamp}(y, d);
+  core::num n_z_d = n.{core::num::clamp}(z, d);
+  core::num n_n_x = n.{core::num::clamp}(n, x);
+  core::num n_i_x = n.{core::num::clamp}(i, x);
+  core::num n_d_x = n.{core::num::clamp}(d, x);
+  core::num n_x_x = n.{core::num::clamp}(x, x);
+  core::num n_y_x = n.{core::num::clamp}(y, x);
+  core::num n_z_x = n.{core::num::clamp}(z, x);
+  core::num n_n_y = n.{core::num::clamp}(n, y);
+  core::num n_i_y = n.{core::num::clamp}(i, y);
+  core::num n_d_y = n.{core::num::clamp}(d, y);
+  core::num n_x_y = n.{core::num::clamp}(x, y);
+  core::num n_y_y = n.{core::num::clamp}(y, y);
+  core::num n_z_y = n.{core::num::clamp}(z, y);
+  core::num n_n_z = n.{core::num::clamp}(n, z);
+  core::num n_i_z = n.{core::num::clamp}(i, z);
+  core::num n_d_z = n.{core::num::clamp}(d, z);
+  core::num n_x_z = n.{core::num::clamp}(x, z);
+  core::num n_y_z = n.{core::num::clamp}(y, z);
+  core::num n_z_z = n.{core::num::clamp}(z, z);
+  core::num i_n_n = i.{core::num::clamp}(n, n);
+  core::num i_i_n = i.{core::num::clamp}(i, n);
+  core::num i_d_n = i.{core::num::clamp}(d, n);
+  core::num i_x_n = i.{core::num::clamp}(x, n);
+  core::num i_y_n = i.{core::num::clamp}(y, n);
+  core::num i_z_n = i.{core::num::clamp}(z, n);
+  core::num i_n_i = i.{core::num::clamp}(n, i);
+  core::int i_i_i = i.{core::num::clamp}(i, i);
+  core::num i_d_i = i.{core::num::clamp}(d, i);
+  core::num i_x_i = i.{core::num::clamp}(x, i);
+  core::int i_y_i = i.{core::num::clamp}(y, i);
+  core::num i_z_i = i.{core::num::clamp}(z, i);
+  core::num i_n_d = i.{core::num::clamp}(n, d);
+  core::num i_i_d = i.{core::num::clamp}(i, d);
+  core::num i_d_d = i.{core::num::clamp}(d, d);
+  core::num i_x_d = i.{core::num::clamp}(x, d);
+  core::num i_y_d = i.{core::num::clamp}(y, d);
+  core::num i_z_d = i.{core::num::clamp}(z, d);
+  core::num i_n_x = i.{core::num::clamp}(n, x);
+  core::num i_i_x = i.{core::num::clamp}(i, x);
+  core::num i_d_x = i.{core::num::clamp}(d, x);
+  core::num i_x_x = i.{core::num::clamp}(x, x);
+  core::num i_y_x = i.{core::num::clamp}(y, x);
+  core::num i_z_x = i.{core::num::clamp}(z, x);
+  core::num i_n_y = i.{core::num::clamp}(n, y);
+  core::int i_i_y = i.{core::num::clamp}(i, y);
+  core::num i_d_y = i.{core::num::clamp}(d, y);
+  core::num i_x_y = i.{core::num::clamp}(x, y);
+  core::int i_y_y = i.{core::num::clamp}(y, y);
+  core::num i_z_y = i.{core::num::clamp}(z, y);
+  core::num i_n_z = i.{core::num::clamp}(n, z);
+  core::num i_i_z = i.{core::num::clamp}(i, z);
+  core::num i_d_z = i.{core::num::clamp}(d, z);
+  core::num i_x_z = i.{core::num::clamp}(x, z);
+  core::num i_y_z = i.{core::num::clamp}(y, z);
+  core::num i_z_z = i.{core::num::clamp}(z, z);
+  core::num d_n_n = d.{core::num::clamp}(n, n);
+  core::num d_i_n = d.{core::num::clamp}(i, n);
+  core::num d_d_n = d.{core::num::clamp}(d, n);
+  core::num d_x_n = d.{core::num::clamp}(x, n);
+  core::num d_y_n = d.{core::num::clamp}(y, n);
+  core::num d_z_n = d.{core::num::clamp}(z, n);
+  core::num d_n_i = d.{core::num::clamp}(n, i);
+  core::num d_i_i = d.{core::num::clamp}(i, i);
+  core::num d_d_i = d.{core::num::clamp}(d, i);
+  core::num d_x_i = d.{core::num::clamp}(x, i);
+  core::num d_y_i = d.{core::num::clamp}(y, i);
+  core::num d_z_i = d.{core::num::clamp}(z, i);
+  core::num d_n_d = d.{core::num::clamp}(n, d);
+  core::num d_i_d = d.{core::num::clamp}(i, d);
+  core::double d_d_d = d.{core::num::clamp}(d, d);
+  core::num d_x_d = d.{core::num::clamp}(x, d);
+  core::num d_y_d = d.{core::num::clamp}(y, d);
+  core::double d_z_d = d.{core::num::clamp}(z, d);
+  core::num d_n_x = d.{core::num::clamp}(n, x);
+  core::num d_i_x = d.{core::num::clamp}(i, x);
+  core::num d_d_x = d.{core::num::clamp}(d, x);
+  core::num d_x_x = d.{core::num::clamp}(x, x);
+  core::num d_y_x = d.{core::num::clamp}(y, x);
+  core::num d_z_x = d.{core::num::clamp}(z, x);
+  core::num d_n_y = d.{core::num::clamp}(n, y);
+  core::num d_i_y = d.{core::num::clamp}(i, y);
+  core::num d_d_y = d.{core::num::clamp}(d, y);
+  core::num d_x_y = d.{core::num::clamp}(x, y);
+  core::num d_y_y = d.{core::num::clamp}(y, y);
+  core::num d_z_y = d.{core::num::clamp}(z, y);
+  core::num d_n_z = d.{core::num::clamp}(n, z);
+  core::num d_i_z = d.{core::num::clamp}(i, z);
+  core::double d_d_z = d.{core::num::clamp}(d, z);
+  core::num d_x_z = d.{core::num::clamp}(x, z);
+  core::num d_y_z = d.{core::num::clamp}(y, z);
+  core::double d_z_z = d.{core::num::clamp}(z, z);
+  core::num x_n_n = x.{core::num::clamp}(n, n);
+  core::num x_i_n = x.{core::num::clamp}(i, n);
+  core::num x_d_n = x.{core::num::clamp}(d, n);
+  core::num x_x_n = x.{core::num::clamp}(x, n);
+  core::num x_y_n = x.{core::num::clamp}(y, n);
+  core::num x_z_n = x.{core::num::clamp}(z, n);
+  core::num x_n_i = x.{core::num::clamp}(n, i);
+  core::num x_i_i = x.{core::num::clamp}(i, i);
+  core::num x_d_i = x.{core::num::clamp}(d, i);
+  core::num x_x_i = x.{core::num::clamp}(x, i);
+  core::num x_y_i = x.{core::num::clamp}(y, i);
+  core::num x_z_i = x.{core::num::clamp}(z, i);
+  core::num x_n_d = x.{core::num::clamp}(n, d);
+  core::num x_i_d = x.{core::num::clamp}(i, d);
+  core::num x_d_d = x.{core::num::clamp}(d, d);
+  core::num x_x_d = x.{core::num::clamp}(x, d);
+  core::num x_y_d = x.{core::num::clamp}(y, d);
+  core::num x_z_d = x.{core::num::clamp}(z, d);
+  core::num x_n_x = x.{core::num::clamp}(n, x);
+  core::num x_i_x = x.{core::num::clamp}(i, x);
+  core::num x_d_x = x.{core::num::clamp}(d, x);
+  core::num x_x_x = x.{core::num::clamp}(x, x);
+  core::num x_y_x = x.{core::num::clamp}(y, x);
+  core::num x_z_x = x.{core::num::clamp}(z, x);
+  core::num x_n_y = x.{core::num::clamp}(n, y);
+  core::num x_i_y = x.{core::num::clamp}(i, y);
+  core::num x_d_y = x.{core::num::clamp}(d, y);
+  core::num x_x_y = x.{core::num::clamp}(x, y);
+  core::num x_y_y = x.{core::num::clamp}(y, y);
+  core::num x_z_y = x.{core::num::clamp}(z, y);
+  core::num x_n_z = x.{core::num::clamp}(n, z);
+  core::num x_i_z = x.{core::num::clamp}(i, z);
+  core::num x_d_z = x.{core::num::clamp}(d, z);
+  core::num x_x_z = x.{core::num::clamp}(x, z);
+  core::num x_y_z = x.{core::num::clamp}(y, z);
+  core::num x_z_z = x.{core::num::clamp}(z, z);
+  core::num y_n_n = y.{core::num::clamp}(n, n);
+  core::num y_i_n = y.{core::num::clamp}(i, n);
+  core::num y_d_n = y.{core::num::clamp}(d, n);
+  core::num y_x_n = y.{core::num::clamp}(x, n);
+  core::num y_y_n = y.{core::num::clamp}(y, n);
+  core::num y_z_n = y.{core::num::clamp}(z, n);
+  core::num y_n_i = y.{core::num::clamp}(n, i);
+  core::int y_i_i = y.{core::num::clamp}(i, i);
+  core::num y_d_i = y.{core::num::clamp}(d, i);
+  core::num y_x_i = y.{core::num::clamp}(x, i);
+  core::int y_y_i = y.{core::num::clamp}(y, i);
+  core::num y_z_i = y.{core::num::clamp}(z, i);
+  core::num y_n_d = y.{core::num::clamp}(n, d);
+  core::num y_i_d = y.{core::num::clamp}(i, d);
+  core::num y_d_d = y.{core::num::clamp}(d, d);
+  core::num y_x_d = y.{core::num::clamp}(x, d);
+  core::num y_y_d = y.{core::num::clamp}(y, d);
+  core::num y_z_d = y.{core::num::clamp}(z, d);
+  core::num y_n_x = y.{core::num::clamp}(n, x);
+  core::num y_i_x = y.{core::num::clamp}(i, x);
+  core::num y_d_x = y.{core::num::clamp}(d, x);
+  core::num y_x_x = y.{core::num::clamp}(x, x);
+  core::num y_y_x = y.{core::num::clamp}(y, x);
+  core::num y_z_x = y.{core::num::clamp}(z, x);
+  core::num y_n_y = y.{core::num::clamp}(n, y);
+  core::int y_i_y = y.{core::num::clamp}(i, y);
+  core::num y_d_y = y.{core::num::clamp}(d, y);
+  core::num y_x_y = y.{core::num::clamp}(x, y);
+  core::int y_y_y = y.{core::num::clamp}(y, y);
+  core::num y_z_y = y.{core::num::clamp}(z, y);
+  core::num y_n_z = y.{core::num::clamp}(n, z);
+  core::num y_i_z = y.{core::num::clamp}(i, z);
+  core::num y_d_z = y.{core::num::clamp}(d, z);
+  core::num y_x_z = y.{core::num::clamp}(x, z);
+  core::num y_y_z = y.{core::num::clamp}(y, z);
+  core::num y_z_z = y.{core::num::clamp}(z, z);
+  core::num z_n_n = z.{core::num::clamp}(n, n);
+  core::num z_i_n = z.{core::num::clamp}(i, n);
+  core::num z_d_n = z.{core::num::clamp}(d, n);
+  core::num z_x_n = z.{core::num::clamp}(x, n);
+  core::num z_y_n = z.{core::num::clamp}(y, n);
+  core::num z_z_n = z.{core::num::clamp}(z, n);
+  core::num z_n_i = z.{core::num::clamp}(n, i);
+  core::num z_i_i = z.{core::num::clamp}(i, i);
+  core::num z_d_i = z.{core::num::clamp}(d, i);
+  core::num z_x_i = z.{core::num::clamp}(x, i);
+  core::num z_y_i = z.{core::num::clamp}(y, i);
+  core::num z_z_i = z.{core::num::clamp}(z, i);
+  core::num z_n_d = z.{core::num::clamp}(n, d);
+  core::num z_i_d = z.{core::num::clamp}(i, d);
+  core::double z_d_d = z.{core::num::clamp}(d, d);
+  core::num z_x_d = z.{core::num::clamp}(x, d);
+  core::num z_y_d = z.{core::num::clamp}(y, d);
+  core::double z_z_d = z.{core::num::clamp}(z, d);
+  core::num z_n_x = z.{core::num::clamp}(n, x);
+  core::num z_i_x = z.{core::num::clamp}(i, x);
+  core::num z_d_x = z.{core::num::clamp}(d, x);
+  core::num z_x_x = z.{core::num::clamp}(x, x);
+  core::num z_y_x = z.{core::num::clamp}(y, x);
+  core::num z_z_x = z.{core::num::clamp}(z, x);
+  core::num z_n_y = z.{core::num::clamp}(n, y);
+  core::num z_i_y = z.{core::num::clamp}(i, y);
+  core::num z_d_y = z.{core::num::clamp}(d, y);
+  core::num z_x_y = z.{core::num::clamp}(x, y);
+  core::num z_y_y = z.{core::num::clamp}(y, y);
+  core::num z_z_y = z.{core::num::clamp}(z, y);
+  core::num z_n_z = z.{core::num::clamp}(n, z);
+  core::num z_i_z = z.{core::num::clamp}(i, z);
+  core::double z_d_z = z.{core::num::clamp}(d, z);
+  core::num z_x_z = z.{core::num::clamp}(x, z);
+  core::num z_y_z = z.{core::num::clamp}(y, z);
+  core::double z_z_z = z.{core::num::clamp}(z, z);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/numbers_inferred.dart.strong.expect b/pkg/front_end/testcases/nnbd/numbers_inferred.dart.strong.expect
index 43aba38..cdda24f 100644
--- a/pkg/front_end/testcases/nnbd/numbers_inferred.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/numbers_inferred.dart.strong.expect
@@ -552,503 +552,503 @@
 static method f<T extends core::Object? = dynamic>() → self::f::T%
   return throw "Unsupported";
 static method add<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::add::X x, self::add::Y y, self::add::Z z) → dynamic {
-  core::num n_n = n.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::+}(self::f<core::num>());
   core::int n_i = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:10:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n + f();
-              ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::+}(self::f<core::double>());
   self::add::X n_x = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:12:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n + f();
-            ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y n_y = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:13:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n + f();
-            ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z n_z = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:14:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n + f();
-            ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::+}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::+}(self::f<core::num>());
+  core::int i_i = i.{core::num::+}(self::f<core::int>());
+  core::double i_d = i.{core::num::+}(self::f<core::double>());
   self::add::X i_x = let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:19:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i + f();
-            ^" in i.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y i_y = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:20:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i + f();
-            ^" in i.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z i_z = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:21:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i + f();
-            ^" in i.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::+}(self::f<core::num>());
   core::int d_i = let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:24:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d + f();
-              ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::+}(self::f<core::num>());
   self::add::X d_x = let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:26:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d + f();
-            ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y d_y = let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:27:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d + f();
-            ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z d_z = let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:28:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d + f();
-            ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::+}(self::f<core::num>());
   core::int x_i = let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:31:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x + f();
-              ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::+}(self::f<core::double>());
   self::add::X x_x = let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:33:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x + f();
-            ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y x_y = let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:34:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x + f();
-            ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z x_z = let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:35:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x + f();
-            ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::+}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::+}(self::f<core::num>());
+  core::int y_i = y.{core::num::+}(self::f<core::int>());
+  core::double y_d = y.{core::num::+}(self::f<core::double>());
   self::add::X y_x = let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:40:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y + f();
-            ^" in y.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y y_y = let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:41:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y + f();
-            ^" in y.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z y_z = let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:42:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y + f();
-            ^" in y.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::+}(self::f<core::num>());
   core::int z_i = let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:45:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z + f();
-              ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::+}(self::f<core::num>());
   self::add::X z_x = let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:47:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z + f();
-            ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y z_y = let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:48:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z + f();
-            ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z z_z = let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:49:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z + f();
-            ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method sub<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::sub::X x, self::sub::Y y, self::sub::Z z) → dynamic {
-  core::num n_n = n.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::-}(self::f<core::num>());
   core::int n_i = let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:55:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n - f();
-              ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::-}(self::f<core::double>());
   self::sub::X n_x = let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:57:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n - f();
-            ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y n_y = let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:58:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n - f();
-            ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z n_z = let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:59:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n - f();
-            ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::-}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::-}(self::f<core::num>());
+  core::int i_i = i.{core::num::-}(self::f<core::int>());
+  core::double i_d = i.{core::num::-}(self::f<core::double>());
   self::sub::X i_x = let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:64:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i - f();
-            ^" in i.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y i_y = let final Never #t28 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:65:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i - f();
-            ^" in i.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z i_z = let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:66:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i - f();
-            ^" in i.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::-}(self::f<core::num>());
   core::int d_i = let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:69:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d - f();
-              ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::-}(self::f<core::num>());
   self::sub::X d_x = let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:71:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d - f();
-            ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y d_y = let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:72:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d - f();
-            ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z d_z = let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:73:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d - f();
-            ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::-}(self::f<core::num>());
   core::int x_i = let final Never #t34 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:76:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x - f();
-              ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::-}(self::f<core::double>());
   self::sub::X x_x = let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:78:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x - f();
-            ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y x_y = let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:79:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x - f();
-            ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z x_z = let final Never #t37 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:80:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x - f();
-            ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::-}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::-}(self::f<core::num>());
+  core::int y_i = y.{core::num::-}(self::f<core::int>());
+  core::double y_d = y.{core::num::-}(self::f<core::double>());
   self::sub::X y_x = let final Never #t38 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:85:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y - f();
-            ^" in y.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y y_y = let final Never #t39 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:86:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y - f();
-            ^" in y.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z y_z = let final Never #t40 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:87:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y - f();
-            ^" in y.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::-}(self::f<core::num>());
   core::int z_i = let final Never #t41 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:90:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z - f();
-              ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::-}(self::f<core::num>());
   self::sub::X z_x = let final Never #t42 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:92:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z - f();
-            ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y z_y = let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:93:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z - f();
-            ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z z_z = let final Never #t44 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:94:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z - f();
-            ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method mul<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mul::X x, self::mul::Y y, self::mul::Z z) → dynamic {
-  core::num n_n = n.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::*}(self::f<core::num>());
   core::int n_i = let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:100:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n * f();
-              ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::*}(self::f<core::double>());
   self::mul::X n_x = let final Never #t46 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:102:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n * f();
-            ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y n_y = let final Never #t47 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:103:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n * f();
-            ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z n_z = let final Never #t48 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:104:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n * f();
-            ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::*}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::*}(self::f<core::num>());
+  core::int i_i = i.{core::num::*}(self::f<core::int>());
+  core::double i_d = i.{core::num::*}(self::f<core::double>());
   self::mul::X i_x = let final Never #t49 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:109:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i * f();
-            ^" in i.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y i_y = let final Never #t50 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:110:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i * f();
-            ^" in i.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z i_z = let final Never #t51 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:111:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i * f();
-            ^" in i.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::*}(self::f<core::num>());
   core::int d_i = let final Never #t52 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:114:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d * f();
-              ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::*}(self::f<core::num>());
   self::mul::X d_x = let final Never #t53 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:116:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d * f();
-            ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y d_y = let final Never #t54 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:117:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d * f();
-            ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z d_z = let final Never #t55 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:118:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d * f();
-            ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::*}(self::f<core::num>());
   core::int x_i = let final Never #t56 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:121:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x * f();
-              ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::*}(self::f<core::double>());
   self::mul::X x_x = let final Never #t57 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:123:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x * f();
-            ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y x_y = let final Never #t58 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:124:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x * f();
-            ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z x_z = let final Never #t59 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:125:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x * f();
-            ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::*}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::*}(self::f<core::num>());
+  core::int y_i = y.{core::num::*}(self::f<core::int>());
+  core::double y_d = y.{core::num::*}(self::f<core::double>());
   self::mul::X y_x = let final Never #t60 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:130:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y * f();
-            ^" in y.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y y_y = let final Never #t61 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:131:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y * f();
-            ^" in y.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z y_z = let final Never #t62 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:132:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y * f();
-            ^" in y.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::*}(self::f<core::num>());
   core::int z_i = let final Never #t63 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:135:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z * f();
-              ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::*}(self::f<core::num>());
   self::mul::X z_x = let final Never #t64 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:137:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z * f();
-            ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y z_y = let final Never #t65 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:138:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z * f();
-            ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z z_z = let final Never #t66 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:139:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z * f();
-            ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method mod<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mod::X x, self::mod::Y y, self::mod::Z z) → dynamic {
-  core::num n_n = n.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::%}(self::f<core::num>());
   core::int n_i = let final Never #t67 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:145:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n % f();
-              ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::%}(self::f<core::double>());
   self::mod::X n_x = let final Never #t68 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:147:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n % f();
-            ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y n_y = let final Never #t69 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:148:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n % f();
-            ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z n_z = let final Never #t70 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:149:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n % f();
-            ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::%}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::%}(self::f<core::num>());
+  core::int i_i = i.{core::num::%}(self::f<core::int>());
+  core::double i_d = i.{core::num::%}(self::f<core::double>());
   self::mod::X i_x = let final Never #t71 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:154:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i % f();
-            ^" in i.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y i_y = let final Never #t72 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:155:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i % f();
-            ^" in i.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z i_z = let final Never #t73 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:156:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i % f();
-            ^" in i.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::%}(self::f<core::num>());
   core::int d_i = let final Never #t74 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:159:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d % f();
-              ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::%}(self::f<core::num>());
   self::mod::X d_x = let final Never #t75 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:161:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d % f();
-            ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y d_y = let final Never #t76 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:162:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d % f();
-            ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z d_z = let final Never #t77 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:163:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d % f();
-            ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::%}(self::f<core::num>());
   core::int x_i = let final Never #t78 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:166:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x % f();
-              ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::%}(self::f<core::double>());
   self::mod::X x_x = let final Never #t79 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:168:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x % f();
-            ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y x_y = let final Never #t80 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:169:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x % f();
-            ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z x_z = let final Never #t81 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:170:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x % f();
-            ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::%}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::%}(self::f<core::num>());
+  core::int y_i = y.{core::num::%}(self::f<core::int>());
+  core::double y_d = y.{core::num::%}(self::f<core::double>());
   self::mod::X y_x = let final Never #t82 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:175:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y % f();
-            ^" in y.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y y_y = let final Never #t83 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:176:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y % f();
-            ^" in y.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z y_z = let final Never #t84 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:177:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y % f();
-            ^" in y.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::%}(self::f<core::num>());
   core::int z_i = let final Never #t85 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:180:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z % f();
-              ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::%}(self::f<core::num>());
   self::mod::X z_x = let final Never #t86 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:182:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z % f();
-            ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y z_y = let final Never #t87 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:183:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z % f();
-            ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z z_z = let final Never #t88 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:184:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z % f();
-            ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method remainder<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::remainder::X x, self::remainder::Y y, self::remainder::Z z) → dynamic {
-  core::num n_n = n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::remainder}(self::f<core::num>());
   core::int n_i = let final Never #t89 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:190:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n.remainder(f());
-              ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::remainder}(self::f<core::double>());
   self::remainder::X n_x = let final Never #t90 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:192:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n.remainder(f());
-            ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y n_y = let final Never #t91 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:193:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n.remainder(f());
-            ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z n_z = let final Never #t92 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:194:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n.remainder(f());
-            ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::remainder}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::remainder}(self::f<core::num>());
+  core::int i_i = i.{core::num::remainder}(self::f<core::int>());
+  core::double i_d = i.{core::num::remainder}(self::f<core::double>());
   self::remainder::X i_x = let final Never #t93 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:199:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i.remainder(f());
-            ^" in i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y i_y = let final Never #t94 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:200:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i.remainder(f());
-            ^" in i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z i_z = let final Never #t95 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:201:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i.remainder(f());
-            ^" in i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::double d_n = d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::double d_n = d.{core::double::remainder}(self::f<core::num>());
   core::int d_i = let final Never #t96 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:204:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d.remainder(f());
-              ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::remainder}(self::f<core::num>());
   self::remainder::X d_x = let final Never #t97 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:206:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d.remainder(f());
-            ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y d_y = let final Never #t98 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:207:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d.remainder(f());
-            ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z d_z = let final Never #t99 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:208:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d.remainder(f());
-            ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::remainder}(self::f<core::num>());
   core::int x_i = let final Never #t100 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:211:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x.remainder(f());
-              ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::remainder}(self::f<core::double>());
   self::remainder::X x_x = let final Never #t101 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:213:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x.remainder(f());
-            ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y x_y = let final Never #t102 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:214:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x.remainder(f());
-            ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z x_z = let final Never #t103 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:215:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x.remainder(f());
-            ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::remainder}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::remainder}(self::f<core::num>());
+  core::int y_i = y.{core::num::remainder}(self::f<core::int>());
+  core::double y_d = y.{core::num::remainder}(self::f<core::double>());
   self::remainder::X y_x = let final Never #t104 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:220:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y.remainder(f());
-            ^" in y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y y_y = let final Never #t105 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:221:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y.remainder(f());
-            ^" in y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z y_z = let final Never #t106 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:222:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y.remainder(f());
-            ^" in y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::double z_n = z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::double z_n = z.{core::double::remainder}(self::f<core::num>());
   core::int z_i = let final Never #t107 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:225:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z.remainder(f());
-              ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::remainder}(self::f<core::num>());
   self::remainder::X z_x = let final Never #t108 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:227:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z.remainder(f());
-            ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y z_y = let final Never #t109 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:228:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z.remainder(f());
-            ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z z_z = let final Never #t110 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:229:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z.remainder(f());
-            ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method clamp<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::clamp::X x, self::clamp::Y y, self::clamp::Z z) → dynamic {
-  core::num n_n = n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+  core::num n_n = n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int n_i = let final Never #t111 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:235:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n.clamp(f(), f());
-              ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
+              ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
   core::double n_d = let final Never #t112 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:236:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double n_d = n.clamp(f(), f());
-                 ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X n_x = let final Never #t113 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:237:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n.clamp(f(), f());
-            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y n_y = let final Never #t114 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:238:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n.clamp(f(), f());
-            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z n_z = let final Never #t115 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:239:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n.clamp(f(), f());
-            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
-  core::int i_i = i.{core::num::clamp}(self::f<core::int>(), self::f<core::int>()){(core::num, core::num) → core::int};
+            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
+  core::int i_i = i.{core::num::clamp}(self::f<core::int>(), self::f<core::int>());
   core::double i_d = let final Never #t116 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:243:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double i_d = i.clamp(f(), f());
-                 ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X i_x = let final Never #t117 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:244:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i.clamp(f(), f());
-            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y i_y = let final Never #t118 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:245:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i.clamp(f(), f());
-            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z i_z = let final Never #t119 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:246:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i.clamp(f(), f());
-            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int d_i = let final Never #t120 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:249:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int d_i = d.clamp(f(), f());
-              ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::num::clamp}(self::f<core::double>(), self::f<core::double>()){(core::num, core::num) → core::double};
+              ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::num::clamp}(self::f<core::double>(), self::f<core::double>());
   self::clamp::X d_x = let final Never #t121 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:251:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X d_x = d.clamp(f(), f());
-            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y d_y = let final Never #t122 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:252:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y d_y = d.clamp(f(), f());
-            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z d_z = let final Never #t123 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:253:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z d_z = d.clamp(f(), f());
-            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int x_i = let final Never #t124 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:256:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x.clamp(f(), f());
-              ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
+              ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
   core::double x_d = let final Never #t125 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:257:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double x_d = x.clamp(f(), f());
-                 ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X x_x = let final Never #t126 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:258:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x.clamp(f(), f());
-            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y x_y = let final Never #t127 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:259:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x.clamp(f(), f());
-            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z x_z = let final Never #t128 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:260:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x.clamp(f(), f());
-            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
-  core::int y_i = y.{core::num::clamp}(self::f<core::int>(), self::f<core::int>()){(core::num, core::num) → core::int};
+            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
+  core::int y_i = y.{core::num::clamp}(self::f<core::int>(), self::f<core::int>());
   core::double y_d = let final Never #t129 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:264:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double y_d = y.clamp(f(), f());
-                 ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X y_x = let final Never #t130 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:265:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y.clamp(f(), f());
-            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y y_y = let final Never #t131 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:266:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y.clamp(f(), f());
-            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z y_z = let final Never #t132 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:267:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y.clamp(f(), f());
-            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int z_i = let final Never #t133 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:270:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int z_i = z.clamp(f(), f());
-              ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::num::clamp}(self::f<core::double>(), self::f<core::double>()){(core::num, core::num) → core::double};
+              ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::num::clamp}(self::f<core::double>(), self::f<core::double>());
   self::clamp::X z_x = let final Never #t134 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:272:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X z_x = z.clamp(f(), f());
-            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y z_y = let final Never #t135 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:273:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y z_y = z.clamp(f(), f());
-            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z z_z = let final Never #t136 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:274:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z z_z = z.clamp(f(), f());
-            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/numbers_inferred.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/numbers_inferred.dart.strong.transformed.expect
index 43aba38..cdda24f 100644
--- a/pkg/front_end/testcases/nnbd/numbers_inferred.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/numbers_inferred.dart.strong.transformed.expect
@@ -552,503 +552,503 @@
 static method f<T extends core::Object? = dynamic>() → self::f::T%
   return throw "Unsupported";
 static method add<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::add::X x, self::add::Y y, self::add::Z z) → dynamic {
-  core::num n_n = n.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::+}(self::f<core::num>());
   core::int n_i = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:10:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n + f();
-              ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::+}(self::f<core::double>());
   self::add::X n_x = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:12:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n + f();
-            ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y n_y = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:13:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n + f();
-            ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z n_z = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:14:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n + f();
-            ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::+}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::+}(self::f<core::num>());
+  core::int i_i = i.{core::num::+}(self::f<core::int>());
+  core::double i_d = i.{core::num::+}(self::f<core::double>());
   self::add::X i_x = let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:19:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i + f();
-            ^" in i.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y i_y = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:20:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i + f();
-            ^" in i.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z i_z = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:21:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i + f();
-            ^" in i.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::+}(self::f<core::num>());
   core::int d_i = let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:24:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d + f();
-              ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::+}(self::f<core::num>());
   self::add::X d_x = let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:26:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d + f();
-            ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y d_y = let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:27:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d + f();
-            ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z d_z = let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:28:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d + f();
-            ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::+}(self::f<core::num>());
   core::int x_i = let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:31:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x + f();
-              ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::+}(self::f<core::double>());
   self::add::X x_x = let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:33:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x + f();
-            ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y x_y = let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:34:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x + f();
-            ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z x_z = let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:35:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x + f();
-            ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::+}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::+}(self::f<core::num>());
+  core::int y_i = y.{core::num::+}(self::f<core::int>());
+  core::double y_d = y.{core::num::+}(self::f<core::double>());
   self::add::X y_x = let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:40:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y + f();
-            ^" in y.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y y_y = let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:41:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y + f();
-            ^" in y.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z y_z = let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:42:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y + f();
-            ^" in y.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::+}(self::f<core::num>());
   core::int z_i = let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:45:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z + f();
-              ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::+}(self::f<core::num>());
   self::add::X z_x = let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:47:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z + f();
-            ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y z_y = let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:48:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z + f();
-            ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z z_z = let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:49:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z + f();
-            ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method sub<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::sub::X x, self::sub::Y y, self::sub::Z z) → dynamic {
-  core::num n_n = n.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::-}(self::f<core::num>());
   core::int n_i = let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:55:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n - f();
-              ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::-}(self::f<core::double>());
   self::sub::X n_x = let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:57:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n - f();
-            ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y n_y = let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:58:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n - f();
-            ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z n_z = let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:59:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n - f();
-            ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::-}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::-}(self::f<core::num>());
+  core::int i_i = i.{core::num::-}(self::f<core::int>());
+  core::double i_d = i.{core::num::-}(self::f<core::double>());
   self::sub::X i_x = let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:64:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i - f();
-            ^" in i.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y i_y = let final Never #t28 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:65:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i - f();
-            ^" in i.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z i_z = let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:66:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i - f();
-            ^" in i.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::-}(self::f<core::num>());
   core::int d_i = let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:69:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d - f();
-              ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::-}(self::f<core::num>());
   self::sub::X d_x = let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:71:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d - f();
-            ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y d_y = let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:72:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d - f();
-            ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z d_z = let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:73:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d - f();
-            ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::-}(self::f<core::num>());
   core::int x_i = let final Never #t34 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:76:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x - f();
-              ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::-}(self::f<core::double>());
   self::sub::X x_x = let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:78:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x - f();
-            ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y x_y = let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:79:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x - f();
-            ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z x_z = let final Never #t37 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:80:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x - f();
-            ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::-}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::-}(self::f<core::num>());
+  core::int y_i = y.{core::num::-}(self::f<core::int>());
+  core::double y_d = y.{core::num::-}(self::f<core::double>());
   self::sub::X y_x = let final Never #t38 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:85:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y - f();
-            ^" in y.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y y_y = let final Never #t39 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:86:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y - f();
-            ^" in y.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z y_z = let final Never #t40 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:87:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y - f();
-            ^" in y.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::-}(self::f<core::num>());
   core::int z_i = let final Never #t41 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:90:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z - f();
-              ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::-}(self::f<core::num>());
   self::sub::X z_x = let final Never #t42 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:92:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z - f();
-            ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y z_y = let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:93:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z - f();
-            ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z z_z = let final Never #t44 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:94:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z - f();
-            ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method mul<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mul::X x, self::mul::Y y, self::mul::Z z) → dynamic {
-  core::num n_n = n.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::*}(self::f<core::num>());
   core::int n_i = let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:100:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n * f();
-              ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::*}(self::f<core::double>());
   self::mul::X n_x = let final Never #t46 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:102:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n * f();
-            ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y n_y = let final Never #t47 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:103:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n * f();
-            ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z n_z = let final Never #t48 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:104:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n * f();
-            ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::*}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::*}(self::f<core::num>());
+  core::int i_i = i.{core::num::*}(self::f<core::int>());
+  core::double i_d = i.{core::num::*}(self::f<core::double>());
   self::mul::X i_x = let final Never #t49 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:109:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i * f();
-            ^" in i.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y i_y = let final Never #t50 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:110:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i * f();
-            ^" in i.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z i_z = let final Never #t51 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:111:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i * f();
-            ^" in i.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::*}(self::f<core::num>());
   core::int d_i = let final Never #t52 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:114:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d * f();
-              ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::*}(self::f<core::num>());
   self::mul::X d_x = let final Never #t53 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:116:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d * f();
-            ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y d_y = let final Never #t54 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:117:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d * f();
-            ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z d_z = let final Never #t55 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:118:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d * f();
-            ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::*}(self::f<core::num>());
   core::int x_i = let final Never #t56 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:121:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x * f();
-              ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::*}(self::f<core::double>());
   self::mul::X x_x = let final Never #t57 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:123:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x * f();
-            ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y x_y = let final Never #t58 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:124:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x * f();
-            ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z x_z = let final Never #t59 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:125:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x * f();
-            ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::*}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::*}(self::f<core::num>());
+  core::int y_i = y.{core::num::*}(self::f<core::int>());
+  core::double y_d = y.{core::num::*}(self::f<core::double>());
   self::mul::X y_x = let final Never #t60 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:130:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y * f();
-            ^" in y.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y y_y = let final Never #t61 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:131:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y * f();
-            ^" in y.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z y_z = let final Never #t62 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:132:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y * f();
-            ^" in y.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::*}(self::f<core::num>());
   core::int z_i = let final Never #t63 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:135:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z * f();
-              ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::*}(self::f<core::num>());
   self::mul::X z_x = let final Never #t64 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:137:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z * f();
-            ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y z_y = let final Never #t65 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:138:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z * f();
-            ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z z_z = let final Never #t66 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:139:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z * f();
-            ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method mod<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mod::X x, self::mod::Y y, self::mod::Z z) → dynamic {
-  core::num n_n = n.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::%}(self::f<core::num>());
   core::int n_i = let final Never #t67 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:145:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n % f();
-              ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::%}(self::f<core::double>());
   self::mod::X n_x = let final Never #t68 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:147:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n % f();
-            ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y n_y = let final Never #t69 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:148:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n % f();
-            ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z n_z = let final Never #t70 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:149:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n % f();
-            ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::%}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::%}(self::f<core::num>());
+  core::int i_i = i.{core::num::%}(self::f<core::int>());
+  core::double i_d = i.{core::num::%}(self::f<core::double>());
   self::mod::X i_x = let final Never #t71 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:154:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i % f();
-            ^" in i.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y i_y = let final Never #t72 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:155:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i % f();
-            ^" in i.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z i_z = let final Never #t73 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:156:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i % f();
-            ^" in i.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::%}(self::f<core::num>());
   core::int d_i = let final Never #t74 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:159:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d % f();
-              ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::%}(self::f<core::num>());
   self::mod::X d_x = let final Never #t75 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:161:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d % f();
-            ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y d_y = let final Never #t76 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:162:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d % f();
-            ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z d_z = let final Never #t77 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:163:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d % f();
-            ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::%}(self::f<core::num>());
   core::int x_i = let final Never #t78 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:166:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x % f();
-              ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::%}(self::f<core::double>());
   self::mod::X x_x = let final Never #t79 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:168:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x % f();
-            ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y x_y = let final Never #t80 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:169:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x % f();
-            ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z x_z = let final Never #t81 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:170:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x % f();
-            ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::%}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::%}(self::f<core::num>());
+  core::int y_i = y.{core::num::%}(self::f<core::int>());
+  core::double y_d = y.{core::num::%}(self::f<core::double>());
   self::mod::X y_x = let final Never #t82 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:175:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y % f();
-            ^" in y.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y y_y = let final Never #t83 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:176:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y % f();
-            ^" in y.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z y_z = let final Never #t84 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:177:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y % f();
-            ^" in y.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::%}(self::f<core::num>());
   core::int z_i = let final Never #t85 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:180:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z % f();
-              ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::%}(self::f<core::num>());
   self::mod::X z_x = let final Never #t86 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:182:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z % f();
-            ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y z_y = let final Never #t87 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:183:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z % f();
-            ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z z_z = let final Never #t88 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:184:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z % f();
-            ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method remainder<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::remainder::X x, self::remainder::Y y, self::remainder::Z z) → dynamic {
-  core::num n_n = n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::remainder}(self::f<core::num>());
   core::int n_i = let final Never #t89 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:190:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n.remainder(f());
-              ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::remainder}(self::f<core::double>());
   self::remainder::X n_x = let final Never #t90 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:192:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n.remainder(f());
-            ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y n_y = let final Never #t91 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:193:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n.remainder(f());
-            ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z n_z = let final Never #t92 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:194:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n.remainder(f());
-            ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::remainder}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::remainder}(self::f<core::num>());
+  core::int i_i = i.{core::num::remainder}(self::f<core::int>());
+  core::double i_d = i.{core::num::remainder}(self::f<core::double>());
   self::remainder::X i_x = let final Never #t93 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:199:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i.remainder(f());
-            ^" in i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y i_y = let final Never #t94 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:200:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i.remainder(f());
-            ^" in i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z i_z = let final Never #t95 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:201:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i.remainder(f());
-            ^" in i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::double d_n = d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::double d_n = d.{core::double::remainder}(self::f<core::num>());
   core::int d_i = let final Never #t96 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:204:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d.remainder(f());
-              ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::remainder}(self::f<core::num>());
   self::remainder::X d_x = let final Never #t97 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:206:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d.remainder(f());
-            ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y d_y = let final Never #t98 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:207:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d.remainder(f());
-            ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z d_z = let final Never #t99 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:208:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d.remainder(f());
-            ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::remainder}(self::f<core::num>());
   core::int x_i = let final Never #t100 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:211:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x.remainder(f());
-              ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::remainder}(self::f<core::double>());
   self::remainder::X x_x = let final Never #t101 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:213:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x.remainder(f());
-            ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y x_y = let final Never #t102 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:214:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x.remainder(f());
-            ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z x_z = let final Never #t103 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:215:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x.remainder(f());
-            ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::remainder}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::remainder}(self::f<core::num>());
+  core::int y_i = y.{core::num::remainder}(self::f<core::int>());
+  core::double y_d = y.{core::num::remainder}(self::f<core::double>());
   self::remainder::X y_x = let final Never #t104 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:220:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y.remainder(f());
-            ^" in y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y y_y = let final Never #t105 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:221:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y.remainder(f());
-            ^" in y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z y_z = let final Never #t106 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:222:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y.remainder(f());
-            ^" in y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::double z_n = z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::double z_n = z.{core::double::remainder}(self::f<core::num>());
   core::int z_i = let final Never #t107 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:225:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z.remainder(f());
-              ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::remainder}(self::f<core::num>());
   self::remainder::X z_x = let final Never #t108 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:227:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z.remainder(f());
-            ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y z_y = let final Never #t109 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:228:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z.remainder(f());
-            ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z z_z = let final Never #t110 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:229:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z.remainder(f());
-            ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method clamp<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::clamp::X x, self::clamp::Y y, self::clamp::Z z) → dynamic {
-  core::num n_n = n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+  core::num n_n = n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int n_i = let final Never #t111 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:235:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n.clamp(f(), f());
-              ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
+              ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
   core::double n_d = let final Never #t112 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:236:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double n_d = n.clamp(f(), f());
-                 ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X n_x = let final Never #t113 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:237:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n.clamp(f(), f());
-            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y n_y = let final Never #t114 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:238:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n.clamp(f(), f());
-            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z n_z = let final Never #t115 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:239:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n.clamp(f(), f());
-            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
-  core::int i_i = i.{core::num::clamp}(self::f<core::int>(), self::f<core::int>()){(core::num, core::num) → core::int};
+            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
+  core::int i_i = i.{core::num::clamp}(self::f<core::int>(), self::f<core::int>());
   core::double i_d = let final Never #t116 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:243:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double i_d = i.clamp(f(), f());
-                 ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X i_x = let final Never #t117 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:244:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i.clamp(f(), f());
-            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y i_y = let final Never #t118 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:245:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i.clamp(f(), f());
-            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z i_z = let final Never #t119 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:246:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i.clamp(f(), f());
-            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int d_i = let final Never #t120 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:249:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int d_i = d.clamp(f(), f());
-              ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::num::clamp}(self::f<core::double>(), self::f<core::double>()){(core::num, core::num) → core::double};
+              ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::num::clamp}(self::f<core::double>(), self::f<core::double>());
   self::clamp::X d_x = let final Never #t121 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:251:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X d_x = d.clamp(f(), f());
-            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y d_y = let final Never #t122 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:252:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y d_y = d.clamp(f(), f());
-            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z d_z = let final Never #t123 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:253:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z d_z = d.clamp(f(), f());
-            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int x_i = let final Never #t124 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:256:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x.clamp(f(), f());
-              ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
+              ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
   core::double x_d = let final Never #t125 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:257:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double x_d = x.clamp(f(), f());
-                 ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X x_x = let final Never #t126 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:258:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x.clamp(f(), f());
-            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y x_y = let final Never #t127 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:259:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x.clamp(f(), f());
-            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z x_z = let final Never #t128 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:260:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x.clamp(f(), f());
-            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
-  core::int y_i = y.{core::num::clamp}(self::f<core::int>(), self::f<core::int>()){(core::num, core::num) → core::int};
+            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
+  core::int y_i = y.{core::num::clamp}(self::f<core::int>(), self::f<core::int>());
   core::double y_d = let final Never #t129 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:264:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double y_d = y.clamp(f(), f());
-                 ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X y_x = let final Never #t130 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:265:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y.clamp(f(), f());
-            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y y_y = let final Never #t131 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:266:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y.clamp(f(), f());
-            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z y_z = let final Never #t132 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:267:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y.clamp(f(), f());
-            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int z_i = let final Never #t133 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:270:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int z_i = z.clamp(f(), f());
-              ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::num::clamp}(self::f<core::double>(), self::f<core::double>()){(core::num, core::num) → core::double};
+              ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::num::clamp}(self::f<core::double>(), self::f<core::double>());
   self::clamp::X z_x = let final Never #t134 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:272:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X z_x = z.clamp(f(), f());
-            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y z_y = let final Never #t135 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:273:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y z_y = z.clamp(f(), f());
-            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z z_z = let final Never #t136 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:274:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z z_z = z.clamp(f(), f());
-            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/numbers_inferred.dart.weak.expect b/pkg/front_end/testcases/nnbd/numbers_inferred.dart.weak.expect
index 43aba38..cdda24f 100644
--- a/pkg/front_end/testcases/nnbd/numbers_inferred.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/numbers_inferred.dart.weak.expect
@@ -552,503 +552,503 @@
 static method f<T extends core::Object? = dynamic>() → self::f::T%
   return throw "Unsupported";
 static method add<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::add::X x, self::add::Y y, self::add::Z z) → dynamic {
-  core::num n_n = n.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::+}(self::f<core::num>());
   core::int n_i = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:10:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n + f();
-              ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::+}(self::f<core::double>());
   self::add::X n_x = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:12:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n + f();
-            ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y n_y = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:13:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n + f();
-            ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z n_z = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:14:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n + f();
-            ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::+}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::+}(self::f<core::num>());
+  core::int i_i = i.{core::num::+}(self::f<core::int>());
+  core::double i_d = i.{core::num::+}(self::f<core::double>());
   self::add::X i_x = let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:19:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i + f();
-            ^" in i.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y i_y = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:20:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i + f();
-            ^" in i.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z i_z = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:21:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i + f();
-            ^" in i.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::+}(self::f<core::num>());
   core::int d_i = let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:24:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d + f();
-              ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::+}(self::f<core::num>());
   self::add::X d_x = let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:26:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d + f();
-            ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y d_y = let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:27:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d + f();
-            ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z d_z = let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:28:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d + f();
-            ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::+}(self::f<core::num>());
   core::int x_i = let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:31:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x + f();
-              ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::+}(self::f<core::double>());
   self::add::X x_x = let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:33:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x + f();
-            ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y x_y = let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:34:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x + f();
-            ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z x_z = let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:35:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x + f();
-            ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::+}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::+}(self::f<core::num>());
+  core::int y_i = y.{core::num::+}(self::f<core::int>());
+  core::double y_d = y.{core::num::+}(self::f<core::double>());
   self::add::X y_x = let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:40:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y + f();
-            ^" in y.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y y_y = let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:41:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y + f();
-            ^" in y.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z y_z = let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:42:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y + f();
-            ^" in y.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::+}(self::f<core::num>());
   core::int z_i = let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:45:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z + f();
-              ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::+}(self::f<core::num>());
   self::add::X z_x = let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:47:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z + f();
-            ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y z_y = let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:48:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z + f();
-            ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z z_z = let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:49:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z + f();
-            ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method sub<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::sub::X x, self::sub::Y y, self::sub::Z z) → dynamic {
-  core::num n_n = n.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::-}(self::f<core::num>());
   core::int n_i = let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:55:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n - f();
-              ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::-}(self::f<core::double>());
   self::sub::X n_x = let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:57:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n - f();
-            ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y n_y = let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:58:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n - f();
-            ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z n_z = let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:59:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n - f();
-            ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::-}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::-}(self::f<core::num>());
+  core::int i_i = i.{core::num::-}(self::f<core::int>());
+  core::double i_d = i.{core::num::-}(self::f<core::double>());
   self::sub::X i_x = let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:64:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i - f();
-            ^" in i.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y i_y = let final Never #t28 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:65:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i - f();
-            ^" in i.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z i_z = let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:66:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i - f();
-            ^" in i.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::-}(self::f<core::num>());
   core::int d_i = let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:69:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d - f();
-              ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::-}(self::f<core::num>());
   self::sub::X d_x = let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:71:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d - f();
-            ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y d_y = let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:72:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d - f();
-            ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z d_z = let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:73:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d - f();
-            ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::-}(self::f<core::num>());
   core::int x_i = let final Never #t34 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:76:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x - f();
-              ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::-}(self::f<core::double>());
   self::sub::X x_x = let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:78:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x - f();
-            ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y x_y = let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:79:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x - f();
-            ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z x_z = let final Never #t37 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:80:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x - f();
-            ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::-}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::-}(self::f<core::num>());
+  core::int y_i = y.{core::num::-}(self::f<core::int>());
+  core::double y_d = y.{core::num::-}(self::f<core::double>());
   self::sub::X y_x = let final Never #t38 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:85:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y - f();
-            ^" in y.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y y_y = let final Never #t39 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:86:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y - f();
-            ^" in y.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z y_z = let final Never #t40 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:87:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y - f();
-            ^" in y.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::-}(self::f<core::num>());
   core::int z_i = let final Never #t41 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:90:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z - f();
-              ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::-}(self::f<core::num>());
   self::sub::X z_x = let final Never #t42 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:92:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z - f();
-            ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y z_y = let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:93:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z - f();
-            ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z z_z = let final Never #t44 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:94:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z - f();
-            ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method mul<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mul::X x, self::mul::Y y, self::mul::Z z) → dynamic {
-  core::num n_n = n.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::*}(self::f<core::num>());
   core::int n_i = let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:100:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n * f();
-              ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::*}(self::f<core::double>());
   self::mul::X n_x = let final Never #t46 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:102:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n * f();
-            ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y n_y = let final Never #t47 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:103:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n * f();
-            ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z n_z = let final Never #t48 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:104:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n * f();
-            ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::*}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::*}(self::f<core::num>());
+  core::int i_i = i.{core::num::*}(self::f<core::int>());
+  core::double i_d = i.{core::num::*}(self::f<core::double>());
   self::mul::X i_x = let final Never #t49 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:109:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i * f();
-            ^" in i.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y i_y = let final Never #t50 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:110:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i * f();
-            ^" in i.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z i_z = let final Never #t51 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:111:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i * f();
-            ^" in i.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::*}(self::f<core::num>());
   core::int d_i = let final Never #t52 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:114:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d * f();
-              ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::*}(self::f<core::num>());
   self::mul::X d_x = let final Never #t53 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:116:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d * f();
-            ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y d_y = let final Never #t54 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:117:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d * f();
-            ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z d_z = let final Never #t55 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:118:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d * f();
-            ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::*}(self::f<core::num>());
   core::int x_i = let final Never #t56 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:121:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x * f();
-              ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::*}(self::f<core::double>());
   self::mul::X x_x = let final Never #t57 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:123:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x * f();
-            ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y x_y = let final Never #t58 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:124:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x * f();
-            ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z x_z = let final Never #t59 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:125:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x * f();
-            ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::*}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::*}(self::f<core::num>());
+  core::int y_i = y.{core::num::*}(self::f<core::int>());
+  core::double y_d = y.{core::num::*}(self::f<core::double>());
   self::mul::X y_x = let final Never #t60 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:130:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y * f();
-            ^" in y.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y y_y = let final Never #t61 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:131:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y * f();
-            ^" in y.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z y_z = let final Never #t62 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:132:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y * f();
-            ^" in y.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::*}(self::f<core::num>());
   core::int z_i = let final Never #t63 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:135:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z * f();
-              ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::*}(self::f<core::num>());
   self::mul::X z_x = let final Never #t64 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:137:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z * f();
-            ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y z_y = let final Never #t65 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:138:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z * f();
-            ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z z_z = let final Never #t66 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:139:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z * f();
-            ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method mod<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mod::X x, self::mod::Y y, self::mod::Z z) → dynamic {
-  core::num n_n = n.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::%}(self::f<core::num>());
   core::int n_i = let final Never #t67 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:145:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n % f();
-              ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::%}(self::f<core::double>());
   self::mod::X n_x = let final Never #t68 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:147:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n % f();
-            ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y n_y = let final Never #t69 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:148:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n % f();
-            ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z n_z = let final Never #t70 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:149:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n % f();
-            ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::%}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::%}(self::f<core::num>());
+  core::int i_i = i.{core::num::%}(self::f<core::int>());
+  core::double i_d = i.{core::num::%}(self::f<core::double>());
   self::mod::X i_x = let final Never #t71 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:154:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i % f();
-            ^" in i.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y i_y = let final Never #t72 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:155:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i % f();
-            ^" in i.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z i_z = let final Never #t73 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:156:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i % f();
-            ^" in i.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::%}(self::f<core::num>());
   core::int d_i = let final Never #t74 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:159:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d % f();
-              ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::%}(self::f<core::num>());
   self::mod::X d_x = let final Never #t75 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:161:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d % f();
-            ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y d_y = let final Never #t76 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:162:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d % f();
-            ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z d_z = let final Never #t77 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:163:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d % f();
-            ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::%}(self::f<core::num>());
   core::int x_i = let final Never #t78 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:166:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x % f();
-              ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::%}(self::f<core::double>());
   self::mod::X x_x = let final Never #t79 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:168:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x % f();
-            ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y x_y = let final Never #t80 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:169:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x % f();
-            ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z x_z = let final Never #t81 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:170:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x % f();
-            ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::%}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::%}(self::f<core::num>());
+  core::int y_i = y.{core::num::%}(self::f<core::int>());
+  core::double y_d = y.{core::num::%}(self::f<core::double>());
   self::mod::X y_x = let final Never #t82 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:175:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y % f();
-            ^" in y.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y y_y = let final Never #t83 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:176:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y % f();
-            ^" in y.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z y_z = let final Never #t84 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:177:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y % f();
-            ^" in y.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::%}(self::f<core::num>());
   core::int z_i = let final Never #t85 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:180:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z % f();
-              ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::%}(self::f<core::num>());
   self::mod::X z_x = let final Never #t86 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:182:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z % f();
-            ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y z_y = let final Never #t87 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:183:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z % f();
-            ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z z_z = let final Never #t88 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:184:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z % f();
-            ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method remainder<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::remainder::X x, self::remainder::Y y, self::remainder::Z z) → dynamic {
-  core::num n_n = n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::remainder}(self::f<core::num>());
   core::int n_i = let final Never #t89 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:190:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n.remainder(f());
-              ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::remainder}(self::f<core::double>());
   self::remainder::X n_x = let final Never #t90 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:192:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n.remainder(f());
-            ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y n_y = let final Never #t91 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:193:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n.remainder(f());
-            ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z n_z = let final Never #t92 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:194:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n.remainder(f());
-            ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::remainder}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::remainder}(self::f<core::num>());
+  core::int i_i = i.{core::num::remainder}(self::f<core::int>());
+  core::double i_d = i.{core::num::remainder}(self::f<core::double>());
   self::remainder::X i_x = let final Never #t93 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:199:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i.remainder(f());
-            ^" in i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y i_y = let final Never #t94 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:200:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i.remainder(f());
-            ^" in i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z i_z = let final Never #t95 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:201:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i.remainder(f());
-            ^" in i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::double d_n = d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::double d_n = d.{core::double::remainder}(self::f<core::num>());
   core::int d_i = let final Never #t96 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:204:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d.remainder(f());
-              ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::remainder}(self::f<core::num>());
   self::remainder::X d_x = let final Never #t97 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:206:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d.remainder(f());
-            ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y d_y = let final Never #t98 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:207:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d.remainder(f());
-            ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z d_z = let final Never #t99 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:208:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d.remainder(f());
-            ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::remainder}(self::f<core::num>());
   core::int x_i = let final Never #t100 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:211:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x.remainder(f());
-              ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::remainder}(self::f<core::double>());
   self::remainder::X x_x = let final Never #t101 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:213:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x.remainder(f());
-            ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y x_y = let final Never #t102 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:214:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x.remainder(f());
-            ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z x_z = let final Never #t103 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:215:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x.remainder(f());
-            ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::remainder}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::remainder}(self::f<core::num>());
+  core::int y_i = y.{core::num::remainder}(self::f<core::int>());
+  core::double y_d = y.{core::num::remainder}(self::f<core::double>());
   self::remainder::X y_x = let final Never #t104 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:220:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y.remainder(f());
-            ^" in y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y y_y = let final Never #t105 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:221:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y.remainder(f());
-            ^" in y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z y_z = let final Never #t106 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:222:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y.remainder(f());
-            ^" in y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::double z_n = z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::double z_n = z.{core::double::remainder}(self::f<core::num>());
   core::int z_i = let final Never #t107 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:225:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z.remainder(f());
-              ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::remainder}(self::f<core::num>());
   self::remainder::X z_x = let final Never #t108 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:227:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z.remainder(f());
-            ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y z_y = let final Never #t109 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:228:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z.remainder(f());
-            ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z z_z = let final Never #t110 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:229:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z.remainder(f());
-            ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method clamp<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::clamp::X x, self::clamp::Y y, self::clamp::Z z) → dynamic {
-  core::num n_n = n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+  core::num n_n = n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int n_i = let final Never #t111 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:235:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n.clamp(f(), f());
-              ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
+              ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
   core::double n_d = let final Never #t112 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:236:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double n_d = n.clamp(f(), f());
-                 ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X n_x = let final Never #t113 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:237:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n.clamp(f(), f());
-            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y n_y = let final Never #t114 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:238:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n.clamp(f(), f());
-            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z n_z = let final Never #t115 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:239:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n.clamp(f(), f());
-            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
-  core::int i_i = i.{core::num::clamp}(self::f<core::int>(), self::f<core::int>()){(core::num, core::num) → core::int};
+            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
+  core::int i_i = i.{core::num::clamp}(self::f<core::int>(), self::f<core::int>());
   core::double i_d = let final Never #t116 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:243:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double i_d = i.clamp(f(), f());
-                 ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X i_x = let final Never #t117 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:244:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i.clamp(f(), f());
-            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y i_y = let final Never #t118 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:245:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i.clamp(f(), f());
-            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z i_z = let final Never #t119 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:246:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i.clamp(f(), f());
-            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int d_i = let final Never #t120 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:249:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int d_i = d.clamp(f(), f());
-              ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::num::clamp}(self::f<core::double>(), self::f<core::double>()){(core::num, core::num) → core::double};
+              ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::num::clamp}(self::f<core::double>(), self::f<core::double>());
   self::clamp::X d_x = let final Never #t121 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:251:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X d_x = d.clamp(f(), f());
-            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y d_y = let final Never #t122 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:252:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y d_y = d.clamp(f(), f());
-            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z d_z = let final Never #t123 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:253:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z d_z = d.clamp(f(), f());
-            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int x_i = let final Never #t124 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:256:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x.clamp(f(), f());
-              ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
+              ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
   core::double x_d = let final Never #t125 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:257:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double x_d = x.clamp(f(), f());
-                 ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X x_x = let final Never #t126 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:258:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x.clamp(f(), f());
-            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y x_y = let final Never #t127 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:259:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x.clamp(f(), f());
-            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z x_z = let final Never #t128 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:260:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x.clamp(f(), f());
-            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
-  core::int y_i = y.{core::num::clamp}(self::f<core::int>(), self::f<core::int>()){(core::num, core::num) → core::int};
+            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
+  core::int y_i = y.{core::num::clamp}(self::f<core::int>(), self::f<core::int>());
   core::double y_d = let final Never #t129 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:264:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double y_d = y.clamp(f(), f());
-                 ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X y_x = let final Never #t130 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:265:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y.clamp(f(), f());
-            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y y_y = let final Never #t131 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:266:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y.clamp(f(), f());
-            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z y_z = let final Never #t132 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:267:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y.clamp(f(), f());
-            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int z_i = let final Never #t133 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:270:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int z_i = z.clamp(f(), f());
-              ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::num::clamp}(self::f<core::double>(), self::f<core::double>()){(core::num, core::num) → core::double};
+              ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::num::clamp}(self::f<core::double>(), self::f<core::double>());
   self::clamp::X z_x = let final Never #t134 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:272:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X z_x = z.clamp(f(), f());
-            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y z_y = let final Never #t135 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:273:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y z_y = z.clamp(f(), f());
-            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z z_z = let final Never #t136 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:274:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z z_z = z.clamp(f(), f());
-            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/numbers_inferred.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/numbers_inferred.dart.weak.transformed.expect
index 43aba38..cdda24f 100644
--- a/pkg/front_end/testcases/nnbd/numbers_inferred.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/numbers_inferred.dart.weak.transformed.expect
@@ -552,503 +552,503 @@
 static method f<T extends core::Object? = dynamic>() → self::f::T%
   return throw "Unsupported";
 static method add<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::add::X x, self::add::Y y, self::add::Z z) → dynamic {
-  core::num n_n = n.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::+}(self::f<core::num>());
   core::int n_i = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:10:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n + f();
-              ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::+}(self::f<core::double>());
   self::add::X n_x = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:12:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n + f();
-            ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y n_y = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:13:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n + f();
-            ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z n_z = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:14:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n + f();
-            ^" in n.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::+}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::+}(self::f<core::num>());
+  core::int i_i = i.{core::num::+}(self::f<core::int>());
+  core::double i_d = i.{core::num::+}(self::f<core::double>());
   self::add::X i_x = let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:19:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i + f();
-            ^" in i.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y i_y = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:20:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i + f();
-            ^" in i.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z i_z = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:21:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i + f();
-            ^" in i.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::+}(self::f<core::num>());
   core::int d_i = let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:24:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d + f();
-              ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::+}(self::f<core::num>());
   self::add::X d_x = let final Never #t9 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:26:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d + f();
-            ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y d_y = let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:27:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d + f();
-            ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z d_z = let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:28:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d + f();
-            ^" in d.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::+}(self::f<core::num>());
   core::int x_i = let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:31:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x + f();
-              ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::+}(self::f<core::double>());
   self::add::X x_x = let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:33:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x + f();
-            ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y x_y = let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:34:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x + f();
-            ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z x_z = let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:35:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x + f();
-            ^" in x.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::+}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::+}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::+}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::+}(self::f<core::num>());
+  core::int y_i = y.{core::num::+}(self::f<core::int>());
+  core::double y_d = y.{core::num::+}(self::f<core::double>());
   self::add::X y_x = let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:40:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y + f();
-            ^" in y.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y y_y = let final Never #t17 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:41:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y + f();
-            ^" in y.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z y_z = let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:42:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y + f();
-            ^" in y.{core::num::+}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::+}(self::f<core::num>());
   core::int z_i = let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:45:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z + f();
-              ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::+}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::+}(self::f<core::num>());
   self::add::X z_x = let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:47:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z + f();
-            ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Y z_y = let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:48:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z + f();
-            ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::add::Z z_z = let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:49:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z + f();
-            ^" in z.{core::double::+}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::+}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method sub<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::sub::X x, self::sub::Y y, self::sub::Z z) → dynamic {
-  core::num n_n = n.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::-}(self::f<core::num>());
   core::int n_i = let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:55:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n - f();
-              ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::-}(self::f<core::double>());
   self::sub::X n_x = let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:57:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n - f();
-            ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y n_y = let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:58:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n - f();
-            ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z n_z = let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:59:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n - f();
-            ^" in n.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::-}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::-}(self::f<core::num>());
+  core::int i_i = i.{core::num::-}(self::f<core::int>());
+  core::double i_d = i.{core::num::-}(self::f<core::double>());
   self::sub::X i_x = let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:64:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i - f();
-            ^" in i.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y i_y = let final Never #t28 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:65:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i - f();
-            ^" in i.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z i_z = let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:66:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i - f();
-            ^" in i.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::-}(self::f<core::num>());
   core::int d_i = let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:69:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d - f();
-              ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::-}(self::f<core::num>());
   self::sub::X d_x = let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:71:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d - f();
-            ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y d_y = let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:72:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d - f();
-            ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z d_z = let final Never #t33 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:73:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d - f();
-            ^" in d.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::-}(self::f<core::num>());
   core::int x_i = let final Never #t34 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:76:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x - f();
-              ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::-}(self::f<core::double>());
   self::sub::X x_x = let final Never #t35 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:78:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x - f();
-            ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y x_y = let final Never #t36 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:79:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x - f();
-            ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z x_z = let final Never #t37 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:80:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x - f();
-            ^" in x.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::-}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::-}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::-}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::-}(self::f<core::num>());
+  core::int y_i = y.{core::num::-}(self::f<core::int>());
+  core::double y_d = y.{core::num::-}(self::f<core::double>());
   self::sub::X y_x = let final Never #t38 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:85:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y - f();
-            ^" in y.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y y_y = let final Never #t39 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:86:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y - f();
-            ^" in y.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z y_z = let final Never #t40 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:87:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y - f();
-            ^" in y.{core::num::-}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::-}(self::f<core::num>());
   core::int z_i = let final Never #t41 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:90:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z - f();
-              ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::-}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::-}(self::f<core::num>());
   self::sub::X z_x = let final Never #t42 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:92:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z - f();
-            ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Y z_y = let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:93:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z - f();
-            ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::sub::Z z_z = let final Never #t44 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:94:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z - f();
-            ^" in z.{core::double::-}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::-}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method mul<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mul::X x, self::mul::Y y, self::mul::Z z) → dynamic {
-  core::num n_n = n.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::*}(self::f<core::num>());
   core::int n_i = let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:100:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n * f();
-              ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::*}(self::f<core::double>());
   self::mul::X n_x = let final Never #t46 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:102:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n * f();
-            ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y n_y = let final Never #t47 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:103:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n * f();
-            ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z n_z = let final Never #t48 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:104:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n * f();
-            ^" in n.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::*}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::*}(self::f<core::num>());
+  core::int i_i = i.{core::num::*}(self::f<core::int>());
+  core::double i_d = i.{core::num::*}(self::f<core::double>());
   self::mul::X i_x = let final Never #t49 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:109:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i * f();
-            ^" in i.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y i_y = let final Never #t50 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:110:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i * f();
-            ^" in i.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z i_z = let final Never #t51 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:111:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i * f();
-            ^" in i.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::*}(self::f<core::num>());
   core::int d_i = let final Never #t52 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:114:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d * f();
-              ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::*}(self::f<core::num>());
   self::mul::X d_x = let final Never #t53 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:116:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d * f();
-            ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y d_y = let final Never #t54 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:117:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d * f();
-            ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z d_z = let final Never #t55 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:118:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d * f();
-            ^" in d.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::*}(self::f<core::num>());
   core::int x_i = let final Never #t56 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:121:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x * f();
-              ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::*}(self::f<core::double>());
   self::mul::X x_x = let final Never #t57 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:123:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x * f();
-            ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y x_y = let final Never #t58 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:124:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x * f();
-            ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z x_z = let final Never #t59 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:125:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x * f();
-            ^" in x.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::*}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::*}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::*}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::*}(self::f<core::num>());
+  core::int y_i = y.{core::num::*}(self::f<core::int>());
+  core::double y_d = y.{core::num::*}(self::f<core::double>());
   self::mul::X y_x = let final Never #t60 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:130:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y * f();
-            ^" in y.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y y_y = let final Never #t61 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:131:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y * f();
-            ^" in y.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z y_z = let final Never #t62 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:132:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y * f();
-            ^" in y.{core::num::*}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::*}(self::f<core::num>());
   core::int z_i = let final Never #t63 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:135:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z * f();
-              ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::*}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::*}(self::f<core::num>());
   self::mul::X z_x = let final Never #t64 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:137:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z * f();
-            ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Y z_y = let final Never #t65 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:138:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z * f();
-            ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mul::Z z_z = let final Never #t66 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:139:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z * f();
-            ^" in z.{core::double::*}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::*}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method mod<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::mod::X x, self::mod::Y y, self::mod::Z z) → dynamic {
-  core::num n_n = n.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::%}(self::f<core::num>());
   core::int n_i = let final Never #t67 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:145:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n % f();
-              ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::%}(self::f<core::double>());
   self::mod::X n_x = let final Never #t68 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:147:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n % f();
-            ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y n_y = let final Never #t69 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:148:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n % f();
-            ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z n_z = let final Never #t70 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:149:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n % f();
-            ^" in n.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::%}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::%}(self::f<core::num>());
+  core::int i_i = i.{core::num::%}(self::f<core::int>());
+  core::double i_d = i.{core::num::%}(self::f<core::double>());
   self::mod::X i_x = let final Never #t71 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:154:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i % f();
-            ^" in i.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y i_y = let final Never #t72 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:155:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i % f();
-            ^" in i.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z i_z = let final Never #t73 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:156:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i % f();
-            ^" in i.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::double::%}(self::f<core::num>());
   core::int d_i = let final Never #t74 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:159:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d % f();
-              ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::%}(self::f<core::num>());
   self::mod::X d_x = let final Never #t75 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:161:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d % f();
-            ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y d_y = let final Never #t76 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:162:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d % f();
-            ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z d_z = let final Never #t77 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:163:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d % f();
-            ^" in d.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::%}(self::f<core::num>());
   core::int x_i = let final Never #t78 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:166:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x % f();
-              ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::%}(self::f<core::double>());
   self::mod::X x_x = let final Never #t79 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:168:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x % f();
-            ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y x_y = let final Never #t80 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:169:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x % f();
-            ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z x_z = let final Never #t81 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:170:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x % f();
-            ^" in x.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::%}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::%}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::%}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::%}(self::f<core::num>());
+  core::int y_i = y.{core::num::%}(self::f<core::int>());
+  core::double y_d = y.{core::num::%}(self::f<core::double>());
   self::mod::X y_x = let final Never #t82 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:175:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y % f();
-            ^" in y.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y y_y = let final Never #t83 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:176:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y % f();
-            ^" in y.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z y_z = let final Never #t84 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:177:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y % f();
-            ^" in y.{core::num::%}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::double::%}(self::f<core::num>());
   core::int z_i = let final Never #t85 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:180:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z % f();
-              ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::%}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::%}(self::f<core::num>());
   self::mod::X z_x = let final Never #t86 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:182:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z % f();
-            ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Y z_y = let final Never #t87 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:183:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z % f();
-            ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::mod::Z z_z = let final Never #t88 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:184:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z % f();
-            ^" in z.{core::double::%}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::%}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method remainder<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::remainder::X x, self::remainder::Y y, self::remainder::Z z) → dynamic {
-  core::num n_n = n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
+  core::num n_n = n.{core::num::remainder}(self::f<core::num>());
   core::int n_i = let final Never #t89 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:190:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n.remainder(f());
-              ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double n_d = n.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+              ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double n_d = n.{core::num::remainder}(self::f<core::double>());
   self::remainder::X n_x = let final Never #t90 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:192:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n.remainder(f());
-            ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y n_y = let final Never #t91 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:193:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n.remainder(f());
-            ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z n_z = let final Never #t92 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:194:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n.remainder(f());
-            ^" in n.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
-  core::int i_i = i.{core::num::remainder}(self::f<core::int>()){(core::num) → core::int};
-  core::double i_d = i.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+            ^" in n.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::remainder}(self::f<core::num>());
+  core::int i_i = i.{core::num::remainder}(self::f<core::int>());
+  core::double i_d = i.{core::num::remainder}(self::f<core::double>());
   self::remainder::X i_x = let final Never #t93 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:199:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i.remainder(f());
-            ^" in i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y i_y = let final Never #t94 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:200:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i.remainder(f());
-            ^" in i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z i_z = let final Never #t95 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:201:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i.remainder(f());
-            ^" in i.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::double d_n = d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+            ^" in i.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::double d_n = d.{core::double::remainder}(self::f<core::num>());
   core::int d_i = let final Never #t96 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:204:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int d_i = d.remainder(f());
-              ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+              ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::double::remainder}(self::f<core::num>());
   self::remainder::X d_x = let final Never #t97 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:206:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X d_x = d.remainder(f());
-            ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y d_y = let final Never #t98 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:207:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y d_y = d.remainder(f());
-            ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z d_z = let final Never #t99 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:208:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z d_z = d.remainder(f());
-            ^" in d.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
+            ^" in d.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::remainder}(self::f<core::num>());
   core::int x_i = let final Never #t100 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:211:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x.remainder(f());
-              ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double x_d = x.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+              ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double x_d = x.{core::num::remainder}(self::f<core::double>());
   self::remainder::X x_x = let final Never #t101 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:213:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x.remainder(f());
-            ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y x_y = let final Never #t102 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:214:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x.remainder(f());
-            ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z x_z = let final Never #t103 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:215:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x.remainder(f());
-            ^" in x.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num};
-  core::int y_i = y.{core::num::remainder}(self::f<core::int>()){(core::num) → core::int};
-  core::double y_d = y.{core::num::remainder}(self::f<core::double>()){(core::num) → core::double};
+            ^" in x.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::remainder}(self::f<core::num>());
+  core::int y_i = y.{core::num::remainder}(self::f<core::int>());
+  core::double y_d = y.{core::num::remainder}(self::f<core::double>());
   self::remainder::X y_x = let final Never #t104 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:220:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y.remainder(f());
-            ^" in y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y y_y = let final Never #t105 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:221:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y.remainder(f());
-            ^" in y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z y_z = let final Never #t106 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:222:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y.remainder(f());
-            ^" in y.{core::num::remainder}(self::f<core::num>()){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::double z_n = z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+            ^" in y.{core::num::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::double z_n = z.{core::double::remainder}(self::f<core::num>());
   core::int z_i = let final Never #t107 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:225:15: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
   int z_i = z.remainder(f());
-              ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double};
+              ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::double::remainder}(self::f<core::num>());
   self::remainder::X z_x = let final Never #t108 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:227:13: Error: A value of type 'double' can't be assigned to a variable of type 'X'.
   X z_x = z.remainder(f());
-            ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Y z_y = let final Never #t109 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:228:13: Error: A value of type 'double' can't be assigned to a variable of type 'Y'.
   Y z_y = z.remainder(f());
-            ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::remainder::Z z_z = let final Never #t110 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:229:13: Error: A value of type 'double' can't be assigned to a variable of type 'Z'.
   Z z_z = z.remainder(f());
-            ^" in z.{core::double::remainder}(self::f<core::num>()){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::double::remainder}(self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method clamp<X extends core::num, Y extends core::int, Z extends core::double>(core::num n, core::int i, core::double d, self::clamp::X x, self::clamp::Y y, self::clamp::Z z) → dynamic {
-  core::num n_n = n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+  core::num n_n = n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int n_i = let final Never #t111 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:235:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int n_i = n.clamp(f(), f());
-              ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
+              ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
   core::double n_d = let final Never #t112 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:236:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double n_d = n.clamp(f(), f());
-                 ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X n_x = let final Never #t113 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:237:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X n_x = n.clamp(f(), f());
-            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y n_y = let final Never #t114 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:238:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y n_y = n.clamp(f(), f());
-            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z n_z = let final Never #t115 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:239:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z n_z = n.clamp(f(), f());
-            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num i_n = i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
-  core::int i_i = i.{core::num::clamp}(self::f<core::int>(), self::f<core::int>()){(core::num, core::num) → core::int};
+            ^" in n.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num i_n = i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
+  core::int i_i = i.{core::num::clamp}(self::f<core::int>(), self::f<core::int>());
   core::double i_d = let final Never #t116 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:243:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double i_d = i.clamp(f(), f());
-                 ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X i_x = let final Never #t117 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:244:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X i_x = i.clamp(f(), f());
-            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y i_y = let final Never #t118 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:245:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y i_y = i.clamp(f(), f());
-            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z i_z = let final Never #t119 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:246:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z i_z = i.clamp(f(), f());
-            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num d_n = d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+            ^" in i.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num d_n = d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int d_i = let final Never #t120 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:249:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int d_i = d.clamp(f(), f());
-              ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double d_d = d.{core::num::clamp}(self::f<core::double>(), self::f<core::double>()){(core::num, core::num) → core::double};
+              ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double d_d = d.{core::num::clamp}(self::f<core::double>(), self::f<core::double>());
   self::clamp::X d_x = let final Never #t121 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:251:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X d_x = d.clamp(f(), f());
-            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y d_y = let final Never #t122 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:252:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y d_y = d.clamp(f(), f());
-            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z d_z = let final Never #t123 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:253:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z d_z = d.clamp(f(), f());
-            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num x_n = x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+            ^" in d.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num x_n = x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int x_i = let final Never #t124 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:256:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int x_i = x.clamp(f(), f());
-              ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
+              ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
   core::double x_d = let final Never #t125 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:257:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double x_d = x.clamp(f(), f());
-                 ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X x_x = let final Never #t126 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:258:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X x_x = x.clamp(f(), f());
-            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y x_y = let final Never #t127 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:259:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y x_y = x.clamp(f(), f());
-            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z x_z = let final Never #t128 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:260:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z x_z = x.clamp(f(), f());
-            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num y_n = y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
-  core::int y_i = y.{core::num::clamp}(self::f<core::int>(), self::f<core::int>()){(core::num, core::num) → core::int};
+            ^" in x.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num y_n = y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
+  core::int y_i = y.{core::num::clamp}(self::f<core::int>(), self::f<core::int>());
   core::double y_d = let final Never #t129 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:264:18: Error: A value of type 'num' can't be assigned to a variable of type 'double'.
   double y_d = y.clamp(f(), f());
-                 ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::double;
+                 ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::double;
   self::clamp::X y_x = let final Never #t130 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:265:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X y_x = y.clamp(f(), f());
-            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y y_y = let final Never #t131 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:266:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y y_y = y.clamp(f(), f());
-            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z y_z = let final Never #t132 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:267:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z y_z = y.clamp(f(), f());
-            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
-  core::num z_n = z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num};
+            ^" in y.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
+  core::num z_n = z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>());
   core::int z_i = let final Never #t133 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:270:15: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
   int z_i = z.clamp(f(), f());
-              ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int;
-  core::double z_d = z.{core::num::clamp}(self::f<core::double>(), self::f<core::double>()){(core::num, core::num) → core::double};
+              ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} core::int;
+  core::double z_d = z.{core::num::clamp}(self::f<core::double>(), self::f<core::double>());
   self::clamp::X z_x = let final Never #t134 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:272:13: Error: A value of type 'num' can't be assigned to a variable of type 'X'.
   X z_x = z.clamp(f(), f());
-            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Y z_y = let final Never #t135 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:273:13: Error: A value of type 'num' can't be assigned to a variable of type 'Y'.
   Y z_y = z.clamp(f(), f());
-            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
   self::clamp::Z z_z = let final Never #t136 = invalid-expression "pkg/front_end/testcases/nnbd/numbers_inferred.dart:274:13: Error: A value of type 'num' can't be assigned to a variable of type 'Z'.
   Z z_z = z.clamp(f(), f());
-            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()){(core::num, core::num) → core::num} as{TypeError,ForNonNullableByDefault} Never;
+            ^" in z.{core::num::clamp}(self::f<core::num>(), self::f<core::num>()) as{TypeError,ForNonNullableByDefault} Never;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/potentially_nullable_access.dart.strong.expect b/pkg/front_end/testcases/nnbd/potentially_nullable_access.dart.strong.expect
index d77513d..8c3e68c 100644
--- a/pkg/front_end/testcases/nnbd/potentially_nullable_access.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/potentially_nullable_access.dart.strong.expect
@@ -445,64 +445,64 @@
 }
 static field core::num topLevelBinary = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:37:34: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
 var topLevelBinary = nullableInt + 0;
-                                 ^" in self::nullableInt.{core::num::+}(0){(core::num) → core::num};
+                                 ^" in self::nullableInt.{core::num::+}(0);
 static field core::int topLevelUnary = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:38:21: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
 var topLevelUnary = -nullableInt;
-                    ^" in self::nullableInt.{core::int::unary-}(){() → core::int};
+                    ^" in self::nullableInt.{core::int::unary-}();
 static field dynamic topLevelIndexGet = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:39:35: Error: Operator '[]' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
 var topLevelIndexGet = nullableMap[0];
-                                  ^" in self::nullableMap.{core::Map::[]}{<nullable>}.(0){(core::Object?) → dynamic};
+                                  ^" in self::nullableMap.{core::Map::[]}(0);
 static field core::int topLevelIndexSet = let final core::Map<dynamic, dynamic>? #t4 = self::nullableMap in let final core::int #t5 = 0 in let final core::int #t6 = 1 in let final void #t7 = let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:40:35: Error: Operator '[]=' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
 var topLevelIndexSet = nullableMap[0] = 1;
-                                  ^" in #t4.{core::Map::[]=}{<nullable>}.(#t5, #t6){(dynamic, dynamic) → void} in #t6;
+                                  ^" in #t4.{core::Map::[]=}(#t5, #t6) in #t6;
 static field dynamic topLevelIndexGetSet = let final core::Map<dynamic, dynamic>? #t9 = self::nullableMap in let final core::int #t10 = 0 in let final dynamic #t11 = (let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:41:38: Error: Operator '[]' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
 var topLevelIndexGetSet = nullableMap[0] += 1;
-                                     ^" in #t9.{core::Map::[]}{<nullable>}.(#t10){(core::Object?) → dynamic}){dynamic}.+(1) in let final void #t13 = let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:41:38: Error: Operator '[]=' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
+                                     ^" in #t9.{core::Map::[]}(#t10)).+(1) in let final void #t13 = let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:41:38: Error: Operator '[]=' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
 var topLevelIndexGetSet = nullableMap[0] += 1;
-                                     ^" in #t9.{core::Map::[]=}{<nullable>}.(#t10, #t11){(dynamic, dynamic) → void} in #t11;
+                                     ^" in #t9.{core::Map::[]=}(#t10, #t11) in #t11;
 static field core::int topLevelPropertyGet = let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:42:41: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
 var topLevelPropertyGet = nullableClass.property;
-                                        ^^^^^^^^" in self::nullableClass.{self::Class::property}{<nullable>}.{core::int};
+                                        ^^^^^^^^" in self::nullableClass.{self::Class::property};
 static field core::int topLevelPropertySet = let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:43:41: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
 var topLevelPropertySet = nullableClass.property = 1;
-                                        ^^^^^^^^" in self::nullableClass.{self::Class::property}{<nullable>}. = 1;
+                                        ^^^^^^^^" in self::nullableClass.{self::Class::property} = 1;
 static field core::int topLevelPropertyGetSet = let final self::Class? #t17 = self::nullableClass in let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:44:44: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
 var topLevelPropertyGetSet = nullableClass.property += 1;
-                                           ^^^^^^^^" in #t17.{self::Class::property}{<nullable>}. = (let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:44:44: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
+                                           ^^^^^^^^" in #t17.{self::Class::property} = (let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:44:44: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
 var topLevelPropertyGetSet = nullableClass.property += 1;
-                                           ^^^^^^^^" in #t17.{self::Class::property}{<nullable>}.{core::int}).{core::num::+}(1){(core::num) → core::int};
+                                           ^^^^^^^^" in #t17.{self::Class::property}).{core::num::+}(1);
 static field core::int topLevelMethodInvocation = let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:45:46: Error: Method 'method' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?. instead.
 var topLevelMethodInvocation = nullableClass.method();
-                                             ^^^^^^" in self::nullableClass.{self::Class::method}{<nullable>}.(){() → core::int};
+                                             ^^^^^^" in self::nullableClass.{self::Class::method}();
 static field () → core::int topLevelMethodTearOff = let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:46:43: Error: Property 'method' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
 var topLevelMethodTearOff = nullableClass.method;
-                                          ^^^^^^" in self::nullableClass.{self::Class::method}{<nullable>}.{() → core::int};
+                                          ^^^^^^" in self::nullableClass.{self::Class::method};
 static field dynamic topLevelFunctionImplicitCall = let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:47:52: Error: Can't use an expression of type 'Function?' as a function because it's potentially null.
  - 'Function' is from 'dart:core'.
 Try calling using ?.call instead.
 var topLevelFunctionImplicitCall = nullableFunction();
-                                                   ^" in self::nullableFunction{<nullable>}.();
+                                                   ^" in self::nullableFunction.call();
 static field dynamic topLevelFunctionExplicitCall = let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:48:53: Error: Method 'call' cannot be called on 'Function?' because it is potentially null.
  - 'Function' is from 'dart:core'.
 Try calling using ?. instead.
 var topLevelFunctionExplicitCall = nullableFunction.call();
-                                                    ^^^^" in self::nullableFunction{<nullable>}.();
+                                                    ^^^^" in self::nullableFunction.call();
 static field core::Function? topLevelFunctionTearOff = let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:49:48: Error: Property 'call' cannot be accessed on 'Function?' because it is potentially null.
  - 'Function' is from 'dart:core'.
 Try accessing using ?. instead.
@@ -511,11 +511,11 @@
 static field void topLevelFunctionTypeImplicitCall = let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:50:60: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
 var topLevelFunctionTypeImplicitCall = nullableFunctionType();
-                                                           ^" in self::nullableFunctionType{<nullable>}.(){() →? void};
+                                                           ^" in self::nullableFunctionType.call();
 static field void topLevelFunctionTypeExplicitCall = let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:51:61: Error: Method 'call' cannot be called on 'void Function()?' because it is potentially null.
 Try calling using ?. instead.
 var topLevelFunctionTypeExplicitCall = nullableFunctionType.call();
-                                                            ^^^^" in self::nullableFunctionType{<nullable>}.(){() →? void};
+                                                            ^^^^" in self::nullableFunctionType.call();
 static field () →? void topLevelFunctionTypeTearOff = let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:52:56: Error: Property 'call' cannot be accessed on 'void Function()?' because it is potentially null.
 Try accessing using ?. instead.
 var topLevelFunctionTypeTearOff = nullableFunctionType.call;
@@ -524,22 +524,22 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
 var topLevelFunctionField = nullableClass.functionField();
-                                          ^" in self::nullableClass.{self::Class::functionField}{<nullable>}.{core::Function}();
+                                          ^" in self::nullableClass.{self::Class::functionField}.call();
 static field void topLevelFunctionTypeField = let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:54:47: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
 var topLevelFunctionTypeField = nullableClass.functionTypeField();
-                                              ^" in self::nullableClass.{self::Class::functionTypeField}{<nullable>}.{() → void}(){() → void};
+                                              ^" in self::nullableClass.{self::Class::functionTypeField}.call();
 static field dynamic topLevelFunctionGetter = let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:55:44: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
 var topLevelFunctionGetter = nullableClass.functionGetter();
-                                           ^" in self::nullableClass.{self::Class::functionGetter}{<nullable>}.{core::Function}();
+                                           ^" in self::nullableClass.{self::Class::functionGetter}.call();
 static field void topLevelFunctionTypeGetter = let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:56:48: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
 var topLevelFunctionTypeGetter = nullableClass.functionTypeGetter();
-                                               ^" in self::nullableClass.{self::Class::functionTypeGetter}{<nullable>}.{() → void}(){() → void};
+                                               ^" in self::nullableClass.{self::Class::functionTypeGetter}.call();
 static field core::int topLevelExtensionBinary = let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:58:45: Error: Operator '+' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 var topLevelExtensionBinary = nullableClass + 0;
@@ -559,7 +559,7 @@
 static field core::int topLevelExtensionIndexGetSet = let final self::Class? #t40 = self::nullableClass in let final core::int #t41 = 0 in let final core::int #t42 = (let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:62:49: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 var topLevelExtensionIndexGetSet = nullableClass[0] += 1;
-                                                ^" in self::Extension|[](#t40, #t41)).{core::num::+}(1){(core::num) → core::int} in let final void #t44 = let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:62:49: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
+                                                ^" in self::Extension|[](#t40, #t41)).{core::num::+}(1) in let final void #t44 = let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:62:49: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 var topLevelExtensionIndexGetSet = nullableClass[0] += 1;
                                                 ^" in self::Extension|[]=(#t40, #t41, #t42) in #t42;
@@ -581,7 +581,7 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
 var topLevelExtensionPropertyGetSet = nullableClass.extensionProperty += 1;
-                                                    ^^^^^^^^^^^^^^^^^" in self::Extension|get#extensionProperty(#t50)).{core::num::+}(1){(core::num) → core::int} in let final void #t54 = self::Extension|set#extensionProperty(#t50, #t52) in #t52;
+                                                    ^^^^^^^^^^^^^^^^^" in self::Extension|get#extensionProperty(#t50)).{core::num::+}(1) in let final void #t54 = self::Extension|set#extensionProperty(#t50, #t52) in #t52;
 static field core::int topLevelExtensionMethodInvocation = let final Never #t55 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:66:55: Error: Method 'extensionMethod' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?. instead.
@@ -611,12 +611,12 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
 var topLevelExtensionFunctionGetter = nullableClass.extensionFunctionGetter();
-                                                    ^" in self::Extension|get#extensionFunctionGetter(self::nullableClass)();
+                                                    ^" in self::Extension|get#extensionFunctionGetter(self::nullableClass).call();
 static field void topLevelExtensionFunctionTypeGetter = let final Never #t61 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:73:19: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
     nullableClass.extensionFunctionTypeGetter();
-                  ^" in self::Extension|get#extensionFunctionTypeGetter(self::nullableClass)(){() → void};
+                  ^" in self::Extension|get#extensionFunctionTypeGetter(self::nullableClass).call();
 static method Extension|+(lowered final self::Class #this, core::int value) → core::int
   return 0;
 static method Extension|unary-(lowered final self::Class #this) → core::int
@@ -652,64 +652,64 @@
 static method test() → dynamic {
   core::num localBinary = let final Never #t62 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:76:33: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   var localBinary = nullableInt + 0;
-                                ^" in self::nullableInt.{core::num::+}(0){(core::num) → core::num};
+                                ^" in self::nullableInt.{core::num::+}(0);
   core::int localUnary = let final Never #t63 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:77:20: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   var localUnary = -nullableInt;
-                   ^" in self::nullableInt.{core::int::unary-}(){() → core::int};
+                   ^" in self::nullableInt.{core::int::unary-}();
   dynamic localIndexGet = let final Never #t64 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:78:34: Error: Operator '[]' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
   var localIndexGet = nullableMap[0];
-                                 ^" in self::nullableMap.{core::Map::[]}{<nullable>}.(0){(core::Object?) → dynamic};
+                                 ^" in self::nullableMap.{core::Map::[]}(0);
   core::int localIndexSet = let final core::Map<dynamic, dynamic>? #t65 = self::nullableMap in let final core::int #t66 = 0 in let final core::int #t67 = 1 in let final void #t68 = let final Never #t69 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:79:34: Error: Operator '[]=' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
   var localIndexSet = nullableMap[0] = 1;
-                                 ^" in #t65.{core::Map::[]=}{<nullable>}.(#t66, #t67){(dynamic, dynamic) → void} in #t67;
+                                 ^" in #t65.{core::Map::[]=}(#t66, #t67) in #t67;
   dynamic localIndexGetSet = let final core::Map<dynamic, dynamic>? #t70 = self::nullableMap in let final core::int #t71 = 0 in let final dynamic #t72 = (let final Never #t73 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:80:37: Error: Operator '[]' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
   var localIndexGetSet = nullableMap[0] += 1;
-                                    ^" in #t70.{core::Map::[]}{<nullable>}.(#t71){(core::Object?) → dynamic}){dynamic}.+(1) in let final void #t74 = let final Never #t75 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:80:37: Error: Operator '[]=' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
+                                    ^" in #t70.{core::Map::[]}(#t71)).+(1) in let final void #t74 = let final Never #t75 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:80:37: Error: Operator '[]=' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
   var localIndexGetSet = nullableMap[0] += 1;
-                                    ^" in #t70.{core::Map::[]=}{<nullable>}.(#t71, #t72){(dynamic, dynamic) → void} in #t72;
+                                    ^" in #t70.{core::Map::[]=}(#t71, #t72) in #t72;
   core::int localPropertyGet = let final Never #t76 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:81:40: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
   var localPropertyGet = nullableClass.property;
-                                       ^^^^^^^^" in self::nullableClass.{self::Class::property}{<nullable>}.{core::int};
+                                       ^^^^^^^^" in self::nullableClass.{self::Class::property};
   core::int localPropertySet = let final Never #t77 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:82:40: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
   var localPropertySet = nullableClass.property = 1;
-                                       ^^^^^^^^" in self::nullableClass.{self::Class::property}{<nullable>}. = 1;
+                                       ^^^^^^^^" in self::nullableClass.{self::Class::property} = 1;
   core::int localPropertyGetSet = let final self::Class? #t78 = self::nullableClass in let final Never #t79 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:83:43: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
   var localPropertyGetSet = nullableClass.property += 1;
-                                          ^^^^^^^^" in #t78.{self::Class::property}{<nullable>}. = (let final Never #t80 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:83:43: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
+                                          ^^^^^^^^" in #t78.{self::Class::property} = (let final Never #t80 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:83:43: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
   var localPropertyGetSet = nullableClass.property += 1;
-                                          ^^^^^^^^" in #t78.{self::Class::property}{<nullable>}.{core::int}).{core::num::+}(1){(core::num) → core::int};
+                                          ^^^^^^^^" in #t78.{self::Class::property}).{core::num::+}(1);
   core::int localMethodInvocation = let final Never #t81 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:84:45: Error: Method 'method' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?. instead.
   var localMethodInvocation = nullableClass.method();
-                                            ^^^^^^" in self::nullableClass.{self::Class::method}{<nullable>}.(){() → core::int};
+                                            ^^^^^^" in self::nullableClass.{self::Class::method}();
   () → core::int localMethodTearOff = let final Never #t82 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:85:42: Error: Property 'method' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
   var localMethodTearOff = nullableClass.method;
-                                         ^^^^^^" in self::nullableClass.{self::Class::method}{<nullable>}.{() → core::int};
+                                         ^^^^^^" in self::nullableClass.{self::Class::method};
   dynamic localFunctionImplicitCall = let final Never #t83 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:86:51: Error: Can't use an expression of type 'Function?' as a function because it's potentially null.
  - 'Function' is from 'dart:core'.
 Try calling using ?.call instead.
   var localFunctionImplicitCall = nullableFunction();
-                                                  ^" in self::nullableFunction{<nullable>}.();
+                                                  ^" in self::nullableFunction.call();
   dynamic localFunctionExplicitCall = let final Never #t84 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:87:52: Error: Method 'call' cannot be called on 'Function?' because it is potentially null.
  - 'Function' is from 'dart:core'.
 Try calling using ?. instead.
   var localFunctionExplicitCall = nullableFunction.call();
-                                                   ^^^^" in self::nullableFunction{<nullable>}.();
+                                                   ^^^^" in self::nullableFunction.call();
   core::Function? localFunctionTearOff = let final Never #t85 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:88:47: Error: Property 'call' cannot be accessed on 'Function?' because it is potentially null.
  - 'Function' is from 'dart:core'.
 Try accessing using ?. instead.
@@ -718,11 +718,11 @@
   void localFunctionTypeImplicitCall = let final Never #t86 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:89:59: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   var localFunctionTypeImplicitCall = nullableFunctionType();
-                                                          ^" in self::nullableFunctionType{<nullable>}.(){() →? void};
+                                                          ^" in self::nullableFunctionType.call();
   void localFunctionTypeExplicitCall = let final Never #t87 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:90:60: Error: Method 'call' cannot be called on 'void Function()?' because it is potentially null.
 Try calling using ?. instead.
   var localFunctionTypeExplicitCall = nullableFunctionType.call();
-                                                           ^^^^" in self::nullableFunctionType{<nullable>}.(){() →? void};
+                                                           ^^^^" in self::nullableFunctionType.call();
   () →? void localFunctionTypeTearOff = let final Never #t88 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:91:55: Error: Property 'call' cannot be accessed on 'void Function()?' because it is potentially null.
 Try accessing using ?. instead.
   var localFunctionTypeTearOff = nullableFunctionType.call;
@@ -731,22 +731,22 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
   var localFunctionField = nullableClass.functionField();
-                                         ^" in self::nullableClass.{self::Class::functionField}{<nullable>}.{core::Function}();
+                                         ^" in self::nullableClass.{self::Class::functionField}.call();
   void localFunctionTypeField = let final Never #t90 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:93:46: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
   var localFunctionTypeField = nullableClass.functionTypeField();
-                                             ^" in self::nullableClass.{self::Class::functionTypeField}{<nullable>}.{() → void}(){() → void};
+                                             ^" in self::nullableClass.{self::Class::functionTypeField}.call();
   dynamic localFunctionGetter = let final Never #t91 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:94:43: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
   var localFunctionGetter = nullableClass.functionGetter();
-                                          ^" in self::nullableClass.{self::Class::functionGetter}{<nullable>}.{core::Function}();
+                                          ^" in self::nullableClass.{self::Class::functionGetter}.call();
   void localFunctionTypeGetter = let final Never #t92 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:95:47: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
   var localFunctionTypeGetter = nullableClass.functionTypeGetter();
-                                              ^" in self::nullableClass.{self::Class::functionTypeGetter}{<nullable>}.{() → void}(){() → void};
+                                              ^" in self::nullableClass.{self::Class::functionTypeGetter}.call();
   core::int localExtensionBinary = let final Never #t93 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:97:44: Error: Operator '+' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
   var localExtensionBinary = nullableClass + 0;
@@ -766,7 +766,7 @@
   core::int localExtensionIndexGetSet = let final self::Class? #t101 = self::nullableClass in let final core::int #t102 = 0 in let final core::int #t103 = (let final Never #t104 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:101:48: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
   var localExtensionIndexGetSet = nullableClass[0] += 1;
-                                               ^" in self::Extension|[](#t101, #t102)).{core::num::+}(1){(core::num) → core::int} in let final void #t105 = let final Never #t106 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:101:48: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
+                                               ^" in self::Extension|[](#t101, #t102)).{core::num::+}(1) in let final void #t105 = let final Never #t106 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:101:48: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
   var localExtensionIndexGetSet = nullableClass[0] += 1;
                                                ^" in self::Extension|[]=(#t101, #t102, #t103) in #t103;
@@ -788,7 +788,7 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
   var localExtensionPropertyGetSet = nullableClass.extensionProperty += 1;
-                                                   ^^^^^^^^^^^^^^^^^" in self::Extension|get#extensionProperty(#t111)).{core::num::+}(1){(core::num) → core::int} in let final void #t115 = self::Extension|set#extensionProperty(#t111, #t113) in #t113;
+                                                   ^^^^^^^^^^^^^^^^^" in self::Extension|get#extensionProperty(#t111)).{core::num::+}(1) in let final void #t115 = self::Extension|set#extensionProperty(#t111, #t113) in #t113;
   core::int localExtensionMethodInvocation = let final Never #t116 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:105:54: Error: Method 'extensionMethod' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?. instead.
@@ -818,11 +818,11 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
   var localExtensionFunctionGetter = nullableClass.extensionFunctionGetter();
-                                                   ^" in self::Extension|get#extensionFunctionGetter(self::nullableClass)();
+                                                   ^" in self::Extension|get#extensionFunctionGetter(self::nullableClass).call();
   void localExtensionFunctionTypeGetter = let final Never #t122 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:112:21: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
       nullableClass.extensionFunctionTypeGetter();
-                    ^" in self::Extension|get#extensionFunctionTypeGetter(self::nullableClass)(){() → void};
+                    ^" in self::Extension|get#extensionFunctionTypeGetter(self::nullableClass).call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/potentially_nullable_access.dart.weak.expect b/pkg/front_end/testcases/nnbd/potentially_nullable_access.dart.weak.expect
index d77513d..8c3e68c 100644
--- a/pkg/front_end/testcases/nnbd/potentially_nullable_access.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/potentially_nullable_access.dart.weak.expect
@@ -445,64 +445,64 @@
 }
 static field core::num topLevelBinary = let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:37:34: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
 var topLevelBinary = nullableInt + 0;
-                                 ^" in self::nullableInt.{core::num::+}(0){(core::num) → core::num};
+                                 ^" in self::nullableInt.{core::num::+}(0);
 static field core::int topLevelUnary = let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:38:21: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
 var topLevelUnary = -nullableInt;
-                    ^" in self::nullableInt.{core::int::unary-}(){() → core::int};
+                    ^" in self::nullableInt.{core::int::unary-}();
 static field dynamic topLevelIndexGet = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:39:35: Error: Operator '[]' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
 var topLevelIndexGet = nullableMap[0];
-                                  ^" in self::nullableMap.{core::Map::[]}{<nullable>}.(0){(core::Object?) → dynamic};
+                                  ^" in self::nullableMap.{core::Map::[]}(0);
 static field core::int topLevelIndexSet = let final core::Map<dynamic, dynamic>? #t4 = self::nullableMap in let final core::int #t5 = 0 in let final core::int #t6 = 1 in let final void #t7 = let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:40:35: Error: Operator '[]=' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
 var topLevelIndexSet = nullableMap[0] = 1;
-                                  ^" in #t4.{core::Map::[]=}{<nullable>}.(#t5, #t6){(dynamic, dynamic) → void} in #t6;
+                                  ^" in #t4.{core::Map::[]=}(#t5, #t6) in #t6;
 static field dynamic topLevelIndexGetSet = let final core::Map<dynamic, dynamic>? #t9 = self::nullableMap in let final core::int #t10 = 0 in let final dynamic #t11 = (let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:41:38: Error: Operator '[]' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
 var topLevelIndexGetSet = nullableMap[0] += 1;
-                                     ^" in #t9.{core::Map::[]}{<nullable>}.(#t10){(core::Object?) → dynamic}){dynamic}.+(1) in let final void #t13 = let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:41:38: Error: Operator '[]=' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
+                                     ^" in #t9.{core::Map::[]}(#t10)).+(1) in let final void #t13 = let final Never #t14 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:41:38: Error: Operator '[]=' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
 var topLevelIndexGetSet = nullableMap[0] += 1;
-                                     ^" in #t9.{core::Map::[]=}{<nullable>}.(#t10, #t11){(dynamic, dynamic) → void} in #t11;
+                                     ^" in #t9.{core::Map::[]=}(#t10, #t11) in #t11;
 static field core::int topLevelPropertyGet = let final Never #t15 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:42:41: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
 var topLevelPropertyGet = nullableClass.property;
-                                        ^^^^^^^^" in self::nullableClass.{self::Class::property}{<nullable>}.{core::int};
+                                        ^^^^^^^^" in self::nullableClass.{self::Class::property};
 static field core::int topLevelPropertySet = let final Never #t16 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:43:41: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
 var topLevelPropertySet = nullableClass.property = 1;
-                                        ^^^^^^^^" in self::nullableClass.{self::Class::property}{<nullable>}. = 1;
+                                        ^^^^^^^^" in self::nullableClass.{self::Class::property} = 1;
 static field core::int topLevelPropertyGetSet = let final self::Class? #t17 = self::nullableClass in let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:44:44: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
 var topLevelPropertyGetSet = nullableClass.property += 1;
-                                           ^^^^^^^^" in #t17.{self::Class::property}{<nullable>}. = (let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:44:44: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
+                                           ^^^^^^^^" in #t17.{self::Class::property} = (let final Never #t19 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:44:44: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
 var topLevelPropertyGetSet = nullableClass.property += 1;
-                                           ^^^^^^^^" in #t17.{self::Class::property}{<nullable>}.{core::int}).{core::num::+}(1){(core::num) → core::int};
+                                           ^^^^^^^^" in #t17.{self::Class::property}).{core::num::+}(1);
 static field core::int topLevelMethodInvocation = let final Never #t20 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:45:46: Error: Method 'method' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?. instead.
 var topLevelMethodInvocation = nullableClass.method();
-                                             ^^^^^^" in self::nullableClass.{self::Class::method}{<nullable>}.(){() → core::int};
+                                             ^^^^^^" in self::nullableClass.{self::Class::method}();
 static field () → core::int topLevelMethodTearOff = let final Never #t21 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:46:43: Error: Property 'method' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
 var topLevelMethodTearOff = nullableClass.method;
-                                          ^^^^^^" in self::nullableClass.{self::Class::method}{<nullable>}.{() → core::int};
+                                          ^^^^^^" in self::nullableClass.{self::Class::method};
 static field dynamic topLevelFunctionImplicitCall = let final Never #t22 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:47:52: Error: Can't use an expression of type 'Function?' as a function because it's potentially null.
  - 'Function' is from 'dart:core'.
 Try calling using ?.call instead.
 var topLevelFunctionImplicitCall = nullableFunction();
-                                                   ^" in self::nullableFunction{<nullable>}.();
+                                                   ^" in self::nullableFunction.call();
 static field dynamic topLevelFunctionExplicitCall = let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:48:53: Error: Method 'call' cannot be called on 'Function?' because it is potentially null.
  - 'Function' is from 'dart:core'.
 Try calling using ?. instead.
 var topLevelFunctionExplicitCall = nullableFunction.call();
-                                                    ^^^^" in self::nullableFunction{<nullable>}.();
+                                                    ^^^^" in self::nullableFunction.call();
 static field core::Function? topLevelFunctionTearOff = let final Never #t24 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:49:48: Error: Property 'call' cannot be accessed on 'Function?' because it is potentially null.
  - 'Function' is from 'dart:core'.
 Try accessing using ?. instead.
@@ -511,11 +511,11 @@
 static field void topLevelFunctionTypeImplicitCall = let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:50:60: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
 var topLevelFunctionTypeImplicitCall = nullableFunctionType();
-                                                           ^" in self::nullableFunctionType{<nullable>}.(){() →? void};
+                                                           ^" in self::nullableFunctionType.call();
 static field void topLevelFunctionTypeExplicitCall = let final Never #t26 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:51:61: Error: Method 'call' cannot be called on 'void Function()?' because it is potentially null.
 Try calling using ?. instead.
 var topLevelFunctionTypeExplicitCall = nullableFunctionType.call();
-                                                            ^^^^" in self::nullableFunctionType{<nullable>}.(){() →? void};
+                                                            ^^^^" in self::nullableFunctionType.call();
 static field () →? void topLevelFunctionTypeTearOff = let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:52:56: Error: Property 'call' cannot be accessed on 'void Function()?' because it is potentially null.
 Try accessing using ?. instead.
 var topLevelFunctionTypeTearOff = nullableFunctionType.call;
@@ -524,22 +524,22 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
 var topLevelFunctionField = nullableClass.functionField();
-                                          ^" in self::nullableClass.{self::Class::functionField}{<nullable>}.{core::Function}();
+                                          ^" in self::nullableClass.{self::Class::functionField}.call();
 static field void topLevelFunctionTypeField = let final Never #t29 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:54:47: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
 var topLevelFunctionTypeField = nullableClass.functionTypeField();
-                                              ^" in self::nullableClass.{self::Class::functionTypeField}{<nullable>}.{() → void}(){() → void};
+                                              ^" in self::nullableClass.{self::Class::functionTypeField}.call();
 static field dynamic topLevelFunctionGetter = let final Never #t30 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:55:44: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
 var topLevelFunctionGetter = nullableClass.functionGetter();
-                                           ^" in self::nullableClass.{self::Class::functionGetter}{<nullable>}.{core::Function}();
+                                           ^" in self::nullableClass.{self::Class::functionGetter}.call();
 static field void topLevelFunctionTypeGetter = let final Never #t31 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:56:48: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
 var topLevelFunctionTypeGetter = nullableClass.functionTypeGetter();
-                                               ^" in self::nullableClass.{self::Class::functionTypeGetter}{<nullable>}.{() → void}(){() → void};
+                                               ^" in self::nullableClass.{self::Class::functionTypeGetter}.call();
 static field core::int topLevelExtensionBinary = let final Never #t32 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:58:45: Error: Operator '+' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 var topLevelExtensionBinary = nullableClass + 0;
@@ -559,7 +559,7 @@
 static field core::int topLevelExtensionIndexGetSet = let final self::Class? #t40 = self::nullableClass in let final core::int #t41 = 0 in let final core::int #t42 = (let final Never #t43 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:62:49: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 var topLevelExtensionIndexGetSet = nullableClass[0] += 1;
-                                                ^" in self::Extension|[](#t40, #t41)).{core::num::+}(1){(core::num) → core::int} in let final void #t44 = let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:62:49: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
+                                                ^" in self::Extension|[](#t40, #t41)).{core::num::+}(1) in let final void #t44 = let final Never #t45 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:62:49: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 var topLevelExtensionIndexGetSet = nullableClass[0] += 1;
                                                 ^" in self::Extension|[]=(#t40, #t41, #t42) in #t42;
@@ -581,7 +581,7 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
 var topLevelExtensionPropertyGetSet = nullableClass.extensionProperty += 1;
-                                                    ^^^^^^^^^^^^^^^^^" in self::Extension|get#extensionProperty(#t50)).{core::num::+}(1){(core::num) → core::int} in let final void #t54 = self::Extension|set#extensionProperty(#t50, #t52) in #t52;
+                                                    ^^^^^^^^^^^^^^^^^" in self::Extension|get#extensionProperty(#t50)).{core::num::+}(1) in let final void #t54 = self::Extension|set#extensionProperty(#t50, #t52) in #t52;
 static field core::int topLevelExtensionMethodInvocation = let final Never #t55 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:66:55: Error: Method 'extensionMethod' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?. instead.
@@ -611,12 +611,12 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
 var topLevelExtensionFunctionGetter = nullableClass.extensionFunctionGetter();
-                                                    ^" in self::Extension|get#extensionFunctionGetter(self::nullableClass)();
+                                                    ^" in self::Extension|get#extensionFunctionGetter(self::nullableClass).call();
 static field void topLevelExtensionFunctionTypeGetter = let final Never #t61 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:73:19: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
     nullableClass.extensionFunctionTypeGetter();
-                  ^" in self::Extension|get#extensionFunctionTypeGetter(self::nullableClass)(){() → void};
+                  ^" in self::Extension|get#extensionFunctionTypeGetter(self::nullableClass).call();
 static method Extension|+(lowered final self::Class #this, core::int value) → core::int
   return 0;
 static method Extension|unary-(lowered final self::Class #this) → core::int
@@ -652,64 +652,64 @@
 static method test() → dynamic {
   core::num localBinary = let final Never #t62 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:76:33: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   var localBinary = nullableInt + 0;
-                                ^" in self::nullableInt.{core::num::+}(0){(core::num) → core::num};
+                                ^" in self::nullableInt.{core::num::+}(0);
   core::int localUnary = let final Never #t63 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:77:20: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   var localUnary = -nullableInt;
-                   ^" in self::nullableInt.{core::int::unary-}(){() → core::int};
+                   ^" in self::nullableInt.{core::int::unary-}();
   dynamic localIndexGet = let final Never #t64 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:78:34: Error: Operator '[]' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
   var localIndexGet = nullableMap[0];
-                                 ^" in self::nullableMap.{core::Map::[]}{<nullable>}.(0){(core::Object?) → dynamic};
+                                 ^" in self::nullableMap.{core::Map::[]}(0);
   core::int localIndexSet = let final core::Map<dynamic, dynamic>? #t65 = self::nullableMap in let final core::int #t66 = 0 in let final core::int #t67 = 1 in let final void #t68 = let final Never #t69 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:79:34: Error: Operator '[]=' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
   var localIndexSet = nullableMap[0] = 1;
-                                 ^" in #t65.{core::Map::[]=}{<nullable>}.(#t66, #t67){(dynamic, dynamic) → void} in #t67;
+                                 ^" in #t65.{core::Map::[]=}(#t66, #t67) in #t67;
   dynamic localIndexGetSet = let final core::Map<dynamic, dynamic>? #t70 = self::nullableMap in let final core::int #t71 = 0 in let final dynamic #t72 = (let final Never #t73 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:80:37: Error: Operator '[]' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
   var localIndexGetSet = nullableMap[0] += 1;
-                                    ^" in #t70.{core::Map::[]}{<nullable>}.(#t71){(core::Object?) → dynamic}){dynamic}.+(1) in let final void #t74 = let final Never #t75 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:80:37: Error: Operator '[]=' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
+                                    ^" in #t70.{core::Map::[]}(#t71)).+(1) in let final void #t74 = let final Never #t75 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:80:37: Error: Operator '[]=' cannot be called on 'Map<dynamic, dynamic>?' because it is potentially null.
  - 'Map' is from 'dart:core'.
   var localIndexGetSet = nullableMap[0] += 1;
-                                    ^" in #t70.{core::Map::[]=}{<nullable>}.(#t71, #t72){(dynamic, dynamic) → void} in #t72;
+                                    ^" in #t70.{core::Map::[]=}(#t71, #t72) in #t72;
   core::int localPropertyGet = let final Never #t76 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:81:40: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
   var localPropertyGet = nullableClass.property;
-                                       ^^^^^^^^" in self::nullableClass.{self::Class::property}{<nullable>}.{core::int};
+                                       ^^^^^^^^" in self::nullableClass.{self::Class::property};
   core::int localPropertySet = let final Never #t77 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:82:40: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
   var localPropertySet = nullableClass.property = 1;
-                                       ^^^^^^^^" in self::nullableClass.{self::Class::property}{<nullable>}. = 1;
+                                       ^^^^^^^^" in self::nullableClass.{self::Class::property} = 1;
   core::int localPropertyGetSet = let final self::Class? #t78 = self::nullableClass in let final Never #t79 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:83:43: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
   var localPropertyGetSet = nullableClass.property += 1;
-                                          ^^^^^^^^" in #t78.{self::Class::property}{<nullable>}. = (let final Never #t80 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:83:43: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
+                                          ^^^^^^^^" in #t78.{self::Class::property} = (let final Never #t80 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:83:43: Error: Property 'property' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
   var localPropertyGetSet = nullableClass.property += 1;
-                                          ^^^^^^^^" in #t78.{self::Class::property}{<nullable>}.{core::int}).{core::num::+}(1){(core::num) → core::int};
+                                          ^^^^^^^^" in #t78.{self::Class::property}).{core::num::+}(1);
   core::int localMethodInvocation = let final Never #t81 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:84:45: Error: Method 'method' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?. instead.
   var localMethodInvocation = nullableClass.method();
-                                            ^^^^^^" in self::nullableClass.{self::Class::method}{<nullable>}.(){() → core::int};
+                                            ^^^^^^" in self::nullableClass.{self::Class::method}();
   () → core::int localMethodTearOff = let final Never #t82 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:85:42: Error: Property 'method' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
   var localMethodTearOff = nullableClass.method;
-                                         ^^^^^^" in self::nullableClass.{self::Class::method}{<nullable>}.{() → core::int};
+                                         ^^^^^^" in self::nullableClass.{self::Class::method};
   dynamic localFunctionImplicitCall = let final Never #t83 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:86:51: Error: Can't use an expression of type 'Function?' as a function because it's potentially null.
  - 'Function' is from 'dart:core'.
 Try calling using ?.call instead.
   var localFunctionImplicitCall = nullableFunction();
-                                                  ^" in self::nullableFunction{<nullable>}.();
+                                                  ^" in self::nullableFunction.call();
   dynamic localFunctionExplicitCall = let final Never #t84 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:87:52: Error: Method 'call' cannot be called on 'Function?' because it is potentially null.
  - 'Function' is from 'dart:core'.
 Try calling using ?. instead.
   var localFunctionExplicitCall = nullableFunction.call();
-                                                   ^^^^" in self::nullableFunction{<nullable>}.();
+                                                   ^^^^" in self::nullableFunction.call();
   core::Function? localFunctionTearOff = let final Never #t85 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:88:47: Error: Property 'call' cannot be accessed on 'Function?' because it is potentially null.
  - 'Function' is from 'dart:core'.
 Try accessing using ?. instead.
@@ -718,11 +718,11 @@
   void localFunctionTypeImplicitCall = let final Never #t86 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:89:59: Error: Can't use an expression of type 'void Function()?' as a function because it's potentially null.
 Try calling using ?.call instead.
   var localFunctionTypeImplicitCall = nullableFunctionType();
-                                                          ^" in self::nullableFunctionType{<nullable>}.(){() →? void};
+                                                          ^" in self::nullableFunctionType.call();
   void localFunctionTypeExplicitCall = let final Never #t87 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:90:60: Error: Method 'call' cannot be called on 'void Function()?' because it is potentially null.
 Try calling using ?. instead.
   var localFunctionTypeExplicitCall = nullableFunctionType.call();
-                                                           ^^^^" in self::nullableFunctionType{<nullable>}.(){() →? void};
+                                                           ^^^^" in self::nullableFunctionType.call();
   () →? void localFunctionTypeTearOff = let final Never #t88 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:91:55: Error: Property 'call' cannot be accessed on 'void Function()?' because it is potentially null.
 Try accessing using ?. instead.
   var localFunctionTypeTearOff = nullableFunctionType.call;
@@ -731,22 +731,22 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
   var localFunctionField = nullableClass.functionField();
-                                         ^" in self::nullableClass.{self::Class::functionField}{<nullable>}.{core::Function}();
+                                         ^" in self::nullableClass.{self::Class::functionField}.call();
   void localFunctionTypeField = let final Never #t90 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:93:46: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
   var localFunctionTypeField = nullableClass.functionTypeField();
-                                             ^" in self::nullableClass.{self::Class::functionTypeField}{<nullable>}.{() → void}(){() → void};
+                                             ^" in self::nullableClass.{self::Class::functionTypeField}.call();
   dynamic localFunctionGetter = let final Never #t91 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:94:43: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
   var localFunctionGetter = nullableClass.functionGetter();
-                                          ^" in self::nullableClass.{self::Class::functionGetter}{<nullable>}.{core::Function}();
+                                          ^" in self::nullableClass.{self::Class::functionGetter}.call();
   void localFunctionTypeGetter = let final Never #t92 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:95:47: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
   var localFunctionTypeGetter = nullableClass.functionTypeGetter();
-                                              ^" in self::nullableClass.{self::Class::functionTypeGetter}{<nullable>}.{() → void}(){() → void};
+                                              ^" in self::nullableClass.{self::Class::functionTypeGetter}.call();
   core::int localExtensionBinary = let final Never #t93 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:97:44: Error: Operator '+' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
   var localExtensionBinary = nullableClass + 0;
@@ -766,7 +766,7 @@
   core::int localExtensionIndexGetSet = let final self::Class? #t101 = self::nullableClass in let final core::int #t102 = 0 in let final core::int #t103 = (let final Never #t104 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:101:48: Error: Operator '[]' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
   var localExtensionIndexGetSet = nullableClass[0] += 1;
-                                               ^" in self::Extension|[](#t101, #t102)).{core::num::+}(1){(core::num) → core::int} in let final void #t105 = let final Never #t106 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:101:48: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
+                                               ^" in self::Extension|[](#t101, #t102)).{core::num::+}(1) in let final void #t105 = let final Never #t106 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:101:48: Error: Operator '[]=' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
   var localExtensionIndexGetSet = nullableClass[0] += 1;
                                                ^" in self::Extension|[]=(#t101, #t102, #t103) in #t103;
@@ -788,7 +788,7 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try accessing using ?. instead.
   var localExtensionPropertyGetSet = nullableClass.extensionProperty += 1;
-                                                   ^^^^^^^^^^^^^^^^^" in self::Extension|get#extensionProperty(#t111)).{core::num::+}(1){(core::num) → core::int} in let final void #t115 = self::Extension|set#extensionProperty(#t111, #t113) in #t113;
+                                                   ^^^^^^^^^^^^^^^^^" in self::Extension|get#extensionProperty(#t111)).{core::num::+}(1) in let final void #t115 = self::Extension|set#extensionProperty(#t111, #t113) in #t113;
   core::int localExtensionMethodInvocation = let final Never #t116 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:105:54: Error: Method 'extensionMethod' cannot be called on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?. instead.
@@ -818,11 +818,11 @@
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
   var localExtensionFunctionGetter = nullableClass.extensionFunctionGetter();
-                                                   ^" in self::Extension|get#extensionFunctionGetter(self::nullableClass)();
+                                                   ^" in self::Extension|get#extensionFunctionGetter(self::nullableClass).call();
   void localExtensionFunctionTypeGetter = let final Never #t122 = invalid-expression "pkg/front_end/testcases/nnbd/potentially_nullable_access.dart:112:21: Error: Can't use an expression of type 'Class?' as a function because it's potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/potentially_nullable_access.dart'.
 Try calling using ?.call instead.
       nullableClass.extensionFunctionTypeGetter();
-                    ^" in self::Extension|get#extensionFunctionTypeGetter(self::nullableClass)(){() → void};
+                    ^" in self::Extension|get#extensionFunctionTypeGetter(self::nullableClass).call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.expect b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.expect
index 987bcb5..84d1907 100644
--- a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.expect
@@ -145,82 +145,82 @@
     late final self::Class self;
     if(self::b)
       self = this;
-    let final self::Map<self::Class, self::Class> #t1 = map in #t1.{self::Map::[]}(this){(self::Class) → self::Class} == null ?{self::Class} #t1.{self::Map::[]=}(this, this){(self::Class, self::Class) → void} : null;
-    let final self::Map<self::Class, self::Class> #t2 = map in let final self::Class #t3 = self in #t2.{self::Map::[]}(#t3){(self::Class) → self::Class} == null ?{self::Class} #t2.{self::Map::[]=}(#t3, self){(self::Class, self::Class) → void} : null;
-    map.{self::Map::[]=}(this, this){(self::Class, self::Class) → void};
-    map.{self::Map::[]=}(self, self){(self::Class, self::Class) → void};
-    map.{self::Map::[]}(this){(self::Class) → self::Class};
-    map.{self::Map::[]}(self){(self::Class) → self::Class};
-    let final self::Map<self::Class, self::Class> #t4 = map in #t4.{self::Map::[]=}(this, #t4.{self::Map::[]}(this){(self::Class) → self::Class}.{self::Class::+}(this){(self::Class) → self::Class}){(self::Class, self::Class) → void};
-    let final self::Map<self::Class, self::Class> #t5 = map in let final self::Class #t6 = self in #t5.{self::Map::[]=}(#t6, #t5.{self::Map::[]}(#t6){(self::Class) → self::Class}.{self::Class::+}(self){(self::Class) → self::Class}){(self::Class, self::Class) → void};
+    let final self::Map<self::Class, self::Class> #t1 = map in #t1.{self::Map::[]}(this).{core::Object::==}(null) ?{self::Class} #t1.{self::Map::[]=}(this, this) : null;
+    let final self::Map<self::Class, self::Class> #t2 = map in let final self::Class #t3 = self in #t2.{self::Map::[]}(#t3).{core::Object::==}(null) ?{self::Class} #t2.{self::Map::[]=}(#t3, self) : null;
+    map.{self::Map::[]=}(this, this);
+    map.{self::Map::[]=}(self, self);
+    map.{self::Map::[]}(this);
+    map.{self::Map::[]}(self);
+    let final self::Map<self::Class, self::Class> #t4 = map in #t4.{self::Map::[]=}(this, #t4.{self::Map::[]}(this).{self::Class::+}(this));
+    let final self::Map<self::Class, self::Class> #t5 = map in let final self::Class #t6 = self in #t5.{self::Map::[]=}(#t6, #t5.{self::Map::[]}(#t6).{self::Class::+}(self));
   }
   method indexGetSetForValue(self::Map<self::Class, self::Class> map) → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Map<self::Class, self::Class> #t7 = map in let final self::Class #t8 = #t7.{self::Map::[]}(this){(self::Class) → self::Class} in #t8 == null ?{self::Class} let final void #t9 = #t7.{self::Map::[]=}(this, this){(self::Class, self::Class) → void} in this : #t8;
-    v = let final self::Map<self::Class, self::Class> #t10 = map in let final self::Class #t11 = self in let final self::Class #t12 = #t10.{self::Map::[]}(#t11){(self::Class) → self::Class} in #t12 == null ?{self::Class} let final self::Class #t13 = self in let final void #t14 = #t10.{self::Map::[]=}(#t11, #t13){(self::Class, self::Class) → void} in #t13 : #t12;
-    v = let final self::Map<self::Class, self::Class> #t15 = map in let final void #t16 = #t15.{self::Map::[]=}(this, this){(self::Class, self::Class) → void} in this;
-    v = let final self::Map<self::Class, self::Class> #t17 = map in let final self::Class #t18 = self in let final self::Class #t19 = self in let final void #t20 = #t17.{self::Map::[]=}(#t18, #t19){(self::Class, self::Class) → void} in #t19;
-    v = map.{self::Map::[]}(this){(self::Class) → self::Class};
-    v = map.{self::Map::[]}(self){(self::Class) → self::Class};
-    v = let final self::Map<self::Class, self::Class> #t21 = map in let final self::Class #t22 = #t21.{self::Map::[]}(this){(self::Class) → self::Class}.{self::Class::+}(this){(self::Class) → self::Class} in let final void #t23 = #t21.{self::Map::[]=}(this, #t22){(self::Class, self::Class) → void} in #t22;
-    v = let final self::Map<self::Class, self::Class> #t24 = map in let final self::Class #t25 = self in let final self::Class #t26 = #t24.{self::Map::[]}(#t25){(self::Class) → self::Class}.{self::Class::+}(self){(self::Class) → self::Class} in let final void #t27 = #t24.{self::Map::[]=}(#t25, #t26){(self::Class, self::Class) → void} in #t26;
+    v = let final self::Map<self::Class, self::Class> #t7 = map in let final self::Class #t8 = #t7.{self::Map::[]}(this) in #t8.{core::Object::==}(null) ?{self::Class} let final void #t9 = #t7.{self::Map::[]=}(this, this) in this : #t8;
+    v = let final self::Map<self::Class, self::Class> #t10 = map in let final self::Class #t11 = self in let final self::Class #t12 = #t10.{self::Map::[]}(#t11) in #t12.{core::Object::==}(null) ?{self::Class} let final self::Class #t13 = self in let final void #t14 = #t10.{self::Map::[]=}(#t11, #t13) in #t13 : #t12;
+    v = let final self::Map<self::Class, self::Class> #t15 = map in let final void #t16 = #t15.{self::Map::[]=}(this, this) in this;
+    v = let final self::Map<self::Class, self::Class> #t17 = map in let final self::Class #t18 = self in let final self::Class #t19 = self in let final void #t20 = #t17.{self::Map::[]=}(#t18, #t19) in #t19;
+    v = map.{self::Map::[]}(this);
+    v = map.{self::Map::[]}(self);
+    v = let final self::Map<self::Class, self::Class> #t21 = map in let final self::Class #t22 = #t21.{self::Map::[]}(this).{self::Class::+}(this) in let final void #t23 = #t21.{self::Map::[]=}(this, #t22) in #t22;
+    v = let final self::Map<self::Class, self::Class> #t24 = map in let final self::Class #t25 = self in let final self::Class #t26 = #t24.{self::Map::[]}(#t25).{self::Class::+}(self) in let final void #t27 = #t24.{self::Map::[]=}(#t25, #t26) in #t26;
   }
   method implicitExtensionGetSetForEffect(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
-    let final core::int #t28 = i in self::Extension|[](#t28, this) == null ?{self::Class} self::Extension|[]=(#t28, this, this) : null;
-    let final core::int #t29 = i in let final self::Class #t30 = self in self::Extension|[](#t29, #t30) == null ?{self::Class} self::Extension|[]=(#t29, #t30, self) : null;
+    let final core::int #t28 = i in self::Extension|[](#t28, this).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t28, this, this) : null;
+    let final core::int #t29 = i in let final self::Class #t30 = self in self::Extension|[](#t29, #t30).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t29, #t30, self) : null;
     self::Extension|[]=(i, this, this);
     self::Extension|[]=(i, self, self);
     self::Extension|[](i, this);
     self::Extension|[](i, self);
-    let final core::int #t31 = i in self::Extension|[]=(#t31, this, self::Extension|[](#t31, this).{self::Class::+}(this){(self::Class) → self::Class});
-    let final core::int #t32 = i in let final self::Class #t33 = self in self::Extension|[]=(#t32, #t33, self::Extension|[](#t32, #t33).{self::Class::+}(self){(self::Class) → self::Class});
+    let final core::int #t31 = i in self::Extension|[]=(#t31, this, self::Extension|[](#t31, this).{self::Class::+}(this));
+    let final core::int #t32 = i in let final self::Class #t33 = self in self::Extension|[]=(#t32, #t33, self::Extension|[](#t32, #t33).{self::Class::+}(self));
   }
   method implicitExtensionGetSetForValue(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final core::int #t34 = i in let final self::Class #t35 = self::Extension|[](#t34, this) in #t35 == null ?{self::Class} let final void #t36 = self::Extension|[]=(#t34, this, this) in this : #t35;
-    v = let final core::int #t37 = i in let final self::Class #t38 = self in let final self::Class #t39 = self::Extension|[](#t37, #t38) in #t39 == null ?{self::Class} let final self::Class #t40 = self in let final void #t41 = self::Extension|[]=(#t37, #t38, #t40) in #t40 : #t39;
+    v = let final core::int #t34 = i in let final self::Class #t35 = self::Extension|[](#t34, this) in #t35.{core::Object::==}(null) ?{self::Class} let final void #t36 = self::Extension|[]=(#t34, this, this) in this : #t35;
+    v = let final core::int #t37 = i in let final self::Class #t38 = self in let final self::Class #t39 = self::Extension|[](#t37, #t38) in #t39.{core::Object::==}(null) ?{self::Class} let final self::Class #t40 = self in let final void #t41 = self::Extension|[]=(#t37, #t38, #t40) in #t40 : #t39;
     v = let final core::int #t42 = i in let final void #t43 = self::Extension|[]=(#t42, this, this) in this;
     v = let final core::int #t44 = i in let final self::Class #t45 = self in let final self::Class #t46 = self in let final void #t47 = self::Extension|[]=(#t44, #t45, #t46) in #t46;
     v = self::Extension|[](i, this);
     v = self::Extension|[](i, self);
-    v = let final core::int #t48 = i in let final self::Class #t49 = self::Extension|[](#t48, this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t50 = self::Extension|[]=(#t48, this, #t49) in #t49;
-    v = let final core::int #t51 = i in let final self::Class #t52 = self in let final self::Class #t53 = self::Extension|[](#t51, #t52).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t54 = self::Extension|[]=(#t51, #t52, #t53) in #t53;
+    v = let final core::int #t48 = i in let final self::Class #t49 = self::Extension|[](#t48, this).{self::Class::+}(this) in let final void #t50 = self::Extension|[]=(#t48, this, #t49) in #t49;
+    v = let final core::int #t51 = i in let final self::Class #t52 = self in let final self::Class #t53 = self::Extension|[](#t51, #t52).{self::Class::+}(self) in let final void #t54 = self::Extension|[]=(#t51, #t52, #t53) in #t53;
   }
   method explicitExtensionGetSetForEffect(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
-    let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class} self::Extension|[]=(#t55, this, this) : null;
-    let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null;
+    let final core::int #t55 = i in self::Extension|[](#t55, this).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t55, this, this) : null;
+    let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null;
     self::Extension|[]=(i, this, this);
     self::Extension|[]=(i, self, self);
     self::Extension|[](i, this);
     self::Extension|[](i, self);
-    let final core::int #t58 = i in self::Extension|[]=(#t58, this, self::Extension|[](#t58, this).{self::Class::+}(this){(self::Class) → self::Class});
-    let final core::int #t59 = i in let final self::Class #t60 = self in self::Extension|[]=(#t59, #t60, self::Extension|[](#t59, #t60).{self::Class::+}(self){(self::Class) → self::Class});
+    let final core::int #t58 = i in self::Extension|[]=(#t58, this, self::Extension|[](#t58, this).{self::Class::+}(this));
+    let final core::int #t59 = i in let final self::Class #t60 = self in self::Extension|[]=(#t59, #t60, self::Extension|[](#t59, #t60).{self::Class::+}(self));
   }
   method explicitExtensionGetSetForValue(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final core::int #t61 = i in let final self::Class #t62 = self::Extension|[](#t61, this) in #t62 == null ?{self::Class} let final void #t63 = self::Extension|[]=(#t61, this, this) in this : #t62;
-    v = let final core::int #t64 = i in let final self::Class #t65 = self in let final self::Class #t66 = self::Extension|[](#t64, #t65) in #t66 == null ?{self::Class} let final self::Class #t67 = self in let final void #t68 = self::Extension|[]=(#t64, #t65, #t67) in #t67 : #t66;
+    v = let final core::int #t61 = i in let final self::Class #t62 = self::Extension|[](#t61, this) in #t62.{core::Object::==}(null) ?{self::Class} let final void #t63 = self::Extension|[]=(#t61, this, this) in this : #t62;
+    v = let final core::int #t64 = i in let final self::Class #t65 = self in let final self::Class #t66 = self::Extension|[](#t64, #t65) in #t66.{core::Object::==}(null) ?{self::Class} let final self::Class #t67 = self in let final void #t68 = self::Extension|[]=(#t64, #t65, #t67) in #t67 : #t66;
     v = let final core::int #t69 = i in let final void #t70 = self::Extension|[]=(#t69, this, this) in this;
     v = let final core::int #t71 = i in let final self::Class #t72 = self in let final void #t73 = self::Extension|[]=(#t71, self, #t72) in #t72;
     v = self::Extension|[](i, this);
     v = self::Extension|[](i, self);
-    v = let final core::int #t74 = i in let final self::Class #t75 = self::Extension|[](#t74, this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t76 = self::Extension|[]=(#t74, this, #t75) in #t75;
-    v = let final core::int #t77 = i in let final self::Class #t78 = self in let final self::Class #t79 = self::Extension|[](#t77, #t78).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t80 = self::Extension|[]=(#t77, #t78, #t79) in #t79;
+    v = let final core::int #t74 = i in let final self::Class #t75 = self::Extension|[](#t74, this).{self::Class::+}(this) in let final void #t76 = self::Extension|[]=(#t74, this, #t75) in #t75;
+    v = let final core::int #t77 = i in let final self::Class #t78 = self in let final self::Class #t79 = self::Extension|[](#t77, #t78).{self::Class::+}(self) in let final void #t80 = self::Extension|[]=(#t77, #t78, #t79) in #t79;
   }
 }
 class Subclass extends self::Class {
@@ -231,28 +231,28 @@
     late final self::Class self;
     if(self::b)
       self = this;
-    super.{self::Class::[]}(this) == null ?{self::Class} super.{self::Class::[]=}(this, this) : null;
-    let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class} super.{self::Class::[]=}(#t81, self) : null;
+    super.{self::Class::[]}(this).{core::Object::==}(null) ?{self::Class} super.{self::Class::[]=}(this, this) : null;
+    let final self::Class #t81 = self in super.{self::Class::[]}(#t81).{core::Object::==}(null) ?{self::Class} super.{self::Class::[]=}(#t81, self) : null;
     super.{self::Class::[]=}(this, this);
     super.{self::Class::[]=}(self, self);
     super.{self::Class::[]}(this);
     super.{self::Class::[]}(self);
-    super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class) → self::Class});
-    let final self::Class #t82 = self in super.{self::Class::[]=}(#t82, super.{self::Class::[]}(#t82).{self::Class::+}(self){(self::Class) → self::Class});
+    super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this));
+    let final self::Class #t82 = self in super.{self::Class::[]=}(#t82, super.{self::Class::[]}(#t82).{self::Class::+}(self));
   }
   method superIndexGetSetForValue() → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Class #t83 = super.{self::Class::[]}(this) in #t83 == null ?{self::Class} let final void #t84 = super.{self::Class::[]=}(this, this) in this : #t83;
-    v = let final self::Class #t85 = self in let final self::Class #t86 = super.{self::Class::[]}(#t85) in #t86 == null ?{self::Class} let final self::Class #t87 = self in let final void #t88 = super.{self::Class::[]=}(#t85, #t87) in #t87 : #t86;
+    v = let final self::Class #t83 = super.{self::Class::[]}(this) in #t83.{core::Object::==}(null) ?{self::Class} let final void #t84 = super.{self::Class::[]=}(this, this) in this : #t83;
+    v = let final self::Class #t85 = self in let final self::Class #t86 = super.{self::Class::[]}(#t85) in #t86.{core::Object::==}(null) ?{self::Class} let final self::Class #t87 = self in let final void #t88 = super.{self::Class::[]=}(#t85, #t87) in #t87 : #t86;
     v = let final void #t89 = super.{self::Class::[]=}(this, this) in this;
     v = let final self::Class #t90 = self in let final self::Class #t91 = self in let final void #t92 = super.{self::Class::[]=}(#t90, #t91) in #t91;
     v = super.{self::Class::[]}(this);
     v = super.{self::Class::[]}(self);
-    v = let final self::Class #t93 = super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t94 = super.{self::Class::[]=}(this, #t93) in #t93;
-    v = let final self::Class #t95 = self in let final self::Class #t96 = super.{self::Class::[]}(#t95).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t97 = super.{self::Class::[]=}(#t95, #t96) in #t96;
+    v = let final self::Class #t93 = super.{self::Class::[]}(this).{self::Class::+}(this) in let final void #t94 = super.{self::Class::[]=}(this, #t93) in #t93;
+    v = let final self::Class #t95 = self in let final self::Class #t96 = super.{self::Class::[]}(#t95).{self::Class::+}(self) in let final void #t97 = super.{self::Class::[]=}(#t95, #t96) in #t96;
   }
 }
 class Class2 extends core::Object {
@@ -265,55 +265,55 @@
     late final self::Class2 self;
     if(self::b)
       self = this;
-    self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
-    let final self::Class2 #t98 = self in let final self::Class2 #t99 = self in self::Extension2|[](#t98, #t99) == null ?{self::Class2} self::Extension2|[]=(#t98, #t99, self) : null;
+    self::Extension2|[](this, this).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
+    let final self::Class2 #t98 = self in let final self::Class2 #t99 = self in self::Extension2|[](#t98, #t99).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(#t98, #t99, self) : null;
     self::Extension2|[]=(this, this, this);
     self::Extension2|[]=(self, self, self);
     self::Extension2|[](this, this);
     self::Extension2|[](self, self);
-    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2});
-    let final self::Class2 #t100 = self in let final self::Class2 #t101 = self in self::Extension2|[]=(#t100, #t101, self::Extension2|[](#t100, #t101).{self::Class2::+}(self){(self::Class2) → self::Class2});
+    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this));
+    let final self::Class2 #t100 = self in let final self::Class2 #t101 = self in self::Extension2|[]=(#t100, #t101, self::Extension2|[](#t100, #t101).{self::Class2::+}(self));
   }
   method implicitExtensionGetSetForValue() → void {
     late final self::Class2 self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Class2 #t102 = self::Extension2|[](this, this) in #t102 == null ?{self::Class2} let final void #t103 = self::Extension2|[]=(this, this, this) in this : #t102;
-    v = let final self::Class2 #t104 = self in let final self::Class2 #t105 = self in let final self::Class2 #t106 = self::Extension2|[](#t104, #t105) in #t106 == null ?{self::Class2} let final self::Class2 #t107 = self in let final void #t108 = self::Extension2|[]=(#t104, #t105, #t107) in #t107 : #t106;
+    v = let final self::Class2 #t102 = self::Extension2|[](this, this) in #t102.{core::Object::==}(null) ?{self::Class2} let final void #t103 = self::Extension2|[]=(this, this, this) in this : #t102;
+    v = let final self::Class2 #t104 = self in let final self::Class2 #t105 = self in let final self::Class2 #t106 = self::Extension2|[](#t104, #t105) in #t106.{core::Object::==}(null) ?{self::Class2} let final self::Class2 #t107 = self in let final void #t108 = self::Extension2|[]=(#t104, #t105, #t107) in #t107 : #t106;
     v = let final void #t109 = self::Extension2|[]=(this, this, this) in this;
     v = let final self::Class2 #t110 = self in let final self::Class2 #t111 = self in let final self::Class2 #t112 = self in let final void #t113 = self::Extension2|[]=(#t110, #t111, #t112) in #t112;
     v = self::Extension2|[](this, this);
     v = self::Extension2|[](self, self);
-    v = let final self::Class2 #t114 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2} in let final void #t115 = self::Extension2|[]=(this, this, #t114) in #t114;
-    v = let final self::Class2 #t116 = self in let final self::Class2 #t117 = self in let final self::Class2 #t118 = self::Extension2|[](#t116, #t117).{self::Class2::+}(self){(self::Class2) → self::Class2} in let final void #t119 = self::Extension2|[]=(#t116, #t117, #t118) in #t118;
+    v = let final self::Class2 #t114 = self::Extension2|[](this, this).{self::Class2::+}(this) in let final void #t115 = self::Extension2|[]=(this, this, #t114) in #t114;
+    v = let final self::Class2 #t116 = self in let final self::Class2 #t117 = self in let final self::Class2 #t118 = self::Extension2|[](#t116, #t117).{self::Class2::+}(self) in let final void #t119 = self::Extension2|[]=(#t116, #t117, #t118) in #t118;
   }
   method explicitExtensionGetSetForEffect() → void {
     late final self::Class2 self;
     if(self::b)
       self = this;
-    self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
-    let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null;
+    self::Extension2|[](this, this).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
+    let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null;
     self::Extension2|[]=(this, this, this);
     self::Extension2|[]=(self, self, self);
     self::Extension2|[](this, this);
     self::Extension2|[](self, self);
-    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2});
-    let final self::Class2 #t122 = self in let final self::Class2 #t123 = self in self::Extension2|[]=(#t122, #t123, self::Extension2|[](#t122, #t123).{self::Class2::+}(self){(self::Class2) → self::Class2});
+    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this));
+    let final self::Class2 #t122 = self in let final self::Class2 #t123 = self in self::Extension2|[]=(#t122, #t123, self::Extension2|[](#t122, #t123).{self::Class2::+}(self));
   }
   method explicitExtensionGetSetForValue() → void {
     late final self::Class2 self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Class2 #t124 = self::Extension2|[](this, this) in #t124 == null ?{self::Class2} let final void #t125 = self::Extension2|[]=(this, this, this) in this : #t124;
-    v = let final self::Class2 #t126 = self in let final self::Class2 #t127 = self in let final self::Class2 #t128 = self::Extension2|[](#t126, #t127) in #t128 == null ?{self::Class2} let final self::Class2 #t129 = self in let final void #t130 = self::Extension2|[]=(#t126, #t127, #t129) in #t129 : #t128;
+    v = let final self::Class2 #t124 = self::Extension2|[](this, this) in #t124.{core::Object::==}(null) ?{self::Class2} let final void #t125 = self::Extension2|[]=(this, this, this) in this : #t124;
+    v = let final self::Class2 #t126 = self in let final self::Class2 #t127 = self in let final self::Class2 #t128 = self::Extension2|[](#t126, #t127) in #t128.{core::Object::==}(null) ?{self::Class2} let final self::Class2 #t129 = self in let final void #t130 = self::Extension2|[]=(#t126, #t127, #t129) in #t129 : #t128;
     v = let final void #t131 = self::Extension2|[]=(this, this, this) in this;
     v = let final self::Class2 #t132 = self in let final self::Class2 #t133 = self in let final void #t134 = self::Extension2|[]=(#t132, self, #t133) in #t133;
     v = self::Extension2|[](this, this);
     v = self::Extension2|[](self, self);
-    v = let final self::Class2 #t135 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2} in let final void #t136 = self::Extension2|[]=(this, this, #t135) in #t135;
-    v = let final self::Class2 #t137 = self in let final self::Class2 #t138 = self in let final self::Class2 #t139 = self::Extension2|[](#t137, #t138).{self::Class2::+}(self){(self::Class2) → self::Class2} in let final void #t140 = self::Extension2|[]=(#t137, #t138, #t139) in #t139;
+    v = let final self::Class2 #t135 = self::Extension2|[](this, this).{self::Class2::+}(this) in let final void #t136 = self::Extension2|[]=(this, this, #t135) in #t135;
+    v = let final self::Class2 #t137 = self in let final self::Class2 #t138 = self in let final self::Class2 #t139 = self::Extension2|[](#t137, #t138).{self::Class2::+}(self) in let final void #t140 = self::Extension2|[]=(#t137, #t138, #t139) in #t139;
   }
 }
 extension Extension on core::int {
diff --git a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.transformed.expect
index 987bcb5..84d1907 100644
--- a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.transformed.expect
@@ -145,82 +145,82 @@
     late final self::Class self;
     if(self::b)
       self = this;
-    let final self::Map<self::Class, self::Class> #t1 = map in #t1.{self::Map::[]}(this){(self::Class) → self::Class} == null ?{self::Class} #t1.{self::Map::[]=}(this, this){(self::Class, self::Class) → void} : null;
-    let final self::Map<self::Class, self::Class> #t2 = map in let final self::Class #t3 = self in #t2.{self::Map::[]}(#t3){(self::Class) → self::Class} == null ?{self::Class} #t2.{self::Map::[]=}(#t3, self){(self::Class, self::Class) → void} : null;
-    map.{self::Map::[]=}(this, this){(self::Class, self::Class) → void};
-    map.{self::Map::[]=}(self, self){(self::Class, self::Class) → void};
-    map.{self::Map::[]}(this){(self::Class) → self::Class};
-    map.{self::Map::[]}(self){(self::Class) → self::Class};
-    let final self::Map<self::Class, self::Class> #t4 = map in #t4.{self::Map::[]=}(this, #t4.{self::Map::[]}(this){(self::Class) → self::Class}.{self::Class::+}(this){(self::Class) → self::Class}){(self::Class, self::Class) → void};
-    let final self::Map<self::Class, self::Class> #t5 = map in let final self::Class #t6 = self in #t5.{self::Map::[]=}(#t6, #t5.{self::Map::[]}(#t6){(self::Class) → self::Class}.{self::Class::+}(self){(self::Class) → self::Class}){(self::Class, self::Class) → void};
+    let final self::Map<self::Class, self::Class> #t1 = map in #t1.{self::Map::[]}(this).{core::Object::==}(null) ?{self::Class} #t1.{self::Map::[]=}(this, this) : null;
+    let final self::Map<self::Class, self::Class> #t2 = map in let final self::Class #t3 = self in #t2.{self::Map::[]}(#t3).{core::Object::==}(null) ?{self::Class} #t2.{self::Map::[]=}(#t3, self) : null;
+    map.{self::Map::[]=}(this, this);
+    map.{self::Map::[]=}(self, self);
+    map.{self::Map::[]}(this);
+    map.{self::Map::[]}(self);
+    let final self::Map<self::Class, self::Class> #t4 = map in #t4.{self::Map::[]=}(this, #t4.{self::Map::[]}(this).{self::Class::+}(this));
+    let final self::Map<self::Class, self::Class> #t5 = map in let final self::Class #t6 = self in #t5.{self::Map::[]=}(#t6, #t5.{self::Map::[]}(#t6).{self::Class::+}(self));
   }
   method indexGetSetForValue(self::Map<self::Class, self::Class> map) → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Map<self::Class, self::Class> #t7 = map in let final self::Class #t8 = #t7.{self::Map::[]}(this){(self::Class) → self::Class} in #t8 == null ?{self::Class} let final void #t9 = #t7.{self::Map::[]=}(this, this){(self::Class, self::Class) → void} in this : #t8;
-    v = let final self::Map<self::Class, self::Class> #t10 = map in let final self::Class #t11 = self in let final self::Class #t12 = #t10.{self::Map::[]}(#t11){(self::Class) → self::Class} in #t12 == null ?{self::Class} let final self::Class #t13 = self in let final void #t14 = #t10.{self::Map::[]=}(#t11, #t13){(self::Class, self::Class) → void} in #t13 : #t12;
-    v = let final self::Map<self::Class, self::Class> #t15 = map in let final void #t16 = #t15.{self::Map::[]=}(this, this){(self::Class, self::Class) → void} in this;
-    v = let final self::Map<self::Class, self::Class> #t17 = map in let final self::Class #t18 = self in let final self::Class #t19 = self in let final void #t20 = #t17.{self::Map::[]=}(#t18, #t19){(self::Class, self::Class) → void} in #t19;
-    v = map.{self::Map::[]}(this){(self::Class) → self::Class};
-    v = map.{self::Map::[]}(self){(self::Class) → self::Class};
-    v = let final self::Map<self::Class, self::Class> #t21 = map in let final self::Class #t22 = #t21.{self::Map::[]}(this){(self::Class) → self::Class}.{self::Class::+}(this){(self::Class) → self::Class} in let final void #t23 = #t21.{self::Map::[]=}(this, #t22){(self::Class, self::Class) → void} in #t22;
-    v = let final self::Map<self::Class, self::Class> #t24 = map in let final self::Class #t25 = self in let final self::Class #t26 = #t24.{self::Map::[]}(#t25){(self::Class) → self::Class}.{self::Class::+}(self){(self::Class) → self::Class} in let final void #t27 = #t24.{self::Map::[]=}(#t25, #t26){(self::Class, self::Class) → void} in #t26;
+    v = let final self::Map<self::Class, self::Class> #t7 = map in let final self::Class #t8 = #t7.{self::Map::[]}(this) in #t8.{core::Object::==}(null) ?{self::Class} let final void #t9 = #t7.{self::Map::[]=}(this, this) in this : #t8;
+    v = let final self::Map<self::Class, self::Class> #t10 = map in let final self::Class #t11 = self in let final self::Class #t12 = #t10.{self::Map::[]}(#t11) in #t12.{core::Object::==}(null) ?{self::Class} let final self::Class #t13 = self in let final void #t14 = #t10.{self::Map::[]=}(#t11, #t13) in #t13 : #t12;
+    v = let final self::Map<self::Class, self::Class> #t15 = map in let final void #t16 = #t15.{self::Map::[]=}(this, this) in this;
+    v = let final self::Map<self::Class, self::Class> #t17 = map in let final self::Class #t18 = self in let final self::Class #t19 = self in let final void #t20 = #t17.{self::Map::[]=}(#t18, #t19) in #t19;
+    v = map.{self::Map::[]}(this);
+    v = map.{self::Map::[]}(self);
+    v = let final self::Map<self::Class, self::Class> #t21 = map in let final self::Class #t22 = #t21.{self::Map::[]}(this).{self::Class::+}(this) in let final void #t23 = #t21.{self::Map::[]=}(this, #t22) in #t22;
+    v = let final self::Map<self::Class, self::Class> #t24 = map in let final self::Class #t25 = self in let final self::Class #t26 = #t24.{self::Map::[]}(#t25).{self::Class::+}(self) in let final void #t27 = #t24.{self::Map::[]=}(#t25, #t26) in #t26;
   }
   method implicitExtensionGetSetForEffect(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
-    let final core::int #t28 = i in self::Extension|[](#t28, this) == null ?{self::Class} self::Extension|[]=(#t28, this, this) : null;
-    let final core::int #t29 = i in let final self::Class #t30 = self in self::Extension|[](#t29, #t30) == null ?{self::Class} self::Extension|[]=(#t29, #t30, self) : null;
+    let final core::int #t28 = i in self::Extension|[](#t28, this).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t28, this, this) : null;
+    let final core::int #t29 = i in let final self::Class #t30 = self in self::Extension|[](#t29, #t30).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t29, #t30, self) : null;
     self::Extension|[]=(i, this, this);
     self::Extension|[]=(i, self, self);
     self::Extension|[](i, this);
     self::Extension|[](i, self);
-    let final core::int #t31 = i in self::Extension|[]=(#t31, this, self::Extension|[](#t31, this).{self::Class::+}(this){(self::Class) → self::Class});
-    let final core::int #t32 = i in let final self::Class #t33 = self in self::Extension|[]=(#t32, #t33, self::Extension|[](#t32, #t33).{self::Class::+}(self){(self::Class) → self::Class});
+    let final core::int #t31 = i in self::Extension|[]=(#t31, this, self::Extension|[](#t31, this).{self::Class::+}(this));
+    let final core::int #t32 = i in let final self::Class #t33 = self in self::Extension|[]=(#t32, #t33, self::Extension|[](#t32, #t33).{self::Class::+}(self));
   }
   method implicitExtensionGetSetForValue(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final core::int #t34 = i in let final self::Class #t35 = self::Extension|[](#t34, this) in #t35 == null ?{self::Class} let final void #t36 = self::Extension|[]=(#t34, this, this) in this : #t35;
-    v = let final core::int #t37 = i in let final self::Class #t38 = self in let final self::Class #t39 = self::Extension|[](#t37, #t38) in #t39 == null ?{self::Class} let final self::Class #t40 = self in let final void #t41 = self::Extension|[]=(#t37, #t38, #t40) in #t40 : #t39;
+    v = let final core::int #t34 = i in let final self::Class #t35 = self::Extension|[](#t34, this) in #t35.{core::Object::==}(null) ?{self::Class} let final void #t36 = self::Extension|[]=(#t34, this, this) in this : #t35;
+    v = let final core::int #t37 = i in let final self::Class #t38 = self in let final self::Class #t39 = self::Extension|[](#t37, #t38) in #t39.{core::Object::==}(null) ?{self::Class} let final self::Class #t40 = self in let final void #t41 = self::Extension|[]=(#t37, #t38, #t40) in #t40 : #t39;
     v = let final core::int #t42 = i in let final void #t43 = self::Extension|[]=(#t42, this, this) in this;
     v = let final core::int #t44 = i in let final self::Class #t45 = self in let final self::Class #t46 = self in let final void #t47 = self::Extension|[]=(#t44, #t45, #t46) in #t46;
     v = self::Extension|[](i, this);
     v = self::Extension|[](i, self);
-    v = let final core::int #t48 = i in let final self::Class #t49 = self::Extension|[](#t48, this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t50 = self::Extension|[]=(#t48, this, #t49) in #t49;
-    v = let final core::int #t51 = i in let final self::Class #t52 = self in let final self::Class #t53 = self::Extension|[](#t51, #t52).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t54 = self::Extension|[]=(#t51, #t52, #t53) in #t53;
+    v = let final core::int #t48 = i in let final self::Class #t49 = self::Extension|[](#t48, this).{self::Class::+}(this) in let final void #t50 = self::Extension|[]=(#t48, this, #t49) in #t49;
+    v = let final core::int #t51 = i in let final self::Class #t52 = self in let final self::Class #t53 = self::Extension|[](#t51, #t52).{self::Class::+}(self) in let final void #t54 = self::Extension|[]=(#t51, #t52, #t53) in #t53;
   }
   method explicitExtensionGetSetForEffect(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
-    let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class} self::Extension|[]=(#t55, this, this) : null;
-    let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null;
+    let final core::int #t55 = i in self::Extension|[](#t55, this).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t55, this, this) : null;
+    let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null;
     self::Extension|[]=(i, this, this);
     self::Extension|[]=(i, self, self);
     self::Extension|[](i, this);
     self::Extension|[](i, self);
-    let final core::int #t58 = i in self::Extension|[]=(#t58, this, self::Extension|[](#t58, this).{self::Class::+}(this){(self::Class) → self::Class});
-    let final core::int #t59 = i in let final self::Class #t60 = self in self::Extension|[]=(#t59, #t60, self::Extension|[](#t59, #t60).{self::Class::+}(self){(self::Class) → self::Class});
+    let final core::int #t58 = i in self::Extension|[]=(#t58, this, self::Extension|[](#t58, this).{self::Class::+}(this));
+    let final core::int #t59 = i in let final self::Class #t60 = self in self::Extension|[]=(#t59, #t60, self::Extension|[](#t59, #t60).{self::Class::+}(self));
   }
   method explicitExtensionGetSetForValue(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final core::int #t61 = i in let final self::Class #t62 = self::Extension|[](#t61, this) in #t62 == null ?{self::Class} let final void #t63 = self::Extension|[]=(#t61, this, this) in this : #t62;
-    v = let final core::int #t64 = i in let final self::Class #t65 = self in let final self::Class #t66 = self::Extension|[](#t64, #t65) in #t66 == null ?{self::Class} let final self::Class #t67 = self in let final void #t68 = self::Extension|[]=(#t64, #t65, #t67) in #t67 : #t66;
+    v = let final core::int #t61 = i in let final self::Class #t62 = self::Extension|[](#t61, this) in #t62.{core::Object::==}(null) ?{self::Class} let final void #t63 = self::Extension|[]=(#t61, this, this) in this : #t62;
+    v = let final core::int #t64 = i in let final self::Class #t65 = self in let final self::Class #t66 = self::Extension|[](#t64, #t65) in #t66.{core::Object::==}(null) ?{self::Class} let final self::Class #t67 = self in let final void #t68 = self::Extension|[]=(#t64, #t65, #t67) in #t67 : #t66;
     v = let final core::int #t69 = i in let final void #t70 = self::Extension|[]=(#t69, this, this) in this;
     v = let final core::int #t71 = i in let final self::Class #t72 = self in let final void #t73 = self::Extension|[]=(#t71, self, #t72) in #t72;
     v = self::Extension|[](i, this);
     v = self::Extension|[](i, self);
-    v = let final core::int #t74 = i in let final self::Class #t75 = self::Extension|[](#t74, this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t76 = self::Extension|[]=(#t74, this, #t75) in #t75;
-    v = let final core::int #t77 = i in let final self::Class #t78 = self in let final self::Class #t79 = self::Extension|[](#t77, #t78).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t80 = self::Extension|[]=(#t77, #t78, #t79) in #t79;
+    v = let final core::int #t74 = i in let final self::Class #t75 = self::Extension|[](#t74, this).{self::Class::+}(this) in let final void #t76 = self::Extension|[]=(#t74, this, #t75) in #t75;
+    v = let final core::int #t77 = i in let final self::Class #t78 = self in let final self::Class #t79 = self::Extension|[](#t77, #t78).{self::Class::+}(self) in let final void #t80 = self::Extension|[]=(#t77, #t78, #t79) in #t79;
   }
 }
 class Subclass extends self::Class {
@@ -231,28 +231,28 @@
     late final self::Class self;
     if(self::b)
       self = this;
-    super.{self::Class::[]}(this) == null ?{self::Class} super.{self::Class::[]=}(this, this) : null;
-    let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class} super.{self::Class::[]=}(#t81, self) : null;
+    super.{self::Class::[]}(this).{core::Object::==}(null) ?{self::Class} super.{self::Class::[]=}(this, this) : null;
+    let final self::Class #t81 = self in super.{self::Class::[]}(#t81).{core::Object::==}(null) ?{self::Class} super.{self::Class::[]=}(#t81, self) : null;
     super.{self::Class::[]=}(this, this);
     super.{self::Class::[]=}(self, self);
     super.{self::Class::[]}(this);
     super.{self::Class::[]}(self);
-    super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class) → self::Class});
-    let final self::Class #t82 = self in super.{self::Class::[]=}(#t82, super.{self::Class::[]}(#t82).{self::Class::+}(self){(self::Class) → self::Class});
+    super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this));
+    let final self::Class #t82 = self in super.{self::Class::[]=}(#t82, super.{self::Class::[]}(#t82).{self::Class::+}(self));
   }
   method superIndexGetSetForValue() → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Class #t83 = super.{self::Class::[]}(this) in #t83 == null ?{self::Class} let final void #t84 = super.{self::Class::[]=}(this, this) in this : #t83;
-    v = let final self::Class #t85 = self in let final self::Class #t86 = super.{self::Class::[]}(#t85) in #t86 == null ?{self::Class} let final self::Class #t87 = self in let final void #t88 = super.{self::Class::[]=}(#t85, #t87) in #t87 : #t86;
+    v = let final self::Class #t83 = super.{self::Class::[]}(this) in #t83.{core::Object::==}(null) ?{self::Class} let final void #t84 = super.{self::Class::[]=}(this, this) in this : #t83;
+    v = let final self::Class #t85 = self in let final self::Class #t86 = super.{self::Class::[]}(#t85) in #t86.{core::Object::==}(null) ?{self::Class} let final self::Class #t87 = self in let final void #t88 = super.{self::Class::[]=}(#t85, #t87) in #t87 : #t86;
     v = let final void #t89 = super.{self::Class::[]=}(this, this) in this;
     v = let final self::Class #t90 = self in let final self::Class #t91 = self in let final void #t92 = super.{self::Class::[]=}(#t90, #t91) in #t91;
     v = super.{self::Class::[]}(this);
     v = super.{self::Class::[]}(self);
-    v = let final self::Class #t93 = super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t94 = super.{self::Class::[]=}(this, #t93) in #t93;
-    v = let final self::Class #t95 = self in let final self::Class #t96 = super.{self::Class::[]}(#t95).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t97 = super.{self::Class::[]=}(#t95, #t96) in #t96;
+    v = let final self::Class #t93 = super.{self::Class::[]}(this).{self::Class::+}(this) in let final void #t94 = super.{self::Class::[]=}(this, #t93) in #t93;
+    v = let final self::Class #t95 = self in let final self::Class #t96 = super.{self::Class::[]}(#t95).{self::Class::+}(self) in let final void #t97 = super.{self::Class::[]=}(#t95, #t96) in #t96;
   }
 }
 class Class2 extends core::Object {
@@ -265,55 +265,55 @@
     late final self::Class2 self;
     if(self::b)
       self = this;
-    self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
-    let final self::Class2 #t98 = self in let final self::Class2 #t99 = self in self::Extension2|[](#t98, #t99) == null ?{self::Class2} self::Extension2|[]=(#t98, #t99, self) : null;
+    self::Extension2|[](this, this).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
+    let final self::Class2 #t98 = self in let final self::Class2 #t99 = self in self::Extension2|[](#t98, #t99).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(#t98, #t99, self) : null;
     self::Extension2|[]=(this, this, this);
     self::Extension2|[]=(self, self, self);
     self::Extension2|[](this, this);
     self::Extension2|[](self, self);
-    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2});
-    let final self::Class2 #t100 = self in let final self::Class2 #t101 = self in self::Extension2|[]=(#t100, #t101, self::Extension2|[](#t100, #t101).{self::Class2::+}(self){(self::Class2) → self::Class2});
+    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this));
+    let final self::Class2 #t100 = self in let final self::Class2 #t101 = self in self::Extension2|[]=(#t100, #t101, self::Extension2|[](#t100, #t101).{self::Class2::+}(self));
   }
   method implicitExtensionGetSetForValue() → void {
     late final self::Class2 self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Class2 #t102 = self::Extension2|[](this, this) in #t102 == null ?{self::Class2} let final void #t103 = self::Extension2|[]=(this, this, this) in this : #t102;
-    v = let final self::Class2 #t104 = self in let final self::Class2 #t105 = self in let final self::Class2 #t106 = self::Extension2|[](#t104, #t105) in #t106 == null ?{self::Class2} let final self::Class2 #t107 = self in let final void #t108 = self::Extension2|[]=(#t104, #t105, #t107) in #t107 : #t106;
+    v = let final self::Class2 #t102 = self::Extension2|[](this, this) in #t102.{core::Object::==}(null) ?{self::Class2} let final void #t103 = self::Extension2|[]=(this, this, this) in this : #t102;
+    v = let final self::Class2 #t104 = self in let final self::Class2 #t105 = self in let final self::Class2 #t106 = self::Extension2|[](#t104, #t105) in #t106.{core::Object::==}(null) ?{self::Class2} let final self::Class2 #t107 = self in let final void #t108 = self::Extension2|[]=(#t104, #t105, #t107) in #t107 : #t106;
     v = let final void #t109 = self::Extension2|[]=(this, this, this) in this;
     v = let final self::Class2 #t110 = self in let final self::Class2 #t111 = self in let final self::Class2 #t112 = self in let final void #t113 = self::Extension2|[]=(#t110, #t111, #t112) in #t112;
     v = self::Extension2|[](this, this);
     v = self::Extension2|[](self, self);
-    v = let final self::Class2 #t114 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2} in let final void #t115 = self::Extension2|[]=(this, this, #t114) in #t114;
-    v = let final self::Class2 #t116 = self in let final self::Class2 #t117 = self in let final self::Class2 #t118 = self::Extension2|[](#t116, #t117).{self::Class2::+}(self){(self::Class2) → self::Class2} in let final void #t119 = self::Extension2|[]=(#t116, #t117, #t118) in #t118;
+    v = let final self::Class2 #t114 = self::Extension2|[](this, this).{self::Class2::+}(this) in let final void #t115 = self::Extension2|[]=(this, this, #t114) in #t114;
+    v = let final self::Class2 #t116 = self in let final self::Class2 #t117 = self in let final self::Class2 #t118 = self::Extension2|[](#t116, #t117).{self::Class2::+}(self) in let final void #t119 = self::Extension2|[]=(#t116, #t117, #t118) in #t118;
   }
   method explicitExtensionGetSetForEffect() → void {
     late final self::Class2 self;
     if(self::b)
       self = this;
-    self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
-    let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null;
+    self::Extension2|[](this, this).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
+    let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null;
     self::Extension2|[]=(this, this, this);
     self::Extension2|[]=(self, self, self);
     self::Extension2|[](this, this);
     self::Extension2|[](self, self);
-    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2});
-    let final self::Class2 #t122 = self in let final self::Class2 #t123 = self in self::Extension2|[]=(#t122, #t123, self::Extension2|[](#t122, #t123).{self::Class2::+}(self){(self::Class2) → self::Class2});
+    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this));
+    let final self::Class2 #t122 = self in let final self::Class2 #t123 = self in self::Extension2|[]=(#t122, #t123, self::Extension2|[](#t122, #t123).{self::Class2::+}(self));
   }
   method explicitExtensionGetSetForValue() → void {
     late final self::Class2 self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Class2 #t124 = self::Extension2|[](this, this) in #t124 == null ?{self::Class2} let final void #t125 = self::Extension2|[]=(this, this, this) in this : #t124;
-    v = let final self::Class2 #t126 = self in let final self::Class2 #t127 = self in let final self::Class2 #t128 = self::Extension2|[](#t126, #t127) in #t128 == null ?{self::Class2} let final self::Class2 #t129 = self in let final void #t130 = self::Extension2|[]=(#t126, #t127, #t129) in #t129 : #t128;
+    v = let final self::Class2 #t124 = self::Extension2|[](this, this) in #t124.{core::Object::==}(null) ?{self::Class2} let final void #t125 = self::Extension2|[]=(this, this, this) in this : #t124;
+    v = let final self::Class2 #t126 = self in let final self::Class2 #t127 = self in let final self::Class2 #t128 = self::Extension2|[](#t126, #t127) in #t128.{core::Object::==}(null) ?{self::Class2} let final self::Class2 #t129 = self in let final void #t130 = self::Extension2|[]=(#t126, #t127, #t129) in #t129 : #t128;
     v = let final void #t131 = self::Extension2|[]=(this, this, this) in this;
     v = let final self::Class2 #t132 = self in let final self::Class2 #t133 = self in let final void #t134 = self::Extension2|[]=(#t132, self, #t133) in #t133;
     v = self::Extension2|[](this, this);
     v = self::Extension2|[](self, self);
-    v = let final self::Class2 #t135 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2} in let final void #t136 = self::Extension2|[]=(this, this, #t135) in #t135;
-    v = let final self::Class2 #t137 = self in let final self::Class2 #t138 = self in let final self::Class2 #t139 = self::Extension2|[](#t137, #t138).{self::Class2::+}(self){(self::Class2) → self::Class2} in let final void #t140 = self::Extension2|[]=(#t137, #t138, #t139) in #t139;
+    v = let final self::Class2 #t135 = self::Extension2|[](this, this).{self::Class2::+}(this) in let final void #t136 = self::Extension2|[]=(this, this, #t135) in #t135;
+    v = let final self::Class2 #t137 = self in let final self::Class2 #t138 = self in let final self::Class2 #t139 = self::Extension2|[](#t137, #t138).{self::Class2::+}(self) in let final void #t140 = self::Extension2|[]=(#t137, #t138, #t139) in #t139;
   }
 }
 extension Extension on core::int {
diff --git a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.expect b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.expect
index 987bcb5..84d1907 100644
--- a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.expect
@@ -145,82 +145,82 @@
     late final self::Class self;
     if(self::b)
       self = this;
-    let final self::Map<self::Class, self::Class> #t1 = map in #t1.{self::Map::[]}(this){(self::Class) → self::Class} == null ?{self::Class} #t1.{self::Map::[]=}(this, this){(self::Class, self::Class) → void} : null;
-    let final self::Map<self::Class, self::Class> #t2 = map in let final self::Class #t3 = self in #t2.{self::Map::[]}(#t3){(self::Class) → self::Class} == null ?{self::Class} #t2.{self::Map::[]=}(#t3, self){(self::Class, self::Class) → void} : null;
-    map.{self::Map::[]=}(this, this){(self::Class, self::Class) → void};
-    map.{self::Map::[]=}(self, self){(self::Class, self::Class) → void};
-    map.{self::Map::[]}(this){(self::Class) → self::Class};
-    map.{self::Map::[]}(self){(self::Class) → self::Class};
-    let final self::Map<self::Class, self::Class> #t4 = map in #t4.{self::Map::[]=}(this, #t4.{self::Map::[]}(this){(self::Class) → self::Class}.{self::Class::+}(this){(self::Class) → self::Class}){(self::Class, self::Class) → void};
-    let final self::Map<self::Class, self::Class> #t5 = map in let final self::Class #t6 = self in #t5.{self::Map::[]=}(#t6, #t5.{self::Map::[]}(#t6){(self::Class) → self::Class}.{self::Class::+}(self){(self::Class) → self::Class}){(self::Class, self::Class) → void};
+    let final self::Map<self::Class, self::Class> #t1 = map in #t1.{self::Map::[]}(this).{core::Object::==}(null) ?{self::Class} #t1.{self::Map::[]=}(this, this) : null;
+    let final self::Map<self::Class, self::Class> #t2 = map in let final self::Class #t3 = self in #t2.{self::Map::[]}(#t3).{core::Object::==}(null) ?{self::Class} #t2.{self::Map::[]=}(#t3, self) : null;
+    map.{self::Map::[]=}(this, this);
+    map.{self::Map::[]=}(self, self);
+    map.{self::Map::[]}(this);
+    map.{self::Map::[]}(self);
+    let final self::Map<self::Class, self::Class> #t4 = map in #t4.{self::Map::[]=}(this, #t4.{self::Map::[]}(this).{self::Class::+}(this));
+    let final self::Map<self::Class, self::Class> #t5 = map in let final self::Class #t6 = self in #t5.{self::Map::[]=}(#t6, #t5.{self::Map::[]}(#t6).{self::Class::+}(self));
   }
   method indexGetSetForValue(self::Map<self::Class, self::Class> map) → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Map<self::Class, self::Class> #t7 = map in let final self::Class #t8 = #t7.{self::Map::[]}(this){(self::Class) → self::Class} in #t8 == null ?{self::Class} let final void #t9 = #t7.{self::Map::[]=}(this, this){(self::Class, self::Class) → void} in this : #t8;
-    v = let final self::Map<self::Class, self::Class> #t10 = map in let final self::Class #t11 = self in let final self::Class #t12 = #t10.{self::Map::[]}(#t11){(self::Class) → self::Class} in #t12 == null ?{self::Class} let final self::Class #t13 = self in let final void #t14 = #t10.{self::Map::[]=}(#t11, #t13){(self::Class, self::Class) → void} in #t13 : #t12;
-    v = let final self::Map<self::Class, self::Class> #t15 = map in let final void #t16 = #t15.{self::Map::[]=}(this, this){(self::Class, self::Class) → void} in this;
-    v = let final self::Map<self::Class, self::Class> #t17 = map in let final self::Class #t18 = self in let final self::Class #t19 = self in let final void #t20 = #t17.{self::Map::[]=}(#t18, #t19){(self::Class, self::Class) → void} in #t19;
-    v = map.{self::Map::[]}(this){(self::Class) → self::Class};
-    v = map.{self::Map::[]}(self){(self::Class) → self::Class};
-    v = let final self::Map<self::Class, self::Class> #t21 = map in let final self::Class #t22 = #t21.{self::Map::[]}(this){(self::Class) → self::Class}.{self::Class::+}(this){(self::Class) → self::Class} in let final void #t23 = #t21.{self::Map::[]=}(this, #t22){(self::Class, self::Class) → void} in #t22;
-    v = let final self::Map<self::Class, self::Class> #t24 = map in let final self::Class #t25 = self in let final self::Class #t26 = #t24.{self::Map::[]}(#t25){(self::Class) → self::Class}.{self::Class::+}(self){(self::Class) → self::Class} in let final void #t27 = #t24.{self::Map::[]=}(#t25, #t26){(self::Class, self::Class) → void} in #t26;
+    v = let final self::Map<self::Class, self::Class> #t7 = map in let final self::Class #t8 = #t7.{self::Map::[]}(this) in #t8.{core::Object::==}(null) ?{self::Class} let final void #t9 = #t7.{self::Map::[]=}(this, this) in this : #t8;
+    v = let final self::Map<self::Class, self::Class> #t10 = map in let final self::Class #t11 = self in let final self::Class #t12 = #t10.{self::Map::[]}(#t11) in #t12.{core::Object::==}(null) ?{self::Class} let final self::Class #t13 = self in let final void #t14 = #t10.{self::Map::[]=}(#t11, #t13) in #t13 : #t12;
+    v = let final self::Map<self::Class, self::Class> #t15 = map in let final void #t16 = #t15.{self::Map::[]=}(this, this) in this;
+    v = let final self::Map<self::Class, self::Class> #t17 = map in let final self::Class #t18 = self in let final self::Class #t19 = self in let final void #t20 = #t17.{self::Map::[]=}(#t18, #t19) in #t19;
+    v = map.{self::Map::[]}(this);
+    v = map.{self::Map::[]}(self);
+    v = let final self::Map<self::Class, self::Class> #t21 = map in let final self::Class #t22 = #t21.{self::Map::[]}(this).{self::Class::+}(this) in let final void #t23 = #t21.{self::Map::[]=}(this, #t22) in #t22;
+    v = let final self::Map<self::Class, self::Class> #t24 = map in let final self::Class #t25 = self in let final self::Class #t26 = #t24.{self::Map::[]}(#t25).{self::Class::+}(self) in let final void #t27 = #t24.{self::Map::[]=}(#t25, #t26) in #t26;
   }
   method implicitExtensionGetSetForEffect(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
-    let final core::int #t28 = i in self::Extension|[](#t28, this) == null ?{self::Class} self::Extension|[]=(#t28, this, this) : null;
-    let final core::int #t29 = i in let final self::Class #t30 = self in self::Extension|[](#t29, #t30) == null ?{self::Class} self::Extension|[]=(#t29, #t30, self) : null;
+    let final core::int #t28 = i in self::Extension|[](#t28, this).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t28, this, this) : null;
+    let final core::int #t29 = i in let final self::Class #t30 = self in self::Extension|[](#t29, #t30).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t29, #t30, self) : null;
     self::Extension|[]=(i, this, this);
     self::Extension|[]=(i, self, self);
     self::Extension|[](i, this);
     self::Extension|[](i, self);
-    let final core::int #t31 = i in self::Extension|[]=(#t31, this, self::Extension|[](#t31, this).{self::Class::+}(this){(self::Class) → self::Class});
-    let final core::int #t32 = i in let final self::Class #t33 = self in self::Extension|[]=(#t32, #t33, self::Extension|[](#t32, #t33).{self::Class::+}(self){(self::Class) → self::Class});
+    let final core::int #t31 = i in self::Extension|[]=(#t31, this, self::Extension|[](#t31, this).{self::Class::+}(this));
+    let final core::int #t32 = i in let final self::Class #t33 = self in self::Extension|[]=(#t32, #t33, self::Extension|[](#t32, #t33).{self::Class::+}(self));
   }
   method implicitExtensionGetSetForValue(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final core::int #t34 = i in let final self::Class #t35 = self::Extension|[](#t34, this) in #t35 == null ?{self::Class} let final void #t36 = self::Extension|[]=(#t34, this, this) in this : #t35;
-    v = let final core::int #t37 = i in let final self::Class #t38 = self in let final self::Class #t39 = self::Extension|[](#t37, #t38) in #t39 == null ?{self::Class} let final self::Class #t40 = self in let final void #t41 = self::Extension|[]=(#t37, #t38, #t40) in #t40 : #t39;
+    v = let final core::int #t34 = i in let final self::Class #t35 = self::Extension|[](#t34, this) in #t35.{core::Object::==}(null) ?{self::Class} let final void #t36 = self::Extension|[]=(#t34, this, this) in this : #t35;
+    v = let final core::int #t37 = i in let final self::Class #t38 = self in let final self::Class #t39 = self::Extension|[](#t37, #t38) in #t39.{core::Object::==}(null) ?{self::Class} let final self::Class #t40 = self in let final void #t41 = self::Extension|[]=(#t37, #t38, #t40) in #t40 : #t39;
     v = let final core::int #t42 = i in let final void #t43 = self::Extension|[]=(#t42, this, this) in this;
     v = let final core::int #t44 = i in let final self::Class #t45 = self in let final self::Class #t46 = self in let final void #t47 = self::Extension|[]=(#t44, #t45, #t46) in #t46;
     v = self::Extension|[](i, this);
     v = self::Extension|[](i, self);
-    v = let final core::int #t48 = i in let final self::Class #t49 = self::Extension|[](#t48, this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t50 = self::Extension|[]=(#t48, this, #t49) in #t49;
-    v = let final core::int #t51 = i in let final self::Class #t52 = self in let final self::Class #t53 = self::Extension|[](#t51, #t52).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t54 = self::Extension|[]=(#t51, #t52, #t53) in #t53;
+    v = let final core::int #t48 = i in let final self::Class #t49 = self::Extension|[](#t48, this).{self::Class::+}(this) in let final void #t50 = self::Extension|[]=(#t48, this, #t49) in #t49;
+    v = let final core::int #t51 = i in let final self::Class #t52 = self in let final self::Class #t53 = self::Extension|[](#t51, #t52).{self::Class::+}(self) in let final void #t54 = self::Extension|[]=(#t51, #t52, #t53) in #t53;
   }
   method explicitExtensionGetSetForEffect(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
-    let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class} self::Extension|[]=(#t55, this, this) : null;
-    let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null;
+    let final core::int #t55 = i in self::Extension|[](#t55, this).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t55, this, this) : null;
+    let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null;
     self::Extension|[]=(i, this, this);
     self::Extension|[]=(i, self, self);
     self::Extension|[](i, this);
     self::Extension|[](i, self);
-    let final core::int #t58 = i in self::Extension|[]=(#t58, this, self::Extension|[](#t58, this).{self::Class::+}(this){(self::Class) → self::Class});
-    let final core::int #t59 = i in let final self::Class #t60 = self in self::Extension|[]=(#t59, #t60, self::Extension|[](#t59, #t60).{self::Class::+}(self){(self::Class) → self::Class});
+    let final core::int #t58 = i in self::Extension|[]=(#t58, this, self::Extension|[](#t58, this).{self::Class::+}(this));
+    let final core::int #t59 = i in let final self::Class #t60 = self in self::Extension|[]=(#t59, #t60, self::Extension|[](#t59, #t60).{self::Class::+}(self));
   }
   method explicitExtensionGetSetForValue(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final core::int #t61 = i in let final self::Class #t62 = self::Extension|[](#t61, this) in #t62 == null ?{self::Class} let final void #t63 = self::Extension|[]=(#t61, this, this) in this : #t62;
-    v = let final core::int #t64 = i in let final self::Class #t65 = self in let final self::Class #t66 = self::Extension|[](#t64, #t65) in #t66 == null ?{self::Class} let final self::Class #t67 = self in let final void #t68 = self::Extension|[]=(#t64, #t65, #t67) in #t67 : #t66;
+    v = let final core::int #t61 = i in let final self::Class #t62 = self::Extension|[](#t61, this) in #t62.{core::Object::==}(null) ?{self::Class} let final void #t63 = self::Extension|[]=(#t61, this, this) in this : #t62;
+    v = let final core::int #t64 = i in let final self::Class #t65 = self in let final self::Class #t66 = self::Extension|[](#t64, #t65) in #t66.{core::Object::==}(null) ?{self::Class} let final self::Class #t67 = self in let final void #t68 = self::Extension|[]=(#t64, #t65, #t67) in #t67 : #t66;
     v = let final core::int #t69 = i in let final void #t70 = self::Extension|[]=(#t69, this, this) in this;
     v = let final core::int #t71 = i in let final self::Class #t72 = self in let final void #t73 = self::Extension|[]=(#t71, self, #t72) in #t72;
     v = self::Extension|[](i, this);
     v = self::Extension|[](i, self);
-    v = let final core::int #t74 = i in let final self::Class #t75 = self::Extension|[](#t74, this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t76 = self::Extension|[]=(#t74, this, #t75) in #t75;
-    v = let final core::int #t77 = i in let final self::Class #t78 = self in let final self::Class #t79 = self::Extension|[](#t77, #t78).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t80 = self::Extension|[]=(#t77, #t78, #t79) in #t79;
+    v = let final core::int #t74 = i in let final self::Class #t75 = self::Extension|[](#t74, this).{self::Class::+}(this) in let final void #t76 = self::Extension|[]=(#t74, this, #t75) in #t75;
+    v = let final core::int #t77 = i in let final self::Class #t78 = self in let final self::Class #t79 = self::Extension|[](#t77, #t78).{self::Class::+}(self) in let final void #t80 = self::Extension|[]=(#t77, #t78, #t79) in #t79;
   }
 }
 class Subclass extends self::Class {
@@ -231,28 +231,28 @@
     late final self::Class self;
     if(self::b)
       self = this;
-    super.{self::Class::[]}(this) == null ?{self::Class} super.{self::Class::[]=}(this, this) : null;
-    let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class} super.{self::Class::[]=}(#t81, self) : null;
+    super.{self::Class::[]}(this).{core::Object::==}(null) ?{self::Class} super.{self::Class::[]=}(this, this) : null;
+    let final self::Class #t81 = self in super.{self::Class::[]}(#t81).{core::Object::==}(null) ?{self::Class} super.{self::Class::[]=}(#t81, self) : null;
     super.{self::Class::[]=}(this, this);
     super.{self::Class::[]=}(self, self);
     super.{self::Class::[]}(this);
     super.{self::Class::[]}(self);
-    super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class) → self::Class});
-    let final self::Class #t82 = self in super.{self::Class::[]=}(#t82, super.{self::Class::[]}(#t82).{self::Class::+}(self){(self::Class) → self::Class});
+    super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this));
+    let final self::Class #t82 = self in super.{self::Class::[]=}(#t82, super.{self::Class::[]}(#t82).{self::Class::+}(self));
   }
   method superIndexGetSetForValue() → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Class #t83 = super.{self::Class::[]}(this) in #t83 == null ?{self::Class} let final void #t84 = super.{self::Class::[]=}(this, this) in this : #t83;
-    v = let final self::Class #t85 = self in let final self::Class #t86 = super.{self::Class::[]}(#t85) in #t86 == null ?{self::Class} let final self::Class #t87 = self in let final void #t88 = super.{self::Class::[]=}(#t85, #t87) in #t87 : #t86;
+    v = let final self::Class #t83 = super.{self::Class::[]}(this) in #t83.{core::Object::==}(null) ?{self::Class} let final void #t84 = super.{self::Class::[]=}(this, this) in this : #t83;
+    v = let final self::Class #t85 = self in let final self::Class #t86 = super.{self::Class::[]}(#t85) in #t86.{core::Object::==}(null) ?{self::Class} let final self::Class #t87 = self in let final void #t88 = super.{self::Class::[]=}(#t85, #t87) in #t87 : #t86;
     v = let final void #t89 = super.{self::Class::[]=}(this, this) in this;
     v = let final self::Class #t90 = self in let final self::Class #t91 = self in let final void #t92 = super.{self::Class::[]=}(#t90, #t91) in #t91;
     v = super.{self::Class::[]}(this);
     v = super.{self::Class::[]}(self);
-    v = let final self::Class #t93 = super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t94 = super.{self::Class::[]=}(this, #t93) in #t93;
-    v = let final self::Class #t95 = self in let final self::Class #t96 = super.{self::Class::[]}(#t95).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t97 = super.{self::Class::[]=}(#t95, #t96) in #t96;
+    v = let final self::Class #t93 = super.{self::Class::[]}(this).{self::Class::+}(this) in let final void #t94 = super.{self::Class::[]=}(this, #t93) in #t93;
+    v = let final self::Class #t95 = self in let final self::Class #t96 = super.{self::Class::[]}(#t95).{self::Class::+}(self) in let final void #t97 = super.{self::Class::[]=}(#t95, #t96) in #t96;
   }
 }
 class Class2 extends core::Object {
@@ -265,55 +265,55 @@
     late final self::Class2 self;
     if(self::b)
       self = this;
-    self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
-    let final self::Class2 #t98 = self in let final self::Class2 #t99 = self in self::Extension2|[](#t98, #t99) == null ?{self::Class2} self::Extension2|[]=(#t98, #t99, self) : null;
+    self::Extension2|[](this, this).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
+    let final self::Class2 #t98 = self in let final self::Class2 #t99 = self in self::Extension2|[](#t98, #t99).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(#t98, #t99, self) : null;
     self::Extension2|[]=(this, this, this);
     self::Extension2|[]=(self, self, self);
     self::Extension2|[](this, this);
     self::Extension2|[](self, self);
-    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2});
-    let final self::Class2 #t100 = self in let final self::Class2 #t101 = self in self::Extension2|[]=(#t100, #t101, self::Extension2|[](#t100, #t101).{self::Class2::+}(self){(self::Class2) → self::Class2});
+    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this));
+    let final self::Class2 #t100 = self in let final self::Class2 #t101 = self in self::Extension2|[]=(#t100, #t101, self::Extension2|[](#t100, #t101).{self::Class2::+}(self));
   }
   method implicitExtensionGetSetForValue() → void {
     late final self::Class2 self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Class2 #t102 = self::Extension2|[](this, this) in #t102 == null ?{self::Class2} let final void #t103 = self::Extension2|[]=(this, this, this) in this : #t102;
-    v = let final self::Class2 #t104 = self in let final self::Class2 #t105 = self in let final self::Class2 #t106 = self::Extension2|[](#t104, #t105) in #t106 == null ?{self::Class2} let final self::Class2 #t107 = self in let final void #t108 = self::Extension2|[]=(#t104, #t105, #t107) in #t107 : #t106;
+    v = let final self::Class2 #t102 = self::Extension2|[](this, this) in #t102.{core::Object::==}(null) ?{self::Class2} let final void #t103 = self::Extension2|[]=(this, this, this) in this : #t102;
+    v = let final self::Class2 #t104 = self in let final self::Class2 #t105 = self in let final self::Class2 #t106 = self::Extension2|[](#t104, #t105) in #t106.{core::Object::==}(null) ?{self::Class2} let final self::Class2 #t107 = self in let final void #t108 = self::Extension2|[]=(#t104, #t105, #t107) in #t107 : #t106;
     v = let final void #t109 = self::Extension2|[]=(this, this, this) in this;
     v = let final self::Class2 #t110 = self in let final self::Class2 #t111 = self in let final self::Class2 #t112 = self in let final void #t113 = self::Extension2|[]=(#t110, #t111, #t112) in #t112;
     v = self::Extension2|[](this, this);
     v = self::Extension2|[](self, self);
-    v = let final self::Class2 #t114 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2} in let final void #t115 = self::Extension2|[]=(this, this, #t114) in #t114;
-    v = let final self::Class2 #t116 = self in let final self::Class2 #t117 = self in let final self::Class2 #t118 = self::Extension2|[](#t116, #t117).{self::Class2::+}(self){(self::Class2) → self::Class2} in let final void #t119 = self::Extension2|[]=(#t116, #t117, #t118) in #t118;
+    v = let final self::Class2 #t114 = self::Extension2|[](this, this).{self::Class2::+}(this) in let final void #t115 = self::Extension2|[]=(this, this, #t114) in #t114;
+    v = let final self::Class2 #t116 = self in let final self::Class2 #t117 = self in let final self::Class2 #t118 = self::Extension2|[](#t116, #t117).{self::Class2::+}(self) in let final void #t119 = self::Extension2|[]=(#t116, #t117, #t118) in #t118;
   }
   method explicitExtensionGetSetForEffect() → void {
     late final self::Class2 self;
     if(self::b)
       self = this;
-    self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
-    let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null;
+    self::Extension2|[](this, this).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
+    let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null;
     self::Extension2|[]=(this, this, this);
     self::Extension2|[]=(self, self, self);
     self::Extension2|[](this, this);
     self::Extension2|[](self, self);
-    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2});
-    let final self::Class2 #t122 = self in let final self::Class2 #t123 = self in self::Extension2|[]=(#t122, #t123, self::Extension2|[](#t122, #t123).{self::Class2::+}(self){(self::Class2) → self::Class2});
+    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this));
+    let final self::Class2 #t122 = self in let final self::Class2 #t123 = self in self::Extension2|[]=(#t122, #t123, self::Extension2|[](#t122, #t123).{self::Class2::+}(self));
   }
   method explicitExtensionGetSetForValue() → void {
     late final self::Class2 self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Class2 #t124 = self::Extension2|[](this, this) in #t124 == null ?{self::Class2} let final void #t125 = self::Extension2|[]=(this, this, this) in this : #t124;
-    v = let final self::Class2 #t126 = self in let final self::Class2 #t127 = self in let final self::Class2 #t128 = self::Extension2|[](#t126, #t127) in #t128 == null ?{self::Class2} let final self::Class2 #t129 = self in let final void #t130 = self::Extension2|[]=(#t126, #t127, #t129) in #t129 : #t128;
+    v = let final self::Class2 #t124 = self::Extension2|[](this, this) in #t124.{core::Object::==}(null) ?{self::Class2} let final void #t125 = self::Extension2|[]=(this, this, this) in this : #t124;
+    v = let final self::Class2 #t126 = self in let final self::Class2 #t127 = self in let final self::Class2 #t128 = self::Extension2|[](#t126, #t127) in #t128.{core::Object::==}(null) ?{self::Class2} let final self::Class2 #t129 = self in let final void #t130 = self::Extension2|[]=(#t126, #t127, #t129) in #t129 : #t128;
     v = let final void #t131 = self::Extension2|[]=(this, this, this) in this;
     v = let final self::Class2 #t132 = self in let final self::Class2 #t133 = self in let final void #t134 = self::Extension2|[]=(#t132, self, #t133) in #t133;
     v = self::Extension2|[](this, this);
     v = self::Extension2|[](self, self);
-    v = let final self::Class2 #t135 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2} in let final void #t136 = self::Extension2|[]=(this, this, #t135) in #t135;
-    v = let final self::Class2 #t137 = self in let final self::Class2 #t138 = self in let final self::Class2 #t139 = self::Extension2|[](#t137, #t138).{self::Class2::+}(self){(self::Class2) → self::Class2} in let final void #t140 = self::Extension2|[]=(#t137, #t138, #t139) in #t139;
+    v = let final self::Class2 #t135 = self::Extension2|[](this, this).{self::Class2::+}(this) in let final void #t136 = self::Extension2|[]=(this, this, #t135) in #t135;
+    v = let final self::Class2 #t137 = self in let final self::Class2 #t138 = self in let final self::Class2 #t139 = self::Extension2|[](#t137, #t138).{self::Class2::+}(self) in let final void #t140 = self::Extension2|[]=(#t137, #t138, #t139) in #t139;
   }
 }
 extension Extension on core::int {
diff --git a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.transformed.expect
index 987bcb5..84d1907 100644
--- a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.transformed.expect
@@ -145,82 +145,82 @@
     late final self::Class self;
     if(self::b)
       self = this;
-    let final self::Map<self::Class, self::Class> #t1 = map in #t1.{self::Map::[]}(this){(self::Class) → self::Class} == null ?{self::Class} #t1.{self::Map::[]=}(this, this){(self::Class, self::Class) → void} : null;
-    let final self::Map<self::Class, self::Class> #t2 = map in let final self::Class #t3 = self in #t2.{self::Map::[]}(#t3){(self::Class) → self::Class} == null ?{self::Class} #t2.{self::Map::[]=}(#t3, self){(self::Class, self::Class) → void} : null;
-    map.{self::Map::[]=}(this, this){(self::Class, self::Class) → void};
-    map.{self::Map::[]=}(self, self){(self::Class, self::Class) → void};
-    map.{self::Map::[]}(this){(self::Class) → self::Class};
-    map.{self::Map::[]}(self){(self::Class) → self::Class};
-    let final self::Map<self::Class, self::Class> #t4 = map in #t4.{self::Map::[]=}(this, #t4.{self::Map::[]}(this){(self::Class) → self::Class}.{self::Class::+}(this){(self::Class) → self::Class}){(self::Class, self::Class) → void};
-    let final self::Map<self::Class, self::Class> #t5 = map in let final self::Class #t6 = self in #t5.{self::Map::[]=}(#t6, #t5.{self::Map::[]}(#t6){(self::Class) → self::Class}.{self::Class::+}(self){(self::Class) → self::Class}){(self::Class, self::Class) → void};
+    let final self::Map<self::Class, self::Class> #t1 = map in #t1.{self::Map::[]}(this).{core::Object::==}(null) ?{self::Class} #t1.{self::Map::[]=}(this, this) : null;
+    let final self::Map<self::Class, self::Class> #t2 = map in let final self::Class #t3 = self in #t2.{self::Map::[]}(#t3).{core::Object::==}(null) ?{self::Class} #t2.{self::Map::[]=}(#t3, self) : null;
+    map.{self::Map::[]=}(this, this);
+    map.{self::Map::[]=}(self, self);
+    map.{self::Map::[]}(this);
+    map.{self::Map::[]}(self);
+    let final self::Map<self::Class, self::Class> #t4 = map in #t4.{self::Map::[]=}(this, #t4.{self::Map::[]}(this).{self::Class::+}(this));
+    let final self::Map<self::Class, self::Class> #t5 = map in let final self::Class #t6 = self in #t5.{self::Map::[]=}(#t6, #t5.{self::Map::[]}(#t6).{self::Class::+}(self));
   }
   method indexGetSetForValue(self::Map<self::Class, self::Class> map) → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Map<self::Class, self::Class> #t7 = map in let final self::Class #t8 = #t7.{self::Map::[]}(this){(self::Class) → self::Class} in #t8 == null ?{self::Class} let final void #t9 = #t7.{self::Map::[]=}(this, this){(self::Class, self::Class) → void} in this : #t8;
-    v = let final self::Map<self::Class, self::Class> #t10 = map in let final self::Class #t11 = self in let final self::Class #t12 = #t10.{self::Map::[]}(#t11){(self::Class) → self::Class} in #t12 == null ?{self::Class} let final self::Class #t13 = self in let final void #t14 = #t10.{self::Map::[]=}(#t11, #t13){(self::Class, self::Class) → void} in #t13 : #t12;
-    v = let final self::Map<self::Class, self::Class> #t15 = map in let final void #t16 = #t15.{self::Map::[]=}(this, this){(self::Class, self::Class) → void} in this;
-    v = let final self::Map<self::Class, self::Class> #t17 = map in let final self::Class #t18 = self in let final self::Class #t19 = self in let final void #t20 = #t17.{self::Map::[]=}(#t18, #t19){(self::Class, self::Class) → void} in #t19;
-    v = map.{self::Map::[]}(this){(self::Class) → self::Class};
-    v = map.{self::Map::[]}(self){(self::Class) → self::Class};
-    v = let final self::Map<self::Class, self::Class> #t21 = map in let final self::Class #t22 = #t21.{self::Map::[]}(this){(self::Class) → self::Class}.{self::Class::+}(this){(self::Class) → self::Class} in let final void #t23 = #t21.{self::Map::[]=}(this, #t22){(self::Class, self::Class) → void} in #t22;
-    v = let final self::Map<self::Class, self::Class> #t24 = map in let final self::Class #t25 = self in let final self::Class #t26 = #t24.{self::Map::[]}(#t25){(self::Class) → self::Class}.{self::Class::+}(self){(self::Class) → self::Class} in let final void #t27 = #t24.{self::Map::[]=}(#t25, #t26){(self::Class, self::Class) → void} in #t26;
+    v = let final self::Map<self::Class, self::Class> #t7 = map in let final self::Class #t8 = #t7.{self::Map::[]}(this) in #t8.{core::Object::==}(null) ?{self::Class} let final void #t9 = #t7.{self::Map::[]=}(this, this) in this : #t8;
+    v = let final self::Map<self::Class, self::Class> #t10 = map in let final self::Class #t11 = self in let final self::Class #t12 = #t10.{self::Map::[]}(#t11) in #t12.{core::Object::==}(null) ?{self::Class} let final self::Class #t13 = self in let final void #t14 = #t10.{self::Map::[]=}(#t11, #t13) in #t13 : #t12;
+    v = let final self::Map<self::Class, self::Class> #t15 = map in let final void #t16 = #t15.{self::Map::[]=}(this, this) in this;
+    v = let final self::Map<self::Class, self::Class> #t17 = map in let final self::Class #t18 = self in let final self::Class #t19 = self in let final void #t20 = #t17.{self::Map::[]=}(#t18, #t19) in #t19;
+    v = map.{self::Map::[]}(this);
+    v = map.{self::Map::[]}(self);
+    v = let final self::Map<self::Class, self::Class> #t21 = map in let final self::Class #t22 = #t21.{self::Map::[]}(this).{self::Class::+}(this) in let final void #t23 = #t21.{self::Map::[]=}(this, #t22) in #t22;
+    v = let final self::Map<self::Class, self::Class> #t24 = map in let final self::Class #t25 = self in let final self::Class #t26 = #t24.{self::Map::[]}(#t25).{self::Class::+}(self) in let final void #t27 = #t24.{self::Map::[]=}(#t25, #t26) in #t26;
   }
   method implicitExtensionGetSetForEffect(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
-    let final core::int #t28 = i in self::Extension|[](#t28, this) == null ?{self::Class} self::Extension|[]=(#t28, this, this) : null;
-    let final core::int #t29 = i in let final self::Class #t30 = self in self::Extension|[](#t29, #t30) == null ?{self::Class} self::Extension|[]=(#t29, #t30, self) : null;
+    let final core::int #t28 = i in self::Extension|[](#t28, this).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t28, this, this) : null;
+    let final core::int #t29 = i in let final self::Class #t30 = self in self::Extension|[](#t29, #t30).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t29, #t30, self) : null;
     self::Extension|[]=(i, this, this);
     self::Extension|[]=(i, self, self);
     self::Extension|[](i, this);
     self::Extension|[](i, self);
-    let final core::int #t31 = i in self::Extension|[]=(#t31, this, self::Extension|[](#t31, this).{self::Class::+}(this){(self::Class) → self::Class});
-    let final core::int #t32 = i in let final self::Class #t33 = self in self::Extension|[]=(#t32, #t33, self::Extension|[](#t32, #t33).{self::Class::+}(self){(self::Class) → self::Class});
+    let final core::int #t31 = i in self::Extension|[]=(#t31, this, self::Extension|[](#t31, this).{self::Class::+}(this));
+    let final core::int #t32 = i in let final self::Class #t33 = self in self::Extension|[]=(#t32, #t33, self::Extension|[](#t32, #t33).{self::Class::+}(self));
   }
   method implicitExtensionGetSetForValue(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final core::int #t34 = i in let final self::Class #t35 = self::Extension|[](#t34, this) in #t35 == null ?{self::Class} let final void #t36 = self::Extension|[]=(#t34, this, this) in this : #t35;
-    v = let final core::int #t37 = i in let final self::Class #t38 = self in let final self::Class #t39 = self::Extension|[](#t37, #t38) in #t39 == null ?{self::Class} let final self::Class #t40 = self in let final void #t41 = self::Extension|[]=(#t37, #t38, #t40) in #t40 : #t39;
+    v = let final core::int #t34 = i in let final self::Class #t35 = self::Extension|[](#t34, this) in #t35.{core::Object::==}(null) ?{self::Class} let final void #t36 = self::Extension|[]=(#t34, this, this) in this : #t35;
+    v = let final core::int #t37 = i in let final self::Class #t38 = self in let final self::Class #t39 = self::Extension|[](#t37, #t38) in #t39.{core::Object::==}(null) ?{self::Class} let final self::Class #t40 = self in let final void #t41 = self::Extension|[]=(#t37, #t38, #t40) in #t40 : #t39;
     v = let final core::int #t42 = i in let final void #t43 = self::Extension|[]=(#t42, this, this) in this;
     v = let final core::int #t44 = i in let final self::Class #t45 = self in let final self::Class #t46 = self in let final void #t47 = self::Extension|[]=(#t44, #t45, #t46) in #t46;
     v = self::Extension|[](i, this);
     v = self::Extension|[](i, self);
-    v = let final core::int #t48 = i in let final self::Class #t49 = self::Extension|[](#t48, this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t50 = self::Extension|[]=(#t48, this, #t49) in #t49;
-    v = let final core::int #t51 = i in let final self::Class #t52 = self in let final self::Class #t53 = self::Extension|[](#t51, #t52).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t54 = self::Extension|[]=(#t51, #t52, #t53) in #t53;
+    v = let final core::int #t48 = i in let final self::Class #t49 = self::Extension|[](#t48, this).{self::Class::+}(this) in let final void #t50 = self::Extension|[]=(#t48, this, #t49) in #t49;
+    v = let final core::int #t51 = i in let final self::Class #t52 = self in let final self::Class #t53 = self::Extension|[](#t51, #t52).{self::Class::+}(self) in let final void #t54 = self::Extension|[]=(#t51, #t52, #t53) in #t53;
   }
   method explicitExtensionGetSetForEffect(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
-    let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class} self::Extension|[]=(#t55, this, this) : null;
-    let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null;
+    let final core::int #t55 = i in self::Extension|[](#t55, this).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t55, this, this) : null;
+    let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null;
     self::Extension|[]=(i, this, this);
     self::Extension|[]=(i, self, self);
     self::Extension|[](i, this);
     self::Extension|[](i, self);
-    let final core::int #t58 = i in self::Extension|[]=(#t58, this, self::Extension|[](#t58, this).{self::Class::+}(this){(self::Class) → self::Class});
-    let final core::int #t59 = i in let final self::Class #t60 = self in self::Extension|[]=(#t59, #t60, self::Extension|[](#t59, #t60).{self::Class::+}(self){(self::Class) → self::Class});
+    let final core::int #t58 = i in self::Extension|[]=(#t58, this, self::Extension|[](#t58, this).{self::Class::+}(this));
+    let final core::int #t59 = i in let final self::Class #t60 = self in self::Extension|[]=(#t59, #t60, self::Extension|[](#t59, #t60).{self::Class::+}(self));
   }
   method explicitExtensionGetSetForValue(core::int i) → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final core::int #t61 = i in let final self::Class #t62 = self::Extension|[](#t61, this) in #t62 == null ?{self::Class} let final void #t63 = self::Extension|[]=(#t61, this, this) in this : #t62;
-    v = let final core::int #t64 = i in let final self::Class #t65 = self in let final self::Class #t66 = self::Extension|[](#t64, #t65) in #t66 == null ?{self::Class} let final self::Class #t67 = self in let final void #t68 = self::Extension|[]=(#t64, #t65, #t67) in #t67 : #t66;
+    v = let final core::int #t61 = i in let final self::Class #t62 = self::Extension|[](#t61, this) in #t62.{core::Object::==}(null) ?{self::Class} let final void #t63 = self::Extension|[]=(#t61, this, this) in this : #t62;
+    v = let final core::int #t64 = i in let final self::Class #t65 = self in let final self::Class #t66 = self::Extension|[](#t64, #t65) in #t66.{core::Object::==}(null) ?{self::Class} let final self::Class #t67 = self in let final void #t68 = self::Extension|[]=(#t64, #t65, #t67) in #t67 : #t66;
     v = let final core::int #t69 = i in let final void #t70 = self::Extension|[]=(#t69, this, this) in this;
     v = let final core::int #t71 = i in let final self::Class #t72 = self in let final void #t73 = self::Extension|[]=(#t71, self, #t72) in #t72;
     v = self::Extension|[](i, this);
     v = self::Extension|[](i, self);
-    v = let final core::int #t74 = i in let final self::Class #t75 = self::Extension|[](#t74, this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t76 = self::Extension|[]=(#t74, this, #t75) in #t75;
-    v = let final core::int #t77 = i in let final self::Class #t78 = self in let final self::Class #t79 = self::Extension|[](#t77, #t78).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t80 = self::Extension|[]=(#t77, #t78, #t79) in #t79;
+    v = let final core::int #t74 = i in let final self::Class #t75 = self::Extension|[](#t74, this).{self::Class::+}(this) in let final void #t76 = self::Extension|[]=(#t74, this, #t75) in #t75;
+    v = let final core::int #t77 = i in let final self::Class #t78 = self in let final self::Class #t79 = self::Extension|[](#t77, #t78).{self::Class::+}(self) in let final void #t80 = self::Extension|[]=(#t77, #t78, #t79) in #t79;
   }
 }
 class Subclass extends self::Class {
@@ -231,28 +231,28 @@
     late final self::Class self;
     if(self::b)
       self = this;
-    super.{self::Class::[]}(this) == null ?{self::Class} super.{self::Class::[]=}(this, this) : null;
-    let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class} super.{self::Class::[]=}(#t81, self) : null;
+    super.{self::Class::[]}(this).{core::Object::==}(null) ?{self::Class} super.{self::Class::[]=}(this, this) : null;
+    let final self::Class #t81 = self in super.{self::Class::[]}(#t81).{core::Object::==}(null) ?{self::Class} super.{self::Class::[]=}(#t81, self) : null;
     super.{self::Class::[]=}(this, this);
     super.{self::Class::[]=}(self, self);
     super.{self::Class::[]}(this);
     super.{self::Class::[]}(self);
-    super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class) → self::Class});
-    let final self::Class #t82 = self in super.{self::Class::[]=}(#t82, super.{self::Class::[]}(#t82).{self::Class::+}(self){(self::Class) → self::Class});
+    super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this));
+    let final self::Class #t82 = self in super.{self::Class::[]=}(#t82, super.{self::Class::[]}(#t82).{self::Class::+}(self));
   }
   method superIndexGetSetForValue() → void {
     late final self::Class self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Class #t83 = super.{self::Class::[]}(this) in #t83 == null ?{self::Class} let final void #t84 = super.{self::Class::[]=}(this, this) in this : #t83;
-    v = let final self::Class #t85 = self in let final self::Class #t86 = super.{self::Class::[]}(#t85) in #t86 == null ?{self::Class} let final self::Class #t87 = self in let final void #t88 = super.{self::Class::[]=}(#t85, #t87) in #t87 : #t86;
+    v = let final self::Class #t83 = super.{self::Class::[]}(this) in #t83.{core::Object::==}(null) ?{self::Class} let final void #t84 = super.{self::Class::[]=}(this, this) in this : #t83;
+    v = let final self::Class #t85 = self in let final self::Class #t86 = super.{self::Class::[]}(#t85) in #t86.{core::Object::==}(null) ?{self::Class} let final self::Class #t87 = self in let final void #t88 = super.{self::Class::[]=}(#t85, #t87) in #t87 : #t86;
     v = let final void #t89 = super.{self::Class::[]=}(this, this) in this;
     v = let final self::Class #t90 = self in let final self::Class #t91 = self in let final void #t92 = super.{self::Class::[]=}(#t90, #t91) in #t91;
     v = super.{self::Class::[]}(this);
     v = super.{self::Class::[]}(self);
-    v = let final self::Class #t93 = super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t94 = super.{self::Class::[]=}(this, #t93) in #t93;
-    v = let final self::Class #t95 = self in let final self::Class #t96 = super.{self::Class::[]}(#t95).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t97 = super.{self::Class::[]=}(#t95, #t96) in #t96;
+    v = let final self::Class #t93 = super.{self::Class::[]}(this).{self::Class::+}(this) in let final void #t94 = super.{self::Class::[]=}(this, #t93) in #t93;
+    v = let final self::Class #t95 = self in let final self::Class #t96 = super.{self::Class::[]}(#t95).{self::Class::+}(self) in let final void #t97 = super.{self::Class::[]=}(#t95, #t96) in #t96;
   }
 }
 class Class2 extends core::Object {
@@ -265,55 +265,55 @@
     late final self::Class2 self;
     if(self::b)
       self = this;
-    self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
-    let final self::Class2 #t98 = self in let final self::Class2 #t99 = self in self::Extension2|[](#t98, #t99) == null ?{self::Class2} self::Extension2|[]=(#t98, #t99, self) : null;
+    self::Extension2|[](this, this).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
+    let final self::Class2 #t98 = self in let final self::Class2 #t99 = self in self::Extension2|[](#t98, #t99).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(#t98, #t99, self) : null;
     self::Extension2|[]=(this, this, this);
     self::Extension2|[]=(self, self, self);
     self::Extension2|[](this, this);
     self::Extension2|[](self, self);
-    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2});
-    let final self::Class2 #t100 = self in let final self::Class2 #t101 = self in self::Extension2|[]=(#t100, #t101, self::Extension2|[](#t100, #t101).{self::Class2::+}(self){(self::Class2) → self::Class2});
+    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this));
+    let final self::Class2 #t100 = self in let final self::Class2 #t101 = self in self::Extension2|[]=(#t100, #t101, self::Extension2|[](#t100, #t101).{self::Class2::+}(self));
   }
   method implicitExtensionGetSetForValue() → void {
     late final self::Class2 self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Class2 #t102 = self::Extension2|[](this, this) in #t102 == null ?{self::Class2} let final void #t103 = self::Extension2|[]=(this, this, this) in this : #t102;
-    v = let final self::Class2 #t104 = self in let final self::Class2 #t105 = self in let final self::Class2 #t106 = self::Extension2|[](#t104, #t105) in #t106 == null ?{self::Class2} let final self::Class2 #t107 = self in let final void #t108 = self::Extension2|[]=(#t104, #t105, #t107) in #t107 : #t106;
+    v = let final self::Class2 #t102 = self::Extension2|[](this, this) in #t102.{core::Object::==}(null) ?{self::Class2} let final void #t103 = self::Extension2|[]=(this, this, this) in this : #t102;
+    v = let final self::Class2 #t104 = self in let final self::Class2 #t105 = self in let final self::Class2 #t106 = self::Extension2|[](#t104, #t105) in #t106.{core::Object::==}(null) ?{self::Class2} let final self::Class2 #t107 = self in let final void #t108 = self::Extension2|[]=(#t104, #t105, #t107) in #t107 : #t106;
     v = let final void #t109 = self::Extension2|[]=(this, this, this) in this;
     v = let final self::Class2 #t110 = self in let final self::Class2 #t111 = self in let final self::Class2 #t112 = self in let final void #t113 = self::Extension2|[]=(#t110, #t111, #t112) in #t112;
     v = self::Extension2|[](this, this);
     v = self::Extension2|[](self, self);
-    v = let final self::Class2 #t114 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2} in let final void #t115 = self::Extension2|[]=(this, this, #t114) in #t114;
-    v = let final self::Class2 #t116 = self in let final self::Class2 #t117 = self in let final self::Class2 #t118 = self::Extension2|[](#t116, #t117).{self::Class2::+}(self){(self::Class2) → self::Class2} in let final void #t119 = self::Extension2|[]=(#t116, #t117, #t118) in #t118;
+    v = let final self::Class2 #t114 = self::Extension2|[](this, this).{self::Class2::+}(this) in let final void #t115 = self::Extension2|[]=(this, this, #t114) in #t114;
+    v = let final self::Class2 #t116 = self in let final self::Class2 #t117 = self in let final self::Class2 #t118 = self::Extension2|[](#t116, #t117).{self::Class2::+}(self) in let final void #t119 = self::Extension2|[]=(#t116, #t117, #t118) in #t118;
   }
   method explicitExtensionGetSetForEffect() → void {
     late final self::Class2 self;
     if(self::b)
       self = this;
-    self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
-    let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null;
+    self::Extension2|[](this, this).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(this, this, this) : null;
+    let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121).{core::Object::==}(null) ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null;
     self::Extension2|[]=(this, this, this);
     self::Extension2|[]=(self, self, self);
     self::Extension2|[](this, this);
     self::Extension2|[](self, self);
-    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2});
-    let final self::Class2 #t122 = self in let final self::Class2 #t123 = self in self::Extension2|[]=(#t122, #t123, self::Extension2|[](#t122, #t123).{self::Class2::+}(self){(self::Class2) → self::Class2});
+    self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this));
+    let final self::Class2 #t122 = self in let final self::Class2 #t123 = self in self::Extension2|[]=(#t122, #t123, self::Extension2|[](#t122, #t123).{self::Class2::+}(self));
   }
   method explicitExtensionGetSetForValue() → void {
     late final self::Class2 self;
     if(self::b)
       self = this;
     dynamic v;
-    v = let final self::Class2 #t124 = self::Extension2|[](this, this) in #t124 == null ?{self::Class2} let final void #t125 = self::Extension2|[]=(this, this, this) in this : #t124;
-    v = let final self::Class2 #t126 = self in let final self::Class2 #t127 = self in let final self::Class2 #t128 = self::Extension2|[](#t126, #t127) in #t128 == null ?{self::Class2} let final self::Class2 #t129 = self in let final void #t130 = self::Extension2|[]=(#t126, #t127, #t129) in #t129 : #t128;
+    v = let final self::Class2 #t124 = self::Extension2|[](this, this) in #t124.{core::Object::==}(null) ?{self::Class2} let final void #t125 = self::Extension2|[]=(this, this, this) in this : #t124;
+    v = let final self::Class2 #t126 = self in let final self::Class2 #t127 = self in let final self::Class2 #t128 = self::Extension2|[](#t126, #t127) in #t128.{core::Object::==}(null) ?{self::Class2} let final self::Class2 #t129 = self in let final void #t130 = self::Extension2|[]=(#t126, #t127, #t129) in #t129 : #t128;
     v = let final void #t131 = self::Extension2|[]=(this, this, this) in this;
     v = let final self::Class2 #t132 = self in let final self::Class2 #t133 = self in let final void #t134 = self::Extension2|[]=(#t132, self, #t133) in #t133;
     v = self::Extension2|[](this, this);
     v = self::Extension2|[](self, self);
-    v = let final self::Class2 #t135 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2} in let final void #t136 = self::Extension2|[]=(this, this, #t135) in #t135;
-    v = let final self::Class2 #t137 = self in let final self::Class2 #t138 = self in let final self::Class2 #t139 = self::Extension2|[](#t137, #t138).{self::Class2::+}(self){(self::Class2) → self::Class2} in let final void #t140 = self::Extension2|[]=(#t137, #t138, #t139) in #t139;
+    v = let final self::Class2 #t135 = self::Extension2|[](this, this).{self::Class2::+}(this) in let final void #t136 = self::Extension2|[]=(this, this, #t135) in #t135;
+    v = let final self::Class2 #t137 = self in let final self::Class2 #t138 = self in let final self::Class2 #t139 = self::Extension2|[](#t137, #t138).{self::Class2::+}(self) in let final void #t140 = self::Extension2|[]=(#t137, #t138, #t139) in #t139;
   }
 }
 extension Extension on core::int {
diff --git a/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.strong.expect b/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.strong.expect
index bac2c56..255b675 100644
--- a/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.strong.expect
@@ -8,6 +8,6 @@
     : super core::Object::•()
     ;
   get current() → self::A::T%
-    return this.{self::A::_current}{self::A::T?} as{ForNonNullableByDefault} self::A::T%;
+    return this.{self::A::_current} as{ForNonNullableByDefault} self::A::T%;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.strong.transformed.expect
index c6dc621..fbff745 100644
--- a/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.strong.transformed.expect
@@ -8,6 +8,6 @@
     : super core::Object::•()
     ;
   get current() → self::A::T%
-    return let self::A::T? #t1 = this.{self::A::_current}{self::A::T?} in #t1.==(null) ?{self::A::T%} #t1 as{ForNonNullableByDefault} self::A::T% : #t1{self::A::T%};
+    return let self::A::T? #t1 = this.{self::A::_current} in #t1.==(null) ?{self::A::T%} #t1 as{ForNonNullableByDefault} self::A::T% : #t1{self::A::T%};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.weak.expect b/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.weak.expect
index bac2c56..255b675 100644
--- a/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.weak.expect
@@ -8,6 +8,6 @@
     : super core::Object::•()
     ;
   get current() → self::A::T%
-    return this.{self::A::_current}{self::A::T?} as{ForNonNullableByDefault} self::A::T%;
+    return this.{self::A::_current} as{ForNonNullableByDefault} self::A::T%;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.weak.transformed.expect
index 85eb6b6..4c4e247 100644
--- a/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.weak.transformed.expect
@@ -8,6 +8,6 @@
     : super core::Object::•()
     ;
   get current() → self::A::T%
-    return this.{self::A::_current}{self::A::T?};
+    return this.{self::A::_current};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/return_async.dart.strong.expect b/pkg/front_end/testcases/nnbd/return_async.dart.strong.expect
index ce2f50d..2c50b42 100644
--- a/pkg/front_end/testcases/nnbd/return_async.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/return_async.dart.strong.expect
@@ -24,10 +24,10 @@
   final asy::Completer<void> completer = asy::Completer::•<void>();
   asy::runZonedGuarded<asy::Future<Null>>(() → asy::Future<Null> async {
     await self::allYield();
-    completer.{asy::Completer::complete}(null){([FutureOr<void>?]) → void};
+    completer.{asy::Completer::complete}(null);
   }, (core::Object e, core::StackTrace s) → void {
-    completer.{asy::Completer::completeError}(e, s){(core::Object, [core::StackTrace?]) → void};
+    completer.{asy::Completer::completeError}(e, s);
   });
-  return completer.{asy::Completer::future}{asy::Future<void>};
+  return completer.{asy::Completer::future};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/return_async.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/return_async.dart.strong.transformed.expect
index f385f6f..b9094ae 100644
--- a/pkg/front_end/testcases/nnbd/return_async.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_async.dart.strong.transformed.expect
@@ -126,7 +126,7 @@
               {
                 [yield] let dynamic #t6 = asy::_awaitHelper(self::allYield(), :async_op_then, :async_op_error, :async_op) in null;
                 _in::unsafeCast<void>(:result);
-                completer.{asy::Completer::complete}(null){([FutureOr<void>?]) → void};
+                completer.{asy::Completer::complete}(null);
               }
               asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
               return;
@@ -140,9 +140,9 @@
           :is_sync = true;
           return :async_future;
         }, (core::Object e, core::StackTrace s) → void {
-          completer.{asy::Completer::completeError}(e, s){(core::Object, [core::StackTrace?]) → void};
+          completer.{asy::Completer::completeError}(e, s);
         });
-        :return_value = completer.{asy::Completer::future}{asy::Future<void>};
+        :return_value = completer.{asy::Completer::future};
         break #L4;
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
diff --git a/pkg/front_end/testcases/nnbd/return_async.dart.weak.expect b/pkg/front_end/testcases/nnbd/return_async.dart.weak.expect
index ce2f50d..2c50b42 100644
--- a/pkg/front_end/testcases/nnbd/return_async.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/return_async.dart.weak.expect
@@ -24,10 +24,10 @@
   final asy::Completer<void> completer = asy::Completer::•<void>();
   asy::runZonedGuarded<asy::Future<Null>>(() → asy::Future<Null> async {
     await self::allYield();
-    completer.{asy::Completer::complete}(null){([FutureOr<void>?]) → void};
+    completer.{asy::Completer::complete}(null);
   }, (core::Object e, core::StackTrace s) → void {
-    completer.{asy::Completer::completeError}(e, s){(core::Object, [core::StackTrace?]) → void};
+    completer.{asy::Completer::completeError}(e, s);
   });
-  return completer.{asy::Completer::future}{asy::Future<void>};
+  return completer.{asy::Completer::future};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/return_async.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/return_async.dart.weak.transformed.expect
index f385f6f..b9094ae 100644
--- a/pkg/front_end/testcases/nnbd/return_async.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_async.dart.weak.transformed.expect
@@ -126,7 +126,7 @@
               {
                 [yield] let dynamic #t6 = asy::_awaitHelper(self::allYield(), :async_op_then, :async_op_error, :async_op) in null;
                 _in::unsafeCast<void>(:result);
-                completer.{asy::Completer::complete}(null){([FutureOr<void>?]) → void};
+                completer.{asy::Completer::complete}(null);
               }
               asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
               return;
@@ -140,9 +140,9 @@
           :is_sync = true;
           return :async_future;
         }, (core::Object e, core::StackTrace s) → void {
-          completer.{asy::Completer::completeError}(e, s){(core::Object, [core::StackTrace?]) → void};
+          completer.{asy::Completer::completeError}(e, s);
         });
-        :return_value = completer.{asy::Completer::future}{asy::Future<void>};
+        :return_value = completer.{asy::Completer::future};
         break #L4;
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
diff --git a/pkg/front_end/testcases/nnbd/return_late.dart.strong.expect b/pkg/front_end/testcases/nnbd/return_late.dart.strong.expect
index e58813e..66e9443 100644
--- a/pkg/front_end/testcases/nnbd/return_late.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/return_late.dart.strong.expect
@@ -8,7 +8,7 @@
     : self::Class::field = field, super core::Object::•()
     ;
   method returnTypeVariable() → self::Class::E% {
-    late self::Class::E% result = this.{self::Class::field}{self::Class::E%};
+    late self::Class::E% result = this.{self::Class::field};
     return result;
   }
 }
@@ -21,14 +21,14 @@
   return result;
 }
 static method main() → dynamic {
-  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}(){() → core::int});
-  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}(){() → core::int?});
-  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}(){() → core::int?});
+  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}());
+  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}());
+  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}());
   self::expect(42, self::returnNonNullable(42));
   self::expect(87, self::returnNullable(87));
   self::expect(null, self::returnNullable(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/return_late.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/return_late.dart.strong.transformed.expect
index 6c634e1..15e6379 100644
--- a/pkg/front_end/testcases/nnbd/return_late.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_late.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     ;
   method returnTypeVariable() → self::Class::E% {
     function #result#initializer() → self::Class::E%
-      return this.{self::Class::field}{self::Class::E%};
+      return this.{self::Class::field};
     late self::Class::E% result = #result#initializer.call();
     return result;
   }
@@ -27,14 +27,14 @@
   return result;
 }
 static method main() → dynamic {
-  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}(){() → core::int});
-  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}(){() → core::int?});
-  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}(){() → core::int?});
+  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}());
+  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}());
+  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}());
   self::expect(42, self::returnNonNullable(42));
   self::expect(87, self::returnNullable(87));
   self::expect(null, self::returnNullable(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/return_late.dart.weak.expect b/pkg/front_end/testcases/nnbd/return_late.dart.weak.expect
index e58813e..66e9443 100644
--- a/pkg/front_end/testcases/nnbd/return_late.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/return_late.dart.weak.expect
@@ -8,7 +8,7 @@
     : self::Class::field = field, super core::Object::•()
     ;
   method returnTypeVariable() → self::Class::E% {
-    late self::Class::E% result = this.{self::Class::field}{self::Class::E%};
+    late self::Class::E% result = this.{self::Class::field};
     return result;
   }
 }
@@ -21,14 +21,14 @@
   return result;
 }
 static method main() → dynamic {
-  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}(){() → core::int});
-  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}(){() → core::int?});
-  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}(){() → core::int?});
+  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}());
+  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}());
+  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}());
   self::expect(42, self::returnNonNullable(42));
   self::expect(87, self::returnNullable(87));
   self::expect(null, self::returnNullable(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/return_late.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/return_late.dart.weak.transformed.expect
index 6c634e1..15e6379 100644
--- a/pkg/front_end/testcases/nnbd/return_late.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_late.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     ;
   method returnTypeVariable() → self::Class::E% {
     function #result#initializer() → self::Class::E%
-      return this.{self::Class::field}{self::Class::E%};
+      return this.{self::Class::field};
     late self::Class::E% result = #result#initializer.call();
     return result;
   }
@@ -27,14 +27,14 @@
   return result;
 }
 static method main() → dynamic {
-  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}(){() → core::int});
-  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}(){() → core::int?});
-  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}(){() → core::int?});
+  self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}());
+  self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}());
+  self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}());
   self::expect(42, self::returnNonNullable(42));
   self::expect(87, self::returnNullable(87));
   self::expect(null, self::returnNullable(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.strong.expect b/pkg/front_end/testcases/nnbd/return_null.dart.strong.expect
index dae1245..e64024b 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.strong.expect
@@ -211,13 +211,13 @@
   core::int? local1 = (() → core::int? {
     if(b)
       return 0;
-  })(){() → core::int?};
+  }).call();
   core::int? local2 = (() → core::int? {
     if(b)
       return null;
     if(!b)
       return 0;
-  })(){() → core::int?};
+  }).call();
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
index 377b821..42cc194 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
@@ -609,13 +609,13 @@
   core::int? local1 = (() → core::int? {
     if(b)
       return 0;
-  })(){() → core::int?};
+  }).call();
   core::int? local2 = (() → core::int? {
     if(b)
       return null;
     if(!b)
       return 0;
-  })(){() → core::int?};
+  }).call();
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.weak.expect b/pkg/front_end/testcases/nnbd/return_null.dart.weak.expect
index 0711f1f..5c3ec88 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.weak.expect
@@ -218,13 +218,13 @@
   core::int? local1 = (() → core::int? {
     if(b)
       return 0;
-  })(){() → core::int?};
+  }).call();
   core::int? local2 = (() → core::int? {
     if(b)
       return null;
     if(!b)
       return 0;
-  })(){() → core::int?};
+  }).call();
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
index ed8f2cb..0790e3a 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
@@ -616,13 +616,13 @@
   core::int? local1 = (() → core::int? {
     if(b)
       return 0;
-  })(){() → core::int?};
+  }).call();
   core::int? local2 = (() → core::int? {
     if(b)
       return null;
     if(!b)
       return 0;
-  })(){() → core::int?};
+  }).call();
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/shorting_null_check.dart.strong.expect b/pkg/front_end/testcases/nnbd/shorting_null_check.dart.strong.expect
index a02071a..af891e2 100644
--- a/pkg/front_end/testcases/nnbd/shorting_null_check.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_null_check.dart.strong.expect
@@ -26,7 +26,7 @@
     : self::Foo::bar = bar, super core::Object::•()
     ;
   operator [](core::int? index) → self::Bar?
-    return !(index == null) ?{self::Bar?} new self::Bar::•(index{core::int}) : null;
+    return !index.{core::num::==}(null) ?{self::Bar?} new self::Bar::•(index{core::int}) : null;
 }
 class Bar extends core::Object {
   field core::int baz;
@@ -36,28 +36,28 @@
   operator [](core::int index) → core::int
     return index;
   operator ==(core::Object other) → core::bool
-    return other is{ForNonNullableByDefault} self::Bar && this.{self::Bar::baz}{core::int} =={core::num::==}{(core::Object) → core::bool} other{self::Bar}.{self::Bar::baz}{core::int};
+    return other is{ForNonNullableByDefault} self::Bar && this.{self::Bar::baz}.{core::num::==}(other{self::Bar}.{self::Bar::baz});
 }
 static method test1(self::A? a) → core::int?
-  return let final self::A? #t1 = a in #t1 == null ?{core::int?} null : #t1{self::A}.{self::A::zero}{core::int}!;
+  return let final self::A? #t1 = a in #t1.{core::Object::==}(null) ?{core::int?} null : #t1{self::A}.{self::A::zero}!;
 static method test2(self::A? a) → core::int?
-  return let final self::A? #t2 = a in #t2 == null ?{core::int?} null : #t2{self::A}.{self::A::zeroOrNull}{core::int?}!;
+  return let final self::A? #t2 = a in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{self::A}.{self::A::zeroOrNull}!;
 static method test3(self::A? a) → core::bool?
-  return let final self::A? #t3 = a in #t3 == null ?{core::bool?} null : #t3{self::A}.{self::A::zero}{core::int}!.{core::int::isEven}{core::bool};
+  return let final self::A? #t3 = a in #t3.{core::Object::==}(null) ?{core::bool?} null : #t3{self::A}.{self::A::zero}!.{core::int::isEven};
 static method test4(self::A? a) → core::bool?
-  return let final self::A? #t4 = a in #t4 == null ?{core::bool?} null : #t4{self::A}.{self::A::zeroOrNull}{core::int?}!.{core::int::isEven}{core::bool};
+  return let final self::A? #t4 = a in #t4.{core::Object::==}(null) ?{core::bool?} null : #t4{self::A}.{self::A::zeroOrNull}!.{core::int::isEven};
 static method test5(self::Foo? foo) → self::Bar?
-  return let final self::Foo? #t5 = foo in #t5 == null ?{self::Bar?} null : #t5{self::Foo}.{self::Foo::bar}{self::Bar?}!;
+  return let final self::Foo? #t5 = foo in #t5.{core::Object::==}(null) ?{self::Bar?} null : #t5{self::Foo}.{self::Foo::bar}!;
 static method test6(self::Foo? foo) → core::int?
-  return let final self::Foo? #t6 = foo in #t6 == null ?{core::int?} null : #t6{self::Foo}.{self::Foo::bar}{self::Bar?}!.{self::Bar::baz}{core::int};
+  return let final self::Foo? #t6 = foo in #t6.{core::Object::==}(null) ?{core::int?} null : #t6{self::Foo}.{self::Foo::bar}!.{self::Bar::baz};
 static method test7(self::Foo? foo, core::int baz) → core::int?
-  return let final self::Foo? #t7 = foo in #t7 == null ?{core::int?} null : #t7{self::Foo}.{self::Foo::bar}{self::Bar?}!.{self::Bar::[]}(baz){(core::int) → core::int};
+  return let final self::Foo? #t7 = foo in #t7.{core::Object::==}(null) ?{core::int?} null : #t7{self::Foo}.{self::Foo::bar}!.{self::Bar::[]}(baz);
 static method test8(self::Foo? foo, core::int? bar) → self::Bar?
-  return let final self::Foo? #t8 = foo in #t8 == null ?{self::Bar?} null : #t8{self::Foo}.{self::Foo::[]}(bar){(core::int?) → self::Bar?}!;
+  return let final self::Foo? #t8 = foo in #t8.{core::Object::==}(null) ?{self::Bar?} null : #t8{self::Foo}.{self::Foo::[]}(bar)!;
 static method test9(self::Foo? foo, core::int? bar) → core::int?
-  return let final self::Foo? #t9 = foo in #t9 == null ?{core::int?} null : #t9{self::Foo}.{self::Foo::[]}(bar){(core::int?) → self::Bar?}!.{self::Bar::baz}{core::int};
+  return let final self::Foo? #t9 = foo in #t9.{core::Object::==}(null) ?{core::int?} null : #t9{self::Foo}.{self::Foo::[]}(bar)!.{self::Bar::baz};
 static method test10(self::Foo? foo, core::int? bar, core::int baz) → dynamic
-  return let final self::Foo? #t10 = foo in #t10 == null ?{core::int?} null : #t10{self::Foo}.{self::Foo::[]}(bar){(core::int?) → self::Bar?}!.{self::Bar::[]}(baz){(core::int) → core::int};
+  return let final self::Foo? #t10 = foo in #t10.{core::Object::==}(null) ?{core::int?} null : #t10{self::Foo}.{self::Foo::[]}(bar)!.{self::Bar::[]}(baz);
 static method main() → dynamic {
   self::expect(0, self::test1(new self::A::•(0)));
   self::expect(null, self::test1(null));
@@ -89,12 +89,12 @@
   self::throws(() → void => self::test10(new self::Foo::•(new self::Bar::•(0)), null, 87));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/shorting_null_check.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/shorting_null_check.dart.strong.transformed.expect
index a02071a..af891e2 100644
--- a/pkg/front_end/testcases/nnbd/shorting_null_check.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_null_check.dart.strong.transformed.expect
@@ -26,7 +26,7 @@
     : self::Foo::bar = bar, super core::Object::•()
     ;
   operator [](core::int? index) → self::Bar?
-    return !(index == null) ?{self::Bar?} new self::Bar::•(index{core::int}) : null;
+    return !index.{core::num::==}(null) ?{self::Bar?} new self::Bar::•(index{core::int}) : null;
 }
 class Bar extends core::Object {
   field core::int baz;
@@ -36,28 +36,28 @@
   operator [](core::int index) → core::int
     return index;
   operator ==(core::Object other) → core::bool
-    return other is{ForNonNullableByDefault} self::Bar && this.{self::Bar::baz}{core::int} =={core::num::==}{(core::Object) → core::bool} other{self::Bar}.{self::Bar::baz}{core::int};
+    return other is{ForNonNullableByDefault} self::Bar && this.{self::Bar::baz}.{core::num::==}(other{self::Bar}.{self::Bar::baz});
 }
 static method test1(self::A? a) → core::int?
-  return let final self::A? #t1 = a in #t1 == null ?{core::int?} null : #t1{self::A}.{self::A::zero}{core::int}!;
+  return let final self::A? #t1 = a in #t1.{core::Object::==}(null) ?{core::int?} null : #t1{self::A}.{self::A::zero}!;
 static method test2(self::A? a) → core::int?
-  return let final self::A? #t2 = a in #t2 == null ?{core::int?} null : #t2{self::A}.{self::A::zeroOrNull}{core::int?}!;
+  return let final self::A? #t2 = a in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{self::A}.{self::A::zeroOrNull}!;
 static method test3(self::A? a) → core::bool?
-  return let final self::A? #t3 = a in #t3 == null ?{core::bool?} null : #t3{self::A}.{self::A::zero}{core::int}!.{core::int::isEven}{core::bool};
+  return let final self::A? #t3 = a in #t3.{core::Object::==}(null) ?{core::bool?} null : #t3{self::A}.{self::A::zero}!.{core::int::isEven};
 static method test4(self::A? a) → core::bool?
-  return let final self::A? #t4 = a in #t4 == null ?{core::bool?} null : #t4{self::A}.{self::A::zeroOrNull}{core::int?}!.{core::int::isEven}{core::bool};
+  return let final self::A? #t4 = a in #t4.{core::Object::==}(null) ?{core::bool?} null : #t4{self::A}.{self::A::zeroOrNull}!.{core::int::isEven};
 static method test5(self::Foo? foo) → self::Bar?
-  return let final self::Foo? #t5 = foo in #t5 == null ?{self::Bar?} null : #t5{self::Foo}.{self::Foo::bar}{self::Bar?}!;
+  return let final self::Foo? #t5 = foo in #t5.{core::Object::==}(null) ?{self::Bar?} null : #t5{self::Foo}.{self::Foo::bar}!;
 static method test6(self::Foo? foo) → core::int?
-  return let final self::Foo? #t6 = foo in #t6 == null ?{core::int?} null : #t6{self::Foo}.{self::Foo::bar}{self::Bar?}!.{self::Bar::baz}{core::int};
+  return let final self::Foo? #t6 = foo in #t6.{core::Object::==}(null) ?{core::int?} null : #t6{self::Foo}.{self::Foo::bar}!.{self::Bar::baz};
 static method test7(self::Foo? foo, core::int baz) → core::int?
-  return let final self::Foo? #t7 = foo in #t7 == null ?{core::int?} null : #t7{self::Foo}.{self::Foo::bar}{self::Bar?}!.{self::Bar::[]}(baz){(core::int) → core::int};
+  return let final self::Foo? #t7 = foo in #t7.{core::Object::==}(null) ?{core::int?} null : #t7{self::Foo}.{self::Foo::bar}!.{self::Bar::[]}(baz);
 static method test8(self::Foo? foo, core::int? bar) → self::Bar?
-  return let final self::Foo? #t8 = foo in #t8 == null ?{self::Bar?} null : #t8{self::Foo}.{self::Foo::[]}(bar){(core::int?) → self::Bar?}!;
+  return let final self::Foo? #t8 = foo in #t8.{core::Object::==}(null) ?{self::Bar?} null : #t8{self::Foo}.{self::Foo::[]}(bar)!;
 static method test9(self::Foo? foo, core::int? bar) → core::int?
-  return let final self::Foo? #t9 = foo in #t9 == null ?{core::int?} null : #t9{self::Foo}.{self::Foo::[]}(bar){(core::int?) → self::Bar?}!.{self::Bar::baz}{core::int};
+  return let final self::Foo? #t9 = foo in #t9.{core::Object::==}(null) ?{core::int?} null : #t9{self::Foo}.{self::Foo::[]}(bar)!.{self::Bar::baz};
 static method test10(self::Foo? foo, core::int? bar, core::int baz) → dynamic
-  return let final self::Foo? #t10 = foo in #t10 == null ?{core::int?} null : #t10{self::Foo}.{self::Foo::[]}(bar){(core::int?) → self::Bar?}!.{self::Bar::[]}(baz){(core::int) → core::int};
+  return let final self::Foo? #t10 = foo in #t10.{core::Object::==}(null) ?{core::int?} null : #t10{self::Foo}.{self::Foo::[]}(bar)!.{self::Bar::[]}(baz);
 static method main() → dynamic {
   self::expect(0, self::test1(new self::A::•(0)));
   self::expect(null, self::test1(null));
@@ -89,12 +89,12 @@
   self::throws(() → void => self::test10(new self::Foo::•(new self::Bar::•(0)), null, 87));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/shorting_null_check.dart.weak.expect b/pkg/front_end/testcases/nnbd/shorting_null_check.dart.weak.expect
index a02071a..af891e2 100644
--- a/pkg/front_end/testcases/nnbd/shorting_null_check.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_null_check.dart.weak.expect
@@ -26,7 +26,7 @@
     : self::Foo::bar = bar, super core::Object::•()
     ;
   operator [](core::int? index) → self::Bar?
-    return !(index == null) ?{self::Bar?} new self::Bar::•(index{core::int}) : null;
+    return !index.{core::num::==}(null) ?{self::Bar?} new self::Bar::•(index{core::int}) : null;
 }
 class Bar extends core::Object {
   field core::int baz;
@@ -36,28 +36,28 @@
   operator [](core::int index) → core::int
     return index;
   operator ==(core::Object other) → core::bool
-    return other is{ForNonNullableByDefault} self::Bar && this.{self::Bar::baz}{core::int} =={core::num::==}{(core::Object) → core::bool} other{self::Bar}.{self::Bar::baz}{core::int};
+    return other is{ForNonNullableByDefault} self::Bar && this.{self::Bar::baz}.{core::num::==}(other{self::Bar}.{self::Bar::baz});
 }
 static method test1(self::A? a) → core::int?
-  return let final self::A? #t1 = a in #t1 == null ?{core::int?} null : #t1{self::A}.{self::A::zero}{core::int}!;
+  return let final self::A? #t1 = a in #t1.{core::Object::==}(null) ?{core::int?} null : #t1{self::A}.{self::A::zero}!;
 static method test2(self::A? a) → core::int?
-  return let final self::A? #t2 = a in #t2 == null ?{core::int?} null : #t2{self::A}.{self::A::zeroOrNull}{core::int?}!;
+  return let final self::A? #t2 = a in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{self::A}.{self::A::zeroOrNull}!;
 static method test3(self::A? a) → core::bool?
-  return let final self::A? #t3 = a in #t3 == null ?{core::bool?} null : #t3{self::A}.{self::A::zero}{core::int}!.{core::int::isEven}{core::bool};
+  return let final self::A? #t3 = a in #t3.{core::Object::==}(null) ?{core::bool?} null : #t3{self::A}.{self::A::zero}!.{core::int::isEven};
 static method test4(self::A? a) → core::bool?
-  return let final self::A? #t4 = a in #t4 == null ?{core::bool?} null : #t4{self::A}.{self::A::zeroOrNull}{core::int?}!.{core::int::isEven}{core::bool};
+  return let final self::A? #t4 = a in #t4.{core::Object::==}(null) ?{core::bool?} null : #t4{self::A}.{self::A::zeroOrNull}!.{core::int::isEven};
 static method test5(self::Foo? foo) → self::Bar?
-  return let final self::Foo? #t5 = foo in #t5 == null ?{self::Bar?} null : #t5{self::Foo}.{self::Foo::bar}{self::Bar?}!;
+  return let final self::Foo? #t5 = foo in #t5.{core::Object::==}(null) ?{self::Bar?} null : #t5{self::Foo}.{self::Foo::bar}!;
 static method test6(self::Foo? foo) → core::int?
-  return let final self::Foo? #t6 = foo in #t6 == null ?{core::int?} null : #t6{self::Foo}.{self::Foo::bar}{self::Bar?}!.{self::Bar::baz}{core::int};
+  return let final self::Foo? #t6 = foo in #t6.{core::Object::==}(null) ?{core::int?} null : #t6{self::Foo}.{self::Foo::bar}!.{self::Bar::baz};
 static method test7(self::Foo? foo, core::int baz) → core::int?
-  return let final self::Foo? #t7 = foo in #t7 == null ?{core::int?} null : #t7{self::Foo}.{self::Foo::bar}{self::Bar?}!.{self::Bar::[]}(baz){(core::int) → core::int};
+  return let final self::Foo? #t7 = foo in #t7.{core::Object::==}(null) ?{core::int?} null : #t7{self::Foo}.{self::Foo::bar}!.{self::Bar::[]}(baz);
 static method test8(self::Foo? foo, core::int? bar) → self::Bar?
-  return let final self::Foo? #t8 = foo in #t8 == null ?{self::Bar?} null : #t8{self::Foo}.{self::Foo::[]}(bar){(core::int?) → self::Bar?}!;
+  return let final self::Foo? #t8 = foo in #t8.{core::Object::==}(null) ?{self::Bar?} null : #t8{self::Foo}.{self::Foo::[]}(bar)!;
 static method test9(self::Foo? foo, core::int? bar) → core::int?
-  return let final self::Foo? #t9 = foo in #t9 == null ?{core::int?} null : #t9{self::Foo}.{self::Foo::[]}(bar){(core::int?) → self::Bar?}!.{self::Bar::baz}{core::int};
+  return let final self::Foo? #t9 = foo in #t9.{core::Object::==}(null) ?{core::int?} null : #t9{self::Foo}.{self::Foo::[]}(bar)!.{self::Bar::baz};
 static method test10(self::Foo? foo, core::int? bar, core::int baz) → dynamic
-  return let final self::Foo? #t10 = foo in #t10 == null ?{core::int?} null : #t10{self::Foo}.{self::Foo::[]}(bar){(core::int?) → self::Bar?}!.{self::Bar::[]}(baz){(core::int) → core::int};
+  return let final self::Foo? #t10 = foo in #t10.{core::Object::==}(null) ?{core::int?} null : #t10{self::Foo}.{self::Foo::[]}(bar)!.{self::Bar::[]}(baz);
 static method main() → dynamic {
   self::expect(0, self::test1(new self::A::•(0)));
   self::expect(null, self::test1(null));
@@ -89,12 +89,12 @@
   self::throws(() → void => self::test10(new self::Foo::•(new self::Bar::•(0)), null, 87));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/shorting_null_check.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/shorting_null_check.dart.weak.transformed.expect
index a02071a..af891e2 100644
--- a/pkg/front_end/testcases/nnbd/shorting_null_check.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_null_check.dart.weak.transformed.expect
@@ -26,7 +26,7 @@
     : self::Foo::bar = bar, super core::Object::•()
     ;
   operator [](core::int? index) → self::Bar?
-    return !(index == null) ?{self::Bar?} new self::Bar::•(index{core::int}) : null;
+    return !index.{core::num::==}(null) ?{self::Bar?} new self::Bar::•(index{core::int}) : null;
 }
 class Bar extends core::Object {
   field core::int baz;
@@ -36,28 +36,28 @@
   operator [](core::int index) → core::int
     return index;
   operator ==(core::Object other) → core::bool
-    return other is{ForNonNullableByDefault} self::Bar && this.{self::Bar::baz}{core::int} =={core::num::==}{(core::Object) → core::bool} other{self::Bar}.{self::Bar::baz}{core::int};
+    return other is{ForNonNullableByDefault} self::Bar && this.{self::Bar::baz}.{core::num::==}(other{self::Bar}.{self::Bar::baz});
 }
 static method test1(self::A? a) → core::int?
-  return let final self::A? #t1 = a in #t1 == null ?{core::int?} null : #t1{self::A}.{self::A::zero}{core::int}!;
+  return let final self::A? #t1 = a in #t1.{core::Object::==}(null) ?{core::int?} null : #t1{self::A}.{self::A::zero}!;
 static method test2(self::A? a) → core::int?
-  return let final self::A? #t2 = a in #t2 == null ?{core::int?} null : #t2{self::A}.{self::A::zeroOrNull}{core::int?}!;
+  return let final self::A? #t2 = a in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{self::A}.{self::A::zeroOrNull}!;
 static method test3(self::A? a) → core::bool?
-  return let final self::A? #t3 = a in #t3 == null ?{core::bool?} null : #t3{self::A}.{self::A::zero}{core::int}!.{core::int::isEven}{core::bool};
+  return let final self::A? #t3 = a in #t3.{core::Object::==}(null) ?{core::bool?} null : #t3{self::A}.{self::A::zero}!.{core::int::isEven};
 static method test4(self::A? a) → core::bool?
-  return let final self::A? #t4 = a in #t4 == null ?{core::bool?} null : #t4{self::A}.{self::A::zeroOrNull}{core::int?}!.{core::int::isEven}{core::bool};
+  return let final self::A? #t4 = a in #t4.{core::Object::==}(null) ?{core::bool?} null : #t4{self::A}.{self::A::zeroOrNull}!.{core::int::isEven};
 static method test5(self::Foo? foo) → self::Bar?
-  return let final self::Foo? #t5 = foo in #t5 == null ?{self::Bar?} null : #t5{self::Foo}.{self::Foo::bar}{self::Bar?}!;
+  return let final self::Foo? #t5 = foo in #t5.{core::Object::==}(null) ?{self::Bar?} null : #t5{self::Foo}.{self::Foo::bar}!;
 static method test6(self::Foo? foo) → core::int?
-  return let final self::Foo? #t6 = foo in #t6 == null ?{core::int?} null : #t6{self::Foo}.{self::Foo::bar}{self::Bar?}!.{self::Bar::baz}{core::int};
+  return let final self::Foo? #t6 = foo in #t6.{core::Object::==}(null) ?{core::int?} null : #t6{self::Foo}.{self::Foo::bar}!.{self::Bar::baz};
 static method test7(self::Foo? foo, core::int baz) → core::int?
-  return let final self::Foo? #t7 = foo in #t7 == null ?{core::int?} null : #t7{self::Foo}.{self::Foo::bar}{self::Bar?}!.{self::Bar::[]}(baz){(core::int) → core::int};
+  return let final self::Foo? #t7 = foo in #t7.{core::Object::==}(null) ?{core::int?} null : #t7{self::Foo}.{self::Foo::bar}!.{self::Bar::[]}(baz);
 static method test8(self::Foo? foo, core::int? bar) → self::Bar?
-  return let final self::Foo? #t8 = foo in #t8 == null ?{self::Bar?} null : #t8{self::Foo}.{self::Foo::[]}(bar){(core::int?) → self::Bar?}!;
+  return let final self::Foo? #t8 = foo in #t8.{core::Object::==}(null) ?{self::Bar?} null : #t8{self::Foo}.{self::Foo::[]}(bar)!;
 static method test9(self::Foo? foo, core::int? bar) → core::int?
-  return let final self::Foo? #t9 = foo in #t9 == null ?{core::int?} null : #t9{self::Foo}.{self::Foo::[]}(bar){(core::int?) → self::Bar?}!.{self::Bar::baz}{core::int};
+  return let final self::Foo? #t9 = foo in #t9.{core::Object::==}(null) ?{core::int?} null : #t9{self::Foo}.{self::Foo::[]}(bar)!.{self::Bar::baz};
 static method test10(self::Foo? foo, core::int? bar, core::int baz) → dynamic
-  return let final self::Foo? #t10 = foo in #t10 == null ?{core::int?} null : #t10{self::Foo}.{self::Foo::[]}(bar){(core::int?) → self::Bar?}!.{self::Bar::[]}(baz){(core::int) → core::int};
+  return let final self::Foo? #t10 = foo in #t10.{core::Object::==}(null) ?{core::int?} null : #t10{self::Foo}.{self::Foo::[]}(bar)!.{self::Bar::[]}(baz);
 static method main() → dynamic {
   self::expect(0, self::test1(new self::A::•(0)));
   self::expect(null, self::test1(null));
@@ -89,12 +89,12 @@
   self::throws(() → void => self::test10(new self::Foo::•(new self::Bar::•(0)), null, 87));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → void f) → dynamic {
   try {
-    f(){() → void};
+    f.call();
   }
   on core::Object catch(final core::Object _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.expect b/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.expect
index 5fd4921..08f2fdd 100644
--- a/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.expect
@@ -53,43 +53,43 @@
   self::test(new self::Class::•());
 }
 static method test(self::Class? c) → dynamic {
-  let final self::Class? #t1 = c in #t1 == null ?{core::int?} null : #t1{self::Class}.{self::Class::next}{self::Class}.{self::Class::field}{core::int};
+  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{core::int?} null : #t1{self::Class}.{self::Class::next}.{self::Class::field};
   self::throwsInStrong(() → void => let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:18:33: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => c?.field + 2); // error
-                                ^" in (let final self::Class? #t3 = c in #t3 == null ?{core::int?} null : #t3{self::Class}.{self::Class::field}{core::int}).{core::num::+}(2){(core::num) → core::num});
-  let final self::Class? #t4 = c in #t4 == null ?{core::int?} null : let final core::int #t5 = #t4.{self::Class::field}{core::int}.{core::num::+}(1){(core::num) → core::int} in let final void #t6 = #t4.{self::Class::field} = #t5 in #t5;
-  let final self::Class? #t7 = c in #t7 == null ?{core::int?} null : #t7.{self::Class::field} = #t7.{self::Class::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
+                                ^" in (let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{self::Class}.{self::Class::field}).{core::num::+}(2));
+  let final self::Class? #t4 = c in #t4.{core::Object::==}(null) ?{core::int?} null : let final core::int #t5 = #t4.{self::Class::field}.{core::num::+}(1) in let final void #t6 = #t4.{self::Class::field} = #t5 in #t5;
+  let final self::Class? #t7 = c in #t7.{core::Object::==}(null) ?{core::int?} null : #t7.{self::Class::field} = #t7.{self::Class::field}.{core::num::+}(1);
   self::throwsInStrong(() → void => let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:21:34: Error: Property 'field' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/shorting_stop.dart'.
 Try accessing using ?. instead.
   throwsInStrong(() => (c?.next).field); // error
-                                 ^^^^^" in (let final self::Class? #t9 = c in #t9 == null ?{self::Class?} null : #t9{self::Class}.{self::Class::next}{self::Class}).{self::Class::field}{<nullable>}.{core::int});
+                                 ^^^^^" in (let final self::Class? #t9 = c in #t9.{core::Object::==}(null) ?{self::Class?} null : #t9{self::Class}.{self::Class::next}).{self::Class::field});
   self::throwsInStrong(() → void => let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:22:24: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => -c?.field); // error
-                       ^" in (let final self::Class? #t11 = c in #t11 == null ?{core::int?} null : #t11{self::Class}.{self::Class::field}{core::int}).{core::int::unary-}(){() → core::int});
-  let final self::Class? #t12 = c in #t12 == null ?{core::bool?} null : #t12{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}.{core::int::isEven}{core::bool};
+                       ^" in (let final self::Class? #t11 = c in #t11.{core::Object::==}(null) ?{core::int?} null : #t11{self::Class}.{self::Class::field}).{core::int::unary-}());
+  let final self::Class? #t12 = c in #t12.{core::Object::==}(null) ?{core::bool?} null : #t12{self::Class}.{self::Class::next}.{self::Class::[]}(0).{core::int::isEven};
   self::throwsInStrong(() → void => let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:25:35: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => c?.next[0] + 2); // error
-                                  ^" in (let final self::Class? #t14 = c in #t14 == null ?{core::int?} null : #t14{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}).{core::num::+}(2){(core::num) → core::num});
-  let final self::Class? #t15 = c in #t15 == null ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::next}{self::Class} in let final core::int #t17 = 0 in let final core::int #t18 = #t16.{self::Class::[]}(#t17){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int} in let final void #t19 = #t16.{self::Class::[]=}(#t17, #t18){(core::int, core::int) → void} in #t18;
-  let final self::Class? #t20 = c in #t20 == null ?{core::int?} null : let final self::Class #t21 = #t20{self::Class}.{self::Class::next}{self::Class} in let final core::int #t22 = 0 in #t21.{self::Class::[]=}(#t22, #t21.{self::Class::[]}(#t22){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::int, core::int) → void};
+                                  ^" in (let final self::Class? #t14 = c in #t14.{core::Object::==}(null) ?{core::int?} null : #t14{self::Class}.{self::Class::next}.{self::Class::[]}(0)).{core::num::+}(2));
+  let final self::Class? #t15 = c in #t15.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::next} in let final core::int #t17 = 0 in let final core::int #t18 = #t16.{self::Class::[]}(#t17).{core::num::+}(1) in let final void #t19 = #t16.{self::Class::[]=}(#t17, #t18) in #t18;
+  let final self::Class? #t20 = c in #t20.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t21 = #t20{self::Class}.{self::Class::next} in let final core::int #t22 = 0 in #t21.{self::Class::[]=}(#t22, #t21.{self::Class::[]}(#t22).{core::num::+}(1));
   self::throwsInStrong(() → void => let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:28:37: Error: Property 'isEven' cannot be accessed on 'int?' because it is potentially null.
 Try accessing using ?. instead.
   throwsInStrong(() => (c?.next[0]).isEven); // error
-                                    ^^^^^^" in (let final self::Class? #t24 = c in #t24 == null ?{core::int?} null : #t24{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}).{core::int::isEven}{<nullable>}.{core::bool});
+                                    ^^^^^^" in (let final self::Class? #t24 = c in #t24.{core::Object::==}(null) ?{core::int?} null : #t24{self::Class}.{self::Class::next}.{self::Class::[]}(0)).{core::int::isEven});
   self::throwsInStrong(() → void => let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:29:24: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => -c?.next[0]); // error
-                       ^" in (let final self::Class? #t26 = c in #t26 == null ?{core::int?} null : #t26{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}).{core::int::unary-}(){() → core::int});
+                       ^" in (let final self::Class? #t26 = c in #t26.{core::Object::==}(null) ?{core::int?} null : #t26{self::Class}.{self::Class::next}.{self::Class::[]}(0)).{core::int::unary-}());
 }
 static method _inStrongMode() → core::bool {
   (core::String?) → Null f = (core::String? s) → Null {
     let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:36:7: Error: Property 'length' cannot be accessed on 'String?' because it is potentially null.
 Try accessing using ?. instead.
     s.length; // This will be an invalid expression in strong mode.
-      ^^^^^^" in s.{core::String::length}{<nullable>}.{core::int};
+      ^^^^^^" in s.{core::String::length};
   };
   try {
-    f("foo"){(core::String?) → Null};
+    f.call("foo");
   }
   on core::Object catch(final core::Object e) {
     return true;
@@ -99,7 +99,7 @@
 static method throwsInStrong(() → void f) → void {
   if(self::inStrongMode) {
     try {
-      f(){() → void};
+      f.call();
     }
     on core::Object catch(final core::Object e) {
       core::print(e);
@@ -108,6 +108,6 @@
     throw "Expected exception.";
   }
   else {
-    f(){() → void};
+    f.call();
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.transformed.expect
index 6c0eabe..08856f4 100644
--- a/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.transformed.expect
@@ -53,43 +53,43 @@
   self::test(new self::Class::•());
 }
 static method test(self::Class? c) → dynamic {
-  let final self::Class? #t1 = c in #t1 == null ?{core::int?} null : #t1{self::Class}.{self::Class::next}{self::Class}.{self::Class::field}{core::int};
+  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{core::int?} null : #t1{self::Class}.{self::Class::next}.{self::Class::field};
   self::throwsInStrong(() → void => let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:18:33: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => c?.field + 2); // error
-                                ^" in (let final self::Class? #t3 = c in #t3 == null ?{core::int?} null : #t3{self::Class}.{self::Class::field}{core::int}).{core::num::+}(2){(core::num) → core::num});
-  let final self::Class? #t4 = c in #t4 == null ?{core::int?} null : let final core::int #t5 = #t4.{self::Class::field}{core::int}.{core::num::+}(1){(core::num) → core::int} in let final void #t6 = #t4.{self::Class::field} = #t5 in #t5;
-  let final self::Class? #t7 = c in #t7 == null ?{core::int?} null : #t7.{self::Class::field} = #t7.{self::Class::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
+                                ^" in (let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{self::Class}.{self::Class::field}).{core::num::+}(2));
+  let final self::Class? #t4 = c in #t4.{core::Object::==}(null) ?{core::int?} null : let final core::int #t5 = #t4.{self::Class::field}.{core::num::+}(1) in let final void #t6 = #t4.{self::Class::field} = #t5 in #t5;
+  let final self::Class? #t7 = c in #t7.{core::Object::==}(null) ?{core::int?} null : #t7.{self::Class::field} = #t7.{self::Class::field}.{core::num::+}(1);
   self::throwsInStrong(() → void => let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:21:34: Error: Property 'field' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/shorting_stop.dart'.
 Try accessing using ?. instead.
   throwsInStrong(() => (c?.next).field); // error
-                                 ^^^^^" in (let final self::Class? #t9 = c in #t9 == null ?{self::Class?} null : #t9{self::Class}.{self::Class::next}{self::Class}).{self::Class::field}{<nullable>}.{core::int});
+                                 ^^^^^" in (let final self::Class? #t9 = c in #t9.{core::Object::==}(null) ?{self::Class?} null : #t9{self::Class}.{self::Class::next}).{self::Class::field});
   self::throwsInStrong(() → void => let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:22:24: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => -c?.field); // error
-                       ^" in (let final self::Class? #t11 = c in #t11 == null ?{core::int?} null : #t11{self::Class}.{self::Class::field}{core::int}).{core::int::unary-}(){() → core::int});
-  let final self::Class? #t12 = c in #t12 == null ?{core::bool?} null : #t12{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}.{core::int::isEven}{core::bool};
+                       ^" in (let final self::Class? #t11 = c in #t11.{core::Object::==}(null) ?{core::int?} null : #t11{self::Class}.{self::Class::field}).{core::int::unary-}());
+  let final self::Class? #t12 = c in #t12.{core::Object::==}(null) ?{core::bool?} null : #t12{self::Class}.{self::Class::next}.{self::Class::[]}(0).{core::int::isEven};
   self::throwsInStrong(() → void => let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:25:35: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => c?.next[0] + 2); // error
-                                  ^" in (let final self::Class? #t14 = c in #t14 == null ?{core::int?} null : #t14{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}).{core::num::+}(2){(core::num) → core::num});
-  let final self::Class? #t15 = c in #t15 == null ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::next}{self::Class} in let final core::int #t17 = 0 in let final core::int #t18 = #t16.{self::Class::[]}(#t17){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int} in let final void #t19 = #t16.{self::Class::[]=}(#t17, #t18){(core::int, core::int) → void} in #t18;
-  let final self::Class? #t20 = c in #t20 == null ?{core::int?} null : let final self::Class #t21 = #t20{self::Class}.{self::Class::next}{self::Class} in let final core::int #t22 = 0 in #t21.{self::Class::[]=}(#t22, #t21.{self::Class::[]}(#t22){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::int, core::int) → void};
+                                  ^" in (let final self::Class? #t14 = c in #t14.{core::Object::==}(null) ?{core::int?} null : #t14{self::Class}.{self::Class::next}.{self::Class::[]}(0)).{core::num::+}(2));
+  let final self::Class? #t15 = c in #t15.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::next} in let final core::int #t17 = 0 in let final core::int #t18 = #t16.{self::Class::[]}(#t17).{core::num::+}(1) in let final void #t19 = #t16.{self::Class::[]=}(#t17, #t18) in #t18;
+  let final self::Class? #t20 = c in #t20.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t21 = #t20{self::Class}.{self::Class::next} in let final core::int #t22 = 0 in #t21.{self::Class::[]=}(#t22, #t21.{self::Class::[]}(#t22).{core::num::+}(1));
   self::throwsInStrong(() → void => let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:28:37: Error: Property 'isEven' cannot be accessed on 'int?' because it is potentially null.
 Try accessing using ?. instead.
   throwsInStrong(() => (c?.next[0]).isEven); // error
-                                    ^^^^^^" in (let final self::Class? #t24 = c in #t24 == null ?{core::int?} null : #t24{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}).{core::int::isEven}{<nullable>}.{core::bool});
+                                    ^^^^^^" in (let final self::Class? #t24 = c in #t24.{core::Object::==}(null) ?{core::int?} null : #t24{self::Class}.{self::Class::next}.{self::Class::[]}(0)).{core::int::isEven});
   self::throwsInStrong(() → void => let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:29:24: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => -c?.next[0]); // error
-                       ^" in (let final self::Class? #t26 = c in #t26 == null ?{core::int?} null : #t26{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}).{core::int::unary-}(){() → core::int});
+                       ^" in (let final self::Class? #t26 = c in #t26.{core::Object::==}(null) ?{core::int?} null : #t26{self::Class}.{self::Class::next}.{self::Class::[]}(0)).{core::int::unary-}());
 }
 static method _inStrongMode() → core::bool {
   (core::String?) → Null f = (core::String? s) → Null {
     let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:36:7: Error: Property 'length' cannot be accessed on 'String?' because it is potentially null.
 Try accessing using ?. instead.
     s.length; // This will be an invalid expression in strong mode.
-      ^^^^^^" in s.{core::String::length}{<nullable>}.{core::int};
+      ^^^^^^" in s.{core::String::length};
   };
   try {
-    f("foo"){(core::String?) → Null};
+    f.call("foo");
   }
   on core::Object catch(final core::Object e) {
     return true;
@@ -99,7 +99,7 @@
 static method throwsInStrong(() → void f) → void {
   if(self::inStrongMode) {
     try {
-      f(){() → void};
+      f.call();
     }
     on core::Object catch(final core::Object e) {
       core::print(e);
@@ -108,7 +108,7 @@
     throw "Expected exception.";
   }
   else {
-    f(){() → void};
+    f.call();
   }
 }
 
diff --git a/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.expect b/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.expect
index 5fd4921..08f2fdd 100644
--- a/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.expect
@@ -53,43 +53,43 @@
   self::test(new self::Class::•());
 }
 static method test(self::Class? c) → dynamic {
-  let final self::Class? #t1 = c in #t1 == null ?{core::int?} null : #t1{self::Class}.{self::Class::next}{self::Class}.{self::Class::field}{core::int};
+  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{core::int?} null : #t1{self::Class}.{self::Class::next}.{self::Class::field};
   self::throwsInStrong(() → void => let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:18:33: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => c?.field + 2); // error
-                                ^" in (let final self::Class? #t3 = c in #t3 == null ?{core::int?} null : #t3{self::Class}.{self::Class::field}{core::int}).{core::num::+}(2){(core::num) → core::num});
-  let final self::Class? #t4 = c in #t4 == null ?{core::int?} null : let final core::int #t5 = #t4.{self::Class::field}{core::int}.{core::num::+}(1){(core::num) → core::int} in let final void #t6 = #t4.{self::Class::field} = #t5 in #t5;
-  let final self::Class? #t7 = c in #t7 == null ?{core::int?} null : #t7.{self::Class::field} = #t7.{self::Class::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
+                                ^" in (let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{self::Class}.{self::Class::field}).{core::num::+}(2));
+  let final self::Class? #t4 = c in #t4.{core::Object::==}(null) ?{core::int?} null : let final core::int #t5 = #t4.{self::Class::field}.{core::num::+}(1) in let final void #t6 = #t4.{self::Class::field} = #t5 in #t5;
+  let final self::Class? #t7 = c in #t7.{core::Object::==}(null) ?{core::int?} null : #t7.{self::Class::field} = #t7.{self::Class::field}.{core::num::+}(1);
   self::throwsInStrong(() → void => let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:21:34: Error: Property 'field' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/shorting_stop.dart'.
 Try accessing using ?. instead.
   throwsInStrong(() => (c?.next).field); // error
-                                 ^^^^^" in (let final self::Class? #t9 = c in #t9 == null ?{self::Class?} null : #t9{self::Class}.{self::Class::next}{self::Class}).{self::Class::field}{<nullable>}.{core::int});
+                                 ^^^^^" in (let final self::Class? #t9 = c in #t9.{core::Object::==}(null) ?{self::Class?} null : #t9{self::Class}.{self::Class::next}).{self::Class::field});
   self::throwsInStrong(() → void => let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:22:24: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => -c?.field); // error
-                       ^" in (let final self::Class? #t11 = c in #t11 == null ?{core::int?} null : #t11{self::Class}.{self::Class::field}{core::int}).{core::int::unary-}(){() → core::int});
-  let final self::Class? #t12 = c in #t12 == null ?{core::bool?} null : #t12{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}.{core::int::isEven}{core::bool};
+                       ^" in (let final self::Class? #t11 = c in #t11.{core::Object::==}(null) ?{core::int?} null : #t11{self::Class}.{self::Class::field}).{core::int::unary-}());
+  let final self::Class? #t12 = c in #t12.{core::Object::==}(null) ?{core::bool?} null : #t12{self::Class}.{self::Class::next}.{self::Class::[]}(0).{core::int::isEven};
   self::throwsInStrong(() → void => let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:25:35: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => c?.next[0] + 2); // error
-                                  ^" in (let final self::Class? #t14 = c in #t14 == null ?{core::int?} null : #t14{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}).{core::num::+}(2){(core::num) → core::num});
-  let final self::Class? #t15 = c in #t15 == null ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::next}{self::Class} in let final core::int #t17 = 0 in let final core::int #t18 = #t16.{self::Class::[]}(#t17){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int} in let final void #t19 = #t16.{self::Class::[]=}(#t17, #t18){(core::int, core::int) → void} in #t18;
-  let final self::Class? #t20 = c in #t20 == null ?{core::int?} null : let final self::Class #t21 = #t20{self::Class}.{self::Class::next}{self::Class} in let final core::int #t22 = 0 in #t21.{self::Class::[]=}(#t22, #t21.{self::Class::[]}(#t22){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::int, core::int) → void};
+                                  ^" in (let final self::Class? #t14 = c in #t14.{core::Object::==}(null) ?{core::int?} null : #t14{self::Class}.{self::Class::next}.{self::Class::[]}(0)).{core::num::+}(2));
+  let final self::Class? #t15 = c in #t15.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::next} in let final core::int #t17 = 0 in let final core::int #t18 = #t16.{self::Class::[]}(#t17).{core::num::+}(1) in let final void #t19 = #t16.{self::Class::[]=}(#t17, #t18) in #t18;
+  let final self::Class? #t20 = c in #t20.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t21 = #t20{self::Class}.{self::Class::next} in let final core::int #t22 = 0 in #t21.{self::Class::[]=}(#t22, #t21.{self::Class::[]}(#t22).{core::num::+}(1));
   self::throwsInStrong(() → void => let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:28:37: Error: Property 'isEven' cannot be accessed on 'int?' because it is potentially null.
 Try accessing using ?. instead.
   throwsInStrong(() => (c?.next[0]).isEven); // error
-                                    ^^^^^^" in (let final self::Class? #t24 = c in #t24 == null ?{core::int?} null : #t24{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}).{core::int::isEven}{<nullable>}.{core::bool});
+                                    ^^^^^^" in (let final self::Class? #t24 = c in #t24.{core::Object::==}(null) ?{core::int?} null : #t24{self::Class}.{self::Class::next}.{self::Class::[]}(0)).{core::int::isEven});
   self::throwsInStrong(() → void => let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:29:24: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => -c?.next[0]); // error
-                       ^" in (let final self::Class? #t26 = c in #t26 == null ?{core::int?} null : #t26{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}).{core::int::unary-}(){() → core::int});
+                       ^" in (let final self::Class? #t26 = c in #t26.{core::Object::==}(null) ?{core::int?} null : #t26{self::Class}.{self::Class::next}.{self::Class::[]}(0)).{core::int::unary-}());
 }
 static method _inStrongMode() → core::bool {
   (core::String?) → Null f = (core::String? s) → Null {
     let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:36:7: Error: Property 'length' cannot be accessed on 'String?' because it is potentially null.
 Try accessing using ?. instead.
     s.length; // This will be an invalid expression in strong mode.
-      ^^^^^^" in s.{core::String::length}{<nullable>}.{core::int};
+      ^^^^^^" in s.{core::String::length};
   };
   try {
-    f("foo"){(core::String?) → Null};
+    f.call("foo");
   }
   on core::Object catch(final core::Object e) {
     return true;
@@ -99,7 +99,7 @@
 static method throwsInStrong(() → void f) → void {
   if(self::inStrongMode) {
     try {
-      f(){() → void};
+      f.call();
     }
     on core::Object catch(final core::Object e) {
       core::print(e);
@@ -108,6 +108,6 @@
     throw "Expected exception.";
   }
   else {
-    f(){() → void};
+    f.call();
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.transformed.expect
index 6c0eabe..08856f4 100644
--- a/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.transformed.expect
@@ -53,43 +53,43 @@
   self::test(new self::Class::•());
 }
 static method test(self::Class? c) → dynamic {
-  let final self::Class? #t1 = c in #t1 == null ?{core::int?} null : #t1{self::Class}.{self::Class::next}{self::Class}.{self::Class::field}{core::int};
+  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{core::int?} null : #t1{self::Class}.{self::Class::next}.{self::Class::field};
   self::throwsInStrong(() → void => let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:18:33: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => c?.field + 2); // error
-                                ^" in (let final self::Class? #t3 = c in #t3 == null ?{core::int?} null : #t3{self::Class}.{self::Class::field}{core::int}).{core::num::+}(2){(core::num) → core::num});
-  let final self::Class? #t4 = c in #t4 == null ?{core::int?} null : let final core::int #t5 = #t4.{self::Class::field}{core::int}.{core::num::+}(1){(core::num) → core::int} in let final void #t6 = #t4.{self::Class::field} = #t5 in #t5;
-  let final self::Class? #t7 = c in #t7 == null ?{core::int?} null : #t7.{self::Class::field} = #t7.{self::Class::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
+                                ^" in (let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{self::Class}.{self::Class::field}).{core::num::+}(2));
+  let final self::Class? #t4 = c in #t4.{core::Object::==}(null) ?{core::int?} null : let final core::int #t5 = #t4.{self::Class::field}.{core::num::+}(1) in let final void #t6 = #t4.{self::Class::field} = #t5 in #t5;
+  let final self::Class? #t7 = c in #t7.{core::Object::==}(null) ?{core::int?} null : #t7.{self::Class::field} = #t7.{self::Class::field}.{core::num::+}(1);
   self::throwsInStrong(() → void => let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:21:34: Error: Property 'field' cannot be accessed on 'Class?' because it is potentially null.
  - 'Class' is from 'pkg/front_end/testcases/nnbd/shorting_stop.dart'.
 Try accessing using ?. instead.
   throwsInStrong(() => (c?.next).field); // error
-                                 ^^^^^" in (let final self::Class? #t9 = c in #t9 == null ?{self::Class?} null : #t9{self::Class}.{self::Class::next}{self::Class}).{self::Class::field}{<nullable>}.{core::int});
+                                 ^^^^^" in (let final self::Class? #t9 = c in #t9.{core::Object::==}(null) ?{self::Class?} null : #t9{self::Class}.{self::Class::next}).{self::Class::field});
   self::throwsInStrong(() → void => let final Never #t10 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:22:24: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => -c?.field); // error
-                       ^" in (let final self::Class? #t11 = c in #t11 == null ?{core::int?} null : #t11{self::Class}.{self::Class::field}{core::int}).{core::int::unary-}(){() → core::int});
-  let final self::Class? #t12 = c in #t12 == null ?{core::bool?} null : #t12{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}.{core::int::isEven}{core::bool};
+                       ^" in (let final self::Class? #t11 = c in #t11.{core::Object::==}(null) ?{core::int?} null : #t11{self::Class}.{self::Class::field}).{core::int::unary-}());
+  let final self::Class? #t12 = c in #t12.{core::Object::==}(null) ?{core::bool?} null : #t12{self::Class}.{self::Class::next}.{self::Class::[]}(0).{core::int::isEven};
   self::throwsInStrong(() → void => let final Never #t13 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:25:35: Error: Operator '+' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => c?.next[0] + 2); // error
-                                  ^" in (let final self::Class? #t14 = c in #t14 == null ?{core::int?} null : #t14{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}).{core::num::+}(2){(core::num) → core::num});
-  let final self::Class? #t15 = c in #t15 == null ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::next}{self::Class} in let final core::int #t17 = 0 in let final core::int #t18 = #t16.{self::Class::[]}(#t17){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int} in let final void #t19 = #t16.{self::Class::[]=}(#t17, #t18){(core::int, core::int) → void} in #t18;
-  let final self::Class? #t20 = c in #t20 == null ?{core::int?} null : let final self::Class #t21 = #t20{self::Class}.{self::Class::next}{self::Class} in let final core::int #t22 = 0 in #t21.{self::Class::[]=}(#t22, #t21.{self::Class::[]}(#t22){(core::int) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::int, core::int) → void};
+                                  ^" in (let final self::Class? #t14 = c in #t14.{core::Object::==}(null) ?{core::int?} null : #t14{self::Class}.{self::Class::next}.{self::Class::[]}(0)).{core::num::+}(2));
+  let final self::Class? #t15 = c in #t15.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t16 = #t15{self::Class}.{self::Class::next} in let final core::int #t17 = 0 in let final core::int #t18 = #t16.{self::Class::[]}(#t17).{core::num::+}(1) in let final void #t19 = #t16.{self::Class::[]=}(#t17, #t18) in #t18;
+  let final self::Class? #t20 = c in #t20.{core::Object::==}(null) ?{core::int?} null : let final self::Class #t21 = #t20{self::Class}.{self::Class::next} in let final core::int #t22 = 0 in #t21.{self::Class::[]=}(#t22, #t21.{self::Class::[]}(#t22).{core::num::+}(1));
   self::throwsInStrong(() → void => let final Never #t23 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:28:37: Error: Property 'isEven' cannot be accessed on 'int?' because it is potentially null.
 Try accessing using ?. instead.
   throwsInStrong(() => (c?.next[0]).isEven); // error
-                                    ^^^^^^" in (let final self::Class? #t24 = c in #t24 == null ?{core::int?} null : #t24{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}).{core::int::isEven}{<nullable>}.{core::bool});
+                                    ^^^^^^" in (let final self::Class? #t24 = c in #t24.{core::Object::==}(null) ?{core::int?} null : #t24{self::Class}.{self::Class::next}.{self::Class::[]}(0)).{core::int::isEven});
   self::throwsInStrong(() → void => let final Never #t25 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:29:24: Error: Operator 'unary-' cannot be called on 'int?' because it is potentially null.
   throwsInStrong(() => -c?.next[0]); // error
-                       ^" in (let final self::Class? #t26 = c in #t26 == null ?{core::int?} null : #t26{self::Class}.{self::Class::next}{self::Class}.{self::Class::[]}(0){(core::int) → core::int}).{core::int::unary-}(){() → core::int});
+                       ^" in (let final self::Class? #t26 = c in #t26.{core::Object::==}(null) ?{core::int?} null : #t26{self::Class}.{self::Class::next}.{self::Class::[]}(0)).{core::int::unary-}());
 }
 static method _inStrongMode() → core::bool {
   (core::String?) → Null f = (core::String? s) → Null {
     let final Never #t27 = invalid-expression "pkg/front_end/testcases/nnbd/shorting_stop.dart:36:7: Error: Property 'length' cannot be accessed on 'String?' because it is potentially null.
 Try accessing using ?. instead.
     s.length; // This will be an invalid expression in strong mode.
-      ^^^^^^" in s.{core::String::length}{<nullable>}.{core::int};
+      ^^^^^^" in s.{core::String::length};
   };
   try {
-    f("foo"){(core::String?) → Null};
+    f.call("foo");
   }
   on core::Object catch(final core::Object e) {
     return true;
@@ -99,7 +99,7 @@
 static method throwsInStrong(() → void f) → void {
   if(self::inStrongMode) {
     try {
-      f(){() → void};
+      f.call();
     }
     on core::Object catch(final core::Object e) {
       core::print(e);
@@ -108,7 +108,7 @@
     throw "Expected exception.";
   }
   else {
-    f(){() → void};
+    f.call();
   }
 }
 
diff --git a/pkg/front_end/testcases/nnbd/spread_if_null.dart.strong.expect b/pkg/front_end/testcases/nnbd/spread_if_null.dart.strong.expect
index 170e032..df571c2 100644
--- a/pkg/front_end/testcases/nnbd/spread_if_null.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/spread_if_null.dart.strong.expect
@@ -8,135 +8,135 @@
   core::print( block {
     final core::List<core::int> #t1 = <core::int>[1, 2];
     final core::Iterable<core::int>? #t2 = list;
-    if(!(#t2 == null))
-      #t1.{core::List::addAll}(#t2{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t1.{core::List::add}(3){(core::int) → void};
+    if(!#t2.{core::Object::==}(null))
+      #t1.{core::List::addAll}{Invariant}(#t2{core::Iterable<core::int>});
+    #t1.{core::List::add}{Invariant}(3);
   } =>#t1);
   core::print( block {
     final core::List<core::int> #t3 = <core::int>[1, 2];
     final core::Iterable<core::int>? #t4 = null;
-    if(!(#t4 == null))
-      #t3.{core::List::addAll}(#t4{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t3.{core::List::add}(3){(core::int) → void};
+    if(!#t4.{core::Object::==}(null))
+      #t3.{core::List::addAll}{Invariant}(#t4{core::Iterable<core::int>});
+    #t3.{core::List::add}{Invariant}(3);
   } =>#t3);
   core::List<core::int> list1 = block {
     final core::List<core::int> #t5 = <core::int>[];
     final core::Iterable<core::int>? #t6 = list;
-    if(!(#t6 == null))
-      #t5.{core::List::addAll}(#t6{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+    if(!#t6.{core::Object::==}(null))
+      #t5.{core::List::addAll}{Invariant}(#t6{core::Iterable<core::int>});
   } =>#t5;
   core::List<Never> list2 = block {
     final core::List<Never> #t7 = <Never>[];
     final core::Iterable<Never>? #t8 = null;
-    if(!(#t8 == null))
-      #t7.{core::List::addAll}(#t8{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t8.{core::Object::==}(null))
+      #t7.{core::List::addAll}{Invariant}(#t8{core::Iterable<Never>});
   } =>#t7;
   core::List<core::int> list3 = block {
     final core::List<core::int> #t9 = <core::int>[1, 2];
     final core::Iterable<core::int>? #t10 = list;
-    if(!(#t10 == null))
-      #t9.{core::List::addAll}(#t10{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t9.{core::List::add}(3){(core::int) → void};
+    if(!#t10.{core::Object::==}(null))
+      #t9.{core::List::addAll}{Invariant}(#t10{core::Iterable<core::int>});
+    #t9.{core::List::add}{Invariant}(3);
   } =>#t9;
   core::List<core::int> list4 = block {
     final core::List<core::int> #t11 = <core::int>[1, 2];
     final core::Iterable<core::int>? #t12 = null;
-    if(!(#t12 == null))
-      #t11.{core::List::addAll}(#t12{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t11.{core::List::add}(3){(core::int) → void};
+    if(!#t12.{core::Object::==}(null))
+      #t11.{core::List::addAll}{Invariant}(#t12{core::Iterable<core::int>});
+    #t11.{core::List::add}{Invariant}(3);
   } =>#t11;
   core::Set<core::int>? set = null;
   core::print( block {
     final core::Set<core::int> #t13 = col::LinkedHashSet::•<core::int>();
-    #t13.{core::Set::add}(1){(core::int) → core::bool};
-    #t13.{core::Set::add}(2){(core::int) → core::bool};
+    #t13.{core::Set::add}{Invariant}(1);
+    #t13.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t14 = set;
-    if(!(#t14 == null))
-      #t13.{core::Set::addAll}(#t14{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t13.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t14.{core::Object::==}(null))
+      #t13.{core::Set::addAll}{Invariant}(#t14{core::Iterable<core::int>});
+    #t13.{core::Set::add}{Invariant}(3);
   } =>#t13);
   core::print( block {
     final core::Set<core::int> #t15 = col::LinkedHashSet::•<core::int>();
-    #t15.{core::Set::add}(1){(core::int) → core::bool};
-    #t15.{core::Set::add}(2){(core::int) → core::bool};
+    #t15.{core::Set::add}{Invariant}(1);
+    #t15.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t16 = null;
-    if(!(#t16 == null))
-      #t15.{core::Set::addAll}(#t16{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t15.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t16.{core::Object::==}(null))
+      #t15.{core::Set::addAll}{Invariant}(#t16{core::Iterable<core::int>});
+    #t15.{core::Set::add}{Invariant}(3);
   } =>#t15);
   core::Set<core::int> set1 = block {
     final core::Set<core::int> #t17 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t18 = set;
-    if(!(#t18 == null))
+    if(!#t18.{core::Object::==}(null))
       for (final dynamic #t19 in #t18{core::Iterable<dynamic>}) {
         final core::int #t20 = #t19 as{TypeError,ForNonNullableByDefault} core::int;
-        #t17.{core::Set::add}(#t20){(core::int) → core::bool};
+        #t17.{core::Set::add}{Invariant}(#t20);
       }
   } =>#t17;
   core::Set<core::int> set3 = block {
     final core::Set<core::int> #t21 = col::LinkedHashSet::•<core::int>();
-    #t21.{core::Set::add}(1){(core::int) → core::bool};
-    #t21.{core::Set::add}(2){(core::int) → core::bool};
+    #t21.{core::Set::add}{Invariant}(1);
+    #t21.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t22 = set;
-    if(!(#t22 == null))
-      #t21.{core::Set::addAll}(#t22{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t21.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t22.{core::Object::==}(null))
+      #t21.{core::Set::addAll}{Invariant}(#t22{core::Iterable<core::int>});
+    #t21.{core::Set::add}{Invariant}(3);
   } =>#t21;
   core::Set<core::int> set4 = block {
     final core::Set<core::int> #t23 = col::LinkedHashSet::•<core::int>();
-    #t23.{core::Set::add}(1){(core::int) → core::bool};
-    #t23.{core::Set::add}(2){(core::int) → core::bool};
+    #t23.{core::Set::add}{Invariant}(1);
+    #t23.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t24 = null;
-    if(!(#t24 == null))
-      #t23.{core::Set::addAll}(#t24{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t23.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t24.{core::Object::==}(null))
+      #t23.{core::Set::addAll}{Invariant}(#t24{core::Iterable<core::int>});
+    #t23.{core::Set::add}{Invariant}(3);
   } =>#t23;
   core::Map<core::int, core::int>? map = null;
   core::print( block {
     final core::Map<core::int, core::int> #t25 = <core::int, core::int>{};
-    #t25.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t25.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t25.{core::Map::[]=}{Invariant}(1, 1);
+    #t25.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t26 = map;
-    if(!(#t26 == null))
+    if(!#t26.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t27 in #t26{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t25.{core::Map::[]=}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value}){(core::int, core::int) → void};
-    #t25.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+        #t25.{core::Map::[]=}{Invariant}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value});
+    #t25.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t25);
   core::print( block {
     final core::Map<core::int, core::int> #t28 = <core::int, core::int>{};
-    #t28.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t28.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t28.{core::Map::[]=}{Invariant}(1, 1);
+    #t28.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t29 = null;
-    if(!(#t29 == null))
+    if(!#t29.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t30 in #t29{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t28.{core::Map::[]=}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value}){(core::int, core::int) → void};
-    #t28.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+        #t28.{core::Map::[]=}{Invariant}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value});
+    #t28.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t28);
   core::Map<core::int, core::int> map1 = block {
     final core::Map<core::int, core::int> #t31 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t32 = map;
-    if(!(#t32 == null))
+    if(!#t32.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t33 in #t32{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t31.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t31.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
   } =>#t31;
   core::Map<core::int, core::int> map3 = block {
     final core::Map<core::int, core::int> #t34 = <core::int, core::int>{};
-    #t34.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t34.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t34.{core::Map::[]=}{Invariant}(1, 1);
+    #t34.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t35 = map;
-    if(!(#t35 == null))
+    if(!#t35.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t36 in #t35{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t34.{core::Map::[]=}(#t36.{core::MapEntry::key}, #t36.{core::MapEntry::value}){(core::int, core::int) → void};
-    #t34.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+        #t34.{core::Map::[]=}{Invariant}(#t36.{core::MapEntry::key}, #t36.{core::MapEntry::value});
+    #t34.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t34;
   core::Map<core::int, core::int> map4 = block {
     final core::Map<core::int, core::int> #t37 = <core::int, core::int>{};
-    #t37.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t37.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t37.{core::Map::[]=}{Invariant}(1, 1);
+    #t37.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t38 = null;
-    if(!(#t38 == null))
+    if(!#t38.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t39 in #t38{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t37.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value}){(core::int, core::int) → void};
-    #t37.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+        #t37.{core::Map::[]=}{Invariant}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
+    #t37.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t37;
 }
diff --git a/pkg/front_end/testcases/nnbd/spread_if_null.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/spread_if_null.dart.strong.transformed.expect
index 48b9ee6..675eae5 100644
--- a/pkg/front_end/testcases/nnbd/spread_if_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/spread_if_null.dart.strong.transformed.expect
@@ -8,160 +8,160 @@
   core::print( block {
     final core::List<core::int> #t1 = core::_GrowableList::_literal2<core::int>(1, 2);
     final core::Iterable<core::int>? #t2 = list;
-    if(!(#t2 == null))
-      #t1.{core::List::addAll}(#t2{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t1.{core::List::add}(3){(core::int) → void};
+    if(!#t2.{core::Object::==}(null))
+      #t1.{core::List::addAll}{Invariant}(#t2{core::Iterable<core::int>});
+    #t1.{core::List::add}{Invariant}(3);
   } =>#t1);
   core::print( block {
     final core::List<core::int> #t3 = core::_GrowableList::_literal2<core::int>(1, 2);
     final core::Iterable<core::int>? #t4 = null;
-    if(!(#t4 == null))
-      #t3.{core::List::addAll}(#t4{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t3.{core::List::add}(3){(core::int) → void};
+    if(!#t4.{core::Object::==}(null))
+      #t3.{core::List::addAll}{Invariant}(#t4{core::Iterable<core::int>});
+    #t3.{core::List::add}{Invariant}(3);
   } =>#t3);
   core::List<core::int> list1 = block {
     final core::List<core::int> #t5 = core::_GrowableList::•<core::int>(0);
     final core::Iterable<core::int>? #t6 = list;
-    if(!(#t6 == null))
-      #t5.{core::List::addAll}(#t6{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+    if(!#t6.{core::Object::==}(null))
+      #t5.{core::List::addAll}{Invariant}(#t6{core::Iterable<core::int>});
   } =>#t5;
   core::List<Never> list2 = block {
     final core::List<Never> #t7 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t8 = null;
-    if(!(#t8 == null))
-      #t7.{core::List::addAll}(#t8{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t8.{core::Object::==}(null))
+      #t7.{core::List::addAll}{Invariant}(#t8{core::Iterable<Never>});
   } =>#t7;
   core::List<core::int> list3 = block {
     final core::List<core::int> #t9 = core::_GrowableList::_literal2<core::int>(1, 2);
     final core::Iterable<core::int>? #t10 = list;
-    if(!(#t10 == null))
-      #t9.{core::List::addAll}(#t10{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t9.{core::List::add}(3){(core::int) → void};
+    if(!#t10.{core::Object::==}(null))
+      #t9.{core::List::addAll}{Invariant}(#t10{core::Iterable<core::int>});
+    #t9.{core::List::add}{Invariant}(3);
   } =>#t9;
   core::List<core::int> list4 = block {
     final core::List<core::int> #t11 = core::_GrowableList::_literal2<core::int>(1, 2);
     final core::Iterable<core::int>? #t12 = null;
-    if(!(#t12 == null))
-      #t11.{core::List::addAll}(#t12{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t11.{core::List::add}(3){(core::int) → void};
+    if(!#t12.{core::Object::==}(null))
+      #t11.{core::List::addAll}{Invariant}(#t12{core::Iterable<core::int>});
+    #t11.{core::List::add}{Invariant}(3);
   } =>#t11;
   core::Set<core::int>? set = null;
   core::print( block {
     final core::Set<core::int> #t13 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t13.{core::Set::add}(1){(core::int) → core::bool};
-    #t13.{core::Set::add}(2){(core::int) → core::bool};
+    #t13.{core::Set::add}{Invariant}(1);
+    #t13.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t14 = set;
-    if(!(#t14 == null))
-      #t13.{core::Set::addAll}(#t14{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t13.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t14.{core::Object::==}(null))
+      #t13.{core::Set::addAll}{Invariant}(#t14{core::Iterable<core::int>});
+    #t13.{core::Set::add}{Invariant}(3);
   } =>#t13);
   core::print( block {
     final core::Set<core::int> #t15 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t15.{core::Set::add}(1){(core::int) → core::bool};
-    #t15.{core::Set::add}(2){(core::int) → core::bool};
+    #t15.{core::Set::add}{Invariant}(1);
+    #t15.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t16 = null;
-    if(!(#t16 == null))
-      #t15.{core::Set::addAll}(#t16{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t15.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t16.{core::Object::==}(null))
+      #t15.{core::Set::addAll}{Invariant}(#t16{core::Iterable<core::int>});
+    #t15.{core::Set::add}{Invariant}(3);
   } =>#t15);
   core::Set<core::int> set1 = block {
     final core::Set<core::int> #t17 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t18 = set;
-    if(!(#t18 == null)) {
+    if(!#t18.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t18{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t19 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t20 = #t19 as{TypeError,ForNonNullableByDefault} core::int;
-          #t17.{core::Set::add}(#t20){(core::int) → core::bool};
+          #t17.{core::Set::add}{Invariant}(#t20);
         }
       }
     }
   } =>#t17;
   core::Set<core::int> set3 = block {
     final core::Set<core::int> #t21 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t21.{core::Set::add}(1){(core::int) → core::bool};
-    #t21.{core::Set::add}(2){(core::int) → core::bool};
+    #t21.{core::Set::add}{Invariant}(1);
+    #t21.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t22 = set;
-    if(!(#t22 == null))
-      #t21.{core::Set::addAll}(#t22{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t21.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t22.{core::Object::==}(null))
+      #t21.{core::Set::addAll}{Invariant}(#t22{core::Iterable<core::int>});
+    #t21.{core::Set::add}{Invariant}(3);
   } =>#t21;
   core::Set<core::int> set4 = block {
     final core::Set<core::int> #t23 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t23.{core::Set::add}(1){(core::int) → core::bool};
-    #t23.{core::Set::add}(2){(core::int) → core::bool};
+    #t23.{core::Set::add}{Invariant}(1);
+    #t23.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t24 = null;
-    if(!(#t24 == null))
-      #t23.{core::Set::addAll}(#t24{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t23.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t24.{core::Object::==}(null))
+      #t23.{core::Set::addAll}{Invariant}(#t24{core::Iterable<core::int>});
+    #t23.{core::Set::add}{Invariant}(3);
   } =>#t23;
   core::Map<core::int, core::int>? map = null;
   core::print( block {
     final core::Map<core::int, core::int> #t25 = <core::int, core::int>{};
-    #t25.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t25.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t25.{core::Map::[]=}{Invariant}(1, 1);
+    #t25.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t26 = map;
-    if(!(#t26 == null)) {
+    if(!#t26.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t26{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t27 = :sync-for-iterator.{core::Iterator::current};
-        #t25.{core::Map::[]=}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t25.{core::Map::[]=}{Invariant}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value});
       }
     }
-    #t25.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+    #t25.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t25);
   core::print( block {
     final core::Map<core::int, core::int> #t28 = <core::int, core::int>{};
-    #t28.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t28.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t28.{core::Map::[]=}{Invariant}(1, 1);
+    #t28.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t29 = null;
-    if(!(#t29 == null)) {
+    if(!#t29.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t29{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t30 = :sync-for-iterator.{core::Iterator::current};
-        #t28.{core::Map::[]=}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t28.{core::Map::[]=}{Invariant}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value});
       }
     }
-    #t28.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+    #t28.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t28);
   core::Map<core::int, core::int> map1 = block {
     final core::Map<core::int, core::int> #t31 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t32 = map;
-    if(!(#t32 == null)) {
+    if(!#t32.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t32{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t33 = :sync-for-iterator.{core::Iterator::current};
-        #t31.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t31.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
       }
     }
   } =>#t31;
   core::Map<core::int, core::int> map3 = block {
     final core::Map<core::int, core::int> #t34 = <core::int, core::int>{};
-    #t34.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t34.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t34.{core::Map::[]=}{Invariant}(1, 1);
+    #t34.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t35 = map;
-    if(!(#t35 == null)) {
+    if(!#t35.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t35{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t36 = :sync-for-iterator.{core::Iterator::current};
-        #t34.{core::Map::[]=}(#t36.{core::MapEntry::key}, #t36.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t34.{core::Map::[]=}{Invariant}(#t36.{core::MapEntry::key}, #t36.{core::MapEntry::value});
       }
     }
-    #t34.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+    #t34.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t34;
   core::Map<core::int, core::int> map4 = block {
     final core::Map<core::int, core::int> #t37 = <core::int, core::int>{};
-    #t37.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t37.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t37.{core::Map::[]=}{Invariant}(1, 1);
+    #t37.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t38 = null;
-    if(!(#t38 == null)) {
+    if(!#t38.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t38{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t39 = :sync-for-iterator.{core::Iterator::current};
-        #t37.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t37.{core::Map::[]=}{Invariant}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
       }
     }
-    #t37.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+    #t37.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t37;
 }
diff --git a/pkg/front_end/testcases/nnbd/spread_if_null.dart.weak.expect b/pkg/front_end/testcases/nnbd/spread_if_null.dart.weak.expect
index 170e032..df571c2 100644
--- a/pkg/front_end/testcases/nnbd/spread_if_null.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/spread_if_null.dart.weak.expect
@@ -8,135 +8,135 @@
   core::print( block {
     final core::List<core::int> #t1 = <core::int>[1, 2];
     final core::Iterable<core::int>? #t2 = list;
-    if(!(#t2 == null))
-      #t1.{core::List::addAll}(#t2{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t1.{core::List::add}(3){(core::int) → void};
+    if(!#t2.{core::Object::==}(null))
+      #t1.{core::List::addAll}{Invariant}(#t2{core::Iterable<core::int>});
+    #t1.{core::List::add}{Invariant}(3);
   } =>#t1);
   core::print( block {
     final core::List<core::int> #t3 = <core::int>[1, 2];
     final core::Iterable<core::int>? #t4 = null;
-    if(!(#t4 == null))
-      #t3.{core::List::addAll}(#t4{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t3.{core::List::add}(3){(core::int) → void};
+    if(!#t4.{core::Object::==}(null))
+      #t3.{core::List::addAll}{Invariant}(#t4{core::Iterable<core::int>});
+    #t3.{core::List::add}{Invariant}(3);
   } =>#t3);
   core::List<core::int> list1 = block {
     final core::List<core::int> #t5 = <core::int>[];
     final core::Iterable<core::int>? #t6 = list;
-    if(!(#t6 == null))
-      #t5.{core::List::addAll}(#t6{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+    if(!#t6.{core::Object::==}(null))
+      #t5.{core::List::addAll}{Invariant}(#t6{core::Iterable<core::int>});
   } =>#t5;
   core::List<Never> list2 = block {
     final core::List<Never> #t7 = <Never>[];
     final core::Iterable<Never>? #t8 = null;
-    if(!(#t8 == null))
-      #t7.{core::List::addAll}(#t8{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t8.{core::Object::==}(null))
+      #t7.{core::List::addAll}{Invariant}(#t8{core::Iterable<Never>});
   } =>#t7;
   core::List<core::int> list3 = block {
     final core::List<core::int> #t9 = <core::int>[1, 2];
     final core::Iterable<core::int>? #t10 = list;
-    if(!(#t10 == null))
-      #t9.{core::List::addAll}(#t10{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t9.{core::List::add}(3){(core::int) → void};
+    if(!#t10.{core::Object::==}(null))
+      #t9.{core::List::addAll}{Invariant}(#t10{core::Iterable<core::int>});
+    #t9.{core::List::add}{Invariant}(3);
   } =>#t9;
   core::List<core::int> list4 = block {
     final core::List<core::int> #t11 = <core::int>[1, 2];
     final core::Iterable<core::int>? #t12 = null;
-    if(!(#t12 == null))
-      #t11.{core::List::addAll}(#t12{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t11.{core::List::add}(3){(core::int) → void};
+    if(!#t12.{core::Object::==}(null))
+      #t11.{core::List::addAll}{Invariant}(#t12{core::Iterable<core::int>});
+    #t11.{core::List::add}{Invariant}(3);
   } =>#t11;
   core::Set<core::int>? set = null;
   core::print( block {
     final core::Set<core::int> #t13 = col::LinkedHashSet::•<core::int>();
-    #t13.{core::Set::add}(1){(core::int) → core::bool};
-    #t13.{core::Set::add}(2){(core::int) → core::bool};
+    #t13.{core::Set::add}{Invariant}(1);
+    #t13.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t14 = set;
-    if(!(#t14 == null))
-      #t13.{core::Set::addAll}(#t14{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t13.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t14.{core::Object::==}(null))
+      #t13.{core::Set::addAll}{Invariant}(#t14{core::Iterable<core::int>});
+    #t13.{core::Set::add}{Invariant}(3);
   } =>#t13);
   core::print( block {
     final core::Set<core::int> #t15 = col::LinkedHashSet::•<core::int>();
-    #t15.{core::Set::add}(1){(core::int) → core::bool};
-    #t15.{core::Set::add}(2){(core::int) → core::bool};
+    #t15.{core::Set::add}{Invariant}(1);
+    #t15.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t16 = null;
-    if(!(#t16 == null))
-      #t15.{core::Set::addAll}(#t16{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t15.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t16.{core::Object::==}(null))
+      #t15.{core::Set::addAll}{Invariant}(#t16{core::Iterable<core::int>});
+    #t15.{core::Set::add}{Invariant}(3);
   } =>#t15);
   core::Set<core::int> set1 = block {
     final core::Set<core::int> #t17 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t18 = set;
-    if(!(#t18 == null))
+    if(!#t18.{core::Object::==}(null))
       for (final dynamic #t19 in #t18{core::Iterable<dynamic>}) {
         final core::int #t20 = #t19 as{TypeError,ForNonNullableByDefault} core::int;
-        #t17.{core::Set::add}(#t20){(core::int) → core::bool};
+        #t17.{core::Set::add}{Invariant}(#t20);
       }
   } =>#t17;
   core::Set<core::int> set3 = block {
     final core::Set<core::int> #t21 = col::LinkedHashSet::•<core::int>();
-    #t21.{core::Set::add}(1){(core::int) → core::bool};
-    #t21.{core::Set::add}(2){(core::int) → core::bool};
+    #t21.{core::Set::add}{Invariant}(1);
+    #t21.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t22 = set;
-    if(!(#t22 == null))
-      #t21.{core::Set::addAll}(#t22{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t21.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t22.{core::Object::==}(null))
+      #t21.{core::Set::addAll}{Invariant}(#t22{core::Iterable<core::int>});
+    #t21.{core::Set::add}{Invariant}(3);
   } =>#t21;
   core::Set<core::int> set4 = block {
     final core::Set<core::int> #t23 = col::LinkedHashSet::•<core::int>();
-    #t23.{core::Set::add}(1){(core::int) → core::bool};
-    #t23.{core::Set::add}(2){(core::int) → core::bool};
+    #t23.{core::Set::add}{Invariant}(1);
+    #t23.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t24 = null;
-    if(!(#t24 == null))
-      #t23.{core::Set::addAll}(#t24{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t23.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t24.{core::Object::==}(null))
+      #t23.{core::Set::addAll}{Invariant}(#t24{core::Iterable<core::int>});
+    #t23.{core::Set::add}{Invariant}(3);
   } =>#t23;
   core::Map<core::int, core::int>? map = null;
   core::print( block {
     final core::Map<core::int, core::int> #t25 = <core::int, core::int>{};
-    #t25.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t25.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t25.{core::Map::[]=}{Invariant}(1, 1);
+    #t25.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t26 = map;
-    if(!(#t26 == null))
+    if(!#t26.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t27 in #t26{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t25.{core::Map::[]=}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value}){(core::int, core::int) → void};
-    #t25.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+        #t25.{core::Map::[]=}{Invariant}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value});
+    #t25.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t25);
   core::print( block {
     final core::Map<core::int, core::int> #t28 = <core::int, core::int>{};
-    #t28.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t28.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t28.{core::Map::[]=}{Invariant}(1, 1);
+    #t28.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t29 = null;
-    if(!(#t29 == null))
+    if(!#t29.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t30 in #t29{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t28.{core::Map::[]=}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value}){(core::int, core::int) → void};
-    #t28.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+        #t28.{core::Map::[]=}{Invariant}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value});
+    #t28.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t28);
   core::Map<core::int, core::int> map1 = block {
     final core::Map<core::int, core::int> #t31 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t32 = map;
-    if(!(#t32 == null))
+    if(!#t32.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t33 in #t32{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t31.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t31.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
   } =>#t31;
   core::Map<core::int, core::int> map3 = block {
     final core::Map<core::int, core::int> #t34 = <core::int, core::int>{};
-    #t34.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t34.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t34.{core::Map::[]=}{Invariant}(1, 1);
+    #t34.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t35 = map;
-    if(!(#t35 == null))
+    if(!#t35.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t36 in #t35{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t34.{core::Map::[]=}(#t36.{core::MapEntry::key}, #t36.{core::MapEntry::value}){(core::int, core::int) → void};
-    #t34.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+        #t34.{core::Map::[]=}{Invariant}(#t36.{core::MapEntry::key}, #t36.{core::MapEntry::value});
+    #t34.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t34;
   core::Map<core::int, core::int> map4 = block {
     final core::Map<core::int, core::int> #t37 = <core::int, core::int>{};
-    #t37.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t37.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t37.{core::Map::[]=}{Invariant}(1, 1);
+    #t37.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t38 = null;
-    if(!(#t38 == null))
+    if(!#t38.{core::Object::==}(null))
       for (final core::MapEntry<core::int, core::int> #t39 in #t38{core::Map<core::int, core::int>}.{core::Map::entries})
-        #t37.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value}){(core::int, core::int) → void};
-    #t37.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+        #t37.{core::Map::[]=}{Invariant}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
+    #t37.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t37;
 }
diff --git a/pkg/front_end/testcases/nnbd/spread_if_null.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/spread_if_null.dart.weak.transformed.expect
index 48b9ee6..675eae5 100644
--- a/pkg/front_end/testcases/nnbd/spread_if_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/spread_if_null.dart.weak.transformed.expect
@@ -8,160 +8,160 @@
   core::print( block {
     final core::List<core::int> #t1 = core::_GrowableList::_literal2<core::int>(1, 2);
     final core::Iterable<core::int>? #t2 = list;
-    if(!(#t2 == null))
-      #t1.{core::List::addAll}(#t2{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t1.{core::List::add}(3){(core::int) → void};
+    if(!#t2.{core::Object::==}(null))
+      #t1.{core::List::addAll}{Invariant}(#t2{core::Iterable<core::int>});
+    #t1.{core::List::add}{Invariant}(3);
   } =>#t1);
   core::print( block {
     final core::List<core::int> #t3 = core::_GrowableList::_literal2<core::int>(1, 2);
     final core::Iterable<core::int>? #t4 = null;
-    if(!(#t4 == null))
-      #t3.{core::List::addAll}(#t4{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t3.{core::List::add}(3){(core::int) → void};
+    if(!#t4.{core::Object::==}(null))
+      #t3.{core::List::addAll}{Invariant}(#t4{core::Iterable<core::int>});
+    #t3.{core::List::add}{Invariant}(3);
   } =>#t3);
   core::List<core::int> list1 = block {
     final core::List<core::int> #t5 = core::_GrowableList::•<core::int>(0);
     final core::Iterable<core::int>? #t6 = list;
-    if(!(#t6 == null))
-      #t5.{core::List::addAll}(#t6{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+    if(!#t6.{core::Object::==}(null))
+      #t5.{core::List::addAll}{Invariant}(#t6{core::Iterable<core::int>});
   } =>#t5;
   core::List<Never> list2 = block {
     final core::List<Never> #t7 = core::_GrowableList::•<Never>(0);
     final core::Iterable<Never>? #t8 = null;
-    if(!(#t8 == null))
-      #t7.{core::List::addAll}(#t8{core::Iterable<Never>}){(core::Iterable<Never>) → void};
+    if(!#t8.{core::Object::==}(null))
+      #t7.{core::List::addAll}{Invariant}(#t8{core::Iterable<Never>});
   } =>#t7;
   core::List<core::int> list3 = block {
     final core::List<core::int> #t9 = core::_GrowableList::_literal2<core::int>(1, 2);
     final core::Iterable<core::int>? #t10 = list;
-    if(!(#t10 == null))
-      #t9.{core::List::addAll}(#t10{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t9.{core::List::add}(3){(core::int) → void};
+    if(!#t10.{core::Object::==}(null))
+      #t9.{core::List::addAll}{Invariant}(#t10{core::Iterable<core::int>});
+    #t9.{core::List::add}{Invariant}(3);
   } =>#t9;
   core::List<core::int> list4 = block {
     final core::List<core::int> #t11 = core::_GrowableList::_literal2<core::int>(1, 2);
     final core::Iterable<core::int>? #t12 = null;
-    if(!(#t12 == null))
-      #t11.{core::List::addAll}(#t12{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t11.{core::List::add}(3){(core::int) → void};
+    if(!#t12.{core::Object::==}(null))
+      #t11.{core::List::addAll}{Invariant}(#t12{core::Iterable<core::int>});
+    #t11.{core::List::add}{Invariant}(3);
   } =>#t11;
   core::Set<core::int>? set = null;
   core::print( block {
     final core::Set<core::int> #t13 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t13.{core::Set::add}(1){(core::int) → core::bool};
-    #t13.{core::Set::add}(2){(core::int) → core::bool};
+    #t13.{core::Set::add}{Invariant}(1);
+    #t13.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t14 = set;
-    if(!(#t14 == null))
-      #t13.{core::Set::addAll}(#t14{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t13.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t14.{core::Object::==}(null))
+      #t13.{core::Set::addAll}{Invariant}(#t14{core::Iterable<core::int>});
+    #t13.{core::Set::add}{Invariant}(3);
   } =>#t13);
   core::print( block {
     final core::Set<core::int> #t15 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t15.{core::Set::add}(1){(core::int) → core::bool};
-    #t15.{core::Set::add}(2){(core::int) → core::bool};
+    #t15.{core::Set::add}{Invariant}(1);
+    #t15.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t16 = null;
-    if(!(#t16 == null))
-      #t15.{core::Set::addAll}(#t16{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t15.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t16.{core::Object::==}(null))
+      #t15.{core::Set::addAll}{Invariant}(#t16{core::Iterable<core::int>});
+    #t15.{core::Set::add}{Invariant}(3);
   } =>#t15);
   core::Set<core::int> set1 = block {
     final core::Set<core::int> #t17 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t18 = set;
-    if(!(#t18 == null)) {
+    if(!#t18.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t18{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t19 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t20 = #t19 as{TypeError,ForNonNullableByDefault} core::int;
-          #t17.{core::Set::add}(#t20){(core::int) → core::bool};
+          #t17.{core::Set::add}{Invariant}(#t20);
         }
       }
     }
   } =>#t17;
   core::Set<core::int> set3 = block {
     final core::Set<core::int> #t21 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t21.{core::Set::add}(1){(core::int) → core::bool};
-    #t21.{core::Set::add}(2){(core::int) → core::bool};
+    #t21.{core::Set::add}{Invariant}(1);
+    #t21.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t22 = set;
-    if(!(#t22 == null))
-      #t21.{core::Set::addAll}(#t22{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t21.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t22.{core::Object::==}(null))
+      #t21.{core::Set::addAll}{Invariant}(#t22{core::Iterable<core::int>});
+    #t21.{core::Set::add}{Invariant}(3);
   } =>#t21;
   core::Set<core::int> set4 = block {
     final core::Set<core::int> #t23 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t23.{core::Set::add}(1){(core::int) → core::bool};
-    #t23.{core::Set::add}(2){(core::int) → core::bool};
+    #t23.{core::Set::add}{Invariant}(1);
+    #t23.{core::Set::add}{Invariant}(2);
     final core::Iterable<core::int>? #t24 = null;
-    if(!(#t24 == null))
-      #t23.{core::Set::addAll}(#t24{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
-    #t23.{core::Set::add}(3){(core::int) → core::bool};
+    if(!#t24.{core::Object::==}(null))
+      #t23.{core::Set::addAll}{Invariant}(#t24{core::Iterable<core::int>});
+    #t23.{core::Set::add}{Invariant}(3);
   } =>#t23;
   core::Map<core::int, core::int>? map = null;
   core::print( block {
     final core::Map<core::int, core::int> #t25 = <core::int, core::int>{};
-    #t25.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t25.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t25.{core::Map::[]=}{Invariant}(1, 1);
+    #t25.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t26 = map;
-    if(!(#t26 == null)) {
+    if(!#t26.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t26{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t27 = :sync-for-iterator.{core::Iterator::current};
-        #t25.{core::Map::[]=}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t25.{core::Map::[]=}{Invariant}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value});
       }
     }
-    #t25.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+    #t25.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t25);
   core::print( block {
     final core::Map<core::int, core::int> #t28 = <core::int, core::int>{};
-    #t28.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t28.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t28.{core::Map::[]=}{Invariant}(1, 1);
+    #t28.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t29 = null;
-    if(!(#t29 == null)) {
+    if(!#t29.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t29{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t30 = :sync-for-iterator.{core::Iterator::current};
-        #t28.{core::Map::[]=}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t28.{core::Map::[]=}{Invariant}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value});
       }
     }
-    #t28.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+    #t28.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t28);
   core::Map<core::int, core::int> map1 = block {
     final core::Map<core::int, core::int> #t31 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t32 = map;
-    if(!(#t32 == null)) {
+    if(!#t32.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t32{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t33 = :sync-for-iterator.{core::Iterator::current};
-        #t31.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t31.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
       }
     }
   } =>#t31;
   core::Map<core::int, core::int> map3 = block {
     final core::Map<core::int, core::int> #t34 = <core::int, core::int>{};
-    #t34.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t34.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t34.{core::Map::[]=}{Invariant}(1, 1);
+    #t34.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t35 = map;
-    if(!(#t35 == null)) {
+    if(!#t35.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t35{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t36 = :sync-for-iterator.{core::Iterator::current};
-        #t34.{core::Map::[]=}(#t36.{core::MapEntry::key}, #t36.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t34.{core::Map::[]=}{Invariant}(#t36.{core::MapEntry::key}, #t36.{core::MapEntry::value});
       }
     }
-    #t34.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+    #t34.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t34;
   core::Map<core::int, core::int> map4 = block {
     final core::Map<core::int, core::int> #t37 = <core::int, core::int>{};
-    #t37.{core::Map::[]=}(1, 1){(core::int, core::int) → void};
-    #t37.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
+    #t37.{core::Map::[]=}{Invariant}(1, 1);
+    #t37.{core::Map::[]=}{Invariant}(2, 2);
     final core::Map<core::int, core::int>? #t38 = null;
-    if(!(#t38 == null)) {
+    if(!#t38.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t38{core::Map<core::int, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int, core::int> #t39 = :sync-for-iterator.{core::Iterator::current};
-        #t37.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value}){(core::int, core::int) → void};
+        #t37.{core::Map::[]=}{Invariant}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
       }
     }
-    #t37.{core::Map::[]=}(3, 3){(core::int, core::int) → void};
+    #t37.{core::Map::[]=}{Invariant}(3, 3);
   } =>#t37;
 }
diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.expect
index 9a9a96a..bba165a 100644
--- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.expect
@@ -117,7 +117,7 @@
     : super self::A::•()
     ;
   method test() → void {
-    let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String} super.{self::A::[]=}(#t1, "bar") : null;
+    let final core::int #t1 = 42 in super.{self::A::[]}(#t1).{core::String::==}(null) ?{core::String} super.{self::A::[]=}(#t1, "bar") : null;
   }
 }
 extension E on core::String {
@@ -131,61 +131,61 @@
 static method E|[](lowered final core::String #this, core::int index) → core::int
   return 42;
 static method warning(core::String s, core::List<core::String> l, core::Map<core::String, core::int> m) → dynamic {
-  let final core::String #t2 = s in #t2 == null ?{core::int?} null : #t2.{core::String::length}{core::int};
-  let final core::String #t3 = s in #t3 == null ?{core::String} null : block {
-    #t3.{core::String::length}{core::int};
+  let final core::String #t2 = s in #t2.{core::String::==}(null) ?{core::int?} null : #t2.{core::String::length};
+  let final core::String #t3 = s in #t3.{core::String::==}(null) ?{core::String} null : block {
+    #t3.{core::String::length};
   } =>#t3;
-  let final core::String #t4 = s in #t4 == null ?{core::String} "foo" : #t4;
-  s == null ?{core::String} s = "foo" : null;
+  let final core::String #t4 = s in #t4.{core::String::==}(null) ?{core::String} "foo" : #t4;
+  s.{core::String::==}(null) ?{core::String} s = "foo" : null;
   block {
     final core::List<core::String> #t5 = <core::String>[];
     final core::Iterable<core::String>? #t6 = l;
-    if(!(#t6 == null))
-      #t5.{core::List::addAll}(#t6{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+    if(!#t6.{core::Object::==}(null))
+      #t5.{core::List::addAll}{Invariant}(#t6{core::Iterable<core::String>});
   } =>#t5;
   core::Set<core::String> a = block {
     final core::Set<core::String> #t7 = col::LinkedHashSet::•<core::String>();
     final core::Iterable<dynamic>? #t8 = l;
-    if(!(#t8 == null))
+    if(!#t8.{core::Object::==}(null))
       for (final dynamic #t9 in #t8{core::Iterable<dynamic>}) {
         final core::String #t10 = #t9 as{TypeError,ForNonNullableByDefault} core::String;
-        #t7.{core::Set::add}(#t10){(core::String) → core::bool};
+        #t7.{core::Set::add}{Invariant}(#t10);
       }
   } =>#t7;
   block {
     final core::Set<core::String> #t11 = col::LinkedHashSet::•<core::String>();
     final core::Iterable<core::String>? #t12 = l;
-    if(!(#t12 == null))
-      #t11.{core::Set::addAll}(#t12{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+    if(!#t12.{core::Object::==}(null))
+      #t11.{core::Set::addAll}{Invariant}(#t12{core::Iterable<core::String>});
   } =>#t11;
   core::Map<core::String, core::int> b = block {
     final core::Map<core::String, core::int> #t13 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t14 = m;
-    if(!(#t14 == null))
+    if(!#t14.{core::Object::==}(null))
       for (final core::MapEntry<core::String, core::int> #t15 in #t14{core::Map<core::String, core::int>}.{core::Map::entries})
-        #t13.{core::Map::[]=}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value}){(core::String, core::int) → void};
+        #t13.{core::Map::[]=}{Invariant}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value});
   } =>#t13;
   block {
     final core::Map<core::String, core::int> #t16 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t17 = m;
-    if(!(#t17 == null))
+    if(!#t17.{core::Object::==}(null))
       for (final core::MapEntry<core::String, core::int> #t18 in #t17{core::Map<core::String, core::int>}.{core::Map::entries})
-        #t16.{core::Map::[]=}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value}){(core::String, core::int) → void};
+        #t16.{core::Map::[]=}{Invariant}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value});
   } =>#t16;
   s!;
-  let final core::String #t19 = s in #t19 == null ?{core::String?} null : #t19.{core::String::substring}(0, 0){(core::int, [core::int?]) → core::String};
-  let final core::List<core::String> #t20 = l in #t20 == null ?{core::int?} null : #t20.{core::List::length} = 42;
-  let final core::List<core::String> #t21 = l in #t21 == null ?{core::int?} null : #t21.{core::List::length} = #t21.{core::List::length}{core::int}.{core::num::+}(42){(core::num) → core::int};
-  let final core::List<core::String> #t22 = l in #t22 == null ?{core::int?} null : #t22.{core::List::length}{core::int} == null ?{core::int} #t22.{core::List::length} = 42 : null;
-  let final core::String #t23 = s in #t23 == null ?{core::int?} null : self::E|get#foo(#t23);
-  let final core::String #t24 = s in let final core::int #t25 = 42 in self::E|[](#t24, #t25) == null ?{core::int} self::E|[]=(#t24, #t25, 42) : null;
-  let final core::List<core::String> #t26 = l in let final core::int #t27 = 42 in #t26.{core::List::[]}(#t27){(core::int) → core::String} == null ?{core::String} #t26.{core::List::[]=}(#t27, "foo"){(core::int, core::String) → void} : null;
-  let final core::List<core::String> #t28 = l in #t28.{core::List::length}{core::int} == null ?{core::int} #t28.{core::List::length} = 42 : null;
-  let final core::List<core::String> #t29 = l in #t29 == null ?{core::List<core::String>} null : block {
+  let final core::String #t19 = s in #t19.{core::String::==}(null) ?{core::String?} null : #t19.{core::String::substring}(0, 0);
+  let final core::List<core::String> #t20 = l in #t20.{core::List::==}(null) ?{core::int?} null : #t20.{core::List::length} = 42;
+  let final core::List<core::String> #t21 = l in #t21.{core::List::==}(null) ?{core::int?} null : #t21.{core::List::length} = #t21.{core::List::length}.{core::num::+}(42);
+  let final core::List<core::String> #t22 = l in #t22.{core::List::==}(null) ?{core::int?} null : #t22.{core::List::length}.{core::num::==}(null) ?{core::int} #t22.{core::List::length} = 42 : null;
+  let final core::String #t23 = s in #t23.{core::String::==}(null) ?{core::int?} null : self::E|get#foo(#t23);
+  let final core::String #t24 = s in let final core::int #t25 = 42 in self::E|[](#t24, #t25).{core::num::==}(null) ?{core::int} self::E|[]=(#t24, #t25, 42) : null;
+  let final core::List<core::String> #t26 = l in let final core::int #t27 = 42 in #t26.{core::List::[]}(#t27).{core::String::==}(null) ?{core::String} #t26.{core::List::[]=}(#t27, "foo") : null;
+  let final core::List<core::String> #t28 = l in #t28.{core::List::length}.{core::num::==}(null) ?{core::int} #t28.{core::List::length} = 42 : null;
+  let final core::List<core::String> #t29 = l in #t29.{core::List::==}(null) ?{core::List<core::String>} null : block {
     #t29.{core::List::length} = 42;
   } =>#t29;
-  let final core::List<core::String> #t30 = l in #t30 == null ?{core::List<core::String>} null : block {
-    let final core::List<core::String> #t31 = #t30 in #t31.{core::List::length}{core::int} == null ?{core::int} #t31.{core::List::length} = 42 : null;
+  let final core::List<core::String> #t30 = l in #t30.{core::List::==}(null) ?{core::List<core::String>} null : block {
+    let final core::List<core::String> #t31 = #t30 in #t31.{core::List::length}.{core::num::==}(null) ?{core::int} #t31.{core::List::length} = 42 : null;
   } =>#t30;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect
index c4b4298..d5ce000 100644
--- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect
@@ -117,7 +117,7 @@
     : super self::A::•()
     ;
   method test() → void {
-    let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String} super.{self::A::[]=}(#t1, "bar") : null;
+    let final core::int #t1 = 42 in super.{self::A::[]}(#t1).{core::String::==}(null) ?{core::String} super.{self::A::[]=}(#t1, "bar") : null;
   }
 }
 extension E on core::String {
@@ -131,28 +131,28 @@
 static method E|[](lowered final core::String #this, core::int index) → core::int
   return 42;
 static method warning(core::String s, core::List<core::String> l, core::Map<core::String, core::int> m) → dynamic {
-  let final core::String #t2 = s in #t2 == null ?{core::int?} null : #t2.{core::String::length}{core::int};
-  let final core::String #t3 = s in #t3 == null ?{core::String} null : block {
-    #t3.{core::String::length}{core::int};
+  let final core::String #t2 = s in #t2.{core::String::==}(null) ?{core::int?} null : #t2.{core::String::length};
+  let final core::String #t3 = s in #t3.{core::String::==}(null) ?{core::String} null : block {
+    #t3.{core::String::length};
   } =>#t3;
-  let final core::String #t4 = s in #t4 == null ?{core::String} "foo" : #t4;
-  s == null ?{core::String} s = "foo" : null;
+  let final core::String #t4 = s in #t4.{core::String::==}(null) ?{core::String} "foo" : #t4;
+  s.{core::String::==}(null) ?{core::String} s = "foo" : null;
   block {
     final core::List<core::String> #t5 = core::_GrowableList::•<core::String>(0);
     final core::Iterable<core::String>? #t6 = l;
-    if(!(#t6 == null))
-      #t5.{core::List::addAll}(#t6{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+    if(!#t6.{core::Object::==}(null))
+      #t5.{core::List::addAll}{Invariant}(#t6{core::Iterable<core::String>});
   } =>#t5;
   core::Set<core::String> a = block {
     final core::Set<core::String> #t7 = new col::_CompactLinkedHashSet::•<core::String>();
     final core::Iterable<dynamic>? #t8 = l;
-    if(!(#t8 == null)) {
+    if(!#t8.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t8{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t9 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::String #t10 = #t9 as{TypeError,ForNonNullableByDefault} core::String;
-          #t7.{core::Set::add}(#t10){(core::String) → core::bool};
+          #t7.{core::Set::add}{Invariant}(#t10);
         }
       }
     }
@@ -160,45 +160,45 @@
   block {
     final core::Set<core::String> #t11 = new col::_CompactLinkedHashSet::•<core::String>();
     final core::Iterable<core::String>? #t12 = l;
-    if(!(#t12 == null))
-      #t11.{core::Set::addAll}(#t12{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+    if(!#t12.{core::Object::==}(null))
+      #t11.{core::Set::addAll}{Invariant}(#t12{core::Iterable<core::String>});
   } =>#t11;
   core::Map<core::String, core::int> b = block {
     final core::Map<core::String, core::int> #t13 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t14 = m;
-    if(!(#t14 == null)) {
+    if(!#t14.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t14{core::Map<core::String, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String, core::int> #t15 = :sync-for-iterator.{core::Iterator::current};
-        #t13.{core::Map::[]=}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value}){(core::String, core::int) → void};
+        #t13.{core::Map::[]=}{Invariant}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value});
       }
     }
   } =>#t13;
   block {
     final core::Map<core::String, core::int> #t16 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t17 = m;
-    if(!(#t17 == null)) {
+    if(!#t17.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t17{core::Map<core::String, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String, core::int> #t18 = :sync-for-iterator.{core::Iterator::current};
-        #t16.{core::Map::[]=}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value}){(core::String, core::int) → void};
+        #t16.{core::Map::[]=}{Invariant}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value});
       }
     }
   } =>#t16;
   s!;
-  let final core::String #t19 = s in #t19 == null ?{core::String?} null : #t19.{core::String::substring}(0, 0){(core::int, [core::int?]) → core::String};
-  let final core::List<core::String> #t20 = l in #t20 == null ?{core::int?} null : #t20.{core::List::length} = 42;
-  let final core::List<core::String> #t21 = l in #t21 == null ?{core::int?} null : #t21.{core::List::length} = #t21.{core::List::length}{core::int}.{core::num::+}(42){(core::num) → core::int};
-  let final core::List<core::String> #t22 = l in #t22 == null ?{core::int?} null : #t22.{core::List::length}{core::int} == null ?{core::int} #t22.{core::List::length} = 42 : null;
-  let final core::String #t23 = s in #t23 == null ?{core::int?} null : self::E|get#foo(#t23);
-  let final core::String #t24 = s in let final core::int #t25 = 42 in self::E|[](#t24, #t25) == null ?{core::int} self::E|[]=(#t24, #t25, 42) : null;
-  let final core::List<core::String> #t26 = l in let final core::int #t27 = 42 in #t26.{core::List::[]}(#t27){(core::int) → core::String} == null ?{core::String} #t26.{core::List::[]=}(#t27, "foo"){(core::int, core::String) → void} : null;
-  let final core::List<core::String> #t28 = l in #t28.{core::List::length}{core::int} == null ?{core::int} #t28.{core::List::length} = 42 : null;
-  let final core::List<core::String> #t29 = l in #t29 == null ?{core::List<core::String>} null : block {
+  let final core::String #t19 = s in #t19.{core::String::==}(null) ?{core::String?} null : #t19.{core::String::substring}(0, 0);
+  let final core::List<core::String> #t20 = l in #t20.{core::List::==}(null) ?{core::int?} null : #t20.{core::List::length} = 42;
+  let final core::List<core::String> #t21 = l in #t21.{core::List::==}(null) ?{core::int?} null : #t21.{core::List::length} = #t21.{core::List::length}.{core::num::+}(42);
+  let final core::List<core::String> #t22 = l in #t22.{core::List::==}(null) ?{core::int?} null : #t22.{core::List::length}.{core::num::==}(null) ?{core::int} #t22.{core::List::length} = 42 : null;
+  let final core::String #t23 = s in #t23.{core::String::==}(null) ?{core::int?} null : self::E|get#foo(#t23);
+  let final core::String #t24 = s in let final core::int #t25 = 42 in self::E|[](#t24, #t25).{core::num::==}(null) ?{core::int} self::E|[]=(#t24, #t25, 42) : null;
+  let final core::List<core::String> #t26 = l in let final core::int #t27 = 42 in #t26.{core::List::[]}(#t27).{core::String::==}(null) ?{core::String} #t26.{core::List::[]=}(#t27, "foo") : null;
+  let final core::List<core::String> #t28 = l in #t28.{core::List::length}.{core::num::==}(null) ?{core::int} #t28.{core::List::length} = 42 : null;
+  let final core::List<core::String> #t29 = l in #t29.{core::List::==}(null) ?{core::List<core::String>} null : block {
     #t29.{core::List::length} = 42;
   } =>#t29;
-  let final core::List<core::String> #t30 = l in #t30 == null ?{core::List<core::String>} null : block {
-    let final core::List<core::String> #t31 = #t30 in #t31.{core::List::length}{core::int} == null ?{core::int} #t31.{core::List::length} = 42 : null;
+  let final core::List<core::String> #t30 = l in #t30.{core::List::==}(null) ?{core::List<core::String>} null : block {
+    let final core::List<core::String> #t31 = #t30 in #t31.{core::List::length}.{core::num::==}(null) ?{core::int} #t31.{core::List::length} = 42 : null;
   } =>#t30;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.expect
index 9a9a96a..bba165a 100644
--- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.expect
@@ -117,7 +117,7 @@
     : super self::A::•()
     ;
   method test() → void {
-    let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String} super.{self::A::[]=}(#t1, "bar") : null;
+    let final core::int #t1 = 42 in super.{self::A::[]}(#t1).{core::String::==}(null) ?{core::String} super.{self::A::[]=}(#t1, "bar") : null;
   }
 }
 extension E on core::String {
@@ -131,61 +131,61 @@
 static method E|[](lowered final core::String #this, core::int index) → core::int
   return 42;
 static method warning(core::String s, core::List<core::String> l, core::Map<core::String, core::int> m) → dynamic {
-  let final core::String #t2 = s in #t2 == null ?{core::int?} null : #t2.{core::String::length}{core::int};
-  let final core::String #t3 = s in #t3 == null ?{core::String} null : block {
-    #t3.{core::String::length}{core::int};
+  let final core::String #t2 = s in #t2.{core::String::==}(null) ?{core::int?} null : #t2.{core::String::length};
+  let final core::String #t3 = s in #t3.{core::String::==}(null) ?{core::String} null : block {
+    #t3.{core::String::length};
   } =>#t3;
-  let final core::String #t4 = s in #t4 == null ?{core::String} "foo" : #t4;
-  s == null ?{core::String} s = "foo" : null;
+  let final core::String #t4 = s in #t4.{core::String::==}(null) ?{core::String} "foo" : #t4;
+  s.{core::String::==}(null) ?{core::String} s = "foo" : null;
   block {
     final core::List<core::String> #t5 = <core::String>[];
     final core::Iterable<core::String>? #t6 = l;
-    if(!(#t6 == null))
-      #t5.{core::List::addAll}(#t6{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+    if(!#t6.{core::Object::==}(null))
+      #t5.{core::List::addAll}{Invariant}(#t6{core::Iterable<core::String>});
   } =>#t5;
   core::Set<core::String> a = block {
     final core::Set<core::String> #t7 = col::LinkedHashSet::•<core::String>();
     final core::Iterable<dynamic>? #t8 = l;
-    if(!(#t8 == null))
+    if(!#t8.{core::Object::==}(null))
       for (final dynamic #t9 in #t8{core::Iterable<dynamic>}) {
         final core::String #t10 = #t9 as{TypeError,ForNonNullableByDefault} core::String;
-        #t7.{core::Set::add}(#t10){(core::String) → core::bool};
+        #t7.{core::Set::add}{Invariant}(#t10);
       }
   } =>#t7;
   block {
     final core::Set<core::String> #t11 = col::LinkedHashSet::•<core::String>();
     final core::Iterable<core::String>? #t12 = l;
-    if(!(#t12 == null))
-      #t11.{core::Set::addAll}(#t12{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+    if(!#t12.{core::Object::==}(null))
+      #t11.{core::Set::addAll}{Invariant}(#t12{core::Iterable<core::String>});
   } =>#t11;
   core::Map<core::String, core::int> b = block {
     final core::Map<core::String, core::int> #t13 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t14 = m;
-    if(!(#t14 == null))
+    if(!#t14.{core::Object::==}(null))
       for (final core::MapEntry<core::String, core::int> #t15 in #t14{core::Map<core::String, core::int>}.{core::Map::entries})
-        #t13.{core::Map::[]=}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value}){(core::String, core::int) → void};
+        #t13.{core::Map::[]=}{Invariant}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value});
   } =>#t13;
   block {
     final core::Map<core::String, core::int> #t16 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t17 = m;
-    if(!(#t17 == null))
+    if(!#t17.{core::Object::==}(null))
       for (final core::MapEntry<core::String, core::int> #t18 in #t17{core::Map<core::String, core::int>}.{core::Map::entries})
-        #t16.{core::Map::[]=}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value}){(core::String, core::int) → void};
+        #t16.{core::Map::[]=}{Invariant}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value});
   } =>#t16;
   s!;
-  let final core::String #t19 = s in #t19 == null ?{core::String?} null : #t19.{core::String::substring}(0, 0){(core::int, [core::int?]) → core::String};
-  let final core::List<core::String> #t20 = l in #t20 == null ?{core::int?} null : #t20.{core::List::length} = 42;
-  let final core::List<core::String> #t21 = l in #t21 == null ?{core::int?} null : #t21.{core::List::length} = #t21.{core::List::length}{core::int}.{core::num::+}(42){(core::num) → core::int};
-  let final core::List<core::String> #t22 = l in #t22 == null ?{core::int?} null : #t22.{core::List::length}{core::int} == null ?{core::int} #t22.{core::List::length} = 42 : null;
-  let final core::String #t23 = s in #t23 == null ?{core::int?} null : self::E|get#foo(#t23);
-  let final core::String #t24 = s in let final core::int #t25 = 42 in self::E|[](#t24, #t25) == null ?{core::int} self::E|[]=(#t24, #t25, 42) : null;
-  let final core::List<core::String> #t26 = l in let final core::int #t27 = 42 in #t26.{core::List::[]}(#t27){(core::int) → core::String} == null ?{core::String} #t26.{core::List::[]=}(#t27, "foo"){(core::int, core::String) → void} : null;
-  let final core::List<core::String> #t28 = l in #t28.{core::List::length}{core::int} == null ?{core::int} #t28.{core::List::length} = 42 : null;
-  let final core::List<core::String> #t29 = l in #t29 == null ?{core::List<core::String>} null : block {
+  let final core::String #t19 = s in #t19.{core::String::==}(null) ?{core::String?} null : #t19.{core::String::substring}(0, 0);
+  let final core::List<core::String> #t20 = l in #t20.{core::List::==}(null) ?{core::int?} null : #t20.{core::List::length} = 42;
+  let final core::List<core::String> #t21 = l in #t21.{core::List::==}(null) ?{core::int?} null : #t21.{core::List::length} = #t21.{core::List::length}.{core::num::+}(42);
+  let final core::List<core::String> #t22 = l in #t22.{core::List::==}(null) ?{core::int?} null : #t22.{core::List::length}.{core::num::==}(null) ?{core::int} #t22.{core::List::length} = 42 : null;
+  let final core::String #t23 = s in #t23.{core::String::==}(null) ?{core::int?} null : self::E|get#foo(#t23);
+  let final core::String #t24 = s in let final core::int #t25 = 42 in self::E|[](#t24, #t25).{core::num::==}(null) ?{core::int} self::E|[]=(#t24, #t25, 42) : null;
+  let final core::List<core::String> #t26 = l in let final core::int #t27 = 42 in #t26.{core::List::[]}(#t27).{core::String::==}(null) ?{core::String} #t26.{core::List::[]=}(#t27, "foo") : null;
+  let final core::List<core::String> #t28 = l in #t28.{core::List::length}.{core::num::==}(null) ?{core::int} #t28.{core::List::length} = 42 : null;
+  let final core::List<core::String> #t29 = l in #t29.{core::List::==}(null) ?{core::List<core::String>} null : block {
     #t29.{core::List::length} = 42;
   } =>#t29;
-  let final core::List<core::String> #t30 = l in #t30 == null ?{core::List<core::String>} null : block {
-    let final core::List<core::String> #t31 = #t30 in #t31.{core::List::length}{core::int} == null ?{core::int} #t31.{core::List::length} = 42 : null;
+  let final core::List<core::String> #t30 = l in #t30.{core::List::==}(null) ?{core::List<core::String>} null : block {
+    let final core::List<core::String> #t31 = #t30 in #t31.{core::List::length}.{core::num::==}(null) ?{core::int} #t31.{core::List::length} = 42 : null;
   } =>#t30;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect
index c4b4298..d5ce000 100644
--- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect
@@ -117,7 +117,7 @@
     : super self::A::•()
     ;
   method test() → void {
-    let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String} super.{self::A::[]=}(#t1, "bar") : null;
+    let final core::int #t1 = 42 in super.{self::A::[]}(#t1).{core::String::==}(null) ?{core::String} super.{self::A::[]=}(#t1, "bar") : null;
   }
 }
 extension E on core::String {
@@ -131,28 +131,28 @@
 static method E|[](lowered final core::String #this, core::int index) → core::int
   return 42;
 static method warning(core::String s, core::List<core::String> l, core::Map<core::String, core::int> m) → dynamic {
-  let final core::String #t2 = s in #t2 == null ?{core::int?} null : #t2.{core::String::length}{core::int};
-  let final core::String #t3 = s in #t3 == null ?{core::String} null : block {
-    #t3.{core::String::length}{core::int};
+  let final core::String #t2 = s in #t2.{core::String::==}(null) ?{core::int?} null : #t2.{core::String::length};
+  let final core::String #t3 = s in #t3.{core::String::==}(null) ?{core::String} null : block {
+    #t3.{core::String::length};
   } =>#t3;
-  let final core::String #t4 = s in #t4 == null ?{core::String} "foo" : #t4;
-  s == null ?{core::String} s = "foo" : null;
+  let final core::String #t4 = s in #t4.{core::String::==}(null) ?{core::String} "foo" : #t4;
+  s.{core::String::==}(null) ?{core::String} s = "foo" : null;
   block {
     final core::List<core::String> #t5 = core::_GrowableList::•<core::String>(0);
     final core::Iterable<core::String>? #t6 = l;
-    if(!(#t6 == null))
-      #t5.{core::List::addAll}(#t6{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+    if(!#t6.{core::Object::==}(null))
+      #t5.{core::List::addAll}{Invariant}(#t6{core::Iterable<core::String>});
   } =>#t5;
   core::Set<core::String> a = block {
     final core::Set<core::String> #t7 = new col::_CompactLinkedHashSet::•<core::String>();
     final core::Iterable<dynamic>? #t8 = l;
-    if(!(#t8 == null)) {
+    if(!#t8.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t8{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t9 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::String #t10 = #t9 as{TypeError,ForNonNullableByDefault} core::String;
-          #t7.{core::Set::add}(#t10){(core::String) → core::bool};
+          #t7.{core::Set::add}{Invariant}(#t10);
         }
       }
     }
@@ -160,45 +160,45 @@
   block {
     final core::Set<core::String> #t11 = new col::_CompactLinkedHashSet::•<core::String>();
     final core::Iterable<core::String>? #t12 = l;
-    if(!(#t12 == null))
-      #t11.{core::Set::addAll}(#t12{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+    if(!#t12.{core::Object::==}(null))
+      #t11.{core::Set::addAll}{Invariant}(#t12{core::Iterable<core::String>});
   } =>#t11;
   core::Map<core::String, core::int> b = block {
     final core::Map<core::String, core::int> #t13 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t14 = m;
-    if(!(#t14 == null)) {
+    if(!#t14.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t14{core::Map<core::String, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String, core::int> #t15 = :sync-for-iterator.{core::Iterator::current};
-        #t13.{core::Map::[]=}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value}){(core::String, core::int) → void};
+        #t13.{core::Map::[]=}{Invariant}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value});
       }
     }
   } =>#t13;
   block {
     final core::Map<core::String, core::int> #t16 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t17 = m;
-    if(!(#t17 == null)) {
+    if(!#t17.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t17{core::Map<core::String, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String, core::int> #t18 = :sync-for-iterator.{core::Iterator::current};
-        #t16.{core::Map::[]=}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value}){(core::String, core::int) → void};
+        #t16.{core::Map::[]=}{Invariant}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value});
       }
     }
   } =>#t16;
   s!;
-  let final core::String #t19 = s in #t19 == null ?{core::String?} null : #t19.{core::String::substring}(0, 0){(core::int, [core::int?]) → core::String};
-  let final core::List<core::String> #t20 = l in #t20 == null ?{core::int?} null : #t20.{core::List::length} = 42;
-  let final core::List<core::String> #t21 = l in #t21 == null ?{core::int?} null : #t21.{core::List::length} = #t21.{core::List::length}{core::int}.{core::num::+}(42){(core::num) → core::int};
-  let final core::List<core::String> #t22 = l in #t22 == null ?{core::int?} null : #t22.{core::List::length}{core::int} == null ?{core::int} #t22.{core::List::length} = 42 : null;
-  let final core::String #t23 = s in #t23 == null ?{core::int?} null : self::E|get#foo(#t23);
-  let final core::String #t24 = s in let final core::int #t25 = 42 in self::E|[](#t24, #t25) == null ?{core::int} self::E|[]=(#t24, #t25, 42) : null;
-  let final core::List<core::String> #t26 = l in let final core::int #t27 = 42 in #t26.{core::List::[]}(#t27){(core::int) → core::String} == null ?{core::String} #t26.{core::List::[]=}(#t27, "foo"){(core::int, core::String) → void} : null;
-  let final core::List<core::String> #t28 = l in #t28.{core::List::length}{core::int} == null ?{core::int} #t28.{core::List::length} = 42 : null;
-  let final core::List<core::String> #t29 = l in #t29 == null ?{core::List<core::String>} null : block {
+  let final core::String #t19 = s in #t19.{core::String::==}(null) ?{core::String?} null : #t19.{core::String::substring}(0, 0);
+  let final core::List<core::String> #t20 = l in #t20.{core::List::==}(null) ?{core::int?} null : #t20.{core::List::length} = 42;
+  let final core::List<core::String> #t21 = l in #t21.{core::List::==}(null) ?{core::int?} null : #t21.{core::List::length} = #t21.{core::List::length}.{core::num::+}(42);
+  let final core::List<core::String> #t22 = l in #t22.{core::List::==}(null) ?{core::int?} null : #t22.{core::List::length}.{core::num::==}(null) ?{core::int} #t22.{core::List::length} = 42 : null;
+  let final core::String #t23 = s in #t23.{core::String::==}(null) ?{core::int?} null : self::E|get#foo(#t23);
+  let final core::String #t24 = s in let final core::int #t25 = 42 in self::E|[](#t24, #t25).{core::num::==}(null) ?{core::int} self::E|[]=(#t24, #t25, 42) : null;
+  let final core::List<core::String> #t26 = l in let final core::int #t27 = 42 in #t26.{core::List::[]}(#t27).{core::String::==}(null) ?{core::String} #t26.{core::List::[]=}(#t27, "foo") : null;
+  let final core::List<core::String> #t28 = l in #t28.{core::List::length}.{core::num::==}(null) ?{core::int} #t28.{core::List::length} = 42 : null;
+  let final core::List<core::String> #t29 = l in #t29.{core::List::==}(null) ?{core::List<core::String>} null : block {
     #t29.{core::List::length} = 42;
   } =>#t29;
-  let final core::List<core::String> #t30 = l in #t30 == null ?{core::List<core::String>} null : block {
-    let final core::List<core::String> #t31 = #t30 in #t31.{core::List::length}{core::int} == null ?{core::int} #t31.{core::List::length} = 42 : null;
+  let final core::List<core::String> #t30 = l in #t30.{core::List::==}(null) ?{core::List<core::String>} null : block {
+    let final core::List<core::String> #t31 = #t30 in #t31.{core::List::length}.{core::num::==}(null) ?{core::int} #t31.{core::List::length} = 42 : null;
   } =>#t30;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.expect
index 8698e0d..389af44 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.expect
@@ -95,7 +95,7 @@
   self::expect(1, self::method4(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Expected ${expected}, actual ${actual}.";
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.transformed.expect
index 8698e0d..389af44 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.transformed.expect
@@ -95,7 +95,7 @@
   self::expect(1, self::method4(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Expected ${expected}, actual ${actual}.";
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.expect
index 0106f3c..2dcf81c 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.expect
@@ -99,7 +99,7 @@
   self::expect(1, self::method4(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Expected ${expected}, actual ${actual}.";
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.transformed.expect
index 0106f3c..2dcf81c 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.transformed.expect
@@ -99,7 +99,7 @@
   self::expect(1, self::method4(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Expected ${expected}, actual ${actual}.";
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.strong.expect b/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.strong.expect
index 530beda..d0e258c 100644
--- a/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.strong.expect
@@ -18,7 +18,7 @@
       #L1:
       case #C1:
         {
-          this.{self::A::neverReturn}(){() → Never};
+          this.{self::A::neverReturn}();
         }
       #L2:
       default:
diff --git a/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.strong.transformed.expect
index 530beda..d0e258c 100644
--- a/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
       #L1:
       case #C1:
         {
-          this.{self::A::neverReturn}(){() → Never};
+          this.{self::A::neverReturn}();
         }
       #L2:
       default:
diff --git a/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.weak.expect b/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.weak.expect
index e074f2a..d5183ef 100644
--- a/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.weak.expect
@@ -19,7 +19,7 @@
       #L1:
       case #C1:
         {
-          let final Never #t1 = this.{self::A::neverReturn}(){() → Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+          let final Never #t1 = this.{self::A::neverReturn}() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
         }
       #L2:
       default:
diff --git a/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.weak.transformed.expect
index e074f2a..d5183ef 100644
--- a/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart.weak.transformed.expect
@@ -19,7 +19,7 @@
       #L1:
       case #C1:
         {
-          let final Never #t1 = this.{self::A::neverReturn}(){() → Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+          let final Never #t1 = this.{self::A::neverReturn}() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
         }
       #L2:
       default:
diff --git a/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.strong.expect b/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.strong.expect
index 09c6491..200bf55 100644
--- a/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.strong.expect
@@ -81,8 +81,8 @@
                           ^" in nt as{TypeError,ForNonNullableByDefault} () →? core::int);
 }
 static method bar<T extends self::C>(self::C c, self::bar::T t) → dynamic {
-  self::functionContext(let final self::C #t9 = c in #t9 == null ?{() → core::int} null : #t9.{self::C::call});
-  self::nullableFunctionContext(let final self::C #t10 = c in #t10 == null ?{() → core::int} null : #t10.{self::C::call});
+  self::functionContext(let final self::C #t9 = c in #t9.==(null) ?{() → core::int} null : #t9.{self::C::call});
+  self::nullableFunctionContext(let final self::C #t10 = c in #t10.==(null) ?{() → core::int} null : #t10.{self::C::call});
   self::functionContext(let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart:27:19: Error: The argument type 'T' can't be assigned to the parameter type 'int Function()'.
   functionContext(t); // Shouldn't result in a compile-time error.
                   ^" in t as{TypeError,ForNonNullableByDefault} () → core::int);
diff --git a/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.strong.transformed.expect
index 09857e0..ea7c975 100644
--- a/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.strong.transformed.expect
@@ -81,8 +81,8 @@
                           ^" in nt as{TypeError,ForNonNullableByDefault} () →? core::int);
 }
 static method bar<T extends self::C>(self::C c, self::bar::T t) → dynamic {
-  self::functionContext(let final self::C #t10 = c in #t10 == null ?{() → core::int} null : #t10.{self::C::call});
-  self::nullableFunctionContext(let final self::C #t11 = c in #t11 == null ?{() → core::int} null : #t11.{self::C::call});
+  self::functionContext(let final self::C #t10 = c in #t10.==(null) ?{() → core::int} null : #t10.{self::C::call});
+  self::nullableFunctionContext(let final self::C #t11 = c in #t11.==(null) ?{() → core::int} null : #t11.{self::C::call});
   self::functionContext(let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart:27:19: Error: The argument type 'T' can't be assigned to the parameter type 'int Function()'.
   functionContext(t); // Shouldn't result in a compile-time error.
                   ^" in t as{TypeError,ForNonNullableByDefault} () → core::int);
diff --git a/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.weak.expect b/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.weak.expect
index 09c6491..200bf55 100644
--- a/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.weak.expect
@@ -81,8 +81,8 @@
                           ^" in nt as{TypeError,ForNonNullableByDefault} () →? core::int);
 }
 static method bar<T extends self::C>(self::C c, self::bar::T t) → dynamic {
-  self::functionContext(let final self::C #t9 = c in #t9 == null ?{() → core::int} null : #t9.{self::C::call});
-  self::nullableFunctionContext(let final self::C #t10 = c in #t10 == null ?{() → core::int} null : #t10.{self::C::call});
+  self::functionContext(let final self::C #t9 = c in #t9.==(null) ?{() → core::int} null : #t9.{self::C::call});
+  self::nullableFunctionContext(let final self::C #t10 = c in #t10.==(null) ?{() → core::int} null : #t10.{self::C::call});
   self::functionContext(let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart:27:19: Error: The argument type 'T' can't be assigned to the parameter type 'int Function()'.
   functionContext(t); // Shouldn't result in a compile-time error.
                   ^" in t as{TypeError,ForNonNullableByDefault} () → core::int);
diff --git a/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.weak.transformed.expect
index 9249659..651b955 100644
--- a/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart.weak.transformed.expect
@@ -81,8 +81,8 @@
                           ^" in nt as{TypeError,ForNonNullableByDefault} () →? core::int);
 }
 static method bar<T extends self::C>(self::C c, self::bar::T t) → dynamic {
-  self::functionContext(let final self::C #t9 = c in #t9 == null ?{() → core::int} null : #t9.{self::C::call});
-  self::nullableFunctionContext(let final self::C #t10 = c in #t10 == null ?{() → core::int} null : #t10.{self::C::call});
+  self::functionContext(let final self::C #t9 = c in #t9.==(null) ?{() → core::int} null : #t9.{self::C::call});
+  self::nullableFunctionContext(let final self::C #t10 = c in #t10.==(null) ?{() → core::int} null : #t10.{self::C::call});
   self::functionContext(let final Never #t11 = invalid-expression "pkg/front_end/testcases/nnbd/tearoff_from_nullable_receiver.dart:27:19: Error: The argument type 'T' can't be assigned to the parameter type 'int Function()'.
   functionContext(t); // Shouldn't result in a compile-time error.
                   ^" in t as{TypeError,ForNonNullableByDefault} () → core::int);
diff --git a/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.strong.expect b/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.strong.expect
index 8aa9644..15fcd35 100644
--- a/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.strong.expect
@@ -9,9 +9,9 @@
     : super core::Object::•()
     ;
   method qux() → dynamic {
-    final self::Foo::T? v = this.{self::Foo::bar}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::Foo::T?;
+    final self::Foo::T? v = this.{self::Foo::bar} as{TypeError,ForDynamic,ForNonNullableByDefault} self::Foo::T?;
     if(v is{ForNonNullableByDefault} core::num) {
-      this.{self::Foo::baz}{dynamic}{dynamic}.[]=("value", v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::isFinite}{core::bool} ?{core::Object} v{self::Foo::T? & core::num /* '?' & '!' = '!' */} : v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::toString}(){() → core::String});
+      this.{self::Foo::baz}.[]=("value", v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::isFinite} ?{core::Object} v{self::Foo::T? & core::num /* '?' & '!' = '!' */} : v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::toString}());
     }
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.strong.transformed.expect
index 8aa9644..15fcd35 100644
--- a/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.strong.transformed.expect
@@ -9,9 +9,9 @@
     : super core::Object::•()
     ;
   method qux() → dynamic {
-    final self::Foo::T? v = this.{self::Foo::bar}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::Foo::T?;
+    final self::Foo::T? v = this.{self::Foo::bar} as{TypeError,ForDynamic,ForNonNullableByDefault} self::Foo::T?;
     if(v is{ForNonNullableByDefault} core::num) {
-      this.{self::Foo::baz}{dynamic}{dynamic}.[]=("value", v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::isFinite}{core::bool} ?{core::Object} v{self::Foo::T? & core::num /* '?' & '!' = '!' */} : v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::toString}(){() → core::String});
+      this.{self::Foo::baz}.[]=("value", v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::isFinite} ?{core::Object} v{self::Foo::T? & core::num /* '?' & '!' = '!' */} : v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::toString}());
     }
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.weak.expect b/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.weak.expect
index 8aa9644..15fcd35 100644
--- a/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.weak.expect
@@ -9,9 +9,9 @@
     : super core::Object::•()
     ;
   method qux() → dynamic {
-    final self::Foo::T? v = this.{self::Foo::bar}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::Foo::T?;
+    final self::Foo::T? v = this.{self::Foo::bar} as{TypeError,ForDynamic,ForNonNullableByDefault} self::Foo::T?;
     if(v is{ForNonNullableByDefault} core::num) {
-      this.{self::Foo::baz}{dynamic}{dynamic}.[]=("value", v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::isFinite}{core::bool} ?{core::Object} v{self::Foo::T? & core::num /* '?' & '!' = '!' */} : v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::toString}(){() → core::String});
+      this.{self::Foo::baz}.[]=("value", v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::isFinite} ?{core::Object} v{self::Foo::T? & core::num /* '?' & '!' = '!' */} : v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::toString}());
     }
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.weak.transformed.expect
index 8aa9644..15fcd35 100644
--- a/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/upper_bound_on_promoted_type.dart.weak.transformed.expect
@@ -9,9 +9,9 @@
     : super core::Object::•()
     ;
   method qux() → dynamic {
-    final self::Foo::T? v = this.{self::Foo::bar}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::Foo::T?;
+    final self::Foo::T? v = this.{self::Foo::bar} as{TypeError,ForDynamic,ForNonNullableByDefault} self::Foo::T?;
     if(v is{ForNonNullableByDefault} core::num) {
-      this.{self::Foo::baz}{dynamic}{dynamic}.[]=("value", v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::isFinite}{core::bool} ?{core::Object} v{self::Foo::T? & core::num /* '?' & '!' = '!' */} : v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::toString}(){() → core::String});
+      this.{self::Foo::baz}.[]=("value", v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::isFinite} ?{core::Object} v{self::Foo::T? & core::num /* '?' & '!' = '!' */} : v{self::Foo::T? & core::num /* '?' & '!' = '!' */}.{core::num::toString}());
     }
   }
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.weak.expect
index b07ab07..847ce35 100644
--- a/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.weak.expect
@@ -23,7 +23,7 @@
 }
 static method test() → dynamic {
   bou::Class<Null>* c = new bou::Class::•<Null>();
-  c.{bou::Class::method}<Null>(){() →* dynamic};
+  c.{bou::Class::method}<Null>();
   bou::method<Null>();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.weak.transformed.expect
index b07ab07..847ce35 100644
--- a/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
 }
 static method test() → dynamic {
   bou::Class<Null>* c = new bou::Class::•<Null>();
-  c.{bou::Class::method}<Null>(){() →* dynamic};
+  c.{bou::Class::method}<Null>();
   bou::method<Null>();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.expect
index 92077f0..a49b865 100644
--- a/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.expect
@@ -13,11 +13,11 @@
 class Check extends core::Object /*hasConstConstructor*/  {
   final field dynamic _ignored;
   const constructor •(dynamic x, dynamic y) → self::Check
-    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0){(core::num) → core::int}, super core::Object::•()
+    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0), super core::Object::•()
     ;
 }
 static method expectEqual(dynamic x, dynamic y) → void {
-  if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
+  if(!x.{core::Object::==}(y)) {
     throw "Arguments were supposed to be identical.";
   }
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.outline.expect
index 9f97092..30aff56 100644
--- a/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.outline.expect
@@ -13,7 +13,7 @@
 class Check extends core::Object /*hasConstConstructor*/  {
   final field dynamic _ignored;
   const constructor •(dynamic x, dynamic y) → self::Check
-    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0){(core::num) → core::int}, super core::Object::•()
+    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0), super core::Object::•()
     ;
 }
 static method expectEqual(dynamic x, dynamic y) → void
diff --git a/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.transformed.expect
index 92077f0..a49b865 100644
--- a/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.transformed.expect
@@ -13,11 +13,11 @@
 class Check extends core::Object /*hasConstConstructor*/  {
   final field dynamic _ignored;
   const constructor •(dynamic x, dynamic y) → self::Check
-    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0){(core::num) → core::int}, super core::Object::•()
+    : assert(core::identical(x, y)), self::Check::_ignored = core::identical(x, y) ?{core::int} 42 : 1.{core::num::~/}(0), super core::Object::•()
     ;
 }
 static method expectEqual(dynamic x, dynamic y) → void {
-  if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
+  if(!x.{core::Object::==}(y)) {
     throw "Arguments were supposed to be identical.";
   }
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/const_is.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/const_is.dart.weak.expect
index ce1ca58..90ee935 100644
--- a/pkg/front_end/testcases/nnbd_mixed/const_is.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/const_is.dart.weak.expect
@@ -11,7 +11,7 @@
   self::expect(true, #C2);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/const_is.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/const_is.dart.weak.transformed.expect
index 806f867..d198bb9 100644
--- a/pkg/front_end/testcases/nnbd_mixed/const_is.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/const_is.dart.weak.transformed.expect
@@ -11,7 +11,7 @@
   self::expect(true, #C2);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.expect
index f32fd42..cd7b899 100644
--- a/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.expect
@@ -61,25 +61,25 @@
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never>, #C3, "null is FutureOr<Never>");
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never?>, #C2, "null is FutureOr<Never?>");
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never>?, #C2, "null is FutureOr<Never>?");
-  self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}{core::bool}, (#C4).{self::Class::field}{core::bool}, "Class<int>.constructor1(null).field");
-  self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}{core::bool}, "new Class<int?>.constructor1(null).field");
-  self::expect(self::isWeakMode, (#C5).{self::Class::field}{core::bool}, "const Class<List<int>>.constructor1(<Null>[null]).field");
-  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor1(null).field");
-  self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}{core::bool}, (#C7).{self::Class::field}{core::bool}, "Class<int>.constructor2(null).field");
-  self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}{core::bool}, "new Class<int?>.constructor2(null).field");
-  self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}{core::bool}, (#C8).{self::Class::field}{core::bool}, "Class<int?>.constructor2(null).field");
-  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor2(null).field");
-  self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}{core::bool}, (#C4).{self::Class::field}{core::bool}, "Class<int>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}{core::bool}, (#C9).{self::Class::field}{core::bool}, "Class<int?>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}{core::bool}, (#C9).{self::Class::field}{core::bool}, "Class<int?>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}{core::bool}, (#C10).{self::Class::field}{core::bool}, "Class<Null>.constructor3(null).field");
-  self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}{core::bool}, (#C7).{self::Class::field}{core::bool}, "Class<int>.constructor4(null).field");
-  self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}{core::bool}, (#C8).{self::Class::field}{core::bool}, "Class<int?>.constructor4(null).field");
-  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor4(null).field");
+  self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor1(null).field");
+  self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor1(null).field");
+  self::expect(self::isWeakMode, (#C5).{self::Class::field}, "const Class<List<int>>.constructor1(<Null>[null]).field");
+  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor1(null).field");
+  self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor2(null).field");
+  self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor2(null).field");
+  self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor2(null).field");
+  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor2(null).field");
+  self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}, (#C10).{self::Class::field}, "Class<Null>.constructor3(null).field");
+  self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor4(null).field");
+  self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor4(null).field");
+  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor4(null).field");
   con::test();
 }
 static method expect(dynamic expected, dynamic actual, core::String message) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual} for ${message}";
 }
 
@@ -104,14 +104,14 @@
 static method test() → dynamic {
   self::expect(null is core::int*, #C3, "null is int (opt-out)");
   self::expect(null is Null, #C2, "null is Null");
-  self::expect(new self::Class::constructor1<core::int*>(null).{self::Class::field}{core::bool*}, (#C4).{self::Class::field}{core::bool*}, "Class<int>.constructor1(null).field (opt-out)");
-  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}{core::bool*}, (#C6).{self::Class::field}{core::bool*}, "Class<Null>.constructor1(null).field (opt-out)");
-  self::expect(new self::Class::constructor2<core::int*>(null).{self::Class::field}{core::bool*}, (#C7).{self::Class::field}{core::bool*}, "Class<int>.constructor2(null).field (opt-out)");
-  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}{core::bool*}, (#C6).{self::Class::field}{core::bool*}, "Class<Null>.constructor2(null).field (opt-out)");
-  self::expect(new self::Class::constructor3<core::int*>(null).{self::Class::field}{core::bool*}, (#C4).{self::Class::field}{core::bool*}, "Class<int>.constructor3(null).field (opt-out)");
-  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}{core::bool*}, (#C10).{self::Class::field}{core::bool*}, "Class<Null>.constructor3(null).field (opt-out)");
-  self::expect(new self::Class::constructor4<core::int*>(null).{self::Class::field}{core::bool*}, (#C7).{self::Class::field}{core::bool*}, "Class<int>.constructor4(null).field (opt-out)");
-  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}{core::bool*}, (#C6).{self::Class::field}{core::bool*}, "Class<Null>.constructor4(null).field (opt-out)");
+  self::expect(new self::Class::constructor1<core::int*>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor1(null).field (opt-out)");
+  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor1(null).field (opt-out)");
+  self::expect(new self::Class::constructor2<core::int*>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor2(null).field (opt-out)");
+  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor2(null).field (opt-out)");
+  self::expect(new self::Class::constructor3<core::int*>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor3(null).field (opt-out)");
+  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}, (#C10).{self::Class::field}, "Class<Null>.constructor3(null).field (opt-out)");
+  self::expect(new self::Class::constructor4<core::int*>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor4(null).field (opt-out)");
+  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor4(null).field (opt-out)");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.transformed.expect
index cb3fea5..edf4aad 100644
--- a/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.transformed.expect
@@ -61,25 +61,25 @@
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never>, #C3, "null is FutureOr<Never>");
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never?>, #C2, "null is FutureOr<Never?>");
   self::expect(null is{ForNonNullableByDefault} FutureOr<Never>?, #C2, "null is FutureOr<Never>?");
-  self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}{core::bool}, (#C4).{self::Class::field}{core::bool}, "Class<int>.constructor1(null).field");
-  self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}{core::bool}, "new Class<int?>.constructor1(null).field");
-  self::expect(self::isWeakMode, (#C5).{self::Class::field}{core::bool}, "const Class<List<int>>.constructor1(<Null>[null]).field");
-  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor1(null).field");
-  self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}{core::bool}, (#C7).{self::Class::field}{core::bool}, "Class<int>.constructor2(null).field");
-  self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}{core::bool}, "new Class<int?>.constructor2(null).field");
-  self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}{core::bool}, (#C8).{self::Class::field}{core::bool}, "Class<int?>.constructor2(null).field");
-  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor2(null).field");
-  self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}{core::bool}, (#C4).{self::Class::field}{core::bool}, "Class<int>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}{core::bool}, (#C9).{self::Class::field}{core::bool}, "Class<int?>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}{core::bool}, (#C9).{self::Class::field}{core::bool}, "Class<int?>.constructor3(null).field");
-  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}{core::bool}, (#C10).{self::Class::field}{core::bool}, "Class<Null>.constructor3(null).field");
-  self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}{core::bool}, (#C7).{self::Class::field}{core::bool}, "Class<int>.constructor4(null).field");
-  self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}{core::bool}, (#C8).{self::Class::field}{core::bool}, "Class<int?>.constructor4(null).field");
-  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}{core::bool}, (#C6).{self::Class::field}{core::bool}, "Class<Null>.constructor4(null).field");
+  self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor1(null).field");
+  self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor1(null).field");
+  self::expect(self::isWeakMode, (#C5).{self::Class::field}, "const Class<List<int>>.constructor1(<Null>[null]).field");
+  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor1(null).field");
+  self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor2(null).field");
+  self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor2(null).field");
+  self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor2(null).field");
+  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor2(null).field");
+  self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
+  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}, (#C10).{self::Class::field}, "Class<Null>.constructor3(null).field");
+  self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor4(null).field");
+  self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor4(null).field");
+  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor4(null).field");
   con::test();
 }
 static method expect(dynamic expected, dynamic actual, core::String message) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual} for ${message}";
 }
 
@@ -104,14 +104,14 @@
 static method test() → dynamic {
   self::expect(null is core::int*, #C3, "null is int (opt-out)");
   self::expect(null is Null, #C2, "null is Null");
-  self::expect(new self::Class::constructor1<core::int*>(null).{self::Class::field}{core::bool*}, (#C4).{self::Class::field}{core::bool*}, "Class<int>.constructor1(null).field (opt-out)");
-  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}{core::bool*}, (#C6).{self::Class::field}{core::bool*}, "Class<Null>.constructor1(null).field (opt-out)");
-  self::expect(new self::Class::constructor2<core::int*>(null).{self::Class::field}{core::bool*}, (#C7).{self::Class::field}{core::bool*}, "Class<int>.constructor2(null).field (opt-out)");
-  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}{core::bool*}, (#C6).{self::Class::field}{core::bool*}, "Class<Null>.constructor2(null).field (opt-out)");
-  self::expect(new self::Class::constructor3<core::int*>(null).{self::Class::field}{core::bool*}, (#C4).{self::Class::field}{core::bool*}, "Class<int>.constructor3(null).field (opt-out)");
-  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}{core::bool*}, (#C10).{self::Class::field}{core::bool*}, "Class<Null>.constructor3(null).field (opt-out)");
-  self::expect(new self::Class::constructor4<core::int*>(null).{self::Class::field}{core::bool*}, (#C7).{self::Class::field}{core::bool*}, "Class<int>.constructor4(null).field (opt-out)");
-  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}{core::bool*}, (#C6).{self::Class::field}{core::bool*}, "Class<Null>.constructor4(null).field (opt-out)");
+  self::expect(new self::Class::constructor1<core::int*>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor1(null).field (opt-out)");
+  self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor1(null).field (opt-out)");
+  self::expect(new self::Class::constructor2<core::int*>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor2(null).field (opt-out)");
+  self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor2(null).field (opt-out)");
+  self::expect(new self::Class::constructor3<core::int*>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor3(null).field (opt-out)");
+  self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}, (#C10).{self::Class::field}, "Class<Null>.constructor3(null).field (opt-out)");
+  self::expect(new self::Class::constructor4<core::int*>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor4(null).field (opt-out)");
+  self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor4(null).field (opt-out)");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.outline.expect
index 9f91d26..8f7c607 100644
--- a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.outline.expect
@@ -78,7 +78,7 @@
 Evaluated: StaticInvocation @ org-dartlang-testcase:///constants.dart:23:5 -> BoolConstant(true)
 Evaluated: StaticInvocation @ org-dartlang-testcase:///constants.dart:25:5 -> BoolConstant(true)
 Evaluated: StaticInvocation @ org-dartlang-testcase:///constants.dart:27:5 -> BoolConstant(true)
-Evaluated: StaticTearOff @ org-dartlang-testcase:///constants_lib.dart:18:12 -> TearOffConstant(identical)
+Evaluated: StaticGet @ org-dartlang-testcase:///constants_lib.dart:18:12 -> TearOffConstant(identical)
 Evaluated: Instantiation @ org-dartlang-testcase:///constants_lib.dart:19:48 -> PartialInstantiationConstant(id<int*>)
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///constants_lib.dart:20:24 -> InstanceConstant(const Class<int*>{Class.field: 0})
 Evaluated: ListLiteral @ org-dartlang-testcase:///constants_lib.dart:21:26 -> ListConstant(const <int*>[0])
diff --git a/pkg/front_end/testcases/nnbd_mixed/error_on_recompile_with_no_change/main.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/error_on_recompile_with_no_change/main.dart.weak.expect
index ccc539a..d58f5ba 100644
--- a/pkg/front_end/testcases/nnbd_mixed/error_on_recompile_with_no_change/main.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/error_on_recompile_with_no_change/main.dart.weak.expect
@@ -14,7 +14,7 @@
   get renderObject() → mai::Adaptor*
     return super.{obj::RenderObject::renderObject} as{TypeError} mai::Adaptor*;
   method foo() → void {
-    core::print(this.{self::AdaptorElement::renderObject}{mai::Adaptor*}.{mai::_Adaptor&RenderFoo&LibMixin::constraints}{obj::FooConstraints*}.{obj::FooConstraints::axis}{core::String*});
+    core::print(this.{self::AdaptorElement::renderObject}.{mai::_Adaptor&RenderFoo&LibMixin::constraints}.{obj::FooConstraints::axis});
   }
   abstract member-signature get constraints() → obj::Constraints*; -> obj::RenderObject::constraints
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/nnbd_mixed/error_on_recompile_with_no_change/main.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/error_on_recompile_with_no_change/main.dart.weak.transformed.expect
index be64d1c..1a886bf 100644
--- a/pkg/front_end/testcases/nnbd_mixed/error_on_recompile_with_no_change/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/error_on_recompile_with_no_change/main.dart.weak.transformed.expect
@@ -14,7 +14,7 @@
   get renderObject() → mai::Adaptor*
     return super.{obj::RenderObject::renderObject} as{TypeError} mai::Adaptor*;
   method foo() → void {
-    core::print(this.{self::AdaptorElement::renderObject}{mai::Adaptor*}.{mai::_Adaptor&RenderFoo&LibMixin::constraints}{obj::FooConstraints*}.{obj::FooConstraints::axis}{core::String*});
+    core::print(this.{self::AdaptorElement::renderObject}.{mai::_Adaptor&RenderFoo&LibMixin::constraints}.{obj::FooConstraints::axis});
   }
   abstract member-signature get constraints() → obj::Constraints*; -> obj::RenderObject::constraints
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/abstract_mixin.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/abstract_mixin.dart.weak.expect
index e60d718..0f16923 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/abstract_mixin.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/abstract_mixin.dart.weak.expect
@@ -41,13 +41,13 @@
     : super self::Class::•()
     ;
   method test() → void {
-    this.{self::Class::extendedConcreteMixedInAbstractMethod}(){() → void};
+    this.{self::Class::extendedConcreteMixedInAbstractMethod}();
     super.{self::Super::extendedConcreteMixedInAbstractMethod}();
-    this.{self::Class::extendedConcreteMixedInConcreteMethod}(){() → void};
+    this.{self::Class::extendedConcreteMixedInConcreteMethod}();
     super.{self::Class::extendedConcreteMixedInConcreteMethod}();
-    this.{self::Class::extendedConcreteMixedInAbstractImplementedMethod}(0){(core::int) → void};
+    this.{self::Class::extendedConcreteMixedInAbstractImplementedMethod}(0);
     super.{self::Class::extendedConcreteMixedInAbstractImplementedMethod}(0);
-    this.{self::Class::extendedConcreteMixedInConcreteImplementedMethod}(0){(core::int) → void};
+    this.{self::Class::extendedConcreteMixedInConcreteImplementedMethod}(0);
     super.{self::Class::extendedConcreteMixedInConcreteImplementedMethod}(0);
   }
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/abstract_mixin.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/abstract_mixin.dart.weak.transformed.expect
index 5af8040..8f44020 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/abstract_mixin.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/abstract_mixin.dart.weak.transformed.expect
@@ -38,13 +38,13 @@
     : super self::Class::•()
     ;
   method test() → void {
-    this.{self::Class::extendedConcreteMixedInAbstractMethod}(){() → void};
+    this.{self::Class::extendedConcreteMixedInAbstractMethod}();
     super.{self::Super::extendedConcreteMixedInAbstractMethod}();
-    this.{self::Class::extendedConcreteMixedInConcreteMethod}(){() → void};
+    this.{self::Class::extendedConcreteMixedInConcreteMethod}();
     super.{self::Class::extendedConcreteMixedInConcreteMethod}();
-    this.{self::Class::extendedConcreteMixedInAbstractImplementedMethod}(0){(core::int) → void};
+    this.{self::Class::extendedConcreteMixedInAbstractImplementedMethod}(0);
     super.{self::Class::extendedConcreteMixedInAbstractImplementedMethod}(0);
-    this.{self::Class::extendedConcreteMixedInConcreteImplementedMethod}(0){(core::int) → void};
+    this.{self::Class::extendedConcreteMixedInConcreteImplementedMethod}(0);
     super.{self::Class::extendedConcreteMixedInConcreteImplementedMethod}(0);
   }
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart.weak.expect
index d78b587..f82e223 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart.weak.expect
@@ -106,15 +106,15 @@
     ;
   method test() → dynamic {
     core::int i;
-    core::int? v1 = this.{self::Class::nullabilityMethod}(null){(core::int?, {j: core::int?}) → core::int?};
+    core::int? v1 = this.{self::Class::nullabilityMethod}(null);
     i = super.{in_2::Super::nullabilityMethod}(null);
-    i = this.{in_::LegacyClass::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*};
+    i = this.{in_::LegacyClass::optionalArgumentsMethod}(null, null);
     i = super.{in_2::Super::optionalArgumentsMethod}(null);
     let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart:21:34: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
     super.optionalArgumentsMethod(null, null); // error
                                  ^" in super.{in_2::Super::optionalArgumentsMethod}(null, null);
-    core::int? v2 = this.{self::Class::nullabilityGetter}{core::int?};
+    core::int? v2 = this.{self::Class::nullabilityGetter};
     i = super.{in_2::Super::nullabilityGetter};
     this.{self::Class::nullabilitySetter} = null;
     super.{in_2::Super::nullabilitySetter} = null;
@@ -138,15 +138,15 @@
     ;
   method test() → dynamic {
     core::int i;
-    this.{in_::LegacyClassQ::nullabilityMethod}(null){(core::int*, {j: core::int*}) →* core::int*};
+    this.{in_::LegacyClassQ::nullabilityMethod}(null);
     i = super.{in_2::SuperQ::nullabilityMethod}(null);
-    i = this.{in_::LegacyClassQ::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*};
+    i = this.{in_::LegacyClassQ::optionalArgumentsMethod}(null, null);
     i = super.{in_2::SuperQ::optionalArgumentsMethod}(null);
     let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart:46:34: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
     super.optionalArgumentsMethod(null, null); // error
                                  ^" in super.{in_2::SuperQ::optionalArgumentsMethod}(null, null);
-    i = this.{self::ClassQ::nullabilityGetter}{core::int};
+    i = this.{self::ClassQ::nullabilityGetter};
     i = super.{in_2::SuperQ::nullabilityGetter};
     this.{self::ClassQ::nullabilitySetter} = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart:52:25: Error: The value 'null' can't be assigned to a variable of type 'int' because 'int' is not nullable.
     nullabilitySetter = null; // error
@@ -173,15 +173,15 @@
     core::int i;
     invalid-type v1 = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart:63:31: Error: Required named parameter 'j' must be provided.
     var v1 = nullabilityMethod(null); // ok
-                              ^" in this.{in_::_LegacyMixedIn&Object&Super::nullabilityMethod}{<inapplicable>}.(null){(invalid-type) → invalid-type};
+                              ^" in this.{in_::_LegacyMixedIn&Object&Super::nullabilityMethod}(null);
     i = super.{in_::_LegacyMixedIn&Object&Super::nullabilityMethod}(null);
-    i = this.{in_::LegacyMixedIn::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*};
+    i = this.{in_::LegacyMixedIn::optionalArgumentsMethod}(null, null);
     i = super.{in_::_LegacyMixedIn&Object&Super::optionalArgumentsMethod}(null);
     let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart:71:34: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
     super.optionalArgumentsMethod(null, null); // error
                                  ^" in super.{in_::_LegacyMixedIn&Object&Super::optionalArgumentsMethod}(null, null);
-    core::int v2 = this.{in_::_LegacyMixedIn&Object&Super::nullabilityGetter}{core::int};
+    core::int v2 = this.{in_::_LegacyMixedIn&Object&Super::nullabilityGetter};
     i = super.{in_::_LegacyMixedIn&Object&Super::nullabilityGetter};
     this.{self::ClassMixedIn::nullabilitySetter} = null;
     super.{in_::_LegacyMixedIn&Object&Super::nullabilitySetter} = null;
@@ -203,15 +203,15 @@
     ;
   method test() → dynamic {
     core::int i;
-    this.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityMethod}(null){(core::int?, {j: core::int?}) →* core::int?};
+    this.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityMethod}(null);
     i = super.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityMethod}(null);
-    i = this.{in_::LegacyMixedInQ::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*};
+    i = this.{in_::LegacyMixedInQ::optionalArgumentsMethod}(null, null);
     i = super.{in_::_LegacyMixedInQ&Object&SuperQ::optionalArgumentsMethod}(null);
     let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart:96:34: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
     super.optionalArgumentsMethod(null, null); // error
                                  ^" in super.{in_::_LegacyMixedInQ&Object&SuperQ::optionalArgumentsMethod}(null, null);
-    i = this.{self::ClassMixedInQ::nullabilityGetter}{core::int};
+    i = this.{self::ClassMixedInQ::nullabilityGetter};
     i = super.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityGetter};
     this.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilitySetter} = null;
     super.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilitySetter} = null;
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.expect
index a532ea2..ede2515 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.expect
@@ -84,15 +84,15 @@
     ;
   method test() → dynamic {
     core::int i;
-    core::int? v1 = this.{self::Class::nullabilityMethod}(null){(core::int?, {j: core::int?}) → core::int?};
+    core::int? v1 = this.{self::Class::nullabilityMethod}(null);
     i = super.{in_2::Super::nullabilityMethod}(null);
-    i = this.{in_::LegacyClass::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*};
+    i = this.{in_::LegacyClass::optionalArgumentsMethod}(null, null);
     i = super.{in_2::Super::optionalArgumentsMethod}(null);
     let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart:21:34: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
     super.optionalArgumentsMethod(null, null); // error
                                  ^" in super.{in_2::Super::optionalArgumentsMethod}(null, null);
-    core::int? v2 = this.{self::Class::nullabilityGetter}{core::int?};
+    core::int? v2 = this.{self::Class::nullabilityGetter};
     i = super.{in_2::Super::nullabilityGetter};
     this.{self::Class::nullabilitySetter} = null;
     super.{in_2::Super::nullabilitySetter} = null;
@@ -116,15 +116,15 @@
     ;
   method test() → dynamic {
     core::int i;
-    this.{in_::LegacyClassQ::nullabilityMethod}(null){(core::int*, {j: core::int*}) →* core::int*};
+    this.{in_::LegacyClassQ::nullabilityMethod}(null);
     i = super.{in_2::SuperQ::nullabilityMethod}(null);
-    i = this.{in_::LegacyClassQ::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*};
+    i = this.{in_::LegacyClassQ::optionalArgumentsMethod}(null, null);
     i = super.{in_2::SuperQ::optionalArgumentsMethod}(null);
     let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart:46:34: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
     super.optionalArgumentsMethod(null, null); // error
                                  ^" in super.{in_2::SuperQ::optionalArgumentsMethod}(null, null);
-    i = this.{self::ClassQ::nullabilityGetter}{core::int};
+    i = this.{self::ClassQ::nullabilityGetter};
     i = super.{in_2::SuperQ::nullabilityGetter};
     this.{self::ClassQ::nullabilitySetter} = let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart:52:25: Error: The value 'null' can't be assigned to a variable of type 'int' because 'int' is not nullable.
     nullabilitySetter = null; // error
@@ -149,15 +149,15 @@
     ;
   method test() → dynamic {
     core::int i;
-    core::int? v1 = this.{self::ClassMixedIn::nullabilityMethod}(null){(core::int?, {j: core::int?}) → core::int?};
+    core::int? v1 = this.{self::ClassMixedIn::nullabilityMethod}(null);
     i = super.{in_::_LegacyMixedIn&Object&Super::nullabilityMethod}(null);
-    i = this.{in_::LegacyMixedIn::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*};
+    i = this.{in_::LegacyMixedIn::optionalArgumentsMethod}(null, null);
     i = super.{in_::_LegacyMixedIn&Object&Super::optionalArgumentsMethod}(null);
     let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart:71:34: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
     super.optionalArgumentsMethod(null, null); // error
                                  ^" in super.{in_::_LegacyMixedIn&Object&Super::optionalArgumentsMethod}(null, null);
-    core::int? v2 = this.{self::ClassMixedIn::nullabilityGetter}{core::int?};
+    core::int? v2 = this.{self::ClassMixedIn::nullabilityGetter};
     i = super.{in_::_LegacyMixedIn&Object&Super::nullabilityGetter};
     this.{self::ClassMixedIn::nullabilitySetter} = null;
     super.{in_::_LegacyMixedIn&Object&Super::nullabilitySetter} = null;
@@ -181,15 +181,15 @@
     ;
   method test() → dynamic {
     core::int i;
-    this.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityMethod}(null){(core::int*, {j: core::int*}) →* core::int*};
+    this.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityMethod}(null);
     i = super.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityMethod}(null);
-    i = this.{in_::LegacyMixedInQ::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*};
+    i = this.{in_::LegacyMixedInQ::optionalArgumentsMethod}(null, null);
     i = super.{in_::_LegacyMixedInQ&Object&SuperQ::optionalArgumentsMethod}(null);
     let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart:96:34: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
     super.optionalArgumentsMethod(null, null); // error
                                  ^" in super.{in_::_LegacyMixedInQ&Object&SuperQ::optionalArgumentsMethod}(null, null);
-    i = this.{self::ClassMixedInQ::nullabilityGetter}{core::int};
+    i = this.{self::ClassMixedInQ::nullabilityGetter};
     i = super.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityGetter};
     this.{self::ClassMixedInQ::nullabilitySetter} = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart:102:25: Error: The value 'null' can't be assigned to a variable of type 'int' because 'int' is not nullable.
     nullabilitySetter = null; // error
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart.weak.expect
index 3e98cba..9fdbb48 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart.weak.expect
@@ -92,15 +92,15 @@
     ;
   method test() → dynamic {
     core::int i;
-    core::int? v1 = this.{self::Class::nullabilityMethod}(null){(core::int?) → core::int?};
+    core::int? v1 = this.{self::Class::nullabilityMethod}(null);
     i = super.{in_2::Super::nullabilityMethod}(null);
-    i = this.{in_::LegacyClass::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*};
+    i = this.{in_::LegacyClass::optionalArgumentsMethod}(null, null);
     i = super.{in_2::Super::optionalArgumentsMethod}(null);
     let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart:21:34: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
     super.optionalArgumentsMethod(null, null); // error
                                  ^" in super.{in_2::Super::optionalArgumentsMethod}(null, null);
-    core::int? v2 = this.{self::Class::nullabilityGetter}{core::int?};
+    core::int? v2 = this.{self::Class::nullabilityGetter};
     i = super.{in_2::Super::nullabilityGetter};
     this.{self::Class::nullabilitySetter} = null;
     super.{in_2::Super::nullabilitySetter} = null;
@@ -126,15 +126,15 @@
     core::int i;
     this.{self::ClassQ::nullabilityMethod}(let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart:38:23: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable.
     nullabilityMethod(null); // error
-                      ^" in null as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::int};
+                      ^" in null as{TypeError,ForNonNullableByDefault} core::int);
     i = super.{in_2::SuperQ::nullabilityMethod}(null);
-    i = this.{in_::LegacyClassQ::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*};
+    i = this.{in_::LegacyClassQ::optionalArgumentsMethod}(null, null);
     i = super.{in_2::SuperQ::optionalArgumentsMethod}(null);
     let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart:46:34: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
     super.optionalArgumentsMethod(null, null); // error
                                  ^" in super.{in_2::SuperQ::optionalArgumentsMethod}(null, null);
-    i = this.{self::ClassQ::nullabilityGetter}{core::int};
+    i = this.{self::ClassQ::nullabilityGetter};
     i = super.{in_2::SuperQ::nullabilityGetter};
     this.{self::ClassQ::nullabilitySetter} = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart:52:25: Error: The value 'null' can't be assigned to a variable of type 'int' because 'int' is not nullable.
     nullabilitySetter = null; // error
@@ -160,15 +160,15 @@
     ;
   method test() → dynamic {
     core::int i;
-    core::int? v1 = this.{self::ClassMixedIn::nullabilityMethod}(null){(core::int?) → core::int?};
+    core::int? v1 = this.{self::ClassMixedIn::nullabilityMethod}(null);
     i = super.{in_::_LegacyMixedIn&Object&Super::nullabilityMethod}(null);
-    i = this.{in_::LegacyMixedIn::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*};
+    i = this.{in_::LegacyMixedIn::optionalArgumentsMethod}(null, null);
     i = super.{in_::_LegacyMixedIn&Object&Super::optionalArgumentsMethod}(null);
     let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart:71:34: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
     super.optionalArgumentsMethod(null, null); // error
                                  ^" in super.{in_::_LegacyMixedIn&Object&Super::optionalArgumentsMethod}(null, null);
-    core::int? v2 = this.{self::ClassMixedIn::nullabilityGetter}{core::int?};
+    core::int? v2 = this.{self::ClassMixedIn::nullabilityGetter};
     i = super.{in_::_LegacyMixedIn&Object&Super::nullabilityGetter};
     this.{self::ClassMixedIn::nullabilitySetter} = null;
     super.{in_::_LegacyMixedIn&Object&Super::nullabilitySetter} = null;
@@ -194,15 +194,15 @@
     core::int i;
     this.{self::ClassMixedInQ::nullabilityMethod}(let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart:88:23: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable.
     nullabilityMethod(null); // error
-                      ^" in null as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::int};
+                      ^" in null as{TypeError,ForNonNullableByDefault} core::int);
     i = super.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityMethod}(null);
-    i = this.{in_::LegacyMixedInQ::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*};
+    i = this.{in_::LegacyMixedInQ::optionalArgumentsMethod}(null, null);
     i = super.{in_::_LegacyMixedInQ&Object&SuperQ::optionalArgumentsMethod}(null);
     let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart:96:34: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
     super.optionalArgumentsMethod(null, null); // error
                                  ^" in super.{in_::_LegacyMixedInQ&Object&SuperQ::optionalArgumentsMethod}(null, null);
-    i = this.{self::ClassMixedInQ::nullabilityGetter}{core::int};
+    i = this.{self::ClassMixedInQ::nullabilityGetter};
     i = super.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityGetter};
     this.{self::ClassMixedInQ::nullabilitySetter} = let final Never #t8 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart:102:25: Error: The value 'null' can't be assigned to a variable of type 'int' because 'int' is not nullable.
     nullabilitySetter = null; // error
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.expect
index 1604316..4124088 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.expect
@@ -204,9 +204,9 @@
     return super.{core::Object::noSuchMethod}(invocation);
   }
   no-such-method-forwarder method mixedInMethod() → core::int
-    return this.{self::ClassImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::ClassImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method extendedMethod() → core::int
-    return this.{self::ClassImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::ClassImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
 }
 abstract class _ClassDeclaresExtends&Super&Mixin = self::Super with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_ClassDeclaresExtends&Super&Mixin
@@ -249,9 +249,9 @@
     return super.{core::Object::noSuchMethod}(invocation);
   }
   no-such-method-forwarder method extendedMethod() → core::int
-    return this.{self::ClassDeclaresImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::ClassDeclaresImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method mixedInMethod() → core::int
-    return this.{self::ClassDeclaresImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::ClassDeclaresImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.outline.expect
index a127912..6a58520 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.outline.expect
@@ -194,9 +194,9 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   no-such-method-forwarder method mixedInMethod() → core::int
-    return this.{self::ClassImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#mixedInMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::ClassImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#mixedInMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method extendedMethod() → core::int
-    return this.{self::ClassImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#extendedMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::ClassImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#extendedMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
 }
 abstract class _ClassDeclaresExtends&Super&Mixin = self::Super with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_ClassDeclaresExtends&Super&Mixin
@@ -234,9 +234,9 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   no-such-method-forwarder method extendedMethod() → core::int
-    return this.{self::ClassDeclaresImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#extendedMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::ClassDeclaresImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#extendedMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method mixedInMethod() → core::int
-    return this.{self::ClassDeclaresImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#mixedInMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::ClassDeclaresImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#mixedInMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.transformed.expect
index b9dfa96..b0ede7c 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.transformed.expect
@@ -204,9 +204,9 @@
     return super.{core::Object::noSuchMethod}(invocation);
   }
   no-such-method-forwarder method mixedInMethod() → core::int
-    return this.{self::ClassImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::ClassImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method extendedMethod() → core::int
-    return this.{self::ClassImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::ClassImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
 }
 abstract class _ClassDeclaresExtends&Super&Mixin extends self::Super implements self::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_ClassDeclaresExtends&Super&Mixin
@@ -249,9 +249,9 @@
     return super.{core::Object::noSuchMethod}(invocation);
   }
   no-such-method-forwarder method extendedMethod() → core::int
-    return this.{self::ClassDeclaresImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::ClassDeclaresImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method mixedInMethod() → core::int
-    return this.{self::ClassDeclaresImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::ClassDeclaresImplementsWithNoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.expect
index 73a2b06..a5e1b1f 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.expect
@@ -61,7 +61,7 @@
 }
 static method main() → dynamic {
   self::Class1* c = new self::Class1::•();
-  c.{self::Super::getter}{opt::B*}.{opt::B::property}{core::int*};
+  c.{self::Super::getter}.{opt::B::property};
   c.{self::Super::setter} = new opt::B::•();
   opt::testInterface2(new opt3::Mixin2::•());
 }
@@ -132,7 +132,7 @@
 }
 static method testInterface2(opt::Interface2 c) → dynamic {
   try {
-    c.{opt::Interface2::_privateGetter}{opt::A};
+    c.{opt::Interface2::_privateGetter};
     throw "Expected NoSuchMethodError";
   }
   on core::NoSuchMethodError catch(no-exception-var) {
@@ -163,9 +163,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get /* from org-dartlang-testcase:///opt_in_lib1.dart */ _privateGetter() → opt::A
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} opt::A;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic,ForNonNullableByDefault} opt::A;
   no-such-method-forwarder set /* from org-dartlang-testcase:///opt_in_lib1.dart */ _privateSetter(opt::C c) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(c)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(c)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.outline.expect
index 1ec283b..e327d8e 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.outline.expect
@@ -112,9 +112,9 @@
   synthetic constructor •() → opt3::Mixin2
     ;
   no-such-method-forwarder get /* from org-dartlang-testcase:///opt_in_lib1.dart */ _privateGetter() → opt::A
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} opt::A;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic,ForNonNullableByDefault} opt::A;
   no-such-method-forwarder set /* from org-dartlang-testcase:///opt_in_lib1.dart */ _privateSetter(opt::C c) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(c)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(c)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.transformed.expect
index f9dd954..007ecd8 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.transformed.expect
@@ -61,7 +61,7 @@
 }
 static method main() → dynamic {
   self::Class1* c = new self::Class1::•();
-  c.{self::Super::getter}{opt::B*}.{opt::B::property}{core::int*};
+  c.{self::Super::getter}.{opt::B::property};
   c.{self::Super::setter} = new opt::B::•();
   opt::testInterface2(new opt3::Mixin2::•());
 }
@@ -132,7 +132,7 @@
 }
 static method testInterface2(opt::Interface2 c) → dynamic {
   try {
-    c.{opt::Interface2::_privateGetter}{opt::A};
+    c.{opt::Interface2::_privateGetter};
     throw "Expected NoSuchMethodError";
   }
   on core::NoSuchMethodError catch(no-exception-var) {
@@ -163,9 +163,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get /* from org-dartlang-testcase:///opt_in_lib1.dart */ _privateGetter() → opt::A
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} opt::A;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic,ForNonNullableByDefault} opt::A;
   no-such-method-forwarder set /* from org-dartlang-testcase:///opt_in_lib1.dart */ _privateSetter(opt::C c) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(c)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(c)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.expect
index 7914b57..0f94026 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.expect
@@ -199,34 +199,34 @@
     : super self::SuperConcrete::•()
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 class FromSuperConcreteAbstract extends self::SuperConcrete implements self::SuperAbstract, self::Interface {
   synthetic constructor •() → self::FromSuperConcreteAbstract
     : super self::SuperConcrete::•()
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 class MixinAbstract extends core::Object {
   synthetic constructor •() → self::MixinAbstract
@@ -260,17 +260,17 @@
     : super self::_FromMixinConcrete&Object&MixinConcrete::•()
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 abstract class _FromMixinConcreteAbstract&Object&MixinConcrete = core::Object with self::MixinConcrete /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_FromMixinConcreteAbstract&Object&MixinConcrete
@@ -290,17 +290,17 @@
     : super self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::•()
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 class InterfaceAbstract extends core::Object {
   synthetic constructor •() → self::InterfaceAbstract
@@ -342,17 +342,17 @@
     return null;
   }
   no-such-method-forwarder get getter() → core::int
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.outline.expect
index 87ecfb3..53a32b0 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.outline.expect
@@ -184,33 +184,33 @@
   synthetic constructor •() → self::FromSuperConcrete
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#getter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#getter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#finalField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#finalField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#setter=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#setter=, 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 field(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
 class FromSuperConcreteAbstract extends self::SuperConcrete implements self::SuperAbstract, self::Interface {
   synthetic constructor •() → self::FromSuperConcreteAbstract
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#getter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#getter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#finalField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#finalField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#setter=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#setter=, 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 field(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
 class MixinAbstract extends core::Object {
   synthetic constructor •() → self::MixinAbstract
@@ -239,17 +239,17 @@
   synthetic constructor •() → self::FromMixinConcrete
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#getter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#getter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#finalField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#finalField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#setter=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#setter=, 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 field(core::int value) → void
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
 abstract class _FromMixinConcreteAbstract&Object&MixinConcrete = core::Object with self::MixinConcrete /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_FromMixinConcreteAbstract&Object&MixinConcrete
@@ -268,17 +268,17 @@
   synthetic constructor •() → self::FromMixinConcreteAbstract
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#getter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#getter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#field, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#field, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#finalField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#finalField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#setter=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#setter=, 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 field(core::int value) → void
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#field=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#field=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
 class InterfaceAbstract extends core::Object {
   synthetic constructor •() → self::InterfaceAbstract
@@ -312,17 +312,17 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#getter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#getter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#finalField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#finalField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#setter=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#setter=, 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 field(core::int value) → void
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#field=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.transformed.expect
index c4bae58..730cbf4 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.transformed.expect
@@ -199,34 +199,34 @@
     : super self::SuperConcrete::•()
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 class FromSuperConcreteAbstract extends self::SuperConcrete implements self::SuperAbstract, self::Interface {
   synthetic constructor •() → self::FromSuperConcreteAbstract
     : super self::SuperConcrete::•()
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 class MixinAbstract extends core::Object {
   synthetic constructor •() → self::MixinAbstract
@@ -262,17 +262,17 @@
     : super self::_FromMixinConcrete&Object&MixinConcrete::•()
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 abstract class _FromMixinConcreteAbstract&Object&MixinConcrete extends core::Object implements self::MixinConcrete /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_FromMixinConcreteAbstract&Object&MixinConcrete
@@ -294,17 +294,17 @@
     : super self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::•()
     ;
   no-such-method-forwarder get getter() → core::int
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 class InterfaceAbstract extends core::Object {
   synthetic constructor •() → self::InterfaceAbstract
@@ -346,17 +346,17 @@
     return null;
   }
   no-such-method-forwarder get getter() → core::int
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder get field() → core::int
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder method method() → void
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
   no-such-method-forwarder set setter(core::int value) → void
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.expect
index 7698d5d..c66b3a9 100644
--- a/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.expect
@@ -11,7 +11,7 @@
     : super core::Object::•()
     ;
   method baz(inf::B* b) → dynamic {
-    b.{inf::B::foo}(b.{inf::B::bar}<core::List<core::int*>*>(){() →* core::List<core::int*>*}){(core::List<core::int*>*) →* dynamic};
+    b.{inf::B::foo}(b.{inf::B::bar}<core::List<core::int*>*>());
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -37,83 +37,83 @@
   core::List<Null>* local1i = <Null>[null];
   core::Set<inf::C<dynamic>*>* local2a = block {
     final core::Set<inf::C<dynamic>*>* #t1 = col::LinkedHashSet::•<inf::C<dynamic>*>();
-    #t1.{core::Set::add}(inf::field1){(inf::C<dynamic>*) →* core::bool*};
-    #t1.{core::Set::add}(null){(inf::C<dynamic>*) →* core::bool*};
+    #t1.{core::Set::add}{Invariant}(inf::field1);
+    #t1.{core::Set::add}{Invariant}(null);
   } =>#t1;
   core::Set<inf::C<dynamic>*>* local2b = block {
     final core::Set<inf::C<dynamic>*>* #t2 = col::LinkedHashSet::•<inf::C<dynamic>*>();
-    #t2.{core::Set::add}(inf::field2){(inf::C<dynamic>*) →* core::bool*};
-    #t2.{core::Set::add}(null){(inf::C<dynamic>*) →* core::bool*};
+    #t2.{core::Set::add}{Invariant}(inf::field2);
+    #t2.{core::Set::add}{Invariant}(null);
   } =>#t2;
   core::Set<inf::C<core::int*>*>* local2c = block {
     final core::Set<inf::C<core::int*>*>* #t3 = col::LinkedHashSet::•<inf::C<core::int*>*>();
-    #t3.{core::Set::add}(inf::field3){(inf::C<core::int*>*) →* core::bool*};
-    #t3.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
+    #t3.{core::Set::add}{Invariant}(inf::field3);
+    #t3.{core::Set::add}{Invariant}(null);
   } =>#t3;
   core::Set<inf::C<core::int*>*>* local2d = block {
     final core::Set<inf::C<core::int*>*>* #t4 = col::LinkedHashSet::•<inf::C<core::int*>*>();
-    #t4.{core::Set::add}(inf::field4){(inf::C<core::int*>*) →* core::bool*};
-    #t4.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
+    #t4.{core::Set::add}{Invariant}(inf::field4);
+    #t4.{core::Set::add}{Invariant}(null);
   } =>#t4;
   core::Set<inf::C<core::int*>*>* local2e = block {
     final core::Set<inf::C<core::int*>*>* #t5 = col::LinkedHashSet::•<inf::C<core::int*>*>();
-    #t5.{core::Set::add}(inf::field5){(inf::C<core::int*>*) →* core::bool*};
-    #t5.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
+    #t5.{core::Set::add}{Invariant}(inf::field5);
+    #t5.{core::Set::add}{Invariant}(null);
   } =>#t5;
   core::Set<inf::C<core::int*>*>* local2f = block {
     final core::Set<inf::C<core::int*>*>* #t6 = col::LinkedHashSet::•<inf::C<core::int*>*>();
-    #t6.{core::Set::add}(inf::field6){(inf::C<core::int*>*) →* core::bool*};
-    #t6.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
+    #t6.{core::Set::add}{Invariant}(inf::field6);
+    #t6.{core::Set::add}{Invariant}(null);
   } =>#t6;
   core::Set<core::int*>* local2g = block {
     final core::Set<core::int*>* #t7 = col::LinkedHashSet::•<core::int*>();
-    #t7.{core::Set::add}(inf::field7){(core::int*) →* core::bool*};
-    #t7.{core::Set::add}(null){(core::int*) →* core::bool*};
+    #t7.{core::Set::add}{Invariant}(inf::field7);
+    #t7.{core::Set::add}{Invariant}(null);
   } =>#t7;
   core::Set<core::int*>* local2h = block {
     final core::Set<core::int*>* #t8 = col::LinkedHashSet::•<core::int*>();
-    #t8.{core::Set::add}(inf::field8){(core::int*) →* core::bool*};
-    #t8.{core::Set::add}(null){(core::int*) →* core::bool*};
+    #t8.{core::Set::add}{Invariant}(inf::field8);
+    #t8.{core::Set::add}{Invariant}(null);
   } =>#t8;
   core::Set<inf::C<dynamic>*>* local3a = block {
     final core::Set<inf::C<dynamic>*>* #t9 = col::LinkedHashSet::•<inf::C<dynamic>*>();
-    #t9.{core::Set::add}(null){(inf::C<dynamic>*) →* core::bool*};
-    #t9.{core::Set::add}(inf::field1){(inf::C<dynamic>*) →* core::bool*};
+    #t9.{core::Set::add}{Invariant}(null);
+    #t9.{core::Set::add}{Invariant}(inf::field1);
   } =>#t9;
   core::Set<inf::C<dynamic>*>* local3b = block {
     final core::Set<inf::C<dynamic>*>* #t10 = col::LinkedHashSet::•<inf::C<dynamic>*>();
-    #t10.{core::Set::add}(null){(inf::C<dynamic>*) →* core::bool*};
-    #t10.{core::Set::add}(inf::field2){(inf::C<dynamic>*) →* core::bool*};
+    #t10.{core::Set::add}{Invariant}(null);
+    #t10.{core::Set::add}{Invariant}(inf::field2);
   } =>#t10;
   core::Set<inf::C<core::int*>*>* local3c = block {
     final core::Set<inf::C<core::int*>*>* #t11 = col::LinkedHashSet::•<inf::C<core::int*>*>();
-    #t11.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
-    #t11.{core::Set::add}(inf::field3){(inf::C<core::int*>*) →* core::bool*};
+    #t11.{core::Set::add}{Invariant}(null);
+    #t11.{core::Set::add}{Invariant}(inf::field3);
   } =>#t11;
   core::Set<inf::C<core::int*>*>* local3d = block {
     final core::Set<inf::C<core::int*>*>* #t12 = col::LinkedHashSet::•<inf::C<core::int*>*>();
-    #t12.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
-    #t12.{core::Set::add}(inf::field4){(inf::C<core::int*>*) →* core::bool*};
+    #t12.{core::Set::add}{Invariant}(null);
+    #t12.{core::Set::add}{Invariant}(inf::field4);
   } =>#t12;
   core::Set<inf::C<core::int*>*>* local3e = block {
     final core::Set<inf::C<core::int*>*>* #t13 = col::LinkedHashSet::•<inf::C<core::int*>*>();
-    #t13.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
-    #t13.{core::Set::add}(inf::field5){(inf::C<core::int*>*) →* core::bool*};
+    #t13.{core::Set::add}{Invariant}(null);
+    #t13.{core::Set::add}{Invariant}(inf::field5);
   } =>#t13;
   core::Set<inf::C<core::int*>*>* local3f = block {
     final core::Set<inf::C<core::int*>*>* #t14 = col::LinkedHashSet::•<inf::C<core::int*>*>();
-    #t14.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
-    #t14.{core::Set::add}(inf::field6){(inf::C<core::int*>*) →* core::bool*};
+    #t14.{core::Set::add}{Invariant}(null);
+    #t14.{core::Set::add}{Invariant}(inf::field6);
   } =>#t14;
   core::Set<core::int*>* local3g = block {
     final core::Set<core::int*>* #t15 = col::LinkedHashSet::•<core::int*>();
-    #t15.{core::Set::add}(null){(core::int*) →* core::bool*};
-    #t15.{core::Set::add}(inf::field7){(core::int*) →* core::bool*};
+    #t15.{core::Set::add}{Invariant}(null);
+    #t15.{core::Set::add}{Invariant}(inf::field7);
   } =>#t15;
   core::Set<core::int*>* local3h = block {
     final core::Set<core::int*>* #t16 = col::LinkedHashSet::•<core::int*>();
-    #t16.{core::Set::add}(null){(core::int*) →* core::bool*};
-    #t16.{core::Set::add}(inf::field8){(core::int*) →* core::bool*};
+    #t16.{core::Set::add}{Invariant}(null);
+    #t16.{core::Set::add}{Invariant}(inf::field8);
   } =>#t16;
 }
 
@@ -167,82 +167,82 @@
   core::List<Null> local1i = <Null>[null];
   core::Set<inf::C<dynamic>?> local2a = block {
     final core::Set<inf::C<dynamic>?> #t17 = col::LinkedHashSet::•<inf::C<dynamic>?>();
-    #t17.{core::Set::add}(inf::field1){(inf::C<dynamic>?) → core::bool};
-    #t17.{core::Set::add}(null){(inf::C<dynamic>?) → core::bool};
+    #t17.{core::Set::add}{Invariant}(inf::field1);
+    #t17.{core::Set::add}{Invariant}(null);
   } =>#t17;
   core::Set<inf::C<dynamic>?> local2b = block {
     final core::Set<inf::C<dynamic>?> #t18 = col::LinkedHashSet::•<inf::C<dynamic>?>();
-    #t18.{core::Set::add}(inf::field2){(inf::C<dynamic>?) → core::bool};
-    #t18.{core::Set::add}(null){(inf::C<dynamic>?) → core::bool};
+    #t18.{core::Set::add}{Invariant}(inf::field2);
+    #t18.{core::Set::add}{Invariant}(null);
   } =>#t18;
   core::Set<inf::C<core::int>?> local2c = block {
     final core::Set<inf::C<core::int>?> #t19 = col::LinkedHashSet::•<inf::C<core::int>?>();
-    #t19.{core::Set::add}(inf::field3){(inf::C<core::int>?) → core::bool};
-    #t19.{core::Set::add}(null){(inf::C<core::int>?) → core::bool};
+    #t19.{core::Set::add}{Invariant}(inf::field3);
+    #t19.{core::Set::add}{Invariant}(null);
   } =>#t19;
   core::Set<inf::C<core::int>?> local2d = block {
     final core::Set<inf::C<core::int>?> #t20 = col::LinkedHashSet::•<inf::C<core::int>?>();
-    #t20.{core::Set::add}(inf::field4){(inf::C<core::int>?) → core::bool};
-    #t20.{core::Set::add}(null){(inf::C<core::int>?) → core::bool};
+    #t20.{core::Set::add}{Invariant}(inf::field4);
+    #t20.{core::Set::add}{Invariant}(null);
   } =>#t20;
   core::Set<inf::C<core::int?>?> local2e = block {
     final core::Set<inf::C<core::int?>?> #t21 = col::LinkedHashSet::•<inf::C<core::int?>?>();
-    #t21.{core::Set::add}(inf::field5){(inf::C<core::int?>?) → core::bool};
-    #t21.{core::Set::add}(null){(inf::C<core::int?>?) → core::bool};
+    #t21.{core::Set::add}{Invariant}(inf::field5);
+    #t21.{core::Set::add}{Invariant}(null);
   } =>#t21;
   core::Set<inf::C<core::int?>?> local2f = block {
     final core::Set<inf::C<core::int?>?> #t22 = col::LinkedHashSet::•<inf::C<core::int?>?>();
-    #t22.{core::Set::add}(inf::field6){(inf::C<core::int?>?) → core::bool};
-    #t22.{core::Set::add}(null){(inf::C<core::int?>?) → core::bool};
+    #t22.{core::Set::add}{Invariant}(inf::field6);
+    #t22.{core::Set::add}{Invariant}(null);
   } =>#t22;
   core::Set<core::int?> local2g = block {
     final core::Set<core::int?> #t23 = col::LinkedHashSet::•<core::int?>();
-    #t23.{core::Set::add}(inf::field7){(core::int?) → core::bool};
-    #t23.{core::Set::add}(null){(core::int?) → core::bool};
+    #t23.{core::Set::add}{Invariant}(inf::field7);
+    #t23.{core::Set::add}{Invariant}(null);
   } =>#t23;
   core::Set<core::int?> local2h = block {
     final core::Set<core::int?> #t24 = col::LinkedHashSet::•<core::int?>();
-    #t24.{core::Set::add}(inf::field8){(core::int?) → core::bool};
-    #t24.{core::Set::add}(null){(core::int?) → core::bool};
+    #t24.{core::Set::add}{Invariant}(inf::field8);
+    #t24.{core::Set::add}{Invariant}(null);
   } =>#t24;
   core::Set<inf::C<dynamic>?> local3a = block {
     final core::Set<inf::C<dynamic>?> #t25 = col::LinkedHashSet::•<inf::C<dynamic>?>();
-    #t25.{core::Set::add}(null){(inf::C<dynamic>?) → core::bool};
-    #t25.{core::Set::add}(inf::field1){(inf::C<dynamic>?) → core::bool};
+    #t25.{core::Set::add}{Invariant}(null);
+    #t25.{core::Set::add}{Invariant}(inf::field1);
   } =>#t25;
   core::Set<inf::C<dynamic>?> local3b = block {
     final core::Set<inf::C<dynamic>?> #t26 = col::LinkedHashSet::•<inf::C<dynamic>?>();
-    #t26.{core::Set::add}(null){(inf::C<dynamic>?) → core::bool};
-    #t26.{core::Set::add}(inf::field2){(inf::C<dynamic>?) → core::bool};
+    #t26.{core::Set::add}{Invariant}(null);
+    #t26.{core::Set::add}{Invariant}(inf::field2);
   } =>#t26;
   core::Set<inf::C<core::int>?> local3c = block {
     final core::Set<inf::C<core::int>?> #t27 = col::LinkedHashSet::•<inf::C<core::int>?>();
-    #t27.{core::Set::add}(null){(inf::C<core::int>?) → core::bool};
-    #t27.{core::Set::add}(inf::field3){(inf::C<core::int>?) → core::bool};
+    #t27.{core::Set::add}{Invariant}(null);
+    #t27.{core::Set::add}{Invariant}(inf::field3);
   } =>#t27;
   core::Set<inf::C<core::int>?> local3d = block {
     final core::Set<inf::C<core::int>?> #t28 = col::LinkedHashSet::•<inf::C<core::int>?>();
-    #t28.{core::Set::add}(null){(inf::C<core::int>?) → core::bool};
-    #t28.{core::Set::add}(inf::field4){(inf::C<core::int>?) → core::bool};
+    #t28.{core::Set::add}{Invariant}(null);
+    #t28.{core::Set::add}{Invariant}(inf::field4);
   } =>#t28;
   core::Set<inf::C<core::int?>?> local3e = block {
     final core::Set<inf::C<core::int?>?> #t29 = col::LinkedHashSet::•<inf::C<core::int?>?>();
-    #t29.{core::Set::add}(null){(inf::C<core::int?>?) → core::bool};
-    #t29.{core::Set::add}(inf::field5){(inf::C<core::int?>?) → core::bool};
+    #t29.{core::Set::add}{Invariant}(null);
+    #t29.{core::Set::add}{Invariant}(inf::field5);
   } =>#t29;
   core::Set<inf::C<core::int?>?> local3f = block {
     final core::Set<inf::C<core::int?>?> #t30 = col::LinkedHashSet::•<inf::C<core::int?>?>();
-    #t30.{core::Set::add}(null){(inf::C<core::int?>?) → core::bool};
-    #t30.{core::Set::add}(inf::field6){(inf::C<core::int?>?) → core::bool};
+    #t30.{core::Set::add}{Invariant}(null);
+    #t30.{core::Set::add}{Invariant}(inf::field6);
   } =>#t30;
   core::Set<core::int?> local3g = block {
     final core::Set<core::int?> #t31 = col::LinkedHashSet::•<core::int?>();
-    #t31.{core::Set::add}(null){(core::int?) → core::bool};
-    #t31.{core::Set::add}(inf::field7){(core::int?) → core::bool};
+    #t31.{core::Set::add}{Invariant}(null);
+    #t31.{core::Set::add}{Invariant}(inf::field7);
   } =>#t31;
   core::Set<core::int?> local3h = block {
     final core::Set<core::int?> #t32 = col::LinkedHashSet::•<core::int?>();
-    #t32.{core::Set::add}(null){(core::int?) → core::bool};
-    #t32.{core::Set::add}(inf::field8){(core::int?) → core::bool};
+    #t32.{core::Set::add}{Invariant}(null);
+    #t32.{core::Set::add}{Invariant}(inf::field8);
   } =>#t32;
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.transformed.expect
index 3f7b98d..97b6ea6 100644
--- a/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.transformed.expect
@@ -11,7 +11,7 @@
     : super core::Object::•()
     ;
   method baz(inf::B* b) → dynamic {
-    b.{inf::B::foo}(b.{inf::B::bar}<core::List<core::int*>*>(){() →* core::List<core::int*>*}){(core::List<core::int*>*) →* dynamic};
+    b.{inf::B::foo}(b.{inf::B::bar}<core::List<core::int*>*>());
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -37,83 +37,83 @@
   core::List<Null>* local1i = core::_GrowableList::_literal1<Null>(null);
   core::Set<inf::C<dynamic>*>* local2a = block {
     final core::Set<inf::C<dynamic>*>* #t1 = new col::_CompactLinkedHashSet::•<inf::C<dynamic>*>();
-    #t1.{core::Set::add}(inf::field1){(inf::C<dynamic>*) →* core::bool*};
-    #t1.{core::Set::add}(null){(inf::C<dynamic>*) →* core::bool*};
+    #t1.{core::Set::add}{Invariant}(inf::field1);
+    #t1.{core::Set::add}{Invariant}(null);
   } =>#t1;
   core::Set<inf::C<dynamic>*>* local2b = block {
     final core::Set<inf::C<dynamic>*>* #t2 = new col::_CompactLinkedHashSet::•<inf::C<dynamic>*>();
-    #t2.{core::Set::add}(inf::field2){(inf::C<dynamic>*) →* core::bool*};
-    #t2.{core::Set::add}(null){(inf::C<dynamic>*) →* core::bool*};
+    #t2.{core::Set::add}{Invariant}(inf::field2);
+    #t2.{core::Set::add}{Invariant}(null);
   } =>#t2;
   core::Set<inf::C<core::int*>*>* local2c = block {
     final core::Set<inf::C<core::int*>*>* #t3 = new col::_CompactLinkedHashSet::•<inf::C<core::int*>*>();
-    #t3.{core::Set::add}(inf::field3){(inf::C<core::int*>*) →* core::bool*};
-    #t3.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
+    #t3.{core::Set::add}{Invariant}(inf::field3);
+    #t3.{core::Set::add}{Invariant}(null);
   } =>#t3;
   core::Set<inf::C<core::int*>*>* local2d = block {
     final core::Set<inf::C<core::int*>*>* #t4 = new col::_CompactLinkedHashSet::•<inf::C<core::int*>*>();
-    #t4.{core::Set::add}(inf::field4){(inf::C<core::int*>*) →* core::bool*};
-    #t4.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
+    #t4.{core::Set::add}{Invariant}(inf::field4);
+    #t4.{core::Set::add}{Invariant}(null);
   } =>#t4;
   core::Set<inf::C<core::int*>*>* local2e = block {
     final core::Set<inf::C<core::int*>*>* #t5 = new col::_CompactLinkedHashSet::•<inf::C<core::int*>*>();
-    #t5.{core::Set::add}(inf::field5){(inf::C<core::int*>*) →* core::bool*};
-    #t5.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
+    #t5.{core::Set::add}{Invariant}(inf::field5);
+    #t5.{core::Set::add}{Invariant}(null);
   } =>#t5;
   core::Set<inf::C<core::int*>*>* local2f = block {
     final core::Set<inf::C<core::int*>*>* #t6 = new col::_CompactLinkedHashSet::•<inf::C<core::int*>*>();
-    #t6.{core::Set::add}(inf::field6){(inf::C<core::int*>*) →* core::bool*};
-    #t6.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
+    #t6.{core::Set::add}{Invariant}(inf::field6);
+    #t6.{core::Set::add}{Invariant}(null);
   } =>#t6;
   core::Set<core::int*>* local2g = block {
     final core::Set<core::int*>* #t7 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t7.{core::Set::add}(inf::field7){(core::int*) →* core::bool*};
-    #t7.{core::Set::add}(null){(core::int*) →* core::bool*};
+    #t7.{core::Set::add}{Invariant}(inf::field7);
+    #t7.{core::Set::add}{Invariant}(null);
   } =>#t7;
   core::Set<core::int*>* local2h = block {
     final core::Set<core::int*>* #t8 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t8.{core::Set::add}(inf::field8){(core::int*) →* core::bool*};
-    #t8.{core::Set::add}(null){(core::int*) →* core::bool*};
+    #t8.{core::Set::add}{Invariant}(inf::field8);
+    #t8.{core::Set::add}{Invariant}(null);
   } =>#t8;
   core::Set<inf::C<dynamic>*>* local3a = block {
     final core::Set<inf::C<dynamic>*>* #t9 = new col::_CompactLinkedHashSet::•<inf::C<dynamic>*>();
-    #t9.{core::Set::add}(null){(inf::C<dynamic>*) →* core::bool*};
-    #t9.{core::Set::add}(inf::field1){(inf::C<dynamic>*) →* core::bool*};
+    #t9.{core::Set::add}{Invariant}(null);
+    #t9.{core::Set::add}{Invariant}(inf::field1);
   } =>#t9;
   core::Set<inf::C<dynamic>*>* local3b = block {
     final core::Set<inf::C<dynamic>*>* #t10 = new col::_CompactLinkedHashSet::•<inf::C<dynamic>*>();
-    #t10.{core::Set::add}(null){(inf::C<dynamic>*) →* core::bool*};
-    #t10.{core::Set::add}(inf::field2){(inf::C<dynamic>*) →* core::bool*};
+    #t10.{core::Set::add}{Invariant}(null);
+    #t10.{core::Set::add}{Invariant}(inf::field2);
   } =>#t10;
   core::Set<inf::C<core::int*>*>* local3c = block {
     final core::Set<inf::C<core::int*>*>* #t11 = new col::_CompactLinkedHashSet::•<inf::C<core::int*>*>();
-    #t11.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
-    #t11.{core::Set::add}(inf::field3){(inf::C<core::int*>*) →* core::bool*};
+    #t11.{core::Set::add}{Invariant}(null);
+    #t11.{core::Set::add}{Invariant}(inf::field3);
   } =>#t11;
   core::Set<inf::C<core::int*>*>* local3d = block {
     final core::Set<inf::C<core::int*>*>* #t12 = new col::_CompactLinkedHashSet::•<inf::C<core::int*>*>();
-    #t12.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
-    #t12.{core::Set::add}(inf::field4){(inf::C<core::int*>*) →* core::bool*};
+    #t12.{core::Set::add}{Invariant}(null);
+    #t12.{core::Set::add}{Invariant}(inf::field4);
   } =>#t12;
   core::Set<inf::C<core::int*>*>* local3e = block {
     final core::Set<inf::C<core::int*>*>* #t13 = new col::_CompactLinkedHashSet::•<inf::C<core::int*>*>();
-    #t13.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
-    #t13.{core::Set::add}(inf::field5){(inf::C<core::int*>*) →* core::bool*};
+    #t13.{core::Set::add}{Invariant}(null);
+    #t13.{core::Set::add}{Invariant}(inf::field5);
   } =>#t13;
   core::Set<inf::C<core::int*>*>* local3f = block {
     final core::Set<inf::C<core::int*>*>* #t14 = new col::_CompactLinkedHashSet::•<inf::C<core::int*>*>();
-    #t14.{core::Set::add}(null){(inf::C<core::int*>*) →* core::bool*};
-    #t14.{core::Set::add}(inf::field6){(inf::C<core::int*>*) →* core::bool*};
+    #t14.{core::Set::add}{Invariant}(null);
+    #t14.{core::Set::add}{Invariant}(inf::field6);
   } =>#t14;
   core::Set<core::int*>* local3g = block {
     final core::Set<core::int*>* #t15 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t15.{core::Set::add}(null){(core::int*) →* core::bool*};
-    #t15.{core::Set::add}(inf::field7){(core::int*) →* core::bool*};
+    #t15.{core::Set::add}{Invariant}(null);
+    #t15.{core::Set::add}{Invariant}(inf::field7);
   } =>#t15;
   core::Set<core::int*>* local3h = block {
     final core::Set<core::int*>* #t16 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t16.{core::Set::add}(null){(core::int*) →* core::bool*};
-    #t16.{core::Set::add}(inf::field8){(core::int*) →* core::bool*};
+    #t16.{core::Set::add}{Invariant}(null);
+    #t16.{core::Set::add}{Invariant}(inf::field8);
   } =>#t16;
 }
 
@@ -167,82 +167,82 @@
   core::List<Null> local1i = core::_GrowableList::_literal1<Null>(null);
   core::Set<inf::C<dynamic>?> local2a = block {
     final core::Set<inf::C<dynamic>?> #t17 = new col::_CompactLinkedHashSet::•<inf::C<dynamic>?>();
-    #t17.{core::Set::add}(inf::field1){(inf::C<dynamic>?) → core::bool};
-    #t17.{core::Set::add}(null){(inf::C<dynamic>?) → core::bool};
+    #t17.{core::Set::add}{Invariant}(inf::field1);
+    #t17.{core::Set::add}{Invariant}(null);
   } =>#t17;
   core::Set<inf::C<dynamic>?> local2b = block {
     final core::Set<inf::C<dynamic>?> #t18 = new col::_CompactLinkedHashSet::•<inf::C<dynamic>?>();
-    #t18.{core::Set::add}(inf::field2){(inf::C<dynamic>?) → core::bool};
-    #t18.{core::Set::add}(null){(inf::C<dynamic>?) → core::bool};
+    #t18.{core::Set::add}{Invariant}(inf::field2);
+    #t18.{core::Set::add}{Invariant}(null);
   } =>#t18;
   core::Set<inf::C<core::int>?> local2c = block {
     final core::Set<inf::C<core::int>?> #t19 = new col::_CompactLinkedHashSet::•<inf::C<core::int>?>();
-    #t19.{core::Set::add}(inf::field3){(inf::C<core::int>?) → core::bool};
-    #t19.{core::Set::add}(null){(inf::C<core::int>?) → core::bool};
+    #t19.{core::Set::add}{Invariant}(inf::field3);
+    #t19.{core::Set::add}{Invariant}(null);
   } =>#t19;
   core::Set<inf::C<core::int>?> local2d = block {
     final core::Set<inf::C<core::int>?> #t20 = new col::_CompactLinkedHashSet::•<inf::C<core::int>?>();
-    #t20.{core::Set::add}(inf::field4){(inf::C<core::int>?) → core::bool};
-    #t20.{core::Set::add}(null){(inf::C<core::int>?) → core::bool};
+    #t20.{core::Set::add}{Invariant}(inf::field4);
+    #t20.{core::Set::add}{Invariant}(null);
   } =>#t20;
   core::Set<inf::C<core::int?>?> local2e = block {
     final core::Set<inf::C<core::int?>?> #t21 = new col::_CompactLinkedHashSet::•<inf::C<core::int?>?>();
-    #t21.{core::Set::add}(inf::field5){(inf::C<core::int?>?) → core::bool};
-    #t21.{core::Set::add}(null){(inf::C<core::int?>?) → core::bool};
+    #t21.{core::Set::add}{Invariant}(inf::field5);
+    #t21.{core::Set::add}{Invariant}(null);
   } =>#t21;
   core::Set<inf::C<core::int?>?> local2f = block {
     final core::Set<inf::C<core::int?>?> #t22 = new col::_CompactLinkedHashSet::•<inf::C<core::int?>?>();
-    #t22.{core::Set::add}(inf::field6){(inf::C<core::int?>?) → core::bool};
-    #t22.{core::Set::add}(null){(inf::C<core::int?>?) → core::bool};
+    #t22.{core::Set::add}{Invariant}(inf::field6);
+    #t22.{core::Set::add}{Invariant}(null);
   } =>#t22;
   core::Set<core::int?> local2g = block {
     final core::Set<core::int?> #t23 = new col::_CompactLinkedHashSet::•<core::int?>();
-    #t23.{core::Set::add}(inf::field7){(core::int?) → core::bool};
-    #t23.{core::Set::add}(null){(core::int?) → core::bool};
+    #t23.{core::Set::add}{Invariant}(inf::field7);
+    #t23.{core::Set::add}{Invariant}(null);
   } =>#t23;
   core::Set<core::int?> local2h = block {
     final core::Set<core::int?> #t24 = new col::_CompactLinkedHashSet::•<core::int?>();
-    #t24.{core::Set::add}(inf::field8){(core::int?) → core::bool};
-    #t24.{core::Set::add}(null){(core::int?) → core::bool};
+    #t24.{core::Set::add}{Invariant}(inf::field8);
+    #t24.{core::Set::add}{Invariant}(null);
   } =>#t24;
   core::Set<inf::C<dynamic>?> local3a = block {
     final core::Set<inf::C<dynamic>?> #t25 = new col::_CompactLinkedHashSet::•<inf::C<dynamic>?>();
-    #t25.{core::Set::add}(null){(inf::C<dynamic>?) → core::bool};
-    #t25.{core::Set::add}(inf::field1){(inf::C<dynamic>?) → core::bool};
+    #t25.{core::Set::add}{Invariant}(null);
+    #t25.{core::Set::add}{Invariant}(inf::field1);
   } =>#t25;
   core::Set<inf::C<dynamic>?> local3b = block {
     final core::Set<inf::C<dynamic>?> #t26 = new col::_CompactLinkedHashSet::•<inf::C<dynamic>?>();
-    #t26.{core::Set::add}(null){(inf::C<dynamic>?) → core::bool};
-    #t26.{core::Set::add}(inf::field2){(inf::C<dynamic>?) → core::bool};
+    #t26.{core::Set::add}{Invariant}(null);
+    #t26.{core::Set::add}{Invariant}(inf::field2);
   } =>#t26;
   core::Set<inf::C<core::int>?> local3c = block {
     final core::Set<inf::C<core::int>?> #t27 = new col::_CompactLinkedHashSet::•<inf::C<core::int>?>();
-    #t27.{core::Set::add}(null){(inf::C<core::int>?) → core::bool};
-    #t27.{core::Set::add}(inf::field3){(inf::C<core::int>?) → core::bool};
+    #t27.{core::Set::add}{Invariant}(null);
+    #t27.{core::Set::add}{Invariant}(inf::field3);
   } =>#t27;
   core::Set<inf::C<core::int>?> local3d = block {
     final core::Set<inf::C<core::int>?> #t28 = new col::_CompactLinkedHashSet::•<inf::C<core::int>?>();
-    #t28.{core::Set::add}(null){(inf::C<core::int>?) → core::bool};
-    #t28.{core::Set::add}(inf::field4){(inf::C<core::int>?) → core::bool};
+    #t28.{core::Set::add}{Invariant}(null);
+    #t28.{core::Set::add}{Invariant}(inf::field4);
   } =>#t28;
   core::Set<inf::C<core::int?>?> local3e = block {
     final core::Set<inf::C<core::int?>?> #t29 = new col::_CompactLinkedHashSet::•<inf::C<core::int?>?>();
-    #t29.{core::Set::add}(null){(inf::C<core::int?>?) → core::bool};
-    #t29.{core::Set::add}(inf::field5){(inf::C<core::int?>?) → core::bool};
+    #t29.{core::Set::add}{Invariant}(null);
+    #t29.{core::Set::add}{Invariant}(inf::field5);
   } =>#t29;
   core::Set<inf::C<core::int?>?> local3f = block {
     final core::Set<inf::C<core::int?>?> #t30 = new col::_CompactLinkedHashSet::•<inf::C<core::int?>?>();
-    #t30.{core::Set::add}(null){(inf::C<core::int?>?) → core::bool};
-    #t30.{core::Set::add}(inf::field6){(inf::C<core::int?>?) → core::bool};
+    #t30.{core::Set::add}{Invariant}(null);
+    #t30.{core::Set::add}{Invariant}(inf::field6);
   } =>#t30;
   core::Set<core::int?> local3g = block {
     final core::Set<core::int?> #t31 = new col::_CompactLinkedHashSet::•<core::int?>();
-    #t31.{core::Set::add}(null){(core::int?) → core::bool};
-    #t31.{core::Set::add}(inf::field7){(core::int?) → core::bool};
+    #t31.{core::Set::add}{Invariant}(null);
+    #t31.{core::Set::add}{Invariant}(inf::field7);
   } =>#t31;
   core::Set<core::int?> local3h = block {
     final core::Set<core::int?> #t32 = new col::_CompactLinkedHashSet::•<core::int?>();
-    #t32.{core::Set::add}(null){(core::int?) → core::bool};
-    #t32.{core::Set::add}(inf::field8){(core::int?) → core::bool};
+    #t32.{core::Set::add}{Invariant}(null);
+    #t32.{core::Set::add}{Invariant}(inf::field8);
   } =>#t32;
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.expect
index facc484..615c4e4 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.expect
@@ -25,11 +25,11 @@
 static method main() → void {
   iss::foo(() → Null => null);
   iss::bar = () → iss::Map<core::String*, core::String*>* => null;
-  new self::D::•<core::int*>().{self::D::method}(){() →* iss::C<core::int*>*};
+  new self::D::•<core::int*>().{self::D::method}();
   self::findKey(new iss::Map::•<core::String*, core::String*>("foo", "bar"), "bar");
 }
 static method findKey(iss::Map<core::String*, dynamic>* m, dynamic search) → void {
-  core::print(let final core::MapEntry<core::String*, dynamic>* #t1 = m.{iss::Map::entries}{iss::Iterable<core::MapEntry<core::String*, dynamic>*>*}.{iss::Iterable::singleWhere}((core::MapEntry<core::String*, dynamic>* entry) → core::bool* => entry.{core::MapEntry::value}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} search, orElse: () → Null => null){((core::MapEntry<core::String*, dynamic>*) →* core::bool*, {orElse: () →* core::MapEntry<core::String*, dynamic>*}) →* core::MapEntry<core::String*, dynamic>*} in #t1 == null ?{core::String*} null : #t1.{core::MapEntry::key}{core::String*});
+  core::print(let final core::MapEntry<core::String*, dynamic>* #t1 = m.{iss::Map::entries}.{iss::Iterable::singleWhere}((core::MapEntry<core::String*, dynamic>* entry) → core::bool* => entry.{core::MapEntry::value}.{core::Object::==}(search), orElse: () → Null => null) in #t1.{core::Object::==}(null) ?{core::String*} null : #t1.{core::MapEntry::key});
 }
 
 library /*isNonNullableByDefault*/;
@@ -39,7 +39,7 @@
 class C<X extends core::Object? = dynamic> extends core::Object {
   constructor •(() → iss::Map<core::String, core::String> f) → iss::C<iss::C::X%>
     : super core::Object::•() {
-    core::print(f.{core::Object::runtimeType}{core::Type});
+    core::print(f.{core::Object::runtimeType});
   }
 }
 class Map<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
@@ -49,7 +49,7 @@
     : iss::Map::key = key, iss::Map::value = value, super core::Object::•()
     ;
   get entries() → iss::Iterable<core::MapEntry<iss::Map::K%, iss::Map::V%>>
-    return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K%, iss::Map::V%>(this.{iss::Map::key}{iss::Map::K%}, this.{iss::Map::value}{iss::Map::V%}));
+    return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K%, iss::Map::V%>(this.{iss::Map::key}, this.{iss::Map::value}));
 }
 class Iterable<E extends core::Object? = dynamic> extends core::Object {
   final field iss::Iterable::E% element;
@@ -57,19 +57,19 @@
     : iss::Iterable::element = element, super core::Object::•()
     ;
   method singleWhere((iss::Iterable::E%) → core::bool test, {generic-covariant-impl () →? iss::Iterable::E% orElse = #C1}) → iss::Iterable::E% {
-    if(test(this.{iss::Iterable::element}{iss::Iterable::E%}){(iss::Iterable::E%) → core::bool}) {
-      return this.{iss::Iterable::element}{iss::Iterable::E%};
+    if(test.call(this.{iss::Iterable::element})) {
+      return this.{iss::Iterable::element};
     }
-    if(!(orElse == null))
-      return orElse{() → iss::Iterable::E%}(){() → iss::Iterable::E%};
+    if(!orElse.{core::Object::==}(null))
+      return orElse{() → iss::Iterable::E%}.call();
     throw "error";
   }
 }
 static method foo(() → iss::Map<core::String, core::String> f) → void {
-  core::print(f.{core::Object::runtimeType}{core::Type});
+  core::print(f.{core::Object::runtimeType});
 }
 static set bar(() → iss::Map<core::String, core::String> f) → void {
-  core::print(f.{core::Object::runtimeType}{core::Type});
+  core::print(f.{core::Object::runtimeType});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.transformed.expect
index facc484..615c4e4 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.transformed.expect
@@ -25,11 +25,11 @@
 static method main() → void {
   iss::foo(() → Null => null);
   iss::bar = () → iss::Map<core::String*, core::String*>* => null;
-  new self::D::•<core::int*>().{self::D::method}(){() →* iss::C<core::int*>*};
+  new self::D::•<core::int*>().{self::D::method}();
   self::findKey(new iss::Map::•<core::String*, core::String*>("foo", "bar"), "bar");
 }
 static method findKey(iss::Map<core::String*, dynamic>* m, dynamic search) → void {
-  core::print(let final core::MapEntry<core::String*, dynamic>* #t1 = m.{iss::Map::entries}{iss::Iterable<core::MapEntry<core::String*, dynamic>*>*}.{iss::Iterable::singleWhere}((core::MapEntry<core::String*, dynamic>* entry) → core::bool* => entry.{core::MapEntry::value}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} search, orElse: () → Null => null){((core::MapEntry<core::String*, dynamic>*) →* core::bool*, {orElse: () →* core::MapEntry<core::String*, dynamic>*}) →* core::MapEntry<core::String*, dynamic>*} in #t1 == null ?{core::String*} null : #t1.{core::MapEntry::key}{core::String*});
+  core::print(let final core::MapEntry<core::String*, dynamic>* #t1 = m.{iss::Map::entries}.{iss::Iterable::singleWhere}((core::MapEntry<core::String*, dynamic>* entry) → core::bool* => entry.{core::MapEntry::value}.{core::Object::==}(search), orElse: () → Null => null) in #t1.{core::Object::==}(null) ?{core::String*} null : #t1.{core::MapEntry::key});
 }
 
 library /*isNonNullableByDefault*/;
@@ -39,7 +39,7 @@
 class C<X extends core::Object? = dynamic> extends core::Object {
   constructor •(() → iss::Map<core::String, core::String> f) → iss::C<iss::C::X%>
     : super core::Object::•() {
-    core::print(f.{core::Object::runtimeType}{core::Type});
+    core::print(f.{core::Object::runtimeType});
   }
 }
 class Map<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
@@ -49,7 +49,7 @@
     : iss::Map::key = key, iss::Map::value = value, super core::Object::•()
     ;
   get entries() → iss::Iterable<core::MapEntry<iss::Map::K%, iss::Map::V%>>
-    return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K%, iss::Map::V%>(this.{iss::Map::key}{iss::Map::K%}, this.{iss::Map::value}{iss::Map::V%}));
+    return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K%, iss::Map::V%>(this.{iss::Map::key}, this.{iss::Map::value}));
 }
 class Iterable<E extends core::Object? = dynamic> extends core::Object {
   final field iss::Iterable::E% element;
@@ -57,19 +57,19 @@
     : iss::Iterable::element = element, super core::Object::•()
     ;
   method singleWhere((iss::Iterable::E%) → core::bool test, {generic-covariant-impl () →? iss::Iterable::E% orElse = #C1}) → iss::Iterable::E% {
-    if(test(this.{iss::Iterable::element}{iss::Iterable::E%}){(iss::Iterable::E%) → core::bool}) {
-      return this.{iss::Iterable::element}{iss::Iterable::E%};
+    if(test.call(this.{iss::Iterable::element})) {
+      return this.{iss::Iterable::element};
     }
-    if(!(orElse == null))
-      return orElse{() → iss::Iterable::E%}(){() → iss::Iterable::E%};
+    if(!orElse.{core::Object::==}(null))
+      return orElse{() → iss::Iterable::E%}.call();
     throw "error";
   }
 }
 static method foo(() → iss::Map<core::String, core::String> f) → void {
-  core::print(f.{core::Object::runtimeType}{core::Type});
+  core::print(f.{core::Object::runtimeType});
 }
 static set bar(() → iss::Map<core::String, core::String> f) → void {
-  core::print(f.{core::Object::runtimeType}{core::Type});
+  core::print(f.{core::Object::runtimeType});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart.weak.expect
index 9a56a7d..e644ba8 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart.weak.expect
@@ -33,7 +33,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::_C&Object&A::method}(){({s: core::String*}) →* core::String*});
+  core::print(new self::C::•().{self::_C&Object&A::method}());
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart.weak.transformed.expect
index dbbbaa1..a4b45f2 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart.weak.transformed.expect
@@ -33,7 +33,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::_C&Object&A::method}(){({s: core::String*}) →* core::String*});
+  core::print(new self::C::•().{self::_C&Object&A::method}());
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.no_link.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.no_link.dart.weak.expect
index 7ab45bf..5dfa45a 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.no_link.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.no_link.dart.weak.expect
@@ -33,7 +33,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::_C&Object&A::method}(){({s: core::String*}) →* core::String*});
+  core::print(new self::C::•().{self::_C&Object&A::method}());
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.no_link.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.no_link.dart.weak.transformed.expect
index 3948e9a..bee4a10 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.no_link.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.no_link.dart.weak.transformed.expect
@@ -33,7 +33,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::_C&Object&A::method}(){({s: core::String*}) →* core::String*});
+  core::print(new self::C::•().{self::_C&Object&A::method}());
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.weak.expect
index 2f375fb..ec08b47 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.weak.expect
@@ -33,7 +33,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::_C&Object&A::method}(){({s: core::String*}) →* core::String*});
+  core::print(new self::C::•().{self::_C&Object&A::method}());
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.weak.transformed.expect
index 594c0ca..c2ee49a 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.weak.transformed.expect
@@ -33,7 +33,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::_C&Object&A::method}(){({s: core::String*}) →* core::String*});
+  core::print(new self::C::•().{self::_C&Object&A::method}());
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.expect
index e5721c4..bb9ab6c 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.expect
@@ -31,28 +31,28 @@
     () → void f;
     (let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
     f.toString(); // error
-    ^" in f).{core::Object::toString}(){() → core::String};
+    ^" in f).{core::Object::toString}();
   }
   method test2() → void {
     () → void f;
     (let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
     f.toString(); // error
-    ^" in f).{core::Object::toString}(){() → core::String};
+    ^" in f).{core::Object::toString}();
   }
 }
 static method test() → dynamic {
   () → void f;
   (let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
   f.toString(); // error
-  ^" in f).{core::Object::toString}(){() → core::String};
+  ^" in f).{core::Object::toString}();
   core::Function foo = () → Null {
     () → void f;
     (let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
     f.toString(); // error
-    ^" in f).{core::Object::toString}(){() → core::String};
+    ^" in f).{core::Object::toString}();
   };
   self::C::test();
-  new self::C::•().{self::C::test2}(){() → void};
+  new self::C::•().{self::C::test2}();
 }
 static method main() → dynamic {}
 
@@ -67,11 +67,11 @@
     ;
   static method test() → void {
     () →* void f;
-    f.{core::Object::toString}(){() →* core::String*};
+    f.{core::Object::toString}();
   }
   method test2() → void {
     () →* void f;
-    f.{core::Object::toString}(){() →* core::String*};
+    f.{core::Object::toString}();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -86,11 +86,11 @@
 }
 static method test() → dynamic {
   () →* void f;
-  f.{core::Object::toString}(){() →* core::String*};
+  f.{core::Object::toString}();
   core::Function* foo = () → Null {
     () →* void f;
-    f.{core::Object::toString}(){() →* core::String*};
+    f.{core::Object::toString}();
   };
   self2::C::test();
-  new self2::C::•().{self2::C::test2}(){() →* void};
+  new self2::C::•().{self2::C::test2}();
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.transformed.expect
index e5721c4..bb9ab6c 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.transformed.expect
@@ -31,28 +31,28 @@
     () → void f;
     (let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
     f.toString(); // error
-    ^" in f).{core::Object::toString}(){() → core::String};
+    ^" in f).{core::Object::toString}();
   }
   method test2() → void {
     () → void f;
     (let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
     f.toString(); // error
-    ^" in f).{core::Object::toString}(){() → core::String};
+    ^" in f).{core::Object::toString}();
   }
 }
 static method test() → dynamic {
   () → void f;
   (let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
   f.toString(); // error
-  ^" in f).{core::Object::toString}(){() → core::String};
+  ^" in f).{core::Object::toString}();
   core::Function foo = () → Null {
     () → void f;
     (let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
     f.toString(); // error
-    ^" in f).{core::Object::toString}(){() → core::String};
+    ^" in f).{core::Object::toString}();
   };
   self::C::test();
-  new self::C::•().{self::C::test2}(){() → void};
+  new self::C::•().{self::C::test2}();
 }
 static method main() → dynamic {}
 
@@ -67,11 +67,11 @@
     ;
   static method test() → void {
     () →* void f;
-    f.{core::Object::toString}(){() →* core::String*};
+    f.{core::Object::toString}();
   }
   method test2() → void {
     () →* void f;
-    f.{core::Object::toString}(){() →* core::String*};
+    f.{core::Object::toString}();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -86,11 +86,11 @@
 }
 static method test() → dynamic {
   () →* void f;
-  f.{core::Object::toString}(){() →* core::String*};
+  f.{core::Object::toString}();
   core::Function* foo = () → Null {
     () →* void f;
-    f.{core::Object::toString}(){() →* core::String*};
+    f.{core::Object::toString}();
   };
   self2::C::test();
-  new self2::C::•().{self2::C::test2}(){() →* void};
+  new self2::C::•().{self2::C::test2}();
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.expect
index 4f9e4ba..5b9f933 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.expect
@@ -12,11 +12,11 @@
     ;
   static method test() → void {
     () →* void f;
-    f.{core::Object::toString}(){() →* core::String*};
+    f.{core::Object::toString}();
   }
   method test2() → void {
     () →* void f;
-    f.{core::Object::toString}(){() →* core::String*};
+    f.{core::Object::toString}();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -31,13 +31,13 @@
 }
 static method test() → dynamic {
   () →* void f;
-  f.{core::Object::toString}(){() →* core::String*};
+  f.{core::Object::toString}();
   core::Function* foo = () → Null {
     () →* void f;
-    f.{core::Object::toString}(){() →* core::String*};
+    f.{core::Object::toString}();
   };
   self::C::test();
-  new self::C::•().{self::C::test2}(){() →* void};
+  new self::C::•().{self::C::test2}();
 }
 static method main() → dynamic {
   iss::main();
@@ -76,27 +76,27 @@
     () → void f;
     (let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
     f.toString(); // error
-    ^" in f).{core::Object::toString}(){() → core::String};
+    ^" in f).{core::Object::toString}();
   }
   method test2() → void {
     () → void f;
     (let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
     f.toString(); // error
-    ^" in f).{core::Object::toString}(){() → core::String};
+    ^" in f).{core::Object::toString}();
   }
 }
 static method test() → dynamic {
   () → void f;
   (let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
   f.toString(); // error
-  ^" in f).{core::Object::toString}(){() → core::String};
+  ^" in f).{core::Object::toString}();
   core::Function foo = () → Null {
     () → void f;
     (let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
     f.toString(); // error
-    ^" in f).{core::Object::toString}(){() → core::String};
+    ^" in f).{core::Object::toString}();
   };
   iss::C::test();
-  new iss::C::•().{iss::C::test2}(){() → void};
+  new iss::C::•().{iss::C::test2}();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.transformed.expect
index 4f9e4ba..5b9f933 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.transformed.expect
@@ -12,11 +12,11 @@
     ;
   static method test() → void {
     () →* void f;
-    f.{core::Object::toString}(){() →* core::String*};
+    f.{core::Object::toString}();
   }
   method test2() → void {
     () →* void f;
-    f.{core::Object::toString}(){() →* core::String*};
+    f.{core::Object::toString}();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -31,13 +31,13 @@
 }
 static method test() → dynamic {
   () →* void f;
-  f.{core::Object::toString}(){() →* core::String*};
+  f.{core::Object::toString}();
   core::Function* foo = () → Null {
     () →* void f;
-    f.{core::Object::toString}(){() →* core::String*};
+    f.{core::Object::toString}();
   };
   self::C::test();
-  new self::C::•().{self::C::test2}(){() →* void};
+  new self::C::•().{self::C::test2}();
 }
 static method main() → dynamic {
   iss::main();
@@ -76,27 +76,27 @@
     () → void f;
     (let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
     f.toString(); // error
-    ^" in f).{core::Object::toString}(){() → core::String};
+    ^" in f).{core::Object::toString}();
   }
   method test2() → void {
     () → void f;
     (let final Never #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
     f.toString(); // error
-    ^" in f).{core::Object::toString}(){() → core::String};
+    ^" in f).{core::Object::toString}();
   }
 }
 static method test() → dynamic {
   () → void f;
   (let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
   f.toString(); // error
-  ^" in f).{core::Object::toString}(){() → core::String};
+  ^" in f).{core::Object::toString}();
   core::Function foo = () → Null {
     () → void f;
     (let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
     f.toString(); // error
-    ^" in f).{core::Object::toString}(){() → core::String};
+    ^" in f).{core::Object::toString}();
   };
   iss::C::test();
-  new iss::C::•().{iss::C::test2}(){() → void};
+  new iss::C::•().{iss::C::test2}();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.expect
index d1b585c..22d878a 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.expect
@@ -117,13 +117,13 @@
   invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
 Try inserting an identifier before ''.
   c?..f;
-     ^"{dynamic}.f;
+     ^".f;
   !(invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
 Try inserting an identifier before ''.
   !c?..f;
-      ^"{dynamic}.f as{TypeError,ForDynamic} core::bool*);
+      ^".f as{TypeError,ForDynamic} core::bool*);
   invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
 Try inserting an identifier before ''.
   c?..f!;
-     ^"{dynamic}.f!;
+     ^".f!;
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.transformed.expect
index d81d034..802c2a3 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.transformed.expect
@@ -117,13 +117,13 @@
   invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
 Try inserting an identifier before ''.
   c?..f;
-     ^"{dynamic}.f;
+     ^".f;
   !(invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
 Try inserting an identifier before ''.
   !c?..f;
-      ^"{dynamic}.f as{TypeError,ForDynamic} core::bool*);
+      ^".f as{TypeError,ForDynamic} core::bool*);
   invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
 Try inserting an identifier before ''.
   c?..f!;
-     ^"{dynamic}.f!;
+     ^".f!;
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41657.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41657.dart.weak.expect
index 0be0d4c..c0a3ef7 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41657.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41657.dart.weak.expect
@@ -17,7 +17,7 @@
   self::expect(self::assertLegacySubtyping2a, #C3);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41657.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41657.dart.weak.transformed.expect
index e7f1882..49fce36 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41657.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41657.dart.weak.transformed.expect
@@ -17,7 +17,7 @@
   self::expect(self::assertLegacySubtyping2a, #C3);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue42003.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue42003.dart.weak.expect
index cbd12a1..f5df90e 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue42003.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue42003.dart.weak.expect
@@ -6,7 +6,7 @@
 import "org-dartlang-testcase:///issue42003_lib.dart";
 
 static method main() → dynamic {
-  let final core::String* #t1 = iss::returnString() in #t1 == null ?{core::int?} null : #t1{core::String}.{core::String::length}{core::int};
+  let final core::String* #t1 = iss::returnString() in #t1.{core::String::==}(null) ?{core::int?} null : #t1{core::String}.{core::String::length};
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue42003.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue42003.dart.weak.transformed.expect
index cbd12a1..f5df90e 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue42003.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue42003.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
 import "org-dartlang-testcase:///issue42003_lib.dart";
 
 static method main() → dynamic {
-  let final core::String* #t1 = iss::returnString() in #t1 == null ?{core::int?} null : #t1{core::String}.{core::String::length}{core::int};
+  let final core::String* #t1 = iss::returnString() in #t1.{core::String::==}(null) ?{core::int?} null : #t1{core::String}.{core::String::length};
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue42660.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue42660.dart.weak.expect
index 10c6848..1d99576 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue42660.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue42660.dart.weak.expect
@@ -7,24 +7,24 @@
 
 static method main() → void {
   iss::E|m(iss::f());
-  iss::E|m((#C1)(){() →* core::int*});
+  iss::E|m((#C1).call());
   iss::E|m(iss::p);
   iss::Class<dynamic>* c = new iss::Class::•<dynamic>();
-  iss::E|m(c.{iss::Class::f}(){() →* core::int*});
-  iss::E|m(c.{iss::Class::f}{() →* core::int*}(){() →* core::int*});
-  iss::E|m(c.{iss::Class::p}{core::int*});
-  iss::E|m(c.{iss::Class::[]}(0){(core::int*) →* core::int*});
-  iss::E|m(c.{iss::Class::unary-}(){() →* core::int*});
-  iss::E|m(c.{iss::Class::+}(4){(core::Object*) →* core::int*});
+  iss::E|m(c.{iss::Class::f}());
+  iss::E|m(c.{iss::Class::f}.call());
+  iss::E|m(c.{iss::Class::p});
+  iss::E|m(c.{iss::Class::[]}(0));
+  iss::E|m(c.{iss::Class::unary-}());
+  iss::E|m(c.{iss::Class::+}(4));
   let final iss::Class<dynamic>* #t1 = c in block {
-    iss::E|m(#t1.{iss::Class::p}{core::int*});
-    iss::E|m(#t1.{iss::Class::f}(){() →* core::int*});
-    iss::E|m(#t1.{iss::Class::[]}(0){(core::int*) →* core::int*});
+    iss::E|m(#t1.{iss::Class::p});
+    iss::E|m(#t1.{iss::Class::f}());
+    iss::E|m(#t1.{iss::Class::[]}(0));
   } =>#t1;
   let final iss::Class<dynamic>* #t2 = new iss::Class::•<dynamic>() in block {
-    iss::E|m(#t2.{iss::Class::p}{core::int*});
-    iss::E|m(#t2.{iss::Class::f}(){() →* core::int*});
-    iss::E|m(#t2.{iss::Class::[]}(0){(core::int*) →* core::int*});
+    iss::E|m(#t2.{iss::Class::p});
+    iss::E|m(#t2.{iss::Class::f}());
+    iss::E|m(#t2.{iss::Class::[]}(0));
   } =>#t2;
 }
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue42660.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue42660.dart.weak.transformed.expect
index 10c6848..1d99576 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue42660.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue42660.dart.weak.transformed.expect
@@ -7,24 +7,24 @@
 
 static method main() → void {
   iss::E|m(iss::f());
-  iss::E|m((#C1)(){() →* core::int*});
+  iss::E|m((#C1).call());
   iss::E|m(iss::p);
   iss::Class<dynamic>* c = new iss::Class::•<dynamic>();
-  iss::E|m(c.{iss::Class::f}(){() →* core::int*});
-  iss::E|m(c.{iss::Class::f}{() →* core::int*}(){() →* core::int*});
-  iss::E|m(c.{iss::Class::p}{core::int*});
-  iss::E|m(c.{iss::Class::[]}(0){(core::int*) →* core::int*});
-  iss::E|m(c.{iss::Class::unary-}(){() →* core::int*});
-  iss::E|m(c.{iss::Class::+}(4){(core::Object*) →* core::int*});
+  iss::E|m(c.{iss::Class::f}());
+  iss::E|m(c.{iss::Class::f}.call());
+  iss::E|m(c.{iss::Class::p});
+  iss::E|m(c.{iss::Class::[]}(0));
+  iss::E|m(c.{iss::Class::unary-}());
+  iss::E|m(c.{iss::Class::+}(4));
   let final iss::Class<dynamic>* #t1 = c in block {
-    iss::E|m(#t1.{iss::Class::p}{core::int*});
-    iss::E|m(#t1.{iss::Class::f}(){() →* core::int*});
-    iss::E|m(#t1.{iss::Class::[]}(0){(core::int*) →* core::int*});
+    iss::E|m(#t1.{iss::Class::p});
+    iss::E|m(#t1.{iss::Class::f}());
+    iss::E|m(#t1.{iss::Class::[]}(0));
   } =>#t1;
   let final iss::Class<dynamic>* #t2 = new iss::Class::•<dynamic>() in block {
-    iss::E|m(#t2.{iss::Class::p}{core::int*});
-    iss::E|m(#t2.{iss::Class::f}(){() →* core::int*});
-    iss::E|m(#t2.{iss::Class::[]}(0){(core::int*) →* core::int*});
+    iss::E|m(#t2.{iss::Class::p});
+    iss::E|m(#t2.{iss::Class::f}());
+    iss::E|m(#t2.{iss::Class::[]}(0));
   } =>#t2;
 }
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.expect
index 3d387ff..39658bf 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.expect
@@ -81,7 +81,7 @@
 abstract class RenderObjectWithChildMixin<ChildType extends mai::RenderObject> extends mai::RenderObject /*isMixinDeclaration*/  {
   generic-covariant-impl field mai::RenderObjectWithChildMixin::ChildType? _child = null;
   get child() → mai::RenderObjectWithChildMixin::ChildType?
-    return this.{mai::RenderObjectWithChildMixin::_child}{mai::RenderObjectWithChildMixin::ChildType?};
+    return this.{mai::RenderObjectWithChildMixin::_child};
 }
 abstract class _RenderProxyBoxMixin&RenderBox&RenderObjectWithChildMixin<T extends mai::RenderBox> extends core::Object implements mai::RenderBox, mai::RenderObjectWithChildMixin<mai::_RenderProxyBoxMixin&RenderBox&RenderObjectWithChildMixin::T> /*isAnonymousMixin*/  {
   synthetic constructor •() → mai::_RenderProxyBoxMixin&RenderBox&RenderObjectWithChildMixin<mai::_RenderProxyBoxMixin&RenderBox&RenderObjectWithChildMixin::T>
@@ -91,7 +91,7 @@
 abstract class RenderProxyBoxMixin<T extends mai::RenderBox> extends mai::_RenderProxyBoxMixin&RenderBox&RenderObjectWithChildMixin<mai::RenderProxyBoxMixin::T> /*isMixinDeclaration*/  {
   @#C2
   method hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position = #C1}) → core::bool {
-    return let final core::bool? #t1 = let final mai::RenderProxyBoxMixin::T? #t2 = this.{mai::RenderObjectWithChildMixin::child}{mai::RenderProxyBoxMixin::T?} in #t2 == null ?{core::bool?} null : #t2{mai::RenderProxyBoxMixin::T}.{mai::RenderBox::hitTest}(result, position: position){(mai::BoxHitTestResult, {required position: mai::Offset}) → core::bool} in #t1 == null ?{core::bool} false : #t1{core::bool};
+    return let final core::bool? #t1 = let final mai::RenderProxyBoxMixin::T? #t2 = this.{mai::RenderObjectWithChildMixin::child} in #t2.{core::Object::==}(null) ?{core::bool?} null : #t2{mai::RenderProxyBoxMixin::T}.{mai::RenderBox::hitTest}(result, position: position) in #t1.{core::Object::==}(null) ?{core::bool} false : #t1{core::bool};
   }
 }
 abstract class _RenderProxyBox&RenderBox&RenderObjectWithChildMixin extends mai::RenderBox implements mai::RenderObjectWithChildMixin<mai::RenderBox> /*isAnonymousMixin,isEliminatedMixin*/  {
@@ -100,7 +100,7 @@
     : super mai::RenderBox::•()
     ;
   get child() → mai::RenderBox?
-    return this.{mai::RenderObjectWithChildMixin::_child}{mai::RenderBox?};
+    return this.{mai::RenderObjectWithChildMixin::_child};
 }
 abstract class _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin extends mai::_RenderProxyBox&RenderBox&RenderObjectWithChildMixin implements mai::RenderProxyBoxMixin<mai::RenderBox> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → mai::_RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin
@@ -108,7 +108,7 @@
     ;
   @#C2
   method hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position = #C1}) → core::bool {
-    return let final core::bool? #t3 = let final mai::RenderBox? #t4 = this.{mai::RenderObjectWithChildMixin::child}{mai::RenderBox?} in #t4 == null ?{core::bool?} null : #t4{mai::RenderBox}.{mai::RenderBox::hitTest}(result, position: position){(mai::BoxHitTestResult, {required position: mai::Offset}) → core::bool} in #t3 == null ?{core::bool} false : #t3{core::bool};
+    return let final core::bool? #t3 = let final mai::RenderBox? #t4 = this.{mai::RenderObjectWithChildMixin::child} in #t4.{core::Object::==}(null) ?{core::bool?} null : #t4{mai::RenderBox}.{mai::RenderBox::hitTest}(result, position: position) in #t3.{core::Object::==}(null) ?{core::bool} false : #t3{core::bool};
   }
 }
 class RenderProxyBox extends mai::_RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin {
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.transformed.expect
index 03d4e82..d142fe2 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
     ;
   @#C1
   method /* from org-dartlang-testcase:///main_lib.dart */ hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position = #C2}) → core::bool {
-    return let final core::bool? #t1 = let final mai::RenderBox? #t2 = this.{mai::RenderObjectWithChildMixin::child}{mai::RenderBox?} in #t2 == null ?{core::bool?} null : #t2{mai::RenderBox}.{mai::RenderBox::hitTest}(result, position: position){(mai::BoxHitTestResult, {required position: mai::Offset}) → core::bool} in #t1 == null ?{core::bool} false : #t1{core::bool};
+    return let final core::bool? #t1 = let final mai::RenderBox? #t2 = this.{mai::RenderObjectWithChildMixin::child} in #t2.{core::Object::==}(null) ?{core::bool?} null : #t2{mai::RenderBox}.{mai::RenderBox::hitTest}(result, position: position) in #t1.{core::Object::==}(null) ?{core::bool} false : #t1{core::bool};
   }
 }
 abstract class _RenderAnimatedOpacity&RenderProxyBox&RenderProxyBoxMixin&RenderAnimatedOpacityMixin extends self::_RenderAnimatedOpacity&RenderProxyBox&RenderProxyBoxMixin implements self::RenderAnimatedOpacityMixin<mai::RenderBox> /*isAnonymousMixin,isEliminatedMixin*/  {
@@ -83,7 +83,7 @@
 abstract class RenderObjectWithChildMixin<ChildType extends mai::RenderObject> extends mai::RenderObject /*isMixinDeclaration*/  {
   generic-covariant-impl field mai::RenderObjectWithChildMixin::ChildType? _child = null;
   get child() → mai::RenderObjectWithChildMixin::ChildType?
-    return this.{mai::RenderObjectWithChildMixin::_child}{mai::RenderObjectWithChildMixin::ChildType?};
+    return this.{mai::RenderObjectWithChildMixin::_child};
 }
 abstract class _RenderProxyBoxMixin&RenderBox&RenderObjectWithChildMixin<T extends mai::RenderBox> extends core::Object implements mai::RenderBox, mai::RenderObjectWithChildMixin<mai::_RenderProxyBoxMixin&RenderBox&RenderObjectWithChildMixin::T> /*isAnonymousMixin*/  {
   synthetic constructor •() → mai::_RenderProxyBoxMixin&RenderBox&RenderObjectWithChildMixin<mai::_RenderProxyBoxMixin&RenderBox&RenderObjectWithChildMixin::T>
@@ -93,7 +93,7 @@
 abstract class RenderProxyBoxMixin<T extends mai::RenderBox> extends mai::_RenderProxyBoxMixin&RenderBox&RenderObjectWithChildMixin<mai::RenderProxyBoxMixin::T> /*isMixinDeclaration*/  {
   @#C1
   method hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position = #C2}) → core::bool {
-    return let final core::bool? #t3 = let final mai::RenderProxyBoxMixin::T? #t4 = this.{mai::RenderObjectWithChildMixin::child}{mai::RenderProxyBoxMixin::T?} in #t4 == null ?{core::bool?} null : #t4{mai::RenderProxyBoxMixin::T}.{mai::RenderBox::hitTest}(result, position: position){(mai::BoxHitTestResult, {required position: mai::Offset}) → core::bool} in #t3 == null ?{core::bool} false : #t3{core::bool};
+    return let final core::bool? #t3 = let final mai::RenderProxyBoxMixin::T? #t4 = this.{mai::RenderObjectWithChildMixin::child} in #t4.{core::Object::==}(null) ?{core::bool?} null : #t4{mai::RenderProxyBoxMixin::T}.{mai::RenderBox::hitTest}(result, position: position) in #t3.{core::Object::==}(null) ?{core::bool} false : #t3{core::bool};
   }
 }
 abstract class _RenderProxyBox&RenderBox&RenderObjectWithChildMixin extends mai::RenderBox implements mai::RenderObjectWithChildMixin<mai::RenderBox> /*isAnonymousMixin,isEliminatedMixin*/  {
@@ -102,7 +102,7 @@
     : super mai::RenderBox::•()
     ;
   get child() → mai::RenderBox?
-    return this.{mai::RenderObjectWithChildMixin::_child}{mai::RenderBox?};
+    return this.{mai::RenderObjectWithChildMixin::_child};
 }
 abstract class _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin extends mai::_RenderProxyBox&RenderBox&RenderObjectWithChildMixin implements mai::RenderProxyBoxMixin<mai::RenderBox> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → mai::_RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin
@@ -110,7 +110,7 @@
     ;
   @#C1
   method hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position = #C2}) → core::bool {
-    return let final core::bool? #t5 = let final mai::RenderBox? #t6 = this.{mai::RenderObjectWithChildMixin::child}{mai::RenderBox?} in #t6 == null ?{core::bool?} null : #t6{mai::RenderBox}.{mai::RenderBox::hitTest}(result, position: position){(mai::BoxHitTestResult, {required position: mai::Offset}) → core::bool} in #t5 == null ?{core::bool} false : #t5{core::bool};
+    return let final core::bool? #t5 = let final mai::RenderBox? #t6 = this.{mai::RenderObjectWithChildMixin::child} in #t6.{core::Object::==}(null) ?{core::bool?} null : #t6{mai::RenderBox}.{mai::RenderBox::hitTest}(result, position: position) in #t5.{core::Object::==}(null) ?{core::bool} false : #t5{core::bool};
   }
 }
 class RenderProxyBox extends mai::_RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin {
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.expect
index 9f5295d..e73124e 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.expect
@@ -28,7 +28,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::Class::•().{self::_Class&Object&Mixin::method}(null){(core::int*) →* core::int*});
+  core::print(new self::Class::•().{self::_Class&Object&Mixin::method}(null));
 }
 
 library /*isNonNullableByDefault*/;
@@ -40,5 +40,5 @@
     : super core::Object::•()
     ;
   method method(core::int? i) → core::int
-    return let final core::int? #t1 = i in #t1 == null ?{core::int} 0 : #t1{core::int};
+    return let final core::int? #t1 = i in #t1.{core::num::==}(null) ?{core::int} 0 : #t1{core::int};
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.transformed.expect
index 598ea2c..bfe469f 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   method /*isNonNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_in_lib.dart */ method(core::int? i) → core::int
-    return let final core::int? #t1 = i in #t1 == null ?{core::int} 0 : #t1{core::int};
+    return let final core::int? #t1 = i in #t1.{core::num::==}(null) ?{core::int} 0 : #t1{core::int};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -28,7 +28,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::Class::•().{self::_Class&Object&Mixin::method}(null){(core::int*) →* core::int*});
+  core::print(new self::Class::•().{self::_Class&Object&Mixin::method}(null));
 }
 
 library /*isNonNullableByDefault*/;
@@ -40,5 +40,5 @@
     : super core::Object::•()
     ;
   method method(core::int? i) → core::int
-    return let final core::int? #t2 = i in #t2 == null ?{core::int} 0 : #t2{core::int};
+    return let final core::int? #t2 = i in #t2.{core::num::==}(null) ?{core::int} 0 : #t2{core::int};
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.expect
index d267d60..a039b1e 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.expect
@@ -19,7 +19,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::Class::•().{self::_Class&Object&Mixin::method}(null){(core::int*) → core::int*});
+  core::print(new self::Class::•().{self::_Class&Object&Mixin::method}(null));
 }
 
 library;
@@ -31,7 +31,7 @@
     : super core::Object::•()
     ;
   method method(core::int* i) → core::int*
-    return let final core::int* #t1 = i in #t1 == null ?{core::int*} 0 : #t1;
+    return let final core::int* #t1 = i in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.transformed.expect
index 2124a43..9471fb0 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   method /*isLegacy, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ method(core::int* i) → core::int*
-    return let final core::int* #t1 = i in #t1 == null ?{core::int*} 0 : #t1;
+    return let final core::int* #t1 = i in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
   abstract member-signature operator /*isLegacy*/ ==(dynamic other) → core::bool*; -> core::Object::==
 }
 class Class extends self::_Class&Object&Mixin {
@@ -19,7 +19,7 @@
     ;
 }
 static method main() → dynamic {
-  core::print(new self::Class::•().{self::_Class&Object&Mixin::method}(null){(core::int*) → core::int*});
+  core::print(new self::Class::•().{self::_Class&Object&Mixin::method}(null));
 }
 
 library;
@@ -31,7 +31,7 @@
     : super core::Object::•()
     ;
   method method(core::int* i) → core::int*
-    return let final core::int* #t2 = i in #t2 == null ?{core::int*} 0 : #t2;
+    return let final core::int* #t2 = i in #t2.{core::num::==}(null) ?{core::int*} 0 : #t2;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.expect
index ffde2b7..c929e9f 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.expect
@@ -26,59 +26,59 @@
     : super self::Mock::•()
     ;
   no-such-method-forwarder get date() → core::DateTime*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::DateTime*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::DateTime*;
   no-such-method-forwarder set date(core::DateTime* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get expires() → core::DateTime*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::DateTime*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::DateTime*;
   no-such-method-forwarder set expires(core::DateTime* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get ifModifiedSince() → core::DateTime*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::DateTime*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::DateTime*;
   no-such-method-forwarder set ifModifiedSince(core::DateTime* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get host() → core::String*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::String*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::String*;
   no-such-method-forwarder set host(core::String* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get port() → core::int*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set port(core::int* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get contentType() → _ht::ContentType*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} _ht::ContentType*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} _ht::ContentType*;
   no-such-method-forwarder set contentType(_ht::ContentType* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get contentLength() → core::int*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set contentLength(core::int* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get persistentConnection() → core::bool*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C18, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C18, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::bool*;
   no-such-method-forwarder set persistentConnection(core::bool* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C19, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C19, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get chunkedTransferEncoding() → core::bool*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C20, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C20, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::bool*;
   no-such-method-forwarder set chunkedTransferEncoding(core::bool* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C21, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C21, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder operator [](core::String* name) → core::List<core::String*>*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C22, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::List<core::String*>*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C22, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::List<core::String*>*;
   no-such-method-forwarder method value(core::String* name) → core::String*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C23, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::String*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C23, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::String*;
   no-such-method-forwarder method add(core::String* name, core::Object* value, {core::bool* preserveHeaderCase = #C24}) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C25, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name, value]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C26: preserveHeaderCase}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C25, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name, value]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C26: preserveHeaderCase})));
   no-such-method-forwarder method set(core::String* name, core::Object* value, {core::bool* preserveHeaderCase = #C24}) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C27, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name, value]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C26: preserveHeaderCase}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C27, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name, value]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C26: preserveHeaderCase})));
   no-such-method-forwarder method remove(core::String* name, core::Object* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C28, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name, value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C28, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name, value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder method removeAll(core::String* name) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C29, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C29, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder method forEach((core::String*, core::List<core::String*>*) →* void action) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C30, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C30, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder method noFolding(core::String* name) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C31, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C31, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/_http/http.dart */ clear() → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C32, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C32, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.outline.expect
index c139fe9..e9f1bbe 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.outline.expect
@@ -24,59 +24,59 @@
   synthetic constructor •() → self::MockHttpHeaders*
     ;
   no-such-method-forwarder get date() → core::DateTime*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#date, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::DateTime*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#date, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::DateTime*;
   no-such-method-forwarder set date(core::DateTime* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#date=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#date=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get expires() → core::DateTime*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#expires, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::DateTime*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#expires, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::DateTime*;
   no-such-method-forwarder set expires(core::DateTime* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#expires=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#expires=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get ifModifiedSince() → core::DateTime*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#ifModifiedSince, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::DateTime*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#ifModifiedSince, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::DateTime*;
   no-such-method-forwarder set ifModifiedSince(core::DateTime* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#ifModifiedSince=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#ifModifiedSince=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get host() → core::String*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#host, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::String*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#host, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::String*;
   no-such-method-forwarder set host(core::String* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#host=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#host=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get port() → core::int*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#port, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#port, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set port(core::int* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#port=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#port=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get contentType() → _ht::ContentType*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#contentType, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} _ht::ContentType*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#contentType, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} _ht::ContentType*;
   no-such-method-forwarder set contentType(_ht::ContentType* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#contentType=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#contentType=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get contentLength() → core::int*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#contentLength, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#contentLength, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set contentLength(core::int* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#contentLength=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#contentLength=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get persistentConnection() → core::bool*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#persistentConnection, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#persistentConnection, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::bool*;
   no-such-method-forwarder set persistentConnection(core::bool* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#persistentConnection=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#persistentConnection=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder get chunkedTransferEncoding() → core::bool*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#chunkedTransferEncoding, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#chunkedTransferEncoding, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::bool*;
   no-such-method-forwarder set chunkedTransferEncoding(core::bool* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#chunkedTransferEncoding=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#chunkedTransferEncoding=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder operator [](core::String* name) → core::List<core::String*>*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#[], 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::List<core::String*>*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#[], 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::List<core::String*>*;
   no-such-method-forwarder method value(core::String* name) → core::String*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#value, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::String*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#value, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::String*;
   no-such-method-forwarder method add(core::String* name, core::Object* value, {core::bool* preserveHeaderCase}) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#add, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name, value]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#preserveHeaderCase: preserveHeaderCase}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#add, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name, value]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#preserveHeaderCase: preserveHeaderCase})));
   no-such-method-forwarder method set(core::String* name, core::Object* value, {core::bool* preserveHeaderCase}) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#set, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name, value]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#preserveHeaderCase: preserveHeaderCase}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#set, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name, value]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#preserveHeaderCase: preserveHeaderCase})));
   no-such-method-forwarder method remove(core::String* name, core::Object* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#remove, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name, value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#remove, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name, value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method removeAll(core::String* name) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#removeAll, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#removeAll, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method forEach((core::String*, core::List<core::String*>*) →* void action) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#forEach, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#forEach, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method noFolding(core::String* name) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#noFolding, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#noFolding, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[name]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/_http/http.dart */ clear() → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#clear, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#clear, 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/nnbd_mixed/mock_http_headers.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.transformed.expect
index a1fdb15..e26b189 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.transformed.expect
@@ -26,59 +26,59 @@
     : super self::Mock::•()
     ;
   no-such-method-forwarder get date() → core::DateTime*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::DateTime*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::DateTime*;
   no-such-method-forwarder set date(core::DateTime* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get expires() → core::DateTime*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::DateTime*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::DateTime*;
   no-such-method-forwarder set expires(core::DateTime* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get ifModifiedSince() → core::DateTime*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::DateTime*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::DateTime*;
   no-such-method-forwarder set ifModifiedSince(core::DateTime* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get host() → core::String*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::String*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::String*;
   no-such-method-forwarder set host(core::String* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get port() → core::int*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set port(core::int* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get contentType() → _ht::ContentType*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} _ht::ContentType*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} _ht::ContentType*;
   no-such-method-forwarder set contentType(_ht::ContentType* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get contentLength() → core::int*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set contentLength(core::int* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get persistentConnection() → core::bool*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C18, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C18, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::bool*;
   no-such-method-forwarder set persistentConnection(core::bool* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C19, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C19, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder get chunkedTransferEncoding() → core::bool*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C20, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C20, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::bool*;
   no-such-method-forwarder set chunkedTransferEncoding(core::bool* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C21, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C21, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder operator [](core::String* name) → core::List<core::String*>*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C22, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(name)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::List<core::String*>*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C22, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(name)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::List<core::String*>*;
   no-such-method-forwarder method value(core::String* name) → core::String*
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C23, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(name)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::String*;
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C23, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(name)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::String*;
   no-such-method-forwarder method add(core::String* name, core::Object* value, {core::bool* preserveHeaderCase = #C24}) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C25, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(name, value)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C26: preserveHeaderCase}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C25, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(name, value)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C26: preserveHeaderCase})));
   no-such-method-forwarder method set(core::String* name, core::Object* value, {core::bool* preserveHeaderCase = #C24}) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C27, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(name, value)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C26: preserveHeaderCase}))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C27, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(name, value)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C26: preserveHeaderCase})));
   no-such-method-forwarder method remove(core::String* name, core::Object* value) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C28, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(name, value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C28, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(name, value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder method removeAll(core::String* name) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C29, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(name)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C29, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(name)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder method forEach((core::String*, core::List<core::String*>*) →* void action) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C30, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C30, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder method noFolding(core::String* name) → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C31, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(name)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C31, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(name)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/_http/http.dart */ clear() → void
-    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C32, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Mock::noSuchMethod}(new core::_InvocationMirror::_withType(#C32, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.expect
index 3a15eee..2617678 100644
--- a/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.expect
@@ -137,7 +137,7 @@
 }
 static method throws(() →* void f) → dynamic {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.transformed.expect
index bf7f391..fbb85cb 100644
--- a/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.transformed.expect
@@ -137,7 +137,7 @@
 }
 static method throws(() →* void f) → dynamic {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.weak.expect
index f6eb3c3..8bb4374 100644
--- a/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.weak.expect
@@ -54,8 +54,8 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  if(!(new self::C::•().{self::C::l}{self::late*}.{self::late::g}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 1))
+  if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
     throw "Expected 1";
-  if(!(new self::C::•().{self::C::r}{self::required*}.{self::required::g}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 2))
+  if(!new self::C::•().{self::C::r}.{self::required::g}.{core::num::==}(2))
     throw "Expected 2";
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.weak.transformed.expect
index f6eb3c3..8bb4374 100644
--- a/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.weak.transformed.expect
@@ -54,8 +54,8 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  if(!(new self::C::•().{self::C::l}{self::late*}.{self::late::g}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 1))
+  if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
     throw "Expected 1";
-  if(!(new self::C::•().{self::C::r}{self::required*}.{self::required::g}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 2))
+  if(!new self::C::•().{self::C::r}.{self::required::g}.{core::num::==}(2))
     throw "Expected 2";
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.weak.expect
index f6eb3c3..8bb4374 100644
--- a/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.weak.expect
@@ -54,8 +54,8 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  if(!(new self::C::•().{self::C::l}{self::late*}.{self::late::g}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 1))
+  if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
     throw "Expected 1";
-  if(!(new self::C::•().{self::C::r}{self::required*}.{self::required::g}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 2))
+  if(!new self::C::•().{self::C::r}.{self::required::g}.{core::num::==}(2))
     throw "Expected 2";
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.weak.transformed.expect
index f6eb3c3..8bb4374 100644
--- a/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.weak.transformed.expect
@@ -54,8 +54,8 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  if(!(new self::C::•().{self::C::l}{self::late*}.{self::late::g}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 1))
+  if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
     throw "Expected 1";
-  if(!(new self::C::•().{self::C::r}{self::required*}.{self::required::g}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 2))
+  if(!new self::C::•().{self::C::r}.{self::required::g}.{core::num::==}(2))
     throw "Expected 2";
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.weak.expect
index 9e9eb03..2794947 100644
--- a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.weak.expect
@@ -8,16 +8,16 @@
     : super core::Object::•()
     ;
   method method() → self::Class*
-    return this.{self::Class::field}{self::Class*};
+    return this.{self::Class::field};
   operator [](self::Class* key) → self::Class*
-    return this.{self::Class::field}{self::Class*};
+    return this.{self::Class::field};
   operator []=(self::Class* key, self::Class* value) → void {
     this.{self::Class::field} = value;
   }
   operator +(core::int* value) → self::Class*
-    return this.{self::Class::field}{self::Class*};
+    return this.{self::Class::field};
   operator unary-() → self::Class*
-    return this.{self::Class::field}{self::Class*};
+    return this.{self::Class::field};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -36,123 +36,123 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1 == null ?{self::Class*} null : #t1.{self::Class::field}{self::Class*};
-  let final self::Class* #t2 = c in #t2 == null ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t3 = c in #t3 == null ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t4 = c in #t4 == null ?{self::Class*} null : #t4.{self::Class::method}(){() →* self::Class*};
-  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5 == null ?{self::Class*} null : #t5.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*});
-  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7 == null ?{self::Class*} null : #t7.{self::Class::field}{self::Class*} in #t6 == null ?{self::Class*} null : #t6.{self::Class::field}{self::Class*};
-  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9 == null ?{self::Class*} null : #t9.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*} in #t8 == null ?{self::Class*} null : #t8.{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10 == null ?{self::Class*} null : #t10.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•());
-  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12 == null ?{self::Class*} null : #t12.{self::Class::field}{self::Class*} in #t11 == null ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
-  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14 == null ?{self::Class*} null : #t14.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*} in #t13 == null ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15 == null ?{self::Class*} null : #t15.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16 == null ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17 == null ?{self::Class*} null : #t17.{self::Class::method}(){() →* self::Class*}).{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18 == null ?{self::Class*} null : #t18.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•());
-  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20 == null ?{self::Class*} null : #t20.{self::Class::field}{self::Class*} in #t19 == null ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
-  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22 == null ?{self::Class*} null : #t22.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*} in #t21 == null ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23 == null ?{self::Class*} null : #t23.{self::Class::field}{self::Class*}).{self::Class::method}(){() →* self::Class*});
-  let final self::Class* #t24 = c in #t24 == null ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*};
-  c = let final self::Class* #t25 = c in #t25 == null ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*};
-  let final self::Class* #t26 = c in #t26 == null ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t27 = c in #t27 == null ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t28 = c in #t28 == null ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*};
-  c = let final self::Class* #t29 = c in #t29 == null ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*};
-  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30 == null ?{self::Class*} null : #t30.{self::Class::method}(){() →* self::Class*}).{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31 == null ?{self::Class*} null : #t31.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32 == null ?{self::Class*} null : #t32.{self::Class::method}(){() →* self::Class*}).{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33 == null ?{self::Class*} null : #t33.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*}.{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34 == null ?{self::Class*} null : #t34.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35 == null ?{self::Class*} null : #t35.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36 == null ?{self::Class*} null : #t36.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*}.{self::Class::method}(){() →* self::Class*});
-  let final self::Class* #t37 = c in #t37 == null ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*}.{self::Class::field}{self::Class*};
-  c = let final self::Class* #t38 = c in #t38 == null ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*}.{self::Class::field}{self::Class*};
-  let final self::Class* #t39 = c in #t39 == null ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*}.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t40 = c in #t40 == null ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*}.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t41 = c in #t41 == null ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*}.{self::Class::method}(){() →* self::Class*};
-  c = let final self::Class* #t42 = c in #t42 == null ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*}.{self::Class::method}(){() →* self::Class*};
-  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43 == null ?{self::Class*} null : #t43.{self::Class::method}(){() →* self::Class*}).{self::Class::field}{self::Class*}.{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44 == null ?{self::Class*} null : #t44.{self::Class::method}(){() →* self::Class*}).{self::Class::field}{self::Class*}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45 == null ?{self::Class*} null : #t45.{self::Class::method}(){() →* self::Class*}).{self::Class::field}{self::Class*}.{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46 == null ?{self::Class*} null : #t46.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47 == null ?{self::Class*} null : #t47.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48 == null ?{self::Class*} null : #t48.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49 == null ?{self::Class*} null : #t49.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50 == null ?{self::Class*} null : #t50.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51 == null ?{self::Class*} null : #t51.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*});
-  let final self::Class* #t52 = c in #t52 == null ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*};
-  c = let final self::Class* #t53 = c in #t53 == null ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*};
-  let final self::Class* #t54 = c in #t54 == null ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t55 = c in #t55 == null ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t56 = c in #t56 == null ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*};
-  c = let final self::Class* #t57 = c in #t57 == null ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*};
-  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58 == null ?{self::Class*} null : #t58.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59 == null ?{self::Class*} null : #t59.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60 == null ?{self::Class*} null : #t60.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61 == null ?{self::Class*} null : #t61.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62 == null ?{self::Class*} null : #t62.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63 == null ?{self::Class*} null : #t63.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64 == null ?{self::Class*} null : #t64.{self::Class::field}{self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65 == null ?{self::Class*} null : #t65.{self::Class::field}{self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66 == null ?{self::Class*} null : #t66.{self::Class::field}{self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67 == null ?{self::Class*} null : #t67.{self::Class::field}{self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::method}(){() →* self::Class*});
-  let final self::Class* #t68 = c in #t68 == null ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*}.{self::Class::field}{self::Class*};
-  c = let final self::Class* #t69 = c in #t69 == null ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*}.{self::Class::field}{self::Class*};
-  let final self::Class* #t70 = c in #t70 == null ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*}.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t71 = c in #t71 == null ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*}.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t72 = c in #t72 == null ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*}.{self::Class::method}(){() →* self::Class*};
-  c = let final self::Class* #t73 = c in #t73 == null ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*}.{self::Class::method}(){() →* self::Class*};
-  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74 == null ?{self::Class*} null : #t74.{self::Class::method}(){() →* self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75 == null ?{self::Class*} null : #t75.{self::Class::method}(){() →* self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76 == null ?{self::Class*} null : #t76.{self::Class::method}(){() →* self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::method}(){() →* self::Class*});
-  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78 == null ?{self::Class*} null : #t78.{self::Class::method}(){() →* self::Class*} in #t77 == null ?{self::Class*} null : #t77.{self::Class::method}(){() →* self::Class*};
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : #t1.{self::Class::field};
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
+  let final self::Class* #t4 = c in #t4.{self::Class::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{self::Class::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
+  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{self::Class::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
+  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{self::Class::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
+  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{self::Class::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{self::Class::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
+  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{self::Class::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{self::Class::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{self::Class::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
+  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{self::Class::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
+  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{self::Class::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{self::Class::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
+  let final self::Class* #t24 = c in #t24.{self::Class::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
+  c = let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
+  let final self::Class* #t26 = c in #t26.{self::Class::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t27 = c in #t27.{self::Class::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
+  c = let final self::Class* #t29 = c in #t29.{self::Class::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{self::Class::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{self::Class::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{self::Class::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{self::Class::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{self::Class::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
+  let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
+  c = let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
+  let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t40 = c in #t40.{self::Class::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
+  let final self::Class* #t41 = c in #t41.{self::Class::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
+  c = let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{self::Class::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{self::Class::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{self::Class::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{self::Class::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  let final self::Class* #t52 = c in #t52.{self::Class::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
+  c = let final self::Class* #t53 = c in #t53.{self::Class::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
+  let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t55 = c in #t55.{self::Class::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
+  c = let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{self::Class::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{self::Class::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{self::Class::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
+  let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
+  c = let final self::Class* #t69 = c in #t69.{self::Class::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
+  let final self::Class* #t70 = c in #t70.{self::Class::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t72 = c in #t72.{self::Class::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
+  c = let final self::Class* #t73 = c in #t73.{self::Class::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{self::Class::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{self::Class::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
+  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{self::Class::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{self::Class::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79 == null ?{self::Class*} null : #t79.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*});
-  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81 == null ?{self::Class*} null : #t81.{self::Class::field}{self::Class*} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83){(self::Class*, self::Class*) →* void} in #t83);
-  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86 == null ?{self::Class*} null : #t86.{self::Class::field}{self::Class*} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88){(self::Class*, self::Class*) →* void} in #t88);
-  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90 == null ?{self::Class*} null : #t90.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*}.{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92 == null ?{self::Class*} null : #t92.{self::Class::field}{self::Class*} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93){(self::Class*) →* self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*} in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94){(self::Class*, self::Class*) →* void} in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97 == null ?{self::Class*} null : #t97.{self::Class::field}{self::Class*} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98){(self::Class*) →* self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*} in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99){(self::Class*, self::Class*) →* void} in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102 == null ?{self::Class*} null : #t102.{self::Class::field}{self::Class*} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103){(self::Class*) →* self::Class*} in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1){(core::int*) →* self::Class*}){(self::Class*, self::Class*) →* void} in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107 == null ?{self::Class*} null : #t107.{self::Class::field}{self::Class*} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108){(self::Class*) →* self::Class*} in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1){(core::int*) →* self::Class*}){(self::Class*, self::Class*) →* void} in #t109);
-  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112 == null ?{self::Class*} null : #t112.{self::Class::field}{self::Class*} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113){(self::Class*) →* self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*} in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114){(self::Class*, self::Class*) →* void} in #t114);
-  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117 == null ?{self::Class*} null : #t117.{self::Class::field}{self::Class*} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118){(self::Class*) →* self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*} in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119){(self::Class*, self::Class*) →* void} in #t119);
-  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121 == null ?{self::Class*} null : #t121.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*}.{self::Class::[]}(c){(self::Class*) →* self::Class*});
-  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123 == null ?{self::Class*} null : #t123.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125){(self::Class*, self::Class*) →* void} in #t125);
-  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128 == null ?{self::Class*} null : #t128.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130){(self::Class*, self::Class*) →* void} in #t130);
-  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132 == null ?{self::Class*} null : #t132.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*}.{self::Class::[]}(c){(self::Class*) →* self::Class*}.{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134 == null ?{self::Class*} null : #t134.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135){(self::Class*) →* self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*} in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136){(self::Class*, self::Class*) →* void} in #t136);
-  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139 == null ?{self::Class*} null : #t139.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140){(self::Class*) →* self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*} in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141){(self::Class*, self::Class*) →* void} in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144 == null ?{self::Class*} null : #t144.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145){(self::Class*) →* self::Class*} in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1){(core::int*) →* self::Class*}){(self::Class*, self::Class*) →* void} in #t146);
-  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149 == null ?{self::Class*} null : #t149.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150){(self::Class*) →* self::Class*} in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1){(core::int*) →* self::Class*}){(self::Class*, self::Class*) →* void} in #t151);
-  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154 == null ?{self::Class*} null : #t154.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155){(self::Class*) →* self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*} in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156){(self::Class*, self::Class*) →* void} in #t156);
-  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159 == null ?{self::Class*} null : #t159.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160){(self::Class*) →* self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*} in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161){(self::Class*, self::Class*) →* void} in #t161);
+  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
+  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{self::Class::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
+  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
+  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
+  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{self::Class::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{self::Class::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{self::Class::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{self::Class::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
+  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{self::Class::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
+  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{self::Class::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
+  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{self::Class::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
+  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
+  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{self::Class::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
+  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{self::Class::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
+  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{self::Class::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
+  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{self::Class::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{self::Class::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
+  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{self::Class::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
+  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{self::Class::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
+  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163 == null ?{self::Class*} null : #t163.{self::Class::field}{self::Class*}).{self::Class::+}(0){(core::int*) →* self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164 == null ?{self::Class*} null : #t164.{self::Class::field}{self::Class*}).{self::Class::unary-}(){() →* self::Class*});
-  let final self::Class* #t165 = c in #t165 == null ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}{self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*};
-  c = let final self::Class* #t166 = c in #t166 == null ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}{self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*} in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
-  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170 == null ?{self::Class*} null : #t170.{self::Class::field}{self::Class*} in #t169.{self::Class::field} = #t169.{self::Class::field}{self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*});
-  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172 == null ?{self::Class*} null : #t172.{self::Class::field}{self::Class*} in #t171.{self::Class::field} = #t171.{self::Class::field}{self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*});
-  let final self::Class* #t173 = c in #t173 == null ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}{self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*};
-  c = let final self::Class* #t174 = c in #t174 == null ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field}{self::Class*} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1){(core::int*) →* self::Class*} in #t175;
-  let final self::Class* #t177 = c in #t177 == null ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}{self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*} in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
-  c = let final self::Class* #t180 = c in #t180 == null ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}{self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*} in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
+  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
+  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{self::Class::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
+  let final self::Class* #t165 = c in #t165.{self::Class::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
+  c = let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
+  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{self::Class::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
+  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
+  let final self::Class* #t173 = c in #t173.{self::Class::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
+  c = let final self::Class* #t174 = c in #t174.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
+  let final self::Class* #t177 = c in #t177.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
+  c = let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t183 = c in #t183 == null ?{self::Class*} null : #t183.{self::Class::field}{self::Class*} == null ?{self::Class*} #t183.{self::Class::field} = c : null;
-  c = let final self::Class* #t184 = c in #t184 == null ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field}{self::Class*} in #t185 == null ?{self::Class*} #t184.{self::Class::field} = c : #t185;
-  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187 == null ?{self::Class*} null : #t187.{self::Class::field}{self::Class*} in let final self::Class* #t188 = #t186.{self::Class::field}{self::Class*} in #t188 == null ?{self::Class*} #t186.{self::Class::field} = c : #t188);
-  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190 == null ?{self::Class*} null : #t190.{self::Class::field}{self::Class*} in let final self::Class* #t191 = #t189.{self::Class::field}{self::Class*} in #t191 == null ?{self::Class*} #t189.{self::Class::field} = c : #t191);
-  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193 == null ?{self::Class*} null : #t193.{self::Class::field}{self::Class*} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194){(self::Class*) →* self::Class*} in #t195 == null ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196){(self::Class*, self::Class*) →* void} in #t196 : #t195);
-  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199 == null ?{self::Class*} null : #t199.{self::Class::field}{self::Class*} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200){(self::Class*) →* self::Class*} in #t201 == null ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202){(self::Class*, self::Class*) →* void} in #t202 : #t201);
+  let final self::Class* #t183 = c in #t183.{self::Class::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{self::Class::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
+  c = let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{self::Class::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
+  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{self::Class::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
+  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{self::Class::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
+  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
+  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{self::Class::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
 }
 static method throws(() →* void f) → void {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.weak.transformed.expect
index 9e9eb03..2794947 100644
--- a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.weak.transformed.expect
@@ -8,16 +8,16 @@
     : super core::Object::•()
     ;
   method method() → self::Class*
-    return this.{self::Class::field}{self::Class*};
+    return this.{self::Class::field};
   operator [](self::Class* key) → self::Class*
-    return this.{self::Class::field}{self::Class*};
+    return this.{self::Class::field};
   operator []=(self::Class* key, self::Class* value) → void {
     this.{self::Class::field} = value;
   }
   operator +(core::int* value) → self::Class*
-    return this.{self::Class::field}{self::Class*};
+    return this.{self::Class::field};
   operator unary-() → self::Class*
-    return this.{self::Class::field}{self::Class*};
+    return this.{self::Class::field};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -36,123 +36,123 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1 == null ?{self::Class*} null : #t1.{self::Class::field}{self::Class*};
-  let final self::Class* #t2 = c in #t2 == null ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t3 = c in #t3 == null ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t4 = c in #t4 == null ?{self::Class*} null : #t4.{self::Class::method}(){() →* self::Class*};
-  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5 == null ?{self::Class*} null : #t5.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*});
-  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7 == null ?{self::Class*} null : #t7.{self::Class::field}{self::Class*} in #t6 == null ?{self::Class*} null : #t6.{self::Class::field}{self::Class*};
-  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9 == null ?{self::Class*} null : #t9.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*} in #t8 == null ?{self::Class*} null : #t8.{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10 == null ?{self::Class*} null : #t10.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•());
-  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12 == null ?{self::Class*} null : #t12.{self::Class::field}{self::Class*} in #t11 == null ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
-  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14 == null ?{self::Class*} null : #t14.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*} in #t13 == null ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15 == null ?{self::Class*} null : #t15.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16 == null ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17 == null ?{self::Class*} null : #t17.{self::Class::method}(){() →* self::Class*}).{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18 == null ?{self::Class*} null : #t18.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•());
-  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20 == null ?{self::Class*} null : #t20.{self::Class::field}{self::Class*} in #t19 == null ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
-  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22 == null ?{self::Class*} null : #t22.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*} in #t21 == null ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23 == null ?{self::Class*} null : #t23.{self::Class::field}{self::Class*}).{self::Class::method}(){() →* self::Class*});
-  let final self::Class* #t24 = c in #t24 == null ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*};
-  c = let final self::Class* #t25 = c in #t25 == null ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*};
-  let final self::Class* #t26 = c in #t26 == null ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t27 = c in #t27 == null ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t28 = c in #t28 == null ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*};
-  c = let final self::Class* #t29 = c in #t29 == null ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*};
-  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30 == null ?{self::Class*} null : #t30.{self::Class::method}(){() →* self::Class*}).{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31 == null ?{self::Class*} null : #t31.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32 == null ?{self::Class*} null : #t32.{self::Class::method}(){() →* self::Class*}).{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33 == null ?{self::Class*} null : #t33.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*}.{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34 == null ?{self::Class*} null : #t34.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35 == null ?{self::Class*} null : #t35.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36 == null ?{self::Class*} null : #t36.{self::Class::field}{self::Class*}).{self::Class::field}{self::Class*}.{self::Class::method}(){() →* self::Class*});
-  let final self::Class* #t37 = c in #t37 == null ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*}.{self::Class::field}{self::Class*};
-  c = let final self::Class* #t38 = c in #t38 == null ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*}.{self::Class::field}{self::Class*};
-  let final self::Class* #t39 = c in #t39 == null ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*}.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t40 = c in #t40 == null ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*}.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t41 = c in #t41 == null ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*}.{self::Class::method}(){() →* self::Class*};
-  c = let final self::Class* #t42 = c in #t42 == null ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*}.{self::Class::method}(){() →* self::Class*};
-  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43 == null ?{self::Class*} null : #t43.{self::Class::method}(){() →* self::Class*}).{self::Class::field}{self::Class*}.{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44 == null ?{self::Class*} null : #t44.{self::Class::method}(){() →* self::Class*}).{self::Class::field}{self::Class*}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45 == null ?{self::Class*} null : #t45.{self::Class::method}(){() →* self::Class*}).{self::Class::field}{self::Class*}.{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46 == null ?{self::Class*} null : #t46.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47 == null ?{self::Class*} null : #t47.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48 == null ?{self::Class*} null : #t48.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49 == null ?{self::Class*} null : #t49.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50 == null ?{self::Class*} null : #t50.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51 == null ?{self::Class*} null : #t51.{self::Class::field}{self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*});
-  let final self::Class* #t52 = c in #t52 == null ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*};
-  c = let final self::Class* #t53 = c in #t53 == null ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*};
-  let final self::Class* #t54 = c in #t54 == null ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t55 = c in #t55 == null ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t56 = c in #t56 == null ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*};
-  c = let final self::Class* #t57 = c in #t57 == null ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*};
-  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58 == null ?{self::Class*} null : #t58.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59 == null ?{self::Class*} null : #t59.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60 == null ?{self::Class*} null : #t60.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61 == null ?{self::Class*} null : #t61.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62 == null ?{self::Class*} null : #t62.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63 == null ?{self::Class*} null : #t63.{self::Class::method}(){() →* self::Class*}).{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64 == null ?{self::Class*} null : #t64.{self::Class::field}{self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65 == null ?{self::Class*} null : #t65.{self::Class::field}{self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66 == null ?{self::Class*} null : #t66.{self::Class::field}{self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67 == null ?{self::Class*} null : #t67.{self::Class::field}{self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::method}(){() →* self::Class*});
-  let final self::Class* #t68 = c in #t68 == null ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*}.{self::Class::field}{self::Class*};
-  c = let final self::Class* #t69 = c in #t69 == null ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*}.{self::Class::field}{self::Class*};
-  let final self::Class* #t70 = c in #t70 == null ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*}.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t71 = c in #t71 == null ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*}.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t72 = c in #t72 == null ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*}.{self::Class::method}(){() →* self::Class*};
-  c = let final self::Class* #t73 = c in #t73 == null ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}(){() →* self::Class*}.{self::Class::method}(){() →* self::Class*};
-  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74 == null ?{self::Class*} null : #t74.{self::Class::method}(){() →* self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::field}{self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75 == null ?{self::Class*} null : #t75.{self::Class::method}(){() →* self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76 == null ?{self::Class*} null : #t76.{self::Class::method}(){() →* self::Class*}).{self::Class::method}(){() →* self::Class*}.{self::Class::method}(){() →* self::Class*});
-  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78 == null ?{self::Class*} null : #t78.{self::Class::method}(){() →* self::Class*} in #t77 == null ?{self::Class*} null : #t77.{self::Class::method}(){() →* self::Class*};
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : #t1.{self::Class::field};
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
+  let final self::Class* #t4 = c in #t4.{self::Class::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{self::Class::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
+  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{self::Class::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
+  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{self::Class::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
+  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{self::Class::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{self::Class::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
+  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{self::Class::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{self::Class::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{self::Class::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
+  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{self::Class::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
+  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{self::Class::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{self::Class::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
+  let final self::Class* #t24 = c in #t24.{self::Class::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
+  c = let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
+  let final self::Class* #t26 = c in #t26.{self::Class::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t27 = c in #t27.{self::Class::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
+  c = let final self::Class* #t29 = c in #t29.{self::Class::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{self::Class::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{self::Class::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{self::Class::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{self::Class::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{self::Class::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
+  let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
+  c = let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
+  let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t40 = c in #t40.{self::Class::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
+  let final self::Class* #t41 = c in #t41.{self::Class::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
+  c = let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{self::Class::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{self::Class::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{self::Class::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{self::Class::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  let final self::Class* #t52 = c in #t52.{self::Class::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
+  c = let final self::Class* #t53 = c in #t53.{self::Class::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
+  let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t55 = c in #t55.{self::Class::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
+  c = let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{self::Class::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{self::Class::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{self::Class::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
+  let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
+  c = let final self::Class* #t69 = c in #t69.{self::Class::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
+  let final self::Class* #t70 = c in #t70.{self::Class::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t72 = c in #t72.{self::Class::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
+  c = let final self::Class* #t73 = c in #t73.{self::Class::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{self::Class::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{self::Class::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
+  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{self::Class::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{self::Class::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79 == null ?{self::Class*} null : #t79.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*});
-  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81 == null ?{self::Class*} null : #t81.{self::Class::field}{self::Class*} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83){(self::Class*, self::Class*) →* void} in #t83);
-  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86 == null ?{self::Class*} null : #t86.{self::Class::field}{self::Class*} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88){(self::Class*, self::Class*) →* void} in #t88);
-  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90 == null ?{self::Class*} null : #t90.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*}.{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92 == null ?{self::Class*} null : #t92.{self::Class::field}{self::Class*} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93){(self::Class*) →* self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*} in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94){(self::Class*, self::Class*) →* void} in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97 == null ?{self::Class*} null : #t97.{self::Class::field}{self::Class*} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98){(self::Class*) →* self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*} in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99){(self::Class*, self::Class*) →* void} in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102 == null ?{self::Class*} null : #t102.{self::Class::field}{self::Class*} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103){(self::Class*) →* self::Class*} in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1){(core::int*) →* self::Class*}){(self::Class*, self::Class*) →* void} in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107 == null ?{self::Class*} null : #t107.{self::Class::field}{self::Class*} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108){(self::Class*) →* self::Class*} in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1){(core::int*) →* self::Class*}){(self::Class*, self::Class*) →* void} in #t109);
-  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112 == null ?{self::Class*} null : #t112.{self::Class::field}{self::Class*} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113){(self::Class*) →* self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*} in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114){(self::Class*, self::Class*) →* void} in #t114);
-  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117 == null ?{self::Class*} null : #t117.{self::Class::field}{self::Class*} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118){(self::Class*) →* self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*} in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119){(self::Class*, self::Class*) →* void} in #t119);
-  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121 == null ?{self::Class*} null : #t121.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*}.{self::Class::[]}(c){(self::Class*) →* self::Class*});
-  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123 == null ?{self::Class*} null : #t123.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125){(self::Class*, self::Class*) →* void} in #t125);
-  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128 == null ?{self::Class*} null : #t128.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130){(self::Class*, self::Class*) →* void} in #t130);
-  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132 == null ?{self::Class*} null : #t132.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*}.{self::Class::[]}(c){(self::Class*) →* self::Class*}.{self::Class::method}(){() →* self::Class*});
-  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134 == null ?{self::Class*} null : #t134.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135){(self::Class*) →* self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*} in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136){(self::Class*, self::Class*) →* void} in #t136);
-  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139 == null ?{self::Class*} null : #t139.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140){(self::Class*) →* self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*} in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141){(self::Class*, self::Class*) →* void} in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144 == null ?{self::Class*} null : #t144.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145){(self::Class*) →* self::Class*} in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1){(core::int*) →* self::Class*}){(self::Class*, self::Class*) →* void} in #t146);
-  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149 == null ?{self::Class*} null : #t149.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150){(self::Class*) →* self::Class*} in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1){(core::int*) →* self::Class*}){(self::Class*, self::Class*) →* void} in #t151);
-  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154 == null ?{self::Class*} null : #t154.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155){(self::Class*) →* self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*} in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156){(self::Class*, self::Class*) →* void} in #t156);
-  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159 == null ?{self::Class*} null : #t159.{self::Class::field}{self::Class*}).{self::Class::[]}(c){(self::Class*) →* self::Class*} in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160){(self::Class*) →* self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*} in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161){(self::Class*, self::Class*) →* void} in #t161);
+  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
+  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{self::Class::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
+  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
+  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
+  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{self::Class::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{self::Class::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{self::Class::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{self::Class::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
+  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{self::Class::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
+  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{self::Class::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
+  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{self::Class::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
+  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
+  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{self::Class::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
+  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{self::Class::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
+  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{self::Class::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
+  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{self::Class::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{self::Class::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
+  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{self::Class::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
+  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{self::Class::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
+  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163 == null ?{self::Class*} null : #t163.{self::Class::field}{self::Class*}).{self::Class::+}(0){(core::int*) →* self::Class*});
-  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164 == null ?{self::Class*} null : #t164.{self::Class::field}{self::Class*}).{self::Class::unary-}(){() →* self::Class*});
-  let final self::Class* #t165 = c in #t165 == null ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}{self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*};
-  c = let final self::Class* #t166 = c in #t166 == null ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}{self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*} in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
-  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170 == null ?{self::Class*} null : #t170.{self::Class::field}{self::Class*} in #t169.{self::Class::field} = #t169.{self::Class::field}{self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*});
-  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172 == null ?{self::Class*} null : #t172.{self::Class::field}{self::Class*} in #t171.{self::Class::field} = #t171.{self::Class::field}{self::Class*}.{self::Class::+}(0){(core::int*) →* self::Class*});
-  let final self::Class* #t173 = c in #t173 == null ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}{self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*};
-  c = let final self::Class* #t174 = c in #t174 == null ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field}{self::Class*} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1){(core::int*) →* self::Class*} in #t175;
-  let final self::Class* #t177 = c in #t177 == null ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}{self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*} in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
-  c = let final self::Class* #t180 = c in #t180 == null ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}{self::Class*}.{self::Class::+}(1){(core::int*) →* self::Class*} in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
+  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
+  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{self::Class::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
+  let final self::Class* #t165 = c in #t165.{self::Class::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
+  c = let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
+  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{self::Class::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
+  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
+  let final self::Class* #t173 = c in #t173.{self::Class::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
+  c = let final self::Class* #t174 = c in #t174.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
+  let final self::Class* #t177 = c in #t177.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
+  c = let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t183 = c in #t183 == null ?{self::Class*} null : #t183.{self::Class::field}{self::Class*} == null ?{self::Class*} #t183.{self::Class::field} = c : null;
-  c = let final self::Class* #t184 = c in #t184 == null ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field}{self::Class*} in #t185 == null ?{self::Class*} #t184.{self::Class::field} = c : #t185;
-  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187 == null ?{self::Class*} null : #t187.{self::Class::field}{self::Class*} in let final self::Class* #t188 = #t186.{self::Class::field}{self::Class*} in #t188 == null ?{self::Class*} #t186.{self::Class::field} = c : #t188);
-  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190 == null ?{self::Class*} null : #t190.{self::Class::field}{self::Class*} in let final self::Class* #t191 = #t189.{self::Class::field}{self::Class*} in #t191 == null ?{self::Class*} #t189.{self::Class::field} = c : #t191);
-  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193 == null ?{self::Class*} null : #t193.{self::Class::field}{self::Class*} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194){(self::Class*) →* self::Class*} in #t195 == null ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196){(self::Class*, self::Class*) →* void} in #t196 : #t195);
-  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199 == null ?{self::Class*} null : #t199.{self::Class::field}{self::Class*} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200){(self::Class*) →* self::Class*} in #t201 == null ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202){(self::Class*, self::Class*) →* void} in #t202 : #t201);
+  let final self::Class* #t183 = c in #t183.{self::Class::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{self::Class::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
+  c = let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{self::Class::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
+  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{self::Class::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
+  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{self::Class::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
+  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
+  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{self::Class::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
 }
 static method throws(() →* void f) → void {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.weak.expect
index f8fa444..a622905 100644
--- a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.weak.expect
@@ -29,7 +29,7 @@
   set field = self::Extension|set#field;
 }
 static method Extension|get#field(lowered final self::Class* #this) → self::Class*
-  return #this.{self::Class::_field}{self::Class*};
+  return #this.{self::Class::_field};
 static method Extension|set#field(lowered final self::Class* #this, self::Class* value) → void {
   #this.{self::Class::_field} = value;
 }
@@ -53,125 +53,125 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1 == null ?{self::Class*} null : self::Extension|get#field(#t1);
-  let final self::Class* #t2 = c in #t2 == null ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
-  c = let final self::Class* #t3 = c in #t3 == null ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
-  let final self::Class* #t6 = c in #t6 == null ?{self::Class*} null : self::Extension|method(#t6);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7 == null ?{self::Class*} null : self::Extension|get#field(#t7)));
-  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9 == null ?{self::Class*} null : self::Extension|get#field(#t9) in #t8 == null ?{self::Class*} null : self::Extension|get#field(#t8);
-  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11 == null ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10 == null ?{self::Class*} null : self::Extension|get#field(#t10));
-  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14 == null ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
-  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16 == null ?{self::Class*} null : self::Extension|get#field(#t16) in #t15 == null ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
-  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18 == null ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17 == null ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21 == null ?{self::Class*} null : self::Extension|get#field(#t21)));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22 == null ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25 == null ?{self::Class*} null : self::Extension|method(#t25)));
-  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28 == null ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
-  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30 == null ?{self::Class*} null : self::Extension|get#field(#t30) in #t29 == null ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
-  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34 == null ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33 == null ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37 == null ?{self::Class*} null : self::Extension|get#field(#t37)));
-  let final self::Class* #t38 = c in #t38 == null ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
-  c = let final self::Class* #t39 = c in #t39 == null ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
-  let final self::Class* #t42 = c in #t42 == null ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
-  c = let final self::Class* #t45 = c in #t45 == null ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
-  let final self::Class* #t50 = c in #t50 == null ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
-  c = let final self::Class* #t51 = c in #t51 == null ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54 == null ?{self::Class*} null : self::Extension|method(#t54)));
-  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57 == null ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58 == null ?{self::Class*} null : self::Extension|method(#t58)));
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59 == null ?{self::Class*} null : self::Extension|get#field(#t59))));
-  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62 == null ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
-  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65 == null ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66 == null ?{self::Class*} null : self::Extension|get#field(#t66))));
-  let final self::Class* #t67 = c in #t67 == null ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t68 = c in #t68 == null ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
-  let final self::Class* #t71 = c in #t71 == null ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
-  c = let final self::Class* #t74 = c in #t74 == null ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
-  let final self::Class* #t79 = c in #t79 == null ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t80 = c in #t80 == null ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83 == null ?{self::Class*} null : self::Extension|method(#t83))));
-  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86 == null ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87 == null ?{self::Class*} null : self::Extension|method(#t87))));
-  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90 == null ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
-  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93 == null ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
-  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98 == null ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103 == null ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106 == null ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109 == null ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
-  let final self::Class* #t110 = c in #t110 == null ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
-  c = let final self::Class* #t113 = c in #t113 == null ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
-  let final self::Class* #t118 = c in #t118 == null ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
-  c = let final self::Class* #t123 = c in #t123 == null ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
-  let final self::Class* #t130 = c in #t130 == null ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
-  c = let final self::Class* #t133 = c in #t133 == null ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
-  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140 == null ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
-  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143 == null ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148 == null ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
-  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153 == null ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
-  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156 == null ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
-  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159 == null ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160 == null ?{self::Class*} null : self::Extension|get#field(#t160))));
-  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163 == null ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
-  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166 == null ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167 == null ?{self::Class*} null : self::Extension|get#field(#t167))));
-  let final self::Class* #t168 = c in #t168 == null ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t169 = c in #t169 == null ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
-  let final self::Class* #t172 = c in #t172 == null ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
-  c = let final self::Class* #t175 = c in #t175 == null ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
-  let final self::Class* #t180 = c in #t180 == null ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t181 = c in #t181 == null ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184 == null ?{self::Class*} null : self::Extension|method(#t184))));
-  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187 == null ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188 == null ?{self::Class*} null : self::Extension|method(#t188))));
-  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190 == null ?{self::Class*} null : self::Extension|method(#t190) in #t189 == null ?{self::Class*} null : self::Extension|method(#t189);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191 == null ?{self::Class*} null : self::Extension|get#field(#t191)));
-  let final self::Class* #t192 = let final self::Class* #t193 = c in #t193 == null ?{self::Class*} null : self::Extension|get#field(#t193) in #t192 == null ?{self::Class*} null : self::Extension|get#field(#t192);
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
+  let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
+  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
+  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
+  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
+  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
+  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
+  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
+  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
+  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
+  let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
+  c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
+  let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
+  c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
+  let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
+  c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
+  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
+  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
+  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
+  let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
+  let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
+  c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
+  let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
+  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
+  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
+  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
+  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
+  let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
+  c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
+  let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
+  c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
+  let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
+  c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
+  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
+  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
+  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
+  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
+  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
+  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
+  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
+  let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
+  let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
+  c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
+  let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
+  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
+  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191)));
+  let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in #t192.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t192);
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194 == null ?{self::Class*} null : self::Extension|get#field(#t194), c));
-  self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196 == null ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
-  self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201 == null ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205 == null ?{self::Class*} null : self::Extension|get#field(#t205), c)));
-  self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207 == null ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
-  self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212 == null ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
-  self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217 == null ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
-  self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222 == null ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
-  self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227 == null ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
-  self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232 == null ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
-  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236 == null ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
-  self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238 == null ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
-  self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243 == null ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247 == null ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
-  self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249 == null ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
-  self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254 == null ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
-  self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259 == null ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
-  self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264 == null ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
-  self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269 == null ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
-  self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274 == null ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
+  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t194), c));
+  self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
+  self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t205), c)));
+  self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
+  self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
+  self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
+  self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
+  self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
+  self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
+  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
+  self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
+  self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
+  self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
+  self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
+  self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
+  self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
+  self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
+  self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278 == null ?{self::Class*} null : self::Extension|get#field(#t278), 0));
-  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279 == null ?{self::Class*} null : self::Extension|get#field(#t279)));
-  let final self::Class* #t280 = c in #t280 == null ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
-  c = let final self::Class* #t281 = c in #t281 == null ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
-  self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285 == null ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
-  self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289 == null ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
-  let final self::Class* #t292 = c in #t292 == null ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
-  c = let final self::Class* #t293 = c in #t293 == null ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
-  let final self::Class* #t298 = c in #t298 == null ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
-  c = let final self::Class* #t301 = c in #t301 == null ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
+  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t278), 0));
+  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t279)));
+  let final self::Class* #t280 = c in #t280.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
+  c = let final self::Class* #t281 = c in #t281.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
+  self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
+  self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
+  let final self::Class* #t292 = c in #t292.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
+  c = let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
+  let final self::Class* #t298 = c in #t298.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
+  c = let final self::Class* #t301 = c in #t301.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t304 = c in #t304 == null ?{self::Class*} null : self::Extension|get#field(#t304) == null ?{self::Class*} self::Extension|set#field(#t304, c) : null;
-  c = let final self::Class* #t305 = c in #t305 == null ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306 == null ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
-  self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310 == null ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311 == null ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
-  self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315 == null ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316 == null ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
-  self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320 == null ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322 == null ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
-  self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326 == null ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328 == null ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
+  let final self::Class* #t304 = c in #t304.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t304).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t304, c) : null;
+  c = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
+  self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
+  self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
+  self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
+  self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
 }
 static method throws(() →* void f) → void {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.weak.transformed.expect
index f8fa444..a622905 100644
--- a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.weak.transformed.expect
@@ -29,7 +29,7 @@
   set field = self::Extension|set#field;
 }
 static method Extension|get#field(lowered final self::Class* #this) → self::Class*
-  return #this.{self::Class::_field}{self::Class*};
+  return #this.{self::Class::_field};
 static method Extension|set#field(lowered final self::Class* #this, self::Class* value) → void {
   #this.{self::Class::_field} = value;
 }
@@ -53,125 +53,125 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1 == null ?{self::Class*} null : self::Extension|get#field(#t1);
-  let final self::Class* #t2 = c in #t2 == null ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
-  c = let final self::Class* #t3 = c in #t3 == null ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
-  let final self::Class* #t6 = c in #t6 == null ?{self::Class*} null : self::Extension|method(#t6);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7 == null ?{self::Class*} null : self::Extension|get#field(#t7)));
-  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9 == null ?{self::Class*} null : self::Extension|get#field(#t9) in #t8 == null ?{self::Class*} null : self::Extension|get#field(#t8);
-  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11 == null ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10 == null ?{self::Class*} null : self::Extension|get#field(#t10));
-  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14 == null ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
-  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16 == null ?{self::Class*} null : self::Extension|get#field(#t16) in #t15 == null ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
-  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18 == null ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17 == null ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21 == null ?{self::Class*} null : self::Extension|get#field(#t21)));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22 == null ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25 == null ?{self::Class*} null : self::Extension|method(#t25)));
-  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28 == null ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
-  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30 == null ?{self::Class*} null : self::Extension|get#field(#t30) in #t29 == null ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
-  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34 == null ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33 == null ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37 == null ?{self::Class*} null : self::Extension|get#field(#t37)));
-  let final self::Class* #t38 = c in #t38 == null ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
-  c = let final self::Class* #t39 = c in #t39 == null ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
-  let final self::Class* #t42 = c in #t42 == null ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
-  c = let final self::Class* #t45 = c in #t45 == null ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
-  let final self::Class* #t50 = c in #t50 == null ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
-  c = let final self::Class* #t51 = c in #t51 == null ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54 == null ?{self::Class*} null : self::Extension|method(#t54)));
-  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57 == null ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58 == null ?{self::Class*} null : self::Extension|method(#t58)));
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59 == null ?{self::Class*} null : self::Extension|get#field(#t59))));
-  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62 == null ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
-  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65 == null ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66 == null ?{self::Class*} null : self::Extension|get#field(#t66))));
-  let final self::Class* #t67 = c in #t67 == null ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t68 = c in #t68 == null ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
-  let final self::Class* #t71 = c in #t71 == null ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
-  c = let final self::Class* #t74 = c in #t74 == null ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
-  let final self::Class* #t79 = c in #t79 == null ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t80 = c in #t80 == null ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83 == null ?{self::Class*} null : self::Extension|method(#t83))));
-  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86 == null ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87 == null ?{self::Class*} null : self::Extension|method(#t87))));
-  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90 == null ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
-  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93 == null ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
-  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98 == null ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103 == null ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106 == null ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109 == null ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
-  let final self::Class* #t110 = c in #t110 == null ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
-  c = let final self::Class* #t113 = c in #t113 == null ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
-  let final self::Class* #t118 = c in #t118 == null ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
-  c = let final self::Class* #t123 = c in #t123 == null ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
-  let final self::Class* #t130 = c in #t130 == null ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
-  c = let final self::Class* #t133 = c in #t133 == null ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
-  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140 == null ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
-  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143 == null ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148 == null ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
-  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153 == null ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
-  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156 == null ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
-  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159 == null ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160 == null ?{self::Class*} null : self::Extension|get#field(#t160))));
-  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163 == null ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
-  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166 == null ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167 == null ?{self::Class*} null : self::Extension|get#field(#t167))));
-  let final self::Class* #t168 = c in #t168 == null ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t169 = c in #t169 == null ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
-  let final self::Class* #t172 = c in #t172 == null ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
-  c = let final self::Class* #t175 = c in #t175 == null ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
-  let final self::Class* #t180 = c in #t180 == null ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t181 = c in #t181 == null ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184 == null ?{self::Class*} null : self::Extension|method(#t184))));
-  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187 == null ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188 == null ?{self::Class*} null : self::Extension|method(#t188))));
-  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190 == null ?{self::Class*} null : self::Extension|method(#t190) in #t189 == null ?{self::Class*} null : self::Extension|method(#t189);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191 == null ?{self::Class*} null : self::Extension|get#field(#t191)));
-  let final self::Class* #t192 = let final self::Class* #t193 = c in #t193 == null ?{self::Class*} null : self::Extension|get#field(#t193) in #t192 == null ?{self::Class*} null : self::Extension|get#field(#t192);
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
+  let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
+  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
+  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
+  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
+  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
+  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
+  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
+  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
+  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
+  let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
+  c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
+  let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
+  c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
+  let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
+  c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
+  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
+  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
+  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
+  let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
+  let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
+  c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
+  let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
+  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
+  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
+  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
+  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
+  let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
+  c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
+  let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
+  c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
+  let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
+  c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
+  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
+  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
+  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
+  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
+  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
+  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
+  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
+  let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
+  let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
+  c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
+  let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
+  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
+  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191)));
+  let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in #t192.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t192);
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194 == null ?{self::Class*} null : self::Extension|get#field(#t194), c));
-  self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196 == null ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
-  self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201 == null ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205 == null ?{self::Class*} null : self::Extension|get#field(#t205), c)));
-  self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207 == null ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
-  self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212 == null ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
-  self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217 == null ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
-  self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222 == null ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
-  self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227 == null ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
-  self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232 == null ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
-  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236 == null ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
-  self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238 == null ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
-  self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243 == null ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247 == null ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
-  self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249 == null ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
-  self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254 == null ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
-  self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259 == null ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
-  self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264 == null ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
-  self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269 == null ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
-  self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274 == null ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
+  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t194), c));
+  self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
+  self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t205), c)));
+  self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
+  self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
+  self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
+  self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
+  self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
+  self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
+  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
+  self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
+  self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
+  self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
+  self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
+  self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
+  self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
+  self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
+  self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278 == null ?{self::Class*} null : self::Extension|get#field(#t278), 0));
-  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279 == null ?{self::Class*} null : self::Extension|get#field(#t279)));
-  let final self::Class* #t280 = c in #t280 == null ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
-  c = let final self::Class* #t281 = c in #t281 == null ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
-  self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285 == null ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
-  self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289 == null ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
-  let final self::Class* #t292 = c in #t292 == null ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
-  c = let final self::Class* #t293 = c in #t293 == null ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
-  let final self::Class* #t298 = c in #t298 == null ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
-  c = let final self::Class* #t301 = c in #t301 == null ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
+  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t278), 0));
+  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t279)));
+  let final self::Class* #t280 = c in #t280.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
+  c = let final self::Class* #t281 = c in #t281.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
+  self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
+  self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
+  let final self::Class* #t292 = c in #t292.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
+  c = let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
+  let final self::Class* #t298 = c in #t298.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
+  c = let final self::Class* #t301 = c in #t301.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t304 = c in #t304 == null ?{self::Class*} null : self::Extension|get#field(#t304) == null ?{self::Class*} self::Extension|set#field(#t304, c) : null;
-  c = let final self::Class* #t305 = c in #t305 == null ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306 == null ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
-  self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310 == null ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311 == null ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
-  self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315 == null ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316 == null ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
-  self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320 == null ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322 == null ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
-  self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326 == null ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328 == null ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
+  let final self::Class* #t304 = c in #t304.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t304).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t304, c) : null;
+  c = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
+  self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
+  self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
+  self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
+  self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
 }
 static method throws(() →* void f) → void {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.weak.expect
index ce52b2a..6b754ec 100644
--- a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.weak.expect
@@ -29,7 +29,7 @@
   set field = self::Extension|set#field;
 }
 static method Extension|get#field(lowered final self::Class* #this) → self::Class*
-  return #this.{self::Class::_field}{self::Class*};
+  return #this.{self::Class::_field};
 static method Extension|set#field(lowered final self::Class* #this, self::Class* value) → void {
   #this.{self::Class::_field} = value;
 }
@@ -53,123 +53,123 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1 == null ?{self::Class*} null : self::Extension|get#field(#t1);
-  let final self::Class* #t2 = c in #t2 == null ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
-  c = let final self::Class* #t3 = c in #t3 == null ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
-  let final self::Class* #t6 = c in #t6 == null ?{self::Class*} null : self::Extension|method(#t6);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7 == null ?{self::Class*} null : self::Extension|get#field(#t7)));
-  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9 == null ?{self::Class*} null : self::Extension|get#field(#t9) in #t8 == null ?{self::Class*} null : self::Extension|get#field(#t8);
-  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11 == null ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10 == null ?{self::Class*} null : self::Extension|get#field(#t10));
-  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14 == null ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
-  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16 == null ?{self::Class*} null : self::Extension|get#field(#t16) in #t15 == null ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
-  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18 == null ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17 == null ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21 == null ?{self::Class*} null : self::Extension|get#field(#t21)));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22 == null ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25 == null ?{self::Class*} null : self::Extension|method(#t25)));
-  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28 == null ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
-  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30 == null ?{self::Class*} null : self::Extension|get#field(#t30) in #t29 == null ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
-  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34 == null ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33 == null ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37 == null ?{self::Class*} null : self::Extension|get#field(#t37)));
-  let final self::Class* #t38 = c in #t38 == null ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
-  c = let final self::Class* #t39 = c in #t39 == null ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
-  let final self::Class* #t42 = c in #t42 == null ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
-  c = let final self::Class* #t45 = c in #t45 == null ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
-  let final self::Class* #t50 = c in #t50 == null ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
-  c = let final self::Class* #t51 = c in #t51 == null ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54 == null ?{self::Class*} null : self::Extension|method(#t54)));
-  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57 == null ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58 == null ?{self::Class*} null : self::Extension|method(#t58)));
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59 == null ?{self::Class*} null : self::Extension|get#field(#t59))));
-  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62 == null ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
-  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65 == null ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66 == null ?{self::Class*} null : self::Extension|get#field(#t66))));
-  let final self::Class* #t67 = c in #t67 == null ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t68 = c in #t68 == null ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
-  let final self::Class* #t71 = c in #t71 == null ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
-  c = let final self::Class* #t74 = c in #t74 == null ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
-  let final self::Class* #t79 = c in #t79 == null ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t80 = c in #t80 == null ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83 == null ?{self::Class*} null : self::Extension|method(#t83))));
-  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86 == null ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87 == null ?{self::Class*} null : self::Extension|method(#t87))));
-  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90 == null ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
-  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93 == null ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
-  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98 == null ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103 == null ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106 == null ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109 == null ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
-  let final self::Class* #t110 = c in #t110 == null ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
-  c = let final self::Class* #t113 = c in #t113 == null ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
-  let final self::Class* #t118 = c in #t118 == null ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
-  c = let final self::Class* #t123 = c in #t123 == null ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
-  let final self::Class* #t130 = c in #t130 == null ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
-  c = let final self::Class* #t133 = c in #t133 == null ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
-  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140 == null ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
-  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143 == null ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148 == null ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
-  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153 == null ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
-  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156 == null ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
-  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159 == null ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160 == null ?{self::Class*} null : self::Extension|get#field(#t160))));
-  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163 == null ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
-  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166 == null ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167 == null ?{self::Class*} null : self::Extension|get#field(#t167))));
-  let final self::Class* #t168 = c in #t168 == null ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t169 = c in #t169 == null ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
-  let final self::Class* #t172 = c in #t172 == null ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
-  c = let final self::Class* #t175 = c in #t175 == null ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
-  let final self::Class* #t180 = c in #t180 == null ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t181 = c in #t181 == null ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184 == null ?{self::Class*} null : self::Extension|method(#t184))));
-  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187 == null ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188 == null ?{self::Class*} null : self::Extension|method(#t188))));
-  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190 == null ?{self::Class*} null : self::Extension|method(#t190) in #t189 == null ?{self::Class*} null : self::Extension|method(#t189);
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
+  let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
+  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
+  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
+  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
+  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
+  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
+  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
+  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
+  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
+  let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
+  c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
+  let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
+  c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
+  let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
+  c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
+  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
+  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
+  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
+  let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
+  let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
+  c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
+  let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
+  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
+  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
+  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
+  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
+  let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
+  c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
+  let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
+  c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
+  let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
+  c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
+  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
+  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
+  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
+  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
+  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
+  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
+  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
+  let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
+  let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
+  c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
+  let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
+  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
+  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191 == null ?{self::Class*} null : self::Extension|get#field(#t191), c));
-  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193 == null ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
-  self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198 == null ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202 == null ?{self::Class*} null : self::Extension|get#field(#t202), c)));
-  self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204 == null ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
-  self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209 == null ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
-  self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214 == null ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
-  self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219 == null ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
-  self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224 == null ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
-  self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229 == null ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
-  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233 == null ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
-  self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235 == null ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
-  self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240 == null ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244 == null ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
-  self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246 == null ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
-  self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251 == null ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
-  self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256 == null ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
-  self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261 == null ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
-  self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266 == null ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
-  self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271 == null ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
+  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191), c));
+  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
+  self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t202), c)));
+  self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
+  self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
+  self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
+  self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
+  self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
+  self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
+  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
+  self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
+  self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
+  self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
+  self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
+  self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
+  self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
+  self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
+  self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275 == null ?{self::Class*} null : self::Extension|get#field(#t275), 0));
-  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276 == null ?{self::Class*} null : self::Extension|get#field(#t276)));
-  let final self::Class* #t277 = c in #t277 == null ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
-  c = let final self::Class* #t278 = c in #t278 == null ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
-  self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282 == null ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
-  self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286 == null ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
-  let final self::Class* #t289 = c in #t289 == null ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
-  c = let final self::Class* #t290 = c in #t290 == null ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
-  let final self::Class* #t293 = c in #t293 == null ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
-  c = let final self::Class* #t296 = c in #t296 == null ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
+  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t275), 0));
+  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t276)));
+  let final self::Class* #t277 = c in #t277.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
+  c = let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
+  self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
+  self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
+  let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
+  c = let final self::Class* #t290 = c in #t290.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
+  let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
+  c = let final self::Class* #t296 = c in #t296.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t299 = c in #t299 == null ?{self::Class*} null : self::Extension|get#field(#t299) == null ?{self::Class*} self::Extension|set#field(#t299, c) : null;
-  c = let final self::Class* #t300 = c in #t300 == null ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301 == null ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
-  self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305 == null ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306 == null ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
-  self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310 == null ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311 == null ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
-  self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315 == null ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317 == null ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
-  self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321 == null ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323 == null ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
+  let final self::Class* #t299 = c in #t299.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t299).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t299, c) : null;
+  c = let final self::Class* #t300 = c in #t300.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
+  self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
+  self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
+  self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
+  self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
 }
 static method throws(() →* void f) → void {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.weak.transformed.expect
index ce52b2a..6b754ec 100644
--- a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.weak.transformed.expect
@@ -29,7 +29,7 @@
   set field = self::Extension|set#field;
 }
 static method Extension|get#field(lowered final self::Class* #this) → self::Class*
-  return #this.{self::Class::_field}{self::Class*};
+  return #this.{self::Class::_field};
 static method Extension|set#field(lowered final self::Class* #this, self::Class* value) → void {
   #this.{self::Class::_field} = value;
 }
@@ -53,123 +53,123 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1 == null ?{self::Class*} null : self::Extension|get#field(#t1);
-  let final self::Class* #t2 = c in #t2 == null ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
-  c = let final self::Class* #t3 = c in #t3 == null ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
-  let final self::Class* #t6 = c in #t6 == null ?{self::Class*} null : self::Extension|method(#t6);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7 == null ?{self::Class*} null : self::Extension|get#field(#t7)));
-  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9 == null ?{self::Class*} null : self::Extension|get#field(#t9) in #t8 == null ?{self::Class*} null : self::Extension|get#field(#t8);
-  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11 == null ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10 == null ?{self::Class*} null : self::Extension|get#field(#t10));
-  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14 == null ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
-  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16 == null ?{self::Class*} null : self::Extension|get#field(#t16) in #t15 == null ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
-  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18 == null ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17 == null ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21 == null ?{self::Class*} null : self::Extension|get#field(#t21)));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22 == null ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25 == null ?{self::Class*} null : self::Extension|method(#t25)));
-  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28 == null ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
-  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30 == null ?{self::Class*} null : self::Extension|get#field(#t30) in #t29 == null ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
-  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34 == null ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33 == null ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37 == null ?{self::Class*} null : self::Extension|get#field(#t37)));
-  let final self::Class* #t38 = c in #t38 == null ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
-  c = let final self::Class* #t39 = c in #t39 == null ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
-  let final self::Class* #t42 = c in #t42 == null ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
-  c = let final self::Class* #t45 = c in #t45 == null ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
-  let final self::Class* #t50 = c in #t50 == null ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
-  c = let final self::Class* #t51 = c in #t51 == null ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54 == null ?{self::Class*} null : self::Extension|method(#t54)));
-  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57 == null ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58 == null ?{self::Class*} null : self::Extension|method(#t58)));
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59 == null ?{self::Class*} null : self::Extension|get#field(#t59))));
-  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62 == null ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
-  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65 == null ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66 == null ?{self::Class*} null : self::Extension|get#field(#t66))));
-  let final self::Class* #t67 = c in #t67 == null ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t68 = c in #t68 == null ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
-  let final self::Class* #t71 = c in #t71 == null ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
-  c = let final self::Class* #t74 = c in #t74 == null ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
-  let final self::Class* #t79 = c in #t79 == null ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t80 = c in #t80 == null ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83 == null ?{self::Class*} null : self::Extension|method(#t83))));
-  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86 == null ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87 == null ?{self::Class*} null : self::Extension|method(#t87))));
-  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90 == null ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
-  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93 == null ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
-  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98 == null ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103 == null ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106 == null ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109 == null ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
-  let final self::Class* #t110 = c in #t110 == null ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
-  c = let final self::Class* #t113 = c in #t113 == null ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
-  let final self::Class* #t118 = c in #t118 == null ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
-  c = let final self::Class* #t123 = c in #t123 == null ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
-  let final self::Class* #t130 = c in #t130 == null ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
-  c = let final self::Class* #t133 = c in #t133 == null ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
-  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140 == null ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
-  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143 == null ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148 == null ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
-  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153 == null ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
-  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156 == null ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
-  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159 == null ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160 == null ?{self::Class*} null : self::Extension|get#field(#t160))));
-  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163 == null ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
-  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166 == null ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167 == null ?{self::Class*} null : self::Extension|get#field(#t167))));
-  let final self::Class* #t168 = c in #t168 == null ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t169 = c in #t169 == null ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
-  let final self::Class* #t172 = c in #t172 == null ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
-  c = let final self::Class* #t175 = c in #t175 == null ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
-  let final self::Class* #t180 = c in #t180 == null ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t181 = c in #t181 == null ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184 == null ?{self::Class*} null : self::Extension|method(#t184))));
-  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187 == null ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188 == null ?{self::Class*} null : self::Extension|method(#t188))));
-  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190 == null ?{self::Class*} null : self::Extension|method(#t190) in #t189 == null ?{self::Class*} null : self::Extension|method(#t189);
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
+  let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
+  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
+  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
+  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
+  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
+  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
+  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
+  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
+  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
+  let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
+  c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
+  let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
+  c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
+  let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
+  c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
+  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
+  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
+  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
+  let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
+  let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
+  c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
+  let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
+  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
+  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
+  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
+  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
+  let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
+  c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
+  let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
+  c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
+  let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
+  c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
+  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
+  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
+  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
+  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
+  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
+  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
+  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
+  let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
+  let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
+  c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
+  let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
+  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
+  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191 == null ?{self::Class*} null : self::Extension|get#field(#t191), c));
-  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193 == null ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
-  self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198 == null ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202 == null ?{self::Class*} null : self::Extension|get#field(#t202), c)));
-  self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204 == null ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
-  self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209 == null ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
-  self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214 == null ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
-  self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219 == null ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
-  self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224 == null ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
-  self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229 == null ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
-  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233 == null ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
-  self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235 == null ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
-  self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240 == null ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244 == null ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
-  self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246 == null ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
-  self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251 == null ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
-  self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256 == null ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
-  self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261 == null ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
-  self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266 == null ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
-  self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271 == null ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
+  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191), c));
+  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
+  self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t202), c)));
+  self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
+  self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
+  self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
+  self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
+  self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
+  self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
+  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
+  self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
+  self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
+  self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
+  self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
+  self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
+  self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
+  self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
+  self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275 == null ?{self::Class*} null : self::Extension|get#field(#t275), 0));
-  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276 == null ?{self::Class*} null : self::Extension|get#field(#t276)));
-  let final self::Class* #t277 = c in #t277 == null ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
-  c = let final self::Class* #t278 = c in #t278 == null ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
-  self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282 == null ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
-  self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286 == null ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
-  let final self::Class* #t289 = c in #t289 == null ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
-  c = let final self::Class* #t290 = c in #t290 == null ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
-  let final self::Class* #t293 = c in #t293 == null ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
-  c = let final self::Class* #t296 = c in #t296 == null ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
+  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t275), 0));
+  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t276)));
+  let final self::Class* #t277 = c in #t277.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
+  c = let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
+  self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
+  self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
+  let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
+  c = let final self::Class* #t290 = c in #t290.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
+  let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
+  c = let final self::Class* #t296 = c in #t296.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t299 = c in #t299 == null ?{self::Class*} null : self::Extension|get#field(#t299) == null ?{self::Class*} self::Extension|set#field(#t299, c) : null;
-  c = let final self::Class* #t300 = c in #t300 == null ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301 == null ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
-  self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305 == null ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306 == null ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
-  self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310 == null ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311 == null ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
-  self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315 == null ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317 == null ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
-  self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321 == null ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323 == null ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
+  let final self::Class* #t299 = c in #t299.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t299).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t299, c) : null;
+  c = let final self::Class* #t300 = c in #t300.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
+  self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
+  self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
+  self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
+  self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
 }
 static method throws(() →* void f) → void {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic _) {
     return;
diff --git a/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.expect
index 9262574..16c5070 100644
--- a/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.expect
@@ -79,7 +79,7 @@
     : super core::Object::•()
     ;
   method method(core::int? i) → core::int
-    return let final core::int? #t1 = i in #t1 == null ?{core::int} 0 : #t1{core::int};
+    return let final core::int? #t1 = i in #t1.{core::num::==}(null) ?{core::int} 0 : #t1{core::int};
   method genericMethod1<T extends core::Object? = dynamic>(nsm::A::genericMethod1::T% t) → nsm::A::genericMethod1::T%
     return t;
   method genericMethod2<T extends core::Object?>(nsm::A::genericMethod2::T% t) → nsm::A::genericMethod2::T%
diff --git a/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.transformed.expect
index 9262574..16c5070 100644
--- a/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.transformed.expect
@@ -79,7 +79,7 @@
     : super core::Object::•()
     ;
   method method(core::int? i) → core::int
-    return let final core::int? #t1 = i in #t1 == null ?{core::int} 0 : #t1{core::int};
+    return let final core::int? #t1 = i in #t1.{core::num::==}(null) ?{core::int} 0 : #t1{core::int};
   method genericMethod1<T extends core::Object? = dynamic>(nsm::A::genericMethod1::T% t) → nsm::A::genericMethod1::T%
     return t;
   method genericMethod2<T extends core::Object?>(nsm::A::genericMethod2::T% t) → nsm::A::genericMethod2::T%
diff --git a/pkg/front_end/testcases/nnbd_mixed/nullable_extension_on_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/nullable_extension_on_opt_out.dart.weak.expect
index f4ebaa4..da4369b 100644
--- a/pkg/front_end/testcases/nnbd_mixed/nullable_extension_on_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/nullable_extension_on_opt_out.dart.weak.expect
@@ -15,7 +15,7 @@
   self::expect("Lily was here", self::_extension#0|get#text(a));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/nullable_extension_on_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/nullable_extension_on_opt_out.dart.weak.transformed.expect
index f4ebaa4..da4369b 100644
--- a/pkg/front_end/testcases/nnbd_mixed/nullable_extension_on_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/nullable_extension_on_opt_out.dart.weak.transformed.expect
@@ -15,7 +15,7 @@
   self::expect("Lily was here", self::_extension#0|get#text(a));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.expect
index 6bba169..3e54fc2 100644
--- a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.expect
@@ -33,10 +33,10 @@
   late core::int local = 42;
   core::String? s = null;
   dynamic c;
-  let final dynamic #t1 = c in #t1 == null ?{dynamic} null : block {
-    #t1{dynamic}.f;
+  let final dynamic #t1 = c in #t1.{core::Object::==}(null) ?{dynamic} null : block {
+    #t1.f;
   } =>#t1;
-  let final dynamic #t2 = c in #t2 == null ?{dynamic} null : #t2{dynamic}.[](0);
+  let final dynamic #t2 = c in #t2.{core::Object::==}(null) ?{dynamic} null : #t2.[](0);
 }
 
 library;
@@ -172,8 +172,8 @@
   invalid-expression "pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
 Try inserting an identifier before ''.
   c?..f;
-     ^"{dynamic}.f;
-  let final dynamic #t3 = c in #t3 == null ?{dynamic} null : #t3{dynamic}.[](0);
+     ^".f;
+  let final dynamic #t3 = c in #t3.{core::Object::==}(null) ?{dynamic} null : #t3.[](0);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.transformed.expect
index 59b31ed..3924be2 100644
--- a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.transformed.expect
@@ -33,10 +33,10 @@
   late core::int local = 42;
   core::String? s = null;
   dynamic c;
-  let final dynamic #t1 = c in #t1 == null ?{dynamic} null : block {
-    #t1{dynamic}.f;
+  let final dynamic #t1 = c in #t1.{core::Object::==}(null) ?{dynamic} null : block {
+    #t1.f;
   } =>#t1;
-  let final dynamic #t2 = c in #t2 == null ?{dynamic} null : #t2{dynamic}.[](0);
+  let final dynamic #t2 = c in #t2.{core::Object::==}(null) ?{dynamic} null : #t2.[](0);
 }
 
 library;
@@ -172,8 +172,8 @@
   invalid-expression "pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
 Try inserting an identifier before ''.
   c?..f;
-     ^"{dynamic}.f;
-  let final dynamic #t3 = c in #t3 == null ?{dynamic} null : #t3{dynamic}.[](0);
+     ^".f;
+  let final dynamic #t3 = c in #t3.{core::Object::==}(null) ?{dynamic} null : #t3.[](0);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.weak.expect
index c4d17c9..9650648 100644
--- a/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.weak.expect
@@ -9,11 +9,11 @@
     : super core::Object::•()
     ;
   method method(core::String* node, core::Set<core::String*>* set) → core::List<core::String*>*
-    return set.{core::Set::add}(node){(core::String*) →* core::bool*} ?{core::List<core::String*>*} block {
+    return set.{core::Set::add}(node) ?{core::List<core::String*>*} block {
       final core::List<core::String*>* #t1 = <core::String*>[node];
-      final core::Iterable<core::String*>* #t2 = let final core::Iterable<core::String*>* #t3 = let final core::Set<core::String*>* #t4 = this.{self::Class::map}{core::Map<core::String*, core::Set<core::String*>*>*}.{core::Map::[]}(node){(core::Object*) →* core::Set<core::String*>*} in #t4 == null ?{core::Iterable<core::String*>*} null : #t4.{core::Iterable::expand}<core::String*>((core::String* node) → core::List<core::String*>* => this.{self::Class::method}(node, set){(core::String*, core::Set<core::String*>*) →* core::List<core::String*>*}){((core::String*) →* core::Iterable<core::String*>*) →* core::Iterable<core::String*>*} in #t3 == null ?{core::List<core::String*>*} null : #t3.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
-      if(!(#t2 == null))
-        #t1.{core::List::addAll}(#t2){(core::Iterable<core::String*>*) →* void};
+      final core::Iterable<core::String*>* #t2 = let final core::Iterable<core::String*>* #t3 = let final core::Set<core::String*>* #t4 = this.{self::Class::map}.{core::Map::[]}(node) in #t4.{core::Object::==}(null) ?{core::Iterable<core::String*>*} null : #t4.{core::Iterable::expand}<core::String*>((core::String* node) → core::List<core::String*>* => this.{self::Class::method}(node, set)) in #t3.{core::Object::==}(null) ?{core::List<core::String*>*} null : #t3.{core::Iterable::toList}();
+      if(!#t2.{core::Object::==}(null))
+        #t1.{core::List::addAll}{Invariant}(#t2);
     } =>#t1 : <core::String*>[];
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -30,5 +30,5 @@
   if(false)
     new self::Class::•().{self::Class::method}("", block {
       final core::Set<core::String*>* #t5 = col::LinkedHashSet::•<core::String*>();
-    } =>#t5){(core::String*, core::Set<core::String*>*) →* core::List<core::String*>*};
+    } =>#t5);
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.weak.transformed.expect
index eb3b7ce..a873a8e 100644
--- a/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.weak.transformed.expect
@@ -9,11 +9,11 @@
     : super core::Object::•()
     ;
   method method(core::String* node, core::Set<core::String*>* set) → core::List<core::String*>*
-    return set.{core::Set::add}(node){(core::String*) →* core::bool*} ?{core::List<core::String*>*} block {
+    return set.{core::Set::add}(node) ?{core::List<core::String*>*} block {
       final core::List<core::String*>* #t1 = core::_GrowableList::_literal1<core::String*>(node);
-      final core::Iterable<core::String*>* #t2 = let final core::Iterable<core::String*>* #t3 = let final core::Set<core::String*>* #t4 = this.{self::Class::map}{core::Map<core::String*, core::Set<core::String*>*>*}.{core::Map::[]}(node){(core::Object*) →* core::Set<core::String*>*} in #t4 == null ?{core::Iterable<core::String*>*} null : #t4.{core::Iterable::expand}<core::String*>((core::String* node) → core::List<core::String*>* => this.{self::Class::method}(node, set){(core::String*, core::Set<core::String*>*) →* core::List<core::String*>*}){((core::String*) →* core::Iterable<core::String*>*) →* core::Iterable<core::String*>*} in #t3 == null ?{core::List<core::String*>*} null : #t3.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::String*>*};
-      if(!(#t2 == null))
-        #t1.{core::List::addAll}(#t2){(core::Iterable<core::String*>*) →* void};
+      final core::Iterable<core::String*>* #t2 = let final core::Iterable<core::String*>* #t3 = let final core::Set<core::String*>* #t4 = this.{self::Class::map}.{core::Map::[]}(node) in #t4.{core::Object::==}(null) ?{core::Iterable<core::String*>*} null : #t4.{core::Iterable::expand}<core::String*>((core::String* node) → core::List<core::String*>* => this.{self::Class::method}(node, set)) in #t3.{core::Object::==}(null) ?{core::List<core::String*>*} null : #t3.{core::Iterable::toList}();
+      if(!#t2.{core::Object::==}(null))
+        #t1.{core::List::addAll}{Invariant}(#t2);
     } =>#t1 : core::_GrowableList::•<core::String*>(0);
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -30,5 +30,5 @@
   if(false)
     new self::Class::•().{self::Class::method}("", block {
       final core::Set<core::String*>* #t5 = new col::_CompactLinkedHashSet::•<core::String*>();
-    } =>#t5){(core::String*, core::Set<core::String*>*) →* core::List<core::String*>*};
+    } =>#t5);
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.expect
index 90a553a..eea3841 100644
--- a/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.expect
@@ -39,9 +39,9 @@
   abstract member-signature operator /*isLegacy*/ ==(dynamic other) → core::bool*; -> core::Object::==
 }
 static method main() → dynamic {
-  new self::A::•().{self::A::test_default}(i: 1){({required i: core::int?}) → void};
-  new self::A::•().{self::A::test_nondefault}(i: 1){({required i: core::int?}) → void};
-  new self::A::•().{self::A::test_legacy}(i: 1){({required i: core::int?}) → void};
+  new self::A::•().{self::A::test_default}(i: 1);
+  new self::A::•().{self::A::test_nondefault}(i: 1);
+  new self::A::•().{self::A::test_legacy}(i: 1);
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.transformed.expect
index 90a553a..eea3841 100644
--- a/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.transformed.expect
@@ -39,9 +39,9 @@
   abstract member-signature operator /*isLegacy*/ ==(dynamic other) → core::bool*; -> core::Object::==
 }
 static method main() → dynamic {
-  new self::A::•().{self::A::test_default}(i: 1){({required i: core::int?}) → void};
-  new self::A::•().{self::A::test_nondefault}(i: 1){({required i: core::int?}) → void};
-  new self::A::•().{self::A::test_legacy}(i: 1){({required i: core::int?}) → void};
+  new self::A::•().{self::A::test_default}(i: 1);
+  new self::A::•().{self::A::test_nondefault}(i: 1);
+  new self::A::•().{self::A::test_legacy}(i: 1);
 }
 
 library;
diff --git a/pkg/front_end/testcases/nnbd_mixed/type_parameter_nullability.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/type_parameter_nullability.dart.weak.expect
index 184f291..cd3de48 100644
--- a/pkg/front_end/testcases/nnbd_mixed/type_parameter_nullability.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/type_parameter_nullability.dart.weak.expect
@@ -23,13 +23,13 @@
 }
 static method main() → dynamic {
   self::C<core::num, core::num, core::num> c = new self::C::•<core::num, core::num, core::num>();
-  c.{self::C::promoteNullable}(null){(core::num?) → void};
-  c.{self::C::promoteNullable}(0){(core::num?) → void};
-  c.{self::C::nullableAsUndetermined}(null){(core::num?) → void};
-  c.{self::C::nullableAsUndetermined}(0){(core::num?) → void};
+  c.{self::C::promoteNullable}(null);
+  c.{self::C::promoteNullable}(0);
+  c.{self::C::nullableAsUndetermined}(null);
+  c.{self::C::nullableAsUndetermined}(0);
   typ::D<core::num> d = new typ::D::•<core::num>();
-  d.{typ::D::promoteLegacy}(null){(core::num*) →* void};
-  d.{typ::D::promoteLegacy}(0){(core::num*) →* void};
+  d.{typ::D::promoteLegacy}(null);
+  d.{typ::D::promoteLegacy}(0);
 }
 
 library;
@@ -42,7 +42,7 @@
     ;
   method promoteLegacy(generic-covariant-impl typ::D::T* t) → void {
     if(t is core::int*) {
-      let final typ::D::T* & core::int* /* '*' & '*' = '*' */ #t1 = t{typ::D::T* & core::int* /* '*' & '*' = '*' */} in #t1 == null ?{core::bool*} null : #t1.{core::int::isEven}{core::bool*};
+      let final typ::D::T* & core::int* /* '*' & '*' = '*' */ #t1 = t{typ::D::T* & core::int* /* '*' & '*' = '*' */} in #t1.{core::num::==}(null) ?{core::bool*} null : #t1.{core::int::isEven};
     }
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/nnbd_mixed/type_parameter_nullability.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/type_parameter_nullability.dart.weak.transformed.expect
index 184f291..cd3de48 100644
--- a/pkg/front_end/testcases/nnbd_mixed/type_parameter_nullability.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/type_parameter_nullability.dart.weak.transformed.expect
@@ -23,13 +23,13 @@
 }
 static method main() → dynamic {
   self::C<core::num, core::num, core::num> c = new self::C::•<core::num, core::num, core::num>();
-  c.{self::C::promoteNullable}(null){(core::num?) → void};
-  c.{self::C::promoteNullable}(0){(core::num?) → void};
-  c.{self::C::nullableAsUndetermined}(null){(core::num?) → void};
-  c.{self::C::nullableAsUndetermined}(0){(core::num?) → void};
+  c.{self::C::promoteNullable}(null);
+  c.{self::C::promoteNullable}(0);
+  c.{self::C::nullableAsUndetermined}(null);
+  c.{self::C::nullableAsUndetermined}(0);
   typ::D<core::num> d = new typ::D::•<core::num>();
-  d.{typ::D::promoteLegacy}(null){(core::num*) →* void};
-  d.{typ::D::promoteLegacy}(0){(core::num*) →* void};
+  d.{typ::D::promoteLegacy}(null);
+  d.{typ::D::promoteLegacy}(0);
 }
 
 library;
@@ -42,7 +42,7 @@
     ;
   method promoteLegacy(generic-covariant-impl typ::D::T* t) → void {
     if(t is core::int*) {
-      let final typ::D::T* & core::int* /* '*' & '*' = '*' */ #t1 = t{typ::D::T* & core::int* /* '*' & '*' = '*' */} in #t1 == null ?{core::bool*} null : #t1.{core::int::isEven}{core::bool*};
+      let final typ::D::T* & core::int* /* '*' & '*' = '*' */ #t1 = t{typ::D::T* & core::int* /* '*' & '*' = '*' */} in #t1.{core::num::==}(null) ?{core::bool*} null : #t1.{core::int::isEven};
     }
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect
index c26061d..0b77ed6 100644
--- a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect
@@ -77,9 +77,9 @@
     : super self::OptOutSuperClass4::•()
     ;
   method method(core::int* i) → dynamic
-    return let final core::int* #t1 = i in let final core::int* #t2 = super.{self::OptOutSuperClass4::[]}(#t1) in #t2 == null ?{core::int*} let final core::int* #t3 = 42 in let final void #t4 = super.{self::OptOutSuperClass4::[]=}(#t1, #t3) in #t3 : #t2;
+    return let final core::int* #t1 = i in let final core::int* #t2 = super.{self::OptOutSuperClass4::[]}(#t1) in #t2.{core::num::==}(null) ?{core::int*} let final core::int* #t3 = 42 in let final void #t4 = super.{self::OptOutSuperClass4::[]=}(#t1, #t3) in #t3 : #t2;
   method methodForEffect(core::int* i) → dynamic {
-    let final core::int* #t5 = i in super.{self::OptOutSuperClass4::[]}(#t5) == null ?{core::int*} super.{self::OptOutSuperClass4::[]=}(#t5, 42) : null;
+    let final core::int* #t5 = i in super.{self::OptOutSuperClass4::[]}(#t5).{core::num::==}(null) ?{core::int*} super.{self::OptOutSuperClass4::[]=}(#t5, 42) : null;
   }
 }
 class OptOutClass5 extends core::Object {
@@ -103,55 +103,55 @@
   operator []= = self::OptOutExtension|[]=;
 }
 static method isNullOptOut1(core::int* i) → dynamic
-  return i == null;
+  return i.{core::num::==}(null);
 static method isNotNullOptOut1(core::int* i) → dynamic
-  return !(i == null);
+  return !i.{core::num::==}(null);
 static method isNullOptOut2(core::int* i) → dynamic
-  return i == null;
+  return null.{core::Object::==}(i);
 static method isNotNullOptOut2(core::int* i) → dynamic
-  return !(i == null);
+  return !null.{core::Object::==}(i);
 static method ifNullOptOut(core::int* i) → dynamic
-  return let final core::int* #t6 = i in #t6 == null ?{core::int*} 42 : #t6;
+  return let final core::int* #t6 = i in #t6.{core::num::==}(null) ?{core::int*} 42 : #t6;
 static method OptOutExtension|[](lowered final self::OptOutClass1* #this, core::int* index) → core::int*
   return index;
 static method OptOutExtension|[]=(lowered final self::OptOutClass1* #this, core::int* index, core::int* value) → void {}
 static method extensionIfNullOptOut1(core::int* i) → dynamic
-  return let final self::OptOutClass1* #t7 = new self::OptOutClass1::•() in let final core::int* #t8 = i in let final core::int* #t9 = self::OptOutExtension|[](#t7, #t8) in #t9 == null ?{core::int*} let final core::int* #t10 = 42 in let final void #t11 = self::OptOutExtension|[]=(#t7, #t8, #t10) in #t10 : #t9;
+  return let final self::OptOutClass1* #t7 = new self::OptOutClass1::•() in let final core::int* #t8 = i in let final core::int* #t9 = self::OptOutExtension|[](#t7, #t8) in #t9.{core::num::==}(null) ?{core::int*} let final core::int* #t10 = 42 in let final void #t11 = self::OptOutExtension|[]=(#t7, #t8, #t10) in #t10 : #t9;
 static method extensionIfNullOptOut1ForEffect(core::int* i) → dynamic {
-  let final self::OptOutClass1* #t12 = new self::OptOutClass1::•() in let final core::int* #t13 = i in self::OptOutExtension|[](#t12, #t13) == null ?{core::int*} self::OptOutExtension|[]=(#t12, #t13, 42) : null;
+  let final self::OptOutClass1* #t12 = new self::OptOutClass1::•() in let final core::int* #t13 = i in self::OptOutExtension|[](#t12, #t13).{core::num::==}(null) ?{core::int*} self::OptOutExtension|[]=(#t12, #t13, 42) : null;
 }
 static method extensionIfNullOptOut2(core::int* i) → dynamic
-  return let final self::OptOutClass1* #t14 = new self::OptOutClass1::•() in let final core::int* #t15 = i in let final core::int* #t16 = self::OptOutExtension|[](#t14, #t15) in #t16 == null ?{core::int*} let final core::int* #t17 = 42 in let final void #t18 = self::OptOutExtension|[]=(#t14, #t15, #t17) in #t17 : #t16;
+  return let final self::OptOutClass1* #t14 = new self::OptOutClass1::•() in let final core::int* #t15 = i in let final core::int* #t16 = self::OptOutExtension|[](#t14, #t15) in #t16.{core::num::==}(null) ?{core::int*} let final core::int* #t17 = 42 in let final void #t18 = self::OptOutExtension|[]=(#t14, #t15, #t17) in #t17 : #t16;
 static method extensionIfNullOptOut2ForEffect(core::int* i) → dynamic {
-  let final self::OptOutClass1* #t19 = new self::OptOutClass1::•() in let final core::int* #t20 = i in self::OptOutExtension|[](#t19, #t20) == null ?{core::int*} self::OptOutExtension|[]=(#t19, #t20, 42) : null;
+  let final self::OptOutClass1* #t19 = new self::OptOutClass1::•() in let final core::int* #t20 = i in self::OptOutExtension|[](#t19, #t20).{core::num::==}(null) ?{core::int*} self::OptOutExtension|[]=(#t19, #t20, 42) : null;
 }
 static method ifNullIndexSetOptOut(core::int* i) → dynamic
-  return let final self::OptOutClass2* #t21 = new self::OptOutClass2::•() in let final core::int* #t22 = i in let final core::int* #t23 = #t21.{self::OptOutClass2::[]}(#t22){(core::int*) →* core::int*} in #t23 == null ?{core::int*} let final core::int* #t24 = 42 in let final void #t25 = #t21.{self::OptOutClass2::[]=}(#t22, #t24){(core::int*, core::int*) →* void} in #t24 : #t23;
+  return let final self::OptOutClass2* #t21 = new self::OptOutClass2::•() in let final core::int* #t22 = i in let final core::int* #t23 = #t21.{self::OptOutClass2::[]}(#t22) in #t23.{core::num::==}(null) ?{core::int*} let final core::int* #t24 = 42 in let final void #t25 = #t21.{self::OptOutClass2::[]=}(#t22, #t24) in #t24 : #t23;
 static method ifNullIndexSetOptOutForEffect(core::int* i) → dynamic {
-  let final self::OptOutClass2* #t26 = new self::OptOutClass2::•() in let final core::int* #t27 = i in #t26.{self::OptOutClass2::[]}(#t27){(core::int*) →* core::int*} == null ?{core::int*} #t26.{self::OptOutClass2::[]=}(#t27, 42){(core::int*, core::int*) →* void} : null;
+  let final self::OptOutClass2* #t26 = new self::OptOutClass2::•() in let final core::int* #t27 = i in #t26.{self::OptOutClass2::[]}(#t27).{core::num::==}(null) ?{core::int*} #t26.{self::OptOutClass2::[]=}(#t27, 42) : null;
 }
 static method ifNullPropertySetOptOut(core::int* i) → dynamic
-  return let final self::OptOutClass3* #t28 = new self::OptOutClass3::•(i) in let final core::int* #t29 = #t28.{self::OptOutClass3::field}{core::int*} in #t29 == null ?{core::int*} #t28.{self::OptOutClass3::field} = 42 : #t29;
+  return let final self::OptOutClass3* #t28 = new self::OptOutClass3::•(i) in let final core::int* #t29 = #t28.{self::OptOutClass3::field} in #t29.{core::num::==}(null) ?{core::int*} #t28.{self::OptOutClass3::field} = 42 : #t29;
 static method ifNullPropertySetOptOutForEffect(core::int* i) → dynamic {
-  let final self::OptOutClass3* #t30 = new self::OptOutClass3::•(i) in #t30.{self::OptOutClass3::field}{core::int*} == null ?{core::int*} #t30.{self::OptOutClass3::field} = 42 : null;
+  let final self::OptOutClass3* #t30 = new self::OptOutClass3::•(i) in #t30.{self::OptOutClass3::field}.{core::num::==}(null) ?{core::int*} #t30.{self::OptOutClass3::field} = 42 : null;
 }
 static method ifNullSetOptOut(core::int* i) → dynamic
-  return let final core::int* #t31 = i in #t31 == null ?{core::int*} i = 42 : #t31;
+  return let final core::int* #t31 = i in #t31.{core::num::==}(null) ?{core::int*} i = 42 : #t31;
 static method ifNullSetOptOutForEffect(core::int* i) → dynamic {
-  i == null ?{core::int*} i = 42 : null;
+  i.{core::num::==}(null) ?{core::int*} i = 42 : null;
 }
 static method ifNullSuperIndexSetOptOut(core::int* i) → dynamic
-  return new self::OptOutClass4::•().{self::OptOutClass4::method}(i){(core::int*) →* dynamic};
+  return new self::OptOutClass4::•().{self::OptOutClass4::method}(i);
 static method ifNullSuperIndexSetOptOutForEffect(core::int* i) → dynamic {
-  new self::OptOutClass4::•().{self::OptOutClass4::methodForEffect}(i){(core::int*) →* dynamic};
+  new self::OptOutClass4::•().{self::OptOutClass4::methodForEffect}(i);
 }
 static method nullAwareIfNullSetOptOut(core::int* i) → dynamic {
   self::OptOutClass5* o = new self::OptOutClass5::•(i);
-  return let final self::OptOutClass5* #t32 = o in #t32 == null ?{core::int*} null : let final core::int* #t33 = #t32.{self::OptOutClass5::field}{core::int*} in #t33 == null ?{core::int*} #t32.{self::OptOutClass5::field} = 42 : #t33;
+  return let final self::OptOutClass5* #t32 = o in #t32.{self::OptOutClass5::==}(null) ?{core::int*} null : let final core::int* #t33 = #t32.{self::OptOutClass5::field} in #t33.{core::num::==}(null) ?{core::int*} #t32.{self::OptOutClass5::field} = 42 : #t33;
 }
 static method nullAwareIfNullSetOptOutForEffect(core::int* i) → dynamic {
   self::OptOutClass5* o = new self::OptOutClass5::•(i);
-  let final self::OptOutClass5* #t34 = o in #t34 == null ?{core::int*} null : #t34.{self::OptOutClass5::field}{core::int*} == null ?{core::int*} #t34.{self::OptOutClass5::field} = 42 : null;
+  let final self::OptOutClass5* #t34 = o in #t34.{self::OptOutClass5::==}(null) ?{core::int*} null : #t34.{self::OptOutClass5::field}.{core::num::==}(null) ?{core::int*} #t34.{self::OptOutClass5::field} = 42 : null;
 }
 static method isTestOptOut(core::int* i) → dynamic
   return i is core::int*;
@@ -254,7 +254,7 @@
   uns::unnecessaryIfNullAssign(<core::int*>[null], () → core::int* => 42);
   uns::unnecessaryNullAwareAccess(() → core::int* => 0);
   uns::unnecessaryNullAwareAccess(() → Null => null);
-  self::throws(() → dynamic => uns::callReturningNever(() → Null => throw "foo"), (core::Object* e) → core::bool* => e =={core::Object::==}{(core::Object*) →* core::bool*} "foo");
+  self::throws(() → dynamic => uns::callReturningNever(() → Null => throw "foo"), (core::Object* e) → core::bool* => e.{core::Object::==}("foo"));
   () →* Null f = () → Null => null;
   self::throws(() → dynamic => uns::callReturningNever(f));
   uns::switchOnEnum(#C3);
@@ -271,15 +271,15 @@
   self::throws(() → dynamic => uns::switchOnEnumWithFallThrough2(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() →* void f, [(core::Object*) →* core::bool* testException = #C7]) → dynamic {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic e) {
-    if(!(testException == null) && !testException(e){(core::Object*) →* core::bool*}) {
+    if(!testException.{core::Object::==}(null) && !testException.call(e)) {
       throw "Unexpected exception: ${e}";
     }
     core::print(e);
@@ -405,9 +405,9 @@
     : super uns::OptInSuperClass4::•()
     ;
   method method(core::int i) → dynamic
-    return let final core::int #t35 = i in let final core::int #t36 = super.{uns::OptInSuperClass4::[]}(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 42 in let final void #t38 = super.{uns::OptInSuperClass4::[]=}(#t35, #t37) in #t37 : #t36;
+    return let final core::int #t35 = i in let final core::int #t36 = super.{uns::OptInSuperClass4::[]}(#t35) in #t36.{core::num::==}(null) ?{core::int} let final core::int #t37 = 42 in let final void #t38 = super.{uns::OptInSuperClass4::[]=}(#t35, #t37) in #t37 : #t36;
   method methodForEffect(core::int i) → dynamic {
-    let final core::int #t39 = i in super.{uns::OptInSuperClass4::[]}(#t39) == null ?{core::int} super.{uns::OptInSuperClass4::[]=}(#t39, 42) : null;
+    let final core::int #t39 = i in super.{uns::OptInSuperClass4::[]}(#t39).{core::num::==}(null) ?{core::int} super.{uns::OptInSuperClass4::[]=}(#t39, 42) : null;
   }
 }
 class OptInClass5 extends core::Object {
@@ -445,84 +445,84 @@
   operator []= = uns::OptInExtension|[]=;
 }
 static method isNullOptIn1(core::int i) → dynamic
-  return i == null;
+  return i.{core::num::==}(null);
 static method isNotNullOptIn1(core::int i) → dynamic
-  return !(i == null);
+  return !i.{core::num::==}(null);
 static method isNullOptIn2(core::int i) → dynamic
-  return i == null;
+  return null.{core::Object::==}(i);
 static method isNotNullOptIn2(core::int i) → dynamic
-  return !(i == null);
+  return !null.{core::Object::==}(i);
 static method ifNullOptIn(core::int i) → dynamic
-  return let final core::int #t40 = i in #t40 == null ?{core::int} 42 : #t40;
+  return let final core::int #t40 = i in #t40.{core::num::==}(null) ?{core::int} 42 : #t40;
 static method OptInExtension|[](lowered final uns::OptInClass1 #this, core::int index) → core::int
   return index;
 static method OptInExtension|[]=(lowered final uns::OptInClass1 #this, core::int index, core::int value) → void {}
 static method extensionIfNullOptIn1(core::int i) → dynamic
-  return let final uns::OptInClass1 #t41 = new uns::OptInClass1::•() in let final core::int #t42 = i in let final core::int #t43 = uns::OptInExtension|[](#t41, #t42) in #t43 == null ?{core::int} let final core::int #t44 = 42 in let final void #t45 = uns::OptInExtension|[]=(#t41, #t42, #t44) in #t44 : #t43;
+  return let final uns::OptInClass1 #t41 = new uns::OptInClass1::•() in let final core::int #t42 = i in let final core::int #t43 = uns::OptInExtension|[](#t41, #t42) in #t43.{core::num::==}(null) ?{core::int} let final core::int #t44 = 42 in let final void #t45 = uns::OptInExtension|[]=(#t41, #t42, #t44) in #t44 : #t43;
 static method extensionIfNullOptIn1ForEffect(core::int i) → dynamic {
-  let final uns::OptInClass1 #t46 = new uns::OptInClass1::•() in let final core::int #t47 = i in uns::OptInExtension|[](#t46, #t47) == null ?{core::int} uns::OptInExtension|[]=(#t46, #t47, 42) : null;
+  let final uns::OptInClass1 #t46 = new uns::OptInClass1::•() in let final core::int #t47 = i in uns::OptInExtension|[](#t46, #t47).{core::num::==}(null) ?{core::int} uns::OptInExtension|[]=(#t46, #t47, 42) : null;
 }
 static method extensionIfNullOptIn2(core::int i) → dynamic
-  return let final uns::OptInClass1 #t48 = new uns::OptInClass1::•() in let final core::int #t49 = i in let final core::int #t50 = uns::OptInExtension|[](#t48, #t49) in #t50 == null ?{core::int} let final core::int #t51 = 42 in let final void #t52 = uns::OptInExtension|[]=(#t48, #t49, #t51) in #t51 : #t50;
+  return let final uns::OptInClass1 #t48 = new uns::OptInClass1::•() in let final core::int #t49 = i in let final core::int #t50 = uns::OptInExtension|[](#t48, #t49) in #t50.{core::num::==}(null) ?{core::int} let final core::int #t51 = 42 in let final void #t52 = uns::OptInExtension|[]=(#t48, #t49, #t51) in #t51 : #t50;
 static method extensionIfNullOptIn2ForEffect(core::int i) → dynamic {
-  let final uns::OptInClass1 #t53 = new uns::OptInClass1::•() in let final core::int #t54 = i in uns::OptInExtension|[](#t53, #t54) == null ?{core::int} uns::OptInExtension|[]=(#t53, #t54, 42) : null;
+  let final uns::OptInClass1 #t53 = new uns::OptInClass1::•() in let final core::int #t54 = i in uns::OptInExtension|[](#t53, #t54).{core::num::==}(null) ?{core::int} uns::OptInExtension|[]=(#t53, #t54, 42) : null;
 }
 static method ifNullIndexSetOptIn(core::int i) → dynamic
-  return let final uns::OptInClass2 #t55 = new uns::OptInClass2::•() in let final core::int #t56 = i in let final core::int #t57 = #t55.{uns::OptInClass2::[]}(#t56){(core::int) → core::int} in #t57 == null ?{core::int} let final core::int #t58 = 42 in let final void #t59 = #t55.{uns::OptInClass2::[]=}(#t56, #t58){(core::int, core::int) → void} in #t58 : #t57;
+  return let final uns::OptInClass2 #t55 = new uns::OptInClass2::•() in let final core::int #t56 = i in let final core::int #t57 = #t55.{uns::OptInClass2::[]}(#t56) in #t57.{core::num::==}(null) ?{core::int} let final core::int #t58 = 42 in let final void #t59 = #t55.{uns::OptInClass2::[]=}(#t56, #t58) in #t58 : #t57;
 static method ifNullIndexSetOptInForEffect(core::int i) → dynamic {
-  let final uns::OptInClass2 #t60 = new uns::OptInClass2::•() in let final core::int #t61 = i in #t60.{uns::OptInClass2::[]}(#t61){(core::int) → core::int} == null ?{core::int} #t60.{uns::OptInClass2::[]=}(#t61, 42){(core::int, core::int) → void} : null;
+  let final uns::OptInClass2 #t60 = new uns::OptInClass2::•() in let final core::int #t61 = i in #t60.{uns::OptInClass2::[]}(#t61).{core::num::==}(null) ?{core::int} #t60.{uns::OptInClass2::[]=}(#t61, 42) : null;
 }
 static method ifNullPropertySetOptIn(core::int i) → dynamic
-  return let final uns::OptInClass3 #t62 = new uns::OptInClass3::•(i) in let final core::int #t63 = #t62.{uns::OptInClass3::field}{core::int} in #t63 == null ?{core::int} #t62.{uns::OptInClass3::field} = 42 : #t63;
+  return let final uns::OptInClass3 #t62 = new uns::OptInClass3::•(i) in let final core::int #t63 = #t62.{uns::OptInClass3::field} in #t63.{core::num::==}(null) ?{core::int} #t62.{uns::OptInClass3::field} = 42 : #t63;
 static method ifNullPropertySetOptInForEffect(core::int i) → dynamic {
-  let final uns::OptInClass3 #t64 = new uns::OptInClass3::•(i) in #t64.{uns::OptInClass3::field}{core::int} == null ?{core::int} #t64.{uns::OptInClass3::field} = 42 : null;
+  let final uns::OptInClass3 #t64 = new uns::OptInClass3::•(i) in #t64.{uns::OptInClass3::field}.{core::num::==}(null) ?{core::int} #t64.{uns::OptInClass3::field} = 42 : null;
 }
 static method ifNullSetOptIn(core::int i) → dynamic
-  return let final core::int #t65 = i in #t65 == null ?{core::int} i = 42 : #t65;
+  return let final core::int #t65 = i in #t65.{core::num::==}(null) ?{core::int} i = 42 : #t65;
 static method ifNullSetOptInForEffect(core::int i) → dynamic {
-  i == null ?{core::int} i = 42 : null;
+  i.{core::num::==}(null) ?{core::int} i = 42 : null;
 }
 static method ifNullSuperIndexSetOptIn(core::int i) → dynamic
-  return new uns::OptInClass4::•().{uns::OptInClass4::method}(i){(core::int) → dynamic};
+  return new uns::OptInClass4::•().{uns::OptInClass4::method}(i);
 static method ifNullSuperIndexSetOptInForEffect(core::int i) → dynamic {
-  new uns::OptInClass4::•().{uns::OptInClass4::methodForEffect}(i){(core::int) → dynamic};
+  new uns::OptInClass4::•().{uns::OptInClass4::methodForEffect}(i);
 }
 static method nullAwareIfNullSetOptIn(core::int i) → dynamic {
   uns::OptInClass5? o = new uns::OptInClass5::•(i) as{ForNonNullableByDefault} uns::OptInClass5?;
-  return let final uns::OptInClass5? #t66 = o in #t66 == null ?{core::int?} null : let final core::int #t67 = #t66.{uns::OptInClass5::field}{core::int} in #t67 == null ?{core::int} #t66.{uns::OptInClass5::field} = 42 : #t67;
+  return let final uns::OptInClass5? #t66 = o in #t66.{core::Object::==}(null) ?{core::int?} null : let final core::int #t67 = #t66.{uns::OptInClass5::field} in #t67.{core::num::==}(null) ?{core::int} #t66.{uns::OptInClass5::field} = 42 : #t67;
 }
 static method nullAwareIfNullSetOptInForEffect(core::int i) → dynamic {
   uns::OptInClass5? o = new uns::OptInClass5::•(i) as{ForNonNullableByDefault} uns::OptInClass5?;
-  let final uns::OptInClass5? #t68 = o in #t68 == null ?{core::int?} null : #t68.{uns::OptInClass5::field}{core::int} == null ?{core::int} #t68.{uns::OptInClass5::field} = 42 : null;
+  let final uns::OptInClass5? #t68 = o in #t68.{core::Object::==}(null) ?{core::int?} null : #t68.{uns::OptInClass5::field}.{core::num::==}(null) ?{core::int} #t68.{uns::OptInClass5::field} = 42 : null;
 }
 static method isTestOptIn(core::int i) → dynamic
   return i is{ForNonNullableByDefault} core::int;
 static method isNotTestOptIn(core::int i) → dynamic
   return !(i is{ForNonNullableByDefault} core::int);
 static method nullAwareAccess1(core::int i) → dynamic
-  return let final core::int #t69 = i in #t69 == null ?{core::bool?} null : #t69.{core::int::isEven}{core::bool};
+  return let final core::int #t69 = i in #t69.{core::num::==}(null) ?{core::bool?} null : #t69.{core::int::isEven};
 static method nullAwareAccessForEffect1(core::int i) → dynamic {
-  let final core::int #t70 = i in #t70 == null ?{core::bool?} null : #t70.{core::int::isEven}{core::bool};
+  let final core::int #t70 = i in #t70.{core::num::==}(null) ?{core::bool?} null : #t70.{core::int::isEven};
 }
 static method promotionToNever(core::int i) → dynamic {
   if(i is{ForNonNullableByDefault} core::int)
     return;
 }
 static method unnecessaryNullCheck(() → core::int f) → dynamic {
-  if(!(f(){() → core::int} == null))
+  if(!f.call().{core::num::==}(null))
     return;
 }
 static method unnecessaryIfNull(() → core::int f, () → core::int g) → dynamic {
-  return let final core::int #t71 = f(){() → core::int} in #t71 == null ?{core::int} g(){() → core::int} : #t71;
+  return let final core::int #t71 = f.call() in #t71.{core::num::==}(null) ?{core::int} g.call() : #t71;
 }
 static method unnecessaryIfNullAssign(core::List<core::int> x, () → core::int f) → dynamic {
-  let final core::List<core::int> #t72 = x in let final core::int #t73 = 0 in #t72.{core::List::[]}(#t73){(core::int) → core::int} == null ?{core::int} #t72.{core::List::[]=}(#t73, f(){() → core::int}){(core::int, core::int) → void} : null;
+  let final core::List<core::int> #t72 = x in let final core::int #t73 = 0 in #t72.{core::List::[]}(#t73).{core::num::==}(null) ?{core::int} #t72.{core::List::[]=}(#t73, f.call()) : null;
 }
 static method unnecessaryNullAwareAccess(() → core::int f) → dynamic {
-  let final core::int #t74 = f(){() → core::int} in #t74 == null ?{core::int?} null : #t74.{core::int::gcd}(0){(core::int) → core::int};
+  let final core::int #t74 = f.call() in #t74.{core::num::==}(null) ?{core::int?} null : #t74.{core::int::gcd}(0);
 }
 static method callReturningNever(() → Never f) → dynamic {
-  let final Never #t75 = f(){() → Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t75 = f.call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 }
 static method switchOnEnum(uns::E e) → dynamic {
   switch(e) {
diff --git a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect
index 5f9df14..3e7492c 100644
--- a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect
@@ -77,9 +77,9 @@
     : super self::OptOutSuperClass4::•()
     ;
   method method(core::int* i) → dynamic
-    return let final core::int* #t1 = i in let final core::int* #t2 = super.{self::OptOutSuperClass4::[]}(#t1) in #t2 == null ?{core::int*} let final core::int* #t3 = 42 in let final void #t4 = super.{self::OptOutSuperClass4::[]=}(#t1, #t3) in #t3 : #t2;
+    return let final core::int* #t1 = i in let final core::int* #t2 = super.{self::OptOutSuperClass4::[]}(#t1) in #t2.{core::num::==}(null) ?{core::int*} let final core::int* #t3 = 42 in let final void #t4 = super.{self::OptOutSuperClass4::[]=}(#t1, #t3) in #t3 : #t2;
   method methodForEffect(core::int* i) → dynamic {
-    let final core::int* #t5 = i in super.{self::OptOutSuperClass4::[]}(#t5) == null ?{core::int*} super.{self::OptOutSuperClass4::[]=}(#t5, 42) : null;
+    let final core::int* #t5 = i in super.{self::OptOutSuperClass4::[]}(#t5).{core::num::==}(null) ?{core::int*} super.{self::OptOutSuperClass4::[]=}(#t5, 42) : null;
   }
 }
 class OptOutClass5 extends core::Object {
@@ -103,55 +103,55 @@
   operator []= = self::OptOutExtension|[]=;
 }
 static method isNullOptOut1(core::int* i) → dynamic
-  return i == null;
+  return i.{core::num::==}(null);
 static method isNotNullOptOut1(core::int* i) → dynamic
-  return !(i == null);
+  return !i.{core::num::==}(null);
 static method isNullOptOut2(core::int* i) → dynamic
-  return i == null;
+  return null.{core::Object::==}(i);
 static method isNotNullOptOut2(core::int* i) → dynamic
-  return !(i == null);
+  return !null.{core::Object::==}(i);
 static method ifNullOptOut(core::int* i) → dynamic
-  return let final core::int* #t6 = i in #t6 == null ?{core::int*} 42 : #t6;
+  return let final core::int* #t6 = i in #t6.{core::num::==}(null) ?{core::int*} 42 : #t6;
 static method OptOutExtension|[](lowered final self::OptOutClass1* #this, core::int* index) → core::int*
   return index;
 static method OptOutExtension|[]=(lowered final self::OptOutClass1* #this, core::int* index, core::int* value) → void {}
 static method extensionIfNullOptOut1(core::int* i) → dynamic
-  return let final self::OptOutClass1* #t7 = new self::OptOutClass1::•() in let final core::int* #t8 = i in let final core::int* #t9 = self::OptOutExtension|[](#t7, #t8) in #t9 == null ?{core::int*} let final core::int* #t10 = 42 in let final void #t11 = self::OptOutExtension|[]=(#t7, #t8, #t10) in #t10 : #t9;
+  return let final self::OptOutClass1* #t7 = new self::OptOutClass1::•() in let final core::int* #t8 = i in let final core::int* #t9 = self::OptOutExtension|[](#t7, #t8) in #t9.{core::num::==}(null) ?{core::int*} let final core::int* #t10 = 42 in let final void #t11 = self::OptOutExtension|[]=(#t7, #t8, #t10) in #t10 : #t9;
 static method extensionIfNullOptOut1ForEffect(core::int* i) → dynamic {
-  let final self::OptOutClass1* #t12 = new self::OptOutClass1::•() in let final core::int* #t13 = i in self::OptOutExtension|[](#t12, #t13) == null ?{core::int*} self::OptOutExtension|[]=(#t12, #t13, 42) : null;
+  let final self::OptOutClass1* #t12 = new self::OptOutClass1::•() in let final core::int* #t13 = i in self::OptOutExtension|[](#t12, #t13).{core::num::==}(null) ?{core::int*} self::OptOutExtension|[]=(#t12, #t13, 42) : null;
 }
 static method extensionIfNullOptOut2(core::int* i) → dynamic
-  return let final self::OptOutClass1* #t14 = new self::OptOutClass1::•() in let final core::int* #t15 = i in let final core::int* #t16 = self::OptOutExtension|[](#t14, #t15) in #t16 == null ?{core::int*} let final core::int* #t17 = 42 in let final void #t18 = self::OptOutExtension|[]=(#t14, #t15, #t17) in #t17 : #t16;
+  return let final self::OptOutClass1* #t14 = new self::OptOutClass1::•() in let final core::int* #t15 = i in let final core::int* #t16 = self::OptOutExtension|[](#t14, #t15) in #t16.{core::num::==}(null) ?{core::int*} let final core::int* #t17 = 42 in let final void #t18 = self::OptOutExtension|[]=(#t14, #t15, #t17) in #t17 : #t16;
 static method extensionIfNullOptOut2ForEffect(core::int* i) → dynamic {
-  let final self::OptOutClass1* #t19 = new self::OptOutClass1::•() in let final core::int* #t20 = i in self::OptOutExtension|[](#t19, #t20) == null ?{core::int*} self::OptOutExtension|[]=(#t19, #t20, 42) : null;
+  let final self::OptOutClass1* #t19 = new self::OptOutClass1::•() in let final core::int* #t20 = i in self::OptOutExtension|[](#t19, #t20).{core::num::==}(null) ?{core::int*} self::OptOutExtension|[]=(#t19, #t20, 42) : null;
 }
 static method ifNullIndexSetOptOut(core::int* i) → dynamic
-  return let final self::OptOutClass2* #t21 = new self::OptOutClass2::•() in let final core::int* #t22 = i in let final core::int* #t23 = #t21.{self::OptOutClass2::[]}(#t22){(core::int*) →* core::int*} in #t23 == null ?{core::int*} let final core::int* #t24 = 42 in let final void #t25 = #t21.{self::OptOutClass2::[]=}(#t22, #t24){(core::int*, core::int*) →* void} in #t24 : #t23;
+  return let final self::OptOutClass2* #t21 = new self::OptOutClass2::•() in let final core::int* #t22 = i in let final core::int* #t23 = #t21.{self::OptOutClass2::[]}(#t22) in #t23.{core::num::==}(null) ?{core::int*} let final core::int* #t24 = 42 in let final void #t25 = #t21.{self::OptOutClass2::[]=}(#t22, #t24) in #t24 : #t23;
 static method ifNullIndexSetOptOutForEffect(core::int* i) → dynamic {
-  let final self::OptOutClass2* #t26 = new self::OptOutClass2::•() in let final core::int* #t27 = i in #t26.{self::OptOutClass2::[]}(#t27){(core::int*) →* core::int*} == null ?{core::int*} #t26.{self::OptOutClass2::[]=}(#t27, 42){(core::int*, core::int*) →* void} : null;
+  let final self::OptOutClass2* #t26 = new self::OptOutClass2::•() in let final core::int* #t27 = i in #t26.{self::OptOutClass2::[]}(#t27).{core::num::==}(null) ?{core::int*} #t26.{self::OptOutClass2::[]=}(#t27, 42) : null;
 }
 static method ifNullPropertySetOptOut(core::int* i) → dynamic
-  return let final self::OptOutClass3* #t28 = new self::OptOutClass3::•(i) in let final core::int* #t29 = #t28.{self::OptOutClass3::field}{core::int*} in #t29 == null ?{core::int*} #t28.{self::OptOutClass3::field} = 42 : #t29;
+  return let final self::OptOutClass3* #t28 = new self::OptOutClass3::•(i) in let final core::int* #t29 = #t28.{self::OptOutClass3::field} in #t29.{core::num::==}(null) ?{core::int*} #t28.{self::OptOutClass3::field} = 42 : #t29;
 static method ifNullPropertySetOptOutForEffect(core::int* i) → dynamic {
-  let final self::OptOutClass3* #t30 = new self::OptOutClass3::•(i) in #t30.{self::OptOutClass3::field}{core::int*} == null ?{core::int*} #t30.{self::OptOutClass3::field} = 42 : null;
+  let final self::OptOutClass3* #t30 = new self::OptOutClass3::•(i) in #t30.{self::OptOutClass3::field}.{core::num::==}(null) ?{core::int*} #t30.{self::OptOutClass3::field} = 42 : null;
 }
 static method ifNullSetOptOut(core::int* i) → dynamic
-  return let final core::int* #t31 = i in #t31 == null ?{core::int*} i = 42 : #t31;
+  return let final core::int* #t31 = i in #t31.{core::num::==}(null) ?{core::int*} i = 42 : #t31;
 static method ifNullSetOptOutForEffect(core::int* i) → dynamic {
-  i == null ?{core::int*} i = 42 : null;
+  i.{core::num::==}(null) ?{core::int*} i = 42 : null;
 }
 static method ifNullSuperIndexSetOptOut(core::int* i) → dynamic
-  return new self::OptOutClass4::•().{self::OptOutClass4::method}(i){(core::int*) →* dynamic};
+  return new self::OptOutClass4::•().{self::OptOutClass4::method}(i);
 static method ifNullSuperIndexSetOptOutForEffect(core::int* i) → dynamic {
-  new self::OptOutClass4::•().{self::OptOutClass4::methodForEffect}(i){(core::int*) →* dynamic};
+  new self::OptOutClass4::•().{self::OptOutClass4::methodForEffect}(i);
 }
 static method nullAwareIfNullSetOptOut(core::int* i) → dynamic {
   self::OptOutClass5* o = new self::OptOutClass5::•(i);
-  return let final self::OptOutClass5* #t32 = o in #t32 == null ?{core::int*} null : let final core::int* #t33 = #t32.{self::OptOutClass5::field}{core::int*} in #t33 == null ?{core::int*} #t32.{self::OptOutClass5::field} = 42 : #t33;
+  return let final self::OptOutClass5* #t32 = o in #t32.{self::OptOutClass5::==}(null) ?{core::int*} null : let final core::int* #t33 = #t32.{self::OptOutClass5::field} in #t33.{core::num::==}(null) ?{core::int*} #t32.{self::OptOutClass5::field} = 42 : #t33;
 }
 static method nullAwareIfNullSetOptOutForEffect(core::int* i) → dynamic {
   self::OptOutClass5* o = new self::OptOutClass5::•(i);
-  let final self::OptOutClass5* #t34 = o in #t34 == null ?{core::int*} null : #t34.{self::OptOutClass5::field}{core::int*} == null ?{core::int*} #t34.{self::OptOutClass5::field} = 42 : null;
+  let final self::OptOutClass5* #t34 = o in #t34.{self::OptOutClass5::==}(null) ?{core::int*} null : #t34.{self::OptOutClass5::field}.{core::num::==}(null) ?{core::int*} #t34.{self::OptOutClass5::field} = 42 : null;
 }
 static method isTestOptOut(core::int* i) → dynamic
   return i is core::int*;
@@ -254,7 +254,7 @@
   uns::unnecessaryIfNullAssign(core::_GrowableList::_literal1<core::int*>(null), () → core::int* => 42);
   uns::unnecessaryNullAwareAccess(() → core::int* => 0);
   uns::unnecessaryNullAwareAccess(() → Null => null);
-  self::throws(() → dynamic => uns::callReturningNever(() → Null => throw "foo"), (core::Object* e) → core::bool* => e =={core::Object::==}{(core::Object*) →* core::bool*} "foo");
+  self::throws(() → dynamic => uns::callReturningNever(() → Null => throw "foo"), (core::Object* e) → core::bool* => e.{core::Object::==}("foo"));
   () →* Null f = () → Null => null;
   self::throws(() → dynamic => uns::callReturningNever(f));
   uns::switchOnEnum(#C3);
@@ -271,15 +271,15 @@
   self::throws(() → dynamic => uns::switchOnEnumWithFallThrough2(null));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() →* void f, [(core::Object*) →* core::bool* testException = #C7]) → dynamic {
   try {
-    f(){() →* void};
+    f.call();
   }
   on dynamic catch(final dynamic e) {
-    if(!(testException == null) && !testException(e){(core::Object*) →* core::bool*}) {
+    if(!testException.{core::Object::==}(null) && !testException.call(e)) {
       throw "Unexpected exception: ${e}";
     }
     core::print(e);
@@ -405,9 +405,9 @@
     : super uns::OptInSuperClass4::•()
     ;
   method method(core::int i) → dynamic
-    return let final core::int #t35 = i in let final core::int #t36 = super.{uns::OptInSuperClass4::[]}(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 42 in let final void #t38 = super.{uns::OptInSuperClass4::[]=}(#t35, #t37) in #t37 : #t36;
+    return let final core::int #t35 = i in let final core::int #t36 = super.{uns::OptInSuperClass4::[]}(#t35) in #t36.{core::num::==}(null) ?{core::int} let final core::int #t37 = 42 in let final void #t38 = super.{uns::OptInSuperClass4::[]=}(#t35, #t37) in #t37 : #t36;
   method methodForEffect(core::int i) → dynamic {
-    let final core::int #t39 = i in super.{uns::OptInSuperClass4::[]}(#t39) == null ?{core::int} super.{uns::OptInSuperClass4::[]=}(#t39, 42) : null;
+    let final core::int #t39 = i in super.{uns::OptInSuperClass4::[]}(#t39).{core::num::==}(null) ?{core::int} super.{uns::OptInSuperClass4::[]=}(#t39, 42) : null;
   }
 }
 class OptInClass5 extends core::Object {
@@ -445,84 +445,84 @@
   operator []= = uns::OptInExtension|[]=;
 }
 static method isNullOptIn1(core::int i) → dynamic
-  return i == null;
+  return i.{core::num::==}(null);
 static method isNotNullOptIn1(core::int i) → dynamic
-  return !(i == null);
+  return !i.{core::num::==}(null);
 static method isNullOptIn2(core::int i) → dynamic
-  return i == null;
+  return null.{core::Object::==}(i);
 static method isNotNullOptIn2(core::int i) → dynamic
-  return !(i == null);
+  return !null.{core::Object::==}(i);
 static method ifNullOptIn(core::int i) → dynamic
-  return let final core::int #t40 = i in #t40 == null ?{core::int} 42 : #t40;
+  return let final core::int #t40 = i in #t40.{core::num::==}(null) ?{core::int} 42 : #t40;
 static method OptInExtension|[](lowered final uns::OptInClass1 #this, core::int index) → core::int
   return index;
 static method OptInExtension|[]=(lowered final uns::OptInClass1 #this, core::int index, core::int value) → void {}
 static method extensionIfNullOptIn1(core::int i) → dynamic
-  return let final uns::OptInClass1 #t41 = new uns::OptInClass1::•() in let final core::int #t42 = i in let final core::int #t43 = uns::OptInExtension|[](#t41, #t42) in #t43 == null ?{core::int} let final core::int #t44 = 42 in let final void #t45 = uns::OptInExtension|[]=(#t41, #t42, #t44) in #t44 : #t43;
+  return let final uns::OptInClass1 #t41 = new uns::OptInClass1::•() in let final core::int #t42 = i in let final core::int #t43 = uns::OptInExtension|[](#t41, #t42) in #t43.{core::num::==}(null) ?{core::int} let final core::int #t44 = 42 in let final void #t45 = uns::OptInExtension|[]=(#t41, #t42, #t44) in #t44 : #t43;
 static method extensionIfNullOptIn1ForEffect(core::int i) → dynamic {
-  let final uns::OptInClass1 #t46 = new uns::OptInClass1::•() in let final core::int #t47 = i in uns::OptInExtension|[](#t46, #t47) == null ?{core::int} uns::OptInExtension|[]=(#t46, #t47, 42) : null;
+  let final uns::OptInClass1 #t46 = new uns::OptInClass1::•() in let final core::int #t47 = i in uns::OptInExtension|[](#t46, #t47).{core::num::==}(null) ?{core::int} uns::OptInExtension|[]=(#t46, #t47, 42) : null;
 }
 static method extensionIfNullOptIn2(core::int i) → dynamic
-  return let final uns::OptInClass1 #t48 = new uns::OptInClass1::•() in let final core::int #t49 = i in let final core::int #t50 = uns::OptInExtension|[](#t48, #t49) in #t50 == null ?{core::int} let final core::int #t51 = 42 in let final void #t52 = uns::OptInExtension|[]=(#t48, #t49, #t51) in #t51 : #t50;
+  return let final uns::OptInClass1 #t48 = new uns::OptInClass1::•() in let final core::int #t49 = i in let final core::int #t50 = uns::OptInExtension|[](#t48, #t49) in #t50.{core::num::==}(null) ?{core::int} let final core::int #t51 = 42 in let final void #t52 = uns::OptInExtension|[]=(#t48, #t49, #t51) in #t51 : #t50;
 static method extensionIfNullOptIn2ForEffect(core::int i) → dynamic {
-  let final uns::OptInClass1 #t53 = new uns::OptInClass1::•() in let final core::int #t54 = i in uns::OptInExtension|[](#t53, #t54) == null ?{core::int} uns::OptInExtension|[]=(#t53, #t54, 42) : null;
+  let final uns::OptInClass1 #t53 = new uns::OptInClass1::•() in let final core::int #t54 = i in uns::OptInExtension|[](#t53, #t54).{core::num::==}(null) ?{core::int} uns::OptInExtension|[]=(#t53, #t54, 42) : null;
 }
 static method ifNullIndexSetOptIn(core::int i) → dynamic
-  return let final uns::OptInClass2 #t55 = new uns::OptInClass2::•() in let final core::int #t56 = i in let final core::int #t57 = #t55.{uns::OptInClass2::[]}(#t56){(core::int) → core::int} in #t57 == null ?{core::int} let final core::int #t58 = 42 in let final void #t59 = #t55.{uns::OptInClass2::[]=}(#t56, #t58){(core::int, core::int) → void} in #t58 : #t57;
+  return let final uns::OptInClass2 #t55 = new uns::OptInClass2::•() in let final core::int #t56 = i in let final core::int #t57 = #t55.{uns::OptInClass2::[]}(#t56) in #t57.{core::num::==}(null) ?{core::int} let final core::int #t58 = 42 in let final void #t59 = #t55.{uns::OptInClass2::[]=}(#t56, #t58) in #t58 : #t57;
 static method ifNullIndexSetOptInForEffect(core::int i) → dynamic {
-  let final uns::OptInClass2 #t60 = new uns::OptInClass2::•() in let final core::int #t61 = i in #t60.{uns::OptInClass2::[]}(#t61){(core::int) → core::int} == null ?{core::int} #t60.{uns::OptInClass2::[]=}(#t61, 42){(core::int, core::int) → void} : null;
+  let final uns::OptInClass2 #t60 = new uns::OptInClass2::•() in let final core::int #t61 = i in #t60.{uns::OptInClass2::[]}(#t61).{core::num::==}(null) ?{core::int} #t60.{uns::OptInClass2::[]=}(#t61, 42) : null;
 }
 static method ifNullPropertySetOptIn(core::int i) → dynamic
-  return let final uns::OptInClass3 #t62 = new uns::OptInClass3::•(i) in let final core::int #t63 = #t62.{uns::OptInClass3::field}{core::int} in #t63 == null ?{core::int} #t62.{uns::OptInClass3::field} = 42 : #t63;
+  return let final uns::OptInClass3 #t62 = new uns::OptInClass3::•(i) in let final core::int #t63 = #t62.{uns::OptInClass3::field} in #t63.{core::num::==}(null) ?{core::int} #t62.{uns::OptInClass3::field} = 42 : #t63;
 static method ifNullPropertySetOptInForEffect(core::int i) → dynamic {
-  let final uns::OptInClass3 #t64 = new uns::OptInClass3::•(i) in #t64.{uns::OptInClass3::field}{core::int} == null ?{core::int} #t64.{uns::OptInClass3::field} = 42 : null;
+  let final uns::OptInClass3 #t64 = new uns::OptInClass3::•(i) in #t64.{uns::OptInClass3::field}.{core::num::==}(null) ?{core::int} #t64.{uns::OptInClass3::field} = 42 : null;
 }
 static method ifNullSetOptIn(core::int i) → dynamic
-  return let final core::int #t65 = i in #t65 == null ?{core::int} i = 42 : #t65;
+  return let final core::int #t65 = i in #t65.{core::num::==}(null) ?{core::int} i = 42 : #t65;
 static method ifNullSetOptInForEffect(core::int i) → dynamic {
-  i == null ?{core::int} i = 42 : null;
+  i.{core::num::==}(null) ?{core::int} i = 42 : null;
 }
 static method ifNullSuperIndexSetOptIn(core::int i) → dynamic
-  return new uns::OptInClass4::•().{uns::OptInClass4::method}(i){(core::int) → dynamic};
+  return new uns::OptInClass4::•().{uns::OptInClass4::method}(i);
 static method ifNullSuperIndexSetOptInForEffect(core::int i) → dynamic {
-  new uns::OptInClass4::•().{uns::OptInClass4::methodForEffect}(i){(core::int) → dynamic};
+  new uns::OptInClass4::•().{uns::OptInClass4::methodForEffect}(i);
 }
 static method nullAwareIfNullSetOptIn(core::int i) → dynamic {
   uns::OptInClass5? o = new uns::OptInClass5::•(i);
-  return let final uns::OptInClass5? #t66 = o in #t66 == null ?{core::int?} null : let final core::int #t67 = #t66.{uns::OptInClass5::field}{core::int} in #t67 == null ?{core::int} #t66.{uns::OptInClass5::field} = 42 : #t67;
+  return let final uns::OptInClass5? #t66 = o in #t66.{core::Object::==}(null) ?{core::int?} null : let final core::int #t67 = #t66.{uns::OptInClass5::field} in #t67.{core::num::==}(null) ?{core::int} #t66.{uns::OptInClass5::field} = 42 : #t67;
 }
 static method nullAwareIfNullSetOptInForEffect(core::int i) → dynamic {
   uns::OptInClass5? o = new uns::OptInClass5::•(i);
-  let final uns::OptInClass5? #t68 = o in #t68 == null ?{core::int?} null : #t68.{uns::OptInClass5::field}{core::int} == null ?{core::int} #t68.{uns::OptInClass5::field} = 42 : null;
+  let final uns::OptInClass5? #t68 = o in #t68.{core::Object::==}(null) ?{core::int?} null : #t68.{uns::OptInClass5::field}.{core::num::==}(null) ?{core::int} #t68.{uns::OptInClass5::field} = 42 : null;
 }
 static method isTestOptIn(core::int i) → dynamic
   return i is{ForNonNullableByDefault} core::int;
 static method isNotTestOptIn(core::int i) → dynamic
   return !(i is{ForNonNullableByDefault} core::int);
 static method nullAwareAccess1(core::int i) → dynamic
-  return let final core::int #t69 = i in #t69 == null ?{core::bool?} null : #t69.{core::int::isEven}{core::bool};
+  return let final core::int #t69 = i in #t69.{core::num::==}(null) ?{core::bool?} null : #t69.{core::int::isEven};
 static method nullAwareAccessForEffect1(core::int i) → dynamic {
-  let final core::int #t70 = i in #t70 == null ?{core::bool?} null : #t70.{core::int::isEven}{core::bool};
+  let final core::int #t70 = i in #t70.{core::num::==}(null) ?{core::bool?} null : #t70.{core::int::isEven};
 }
 static method promotionToNever(core::int i) → dynamic {
   if(i is{ForNonNullableByDefault} core::int)
     return;
 }
 static method unnecessaryNullCheck(() → core::int f) → dynamic {
-  if(!(f(){() → core::int} == null))
+  if(!f.call().{core::num::==}(null))
     return;
 }
 static method unnecessaryIfNull(() → core::int f, () → core::int g) → dynamic {
-  return let final core::int #t71 = f(){() → core::int} in #t71 == null ?{core::int} g(){() → core::int} : #t71;
+  return let final core::int #t71 = f.call() in #t71.{core::num::==}(null) ?{core::int} g.call() : #t71;
 }
 static method unnecessaryIfNullAssign(core::List<core::int> x, () → core::int f) → dynamic {
-  let final core::List<core::int> #t72 = x in let final core::int #t73 = 0 in #t72.{core::List::[]}(#t73){(core::int) → core::int} == null ?{core::int} #t72.{core::List::[]=}(#t73, f(){() → core::int}){(core::int, core::int) → void} : null;
+  let final core::List<core::int> #t72 = x in let final core::int #t73 = 0 in #t72.{core::List::[]}(#t73).{core::num::==}(null) ?{core::int} #t72.{core::List::[]=}(#t73, f.call()) : null;
 }
 static method unnecessaryNullAwareAccess(() → core::int f) → dynamic {
-  let final core::int #t74 = f(){() → core::int} in #t74 == null ?{core::int?} null : #t74.{core::int::gcd}(0){(core::int) → core::int};
+  let final core::int #t74 = f.call() in #t74.{core::num::==}(null) ?{core::int?} null : #t74.{core::int::gcd}(0);
 }
 static method callReturningNever(() → Never f) → dynamic {
-  let final Never #t75 = f(){() → Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+  let final Never #t75 = f.call() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
 }
 static method switchOnEnum(uns::E e) → dynamic {
   switch(e) {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.expect
index ceddad8..99db49e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.expect
@@ -34,9 +34,9 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} 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))){(core::Invocation*) →* dynamic};
+    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)));
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -45,7 +45,7 @@
 }
 static method expectTypeError(() →* dynamic callback) → void {
   try {
-    callback();
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
@@ -53,8 +53,8 @@
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
-  self::expectTypeError(() → core::int* => a.{self::I::foo}{core::int*});
-  self::expectTypeError(() → core::String* => (a as dynamic){dynamic}.foo = "bar");
+  self::expectTypeError(() → core::int* => a.{self::I::foo});
+  self::expectTypeError(() → core::String* => (a as dynamic).foo = "bar");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.outline.expect
index 7186093..6a3fcc1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.outline.expect
@@ -32,9 +32,9 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get foo() → 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} core::int*;
   no-such-method-forwarder set foo(core::int* value) → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.transformed.expect
index ca58208..168474b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.transformed.expect
@@ -34,9 +34,9 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} 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>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -45,7 +45,7 @@
 }
 static method expectTypeError(() →* dynamic callback) → void {
   try {
-    callback();
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
@@ -53,8 +53,8 @@
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
-  self::expectTypeError(() → core::int* => a.{self::I::foo}{core::int*});
-  self::expectTypeError(() → core::String* => (a as dynamic){dynamic}.foo = "bar");
+  self::expectTypeError(() → core::int* => a.{self::I::foo});
+  self::expectTypeError(() → core::String* => (a as dynamic).foo = "bar");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.expect
index 61e3a07..ffcf974 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.expect
@@ -23,7 +23,7 @@
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation* i) → dynamic {
-    self::count = self::count.{core::num::+}(1){(core::num*) →* core::int*};
+    self::count = self::count.{core::num::+}(1);
     return null;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -36,9 +36,9 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} 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))){(core::Invocation*) →* dynamic};
+    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)));
 }
 abstract class _C&Object&B = core::Object with self::B /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&B*
@@ -67,11 +67,11 @@
 static field core::int* count = 0;
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  if(!(c.{self::C::foo}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 42)) {
+  if(!c.{self::C::foo}.{core::num::==}(42)) {
     throw "Value mismatch: c.foo != 42.";
   }
   c.{self::C::foo} = 43;
-  if(!(self::count =={core::num::==}{(core::Object*) →* core::bool*} 0)) {
+  if(!self::count.{core::num::==}(0)) {
     throw "Value mismatch: count != 0";
   }
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.outline.expect
index 2893e4f..7468edb 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.outline.expect
@@ -32,9 +32,9 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get foo() → 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} core::int*;
   no-such-method-forwarder set foo(core::int* value) → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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 /*isAnonymousMixin,hasConstConstructor*/  {
   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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.transformed.expect
index 3e76d00..4609d1a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation* i) → dynamic {
-    self::count = self::count.{core::num::+}(1){(core::num*) →* core::int*};
+    self::count = self::count.{core::num::+}(1);
     return null;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -36,16 +36,16 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} 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>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 abstract class _C&Object&B extends core::Object implements self::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&B*
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation* i) → dynamic {
-    self::count = self::count.{core::num::+}(1){(core::num*) →* core::int*};
+    self::count = self::count.{core::num::+}(1);
     return null;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -69,11 +69,11 @@
 static field core::int* count = 0;
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  if(!(c.{self::C::foo}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 42)) {
+  if(!c.{self::C::foo}.{core::num::==}(42)) {
     throw "Value mismatch: c.foo != 42.";
   }
   c.{self::C::foo} = 43;
-  if(!(self::count =={core::num::==}{(core::Object*) →* core::bool*} 0)) {
+  if(!self::count.{core::num::==}(0)) {
     throw "Value mismatch: count != 0";
   }
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.expect
index a469e6a..1d02227 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.expect
@@ -41,7 +41,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))){(core::Invocation*) →* dynamic};
+    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)));
 }
 abstract class D extends core::Object implements self::A {
   synthetic constructor •() → self::D*
@@ -65,11 +65,11 @@
     : 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
 }
 static method expectTypeError(() →* dynamic callback) → void {
   try {
-    callback();
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
@@ -77,9 +77,9 @@
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  self::expectTypeError(() → core::String* => (c as dynamic){dynamic}.foo = "bar");
+  self::expectTypeError(() → core::String* => (c as dynamic).foo = "bar");
   self::E* e = new self::E::•();
-  self::expectTypeError(() → core::int* => e.{self::A::foo}{core::int*});
+  self::expectTypeError(() → core::int* => e.{self::A::foo});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.outline.expect
index 1dc0f42..8db6c2b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.outline.expect
@@ -38,7 +38,7 @@
   synthetic constructor •() → self::C*
     ;
   no-such-method-forwarder set foo(core::int* value) → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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*
@@ -61,7 +61,7 @@
   synthetic constructor •() → self::E*
     ;
   no-such-method-forwarder get foo() → 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} core::int*;
 }
 static method expectTypeError(() →* dynamic callback) → void
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.transformed.expect
index 1ffd6b0..3640888 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.transformed.expect
@@ -41,7 +41,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>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 abstract class D extends core::Object implements self::A {
   synthetic constructor •() → self::D*
@@ -65,11 +65,11 @@
     : 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
 }
 static method expectTypeError(() →* dynamic callback) → void {
   try {
-    callback();
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
@@ -77,9 +77,9 @@
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  self::expectTypeError(() → core::String* => (c as dynamic){dynamic}.foo = "bar");
+  self::expectTypeError(() → core::String* => (c as dynamic).foo = "bar");
   self::E* e = new self::E::•();
-  self::expectTypeError(() → core::int* => e.{self::A::foo}{core::int*});
+  self::expectTypeError(() → core::int* => e.{self::A::foo});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.expect
index 4e57e717d..94eb66f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.expect
@@ -34,13 +34,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} core::List<core::int*>*;
   no-such-method-forwarder set foo(generic-covariant-impl 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))){(core::Invocation*) →* dynamic};
+    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)));
 }
 static method expectTypeError(() →* dynamic callback) → void {
   try {
-    callback();
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
@@ -48,8 +48,8 @@
 }
 static method main() → dynamic {
   self::B* b = new self::B::•();
-  self::expectTypeError(() → core::List<core::int*>* => b.{self::A::foo}{core::List<core::int*>*});
-  self::expectTypeError(() → core::List<dynamic>* => (b as dynamic){dynamic}.foo = <dynamic>[]);
+  self::expectTypeError(() → core::List<core::int*>* => b.{self::A::foo});
+  self::expectTypeError(() → core::List<dynamic>* => (b as dynamic).foo = <dynamic>[]);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.outline.expect
index 34e2e03..5a8b1a0 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.outline.expect
@@ -32,9 +32,9 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get foo() → 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} core::List<core::int*>*;
   no-such-method-forwarder set foo(generic-covariant-impl core::List<core::int*>* value) → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.transformed.expect
index fc26de9..ba39cc0 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.transformed.expect
@@ -34,13 +34,13 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} core::List<core::int*>*;
   no-such-method-forwarder set foo(generic-covariant-impl core::List<core::int*>* value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method expectTypeError(() →* dynamic callback) → void {
   try {
-    callback();
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
@@ -48,8 +48,8 @@
 }
 static method main() → dynamic {
   self::B* b = new self::B::•();
-  self::expectTypeError(() → core::List<core::int*>* => b.{self::A::foo}{core::List<core::int*>*});
-  self::expectTypeError(() → core::List<dynamic>* => (b as dynamic){dynamic}.foo = core::_GrowableList::•<dynamic>(0));
+  self::expectTypeError(() → core::List<core::int*>* => b.{self::A::foo});
+  self::expectTypeError(() → core::List<dynamic>* => (b as dynamic).foo = core::_GrowableList::•<dynamic>(0));
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.expect
index f520300..2182bea 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.expect
@@ -40,7 +40,7 @@
     : 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))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.outline.expect
index 63fd5b6..ac147ed 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.outline.expect
@@ -36,7 +36,7 @@
   synthetic constructor •() → self::B*
     ;
   no-such-method-forwarder method foo() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.transformed.expect
index f520300..2182bea 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.transformed.expect
@@ -40,7 +40,7 @@
     : 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))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.expect
index dc49492..9b5b585 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.expect
@@ -7,11 +7,11 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder set push(core::int* x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder set float(covariant core::int* x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   method noSuchMethod(core::Invocation* i) → dynamic
-    return core::print("${this.{self::Base::runtimeType}{core::Type*}}: ${i.{core::Invocation::positionalArguments}{core::List<dynamic>*}.{core::List::[]}(0){(core::int*) →* dynamic}}");
+    return core::print("${this.{self::Base::runtimeType}}: ${i.{core::Invocation::positionalArguments}.{core::List::[]}(0)}");
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -32,9 +32,9 @@
     : super self::Base::•()
     ;
   no-such-method-forwarder set push(core::num* x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder set float(covariant core::num* x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   core::List<self::Base*>* list = <self::Base*>[new self::Me::•(), new self::You::•()];
@@ -46,14 +46,14 @@
       baba{self::You*}.{self::You::float} = 4.5;
     }
     try {
-      (baba as dynamic){dynamic}.push = 6.7;
+      (baba as dynamic).push = 6.7;
       baba is self::You* || (throw "Fail!");
     }
     on core::TypeError* catch(no-exception-var) {
       baba is self::Me* || (throw "Fail!");
     }
     try {
-      (baba as dynamic){dynamic}.float = 8.9;
+      (baba as dynamic).float = 8.9;
       baba is self::You* || (throw "Fail!");
     }
     on core::TypeError* catch(no-exception-var) {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.outline.expect
index f455c15..a18f420 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.outline.expect
@@ -6,9 +6,9 @@
   synthetic constructor •() → self::Base*
     ;
   no-such-method-forwarder set push(core::int* x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#push=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#push=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder set float(covariant core::int* x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#float=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#float=, 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
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -29,9 +29,9 @@
   synthetic constructor •() → self::You*
     ;
   no-such-method-forwarder set push(core::num* x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#push=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#push=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder set float(covariant core::num* x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#float=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#float=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), 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_override_abstract_different_type.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.transformed.expect
index 61aa1eb..ca335bc 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.transformed.expect
@@ -7,11 +7,11 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder set push(core::int* x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder set float(covariant core::int* x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   method noSuchMethod(core::Invocation* i) → dynamic
-    return core::print("${this.{self::Base::runtimeType}{core::Type*}}: ${i.{core::Invocation::positionalArguments}{core::List<dynamic>*}.{core::List::[]}(0){(core::int*) →* dynamic}}");
+    return core::print("${this.{self::Base::runtimeType}}: ${i.{core::Invocation::positionalArguments}.{core::List::[]}(0)}");
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -32,9 +32,9 @@
     : super self::Base::•()
     ;
   no-such-method-forwarder set push(core::num* x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   no-such-method-forwarder set float(covariant core::num* x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   core::List<self::Base*>* list = core::_GrowableList::_literal2<self::Base*>(new self::Me::•(), new self::You::•());
@@ -50,14 +50,14 @@
           baba{self::You*}.{self::You::float} = 4.5;
         }
         try {
-          (baba as dynamic){dynamic}.push = 6.7;
+          (baba as dynamic).push = 6.7;
           baba is self::You* || (throw "Fail!");
         }
         on core::TypeError* catch(no-exception-var) {
           baba is self::Me* || (throw "Fail!");
         }
         try {
-          (baba as dynamic){dynamic}.float = 8.9;
+          (baba as dynamic).float = 8.9;
           baba is self::You* || (throw "Fail!");
         }
         on core::TypeError* catch(no-exception-var) {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.expect
index 0cf425b..b32f8e5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.expect
@@ -24,8 +24,8 @@
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic {
-    dynamic arg = invocation.{core::Invocation::positionalArguments}{core::List<dynamic>*}.{core::List::[]}(0){(core::int*) →* dynamic};
-    return arg is core::String* && arg{core::String*}.{core::String::isNotEmpty}{core::bool*};
+    dynamic arg = invocation.{core::Invocation::positionalArguments}.{core::List::[]}(0);
+    return arg is core::String* && arg{core::String*}.{core::String::isNotEmpty};
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -37,7 +37,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method eatFood(core::String* food) → core::bool*
-    return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::bool*;
 }
 class MockCat2 extends self::MockCat {
   synthetic constructor •() → self::MockCat2*
@@ -50,14 +50,14 @@
     : super self::MockCat2::•()
     ;
   no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = #C5}) → core::bool*
-    return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: amount}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: amount}))) as{TypeError,ForDynamic} core::bool*;
 }
 class MockCat4 extends self::MockCat2 implements self::HungryCat {
   synthetic constructor •() → self::MockCat4*
     : super self::MockCat2::•()
     ;
   no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = #C5, core::double* yetAnother = #C5}) → core::bool*
-    return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: amount, #C7: yetAnother}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: amount, #C7: yetAnother}))) as{TypeError,ForDynamic} core::bool*;
 }
 abstract class HungryCat extends core::Object {
   synthetic constructor •() → self::HungryCat*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.outline.expect
index 70cdbd7..5a2927f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.outline.expect
@@ -33,7 +33,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method eatFood(core::String* food) → core::bool*
-    return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#eatFood, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#eatFood, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::bool*;
 }
 class MockCat2 extends self::MockCat {
   synthetic constructor •() → self::MockCat2*
@@ -44,13 +44,13 @@
   synthetic constructor •() → self::MockCat3*
     ;
   no-such-method-forwarder method eatFood(core::String* food, {core::double* amount}) → core::bool*
-    return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#eatFood, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#amount: amount}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#eatFood, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#amount: amount}))) as{TypeError,ForDynamic} core::bool*;
 }
 class MockCat4 extends self::MockCat2 implements self::HungryCat {
   synthetic constructor •() → self::MockCat4*
     ;
   no-such-method-forwarder method eatFood(core::String* food, {core::double* amount, core::double* yetAnother}) → core::bool*
-    return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#eatFood, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#amount: amount, #yetAnother: yetAnother}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#eatFood, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#amount: amount, #yetAnother: yetAnother}))) as{TypeError,ForDynamic} core::bool*;
 }
 abstract class HungryCat extends core::Object {
   synthetic constructor •() → self::HungryCat*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.transformed.expect
index 708efab..d5a49ee 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.transformed.expect
@@ -24,8 +24,8 @@
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic {
-    dynamic arg = invocation.{core::Invocation::positionalArguments}{core::List<dynamic>*}.{core::List::[]}(0){(core::int*) →* dynamic};
-    return arg is core::String* && arg{core::String*}.{core::String::isNotEmpty}{core::bool*};
+    dynamic arg = invocation.{core::Invocation::positionalArguments}.{core::List::[]}(0);
+    return arg is core::String* && arg{core::String*}.{core::String::isNotEmpty};
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -37,7 +37,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method eatFood(core::String* food) → core::bool*
-    return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(food)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(food)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::bool*;
 }
 class MockCat2 extends self::MockCat {
   synthetic constructor •() → self::MockCat2*
@@ -50,14 +50,14 @@
     : super self::MockCat2::•()
     ;
   no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = #C5}) → core::bool*
-    return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(food)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: amount}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(food)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: amount}))) as{TypeError,ForDynamic} core::bool*;
 }
 class MockCat4 extends self::MockCat2 implements self::HungryCat {
   synthetic constructor •() → self::MockCat4*
     : super self::MockCat2::•()
     ;
   no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = #C5, core::double* yetAnother = #C5}) → core::bool*
-    return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(food)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: amount, #C7: yetAnother}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+    return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(food)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: amount, #C7: yetAnother}))) as{TypeError,ForDynamic} core::bool*;
 }
 abstract class HungryCat extends core::Object {
   synthetic constructor •() → self::HungryCat*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.expect
index 5ca82cf..c38133a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.expect
@@ -50,7 +50,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
 }
 abstract class _C&A&B = self::A with self::B /*isAnonymousMixin*/  {
   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.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.outline.expect
index d512245..0ad0983 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.outline.expect
@@ -48,7 +48,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method foo() → 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} dynamic;
 }
 abstract class _C&A&B = self::A with self::B /*isAnonymousMixin*/  {
   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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.transformed.expect
index a104017..24aa28c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.transformed.expect
@@ -50,7 +50,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
 }
 abstract class _C&A&B extends self::A implements self::B /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_C&A&B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.expect
index daa0b7e..72909b5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.expect
@@ -7,12 +7,12 @@
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation* i) → dynamic {
-    if(i.{core::Invocation::memberName}{core::Symbol*} =={core::Symbol::==}{(core::Object*) →* core::bool*} (#C1)) {
-      return i.{core::Invocation::namedArguments}{core::Map<core::Symbol*, dynamic>*}.{core::Map::[]}(#C2){(core::Object*) →* dynamic};
+    if(i.{core::Invocation::memberName}.{core::Symbol::==}(#C1)) {
+      return i.{core::Invocation::namedArguments}.{core::Map::[]}(#C2);
     }
     else
-      if(i.{core::Invocation::memberName}{core::Symbol*} =={core::Symbol::==}{(core::Object*) →* core::bool*} (#C3)) {
-        return i.{core::Invocation::positionalArguments}{core::List<dynamic>*}.{core::List::[]}(0){(core::int*) →* dynamic};
+      if(i.{core::Invocation::memberName}.{core::Symbol::==}(#C3)) {
+        return i.{core::Invocation::positionalArguments}.{core::List::[]}(0);
       }
     return null;
   }
@@ -33,17 +33,17 @@
     : 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} 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))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} core::int*;
 }
 static method main() → dynamic {
   self::B* b = new self::B::•();
   dynamic value;
-  if(!((value = b.{self::A::foo}(){({bar: core::String*}) →* core::String*}) =={core::String::==}{(core::Object*) →* core::bool*} "baz")) {
+  if(!(value = b.{self::A::foo}()).{core::String::==}("baz")) {
     throw "Unexpected value: '${value}'; expected 'baz'.";
   }
-  if(!((value = b.{self::A::hest}(){([core::int*]) →* core::int*}) =={core::num::==}{(core::Object*) →* core::bool*} 42)) {
+  if(!(value = b.{self::A::hest}()).{core::num::==}(42)) {
     throw "Unexpected value: '${value}'; expected '42'.";
   }
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.outline.expect
index 8b928ae..27e25ce 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.outline.expect
@@ -23,9 +23,9 @@
   synthetic constructor •() → self::B*
     ;
   no-such-method-forwarder method foo({core::String* bar}) → 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} core::String*;
   no-such-method-forwarder method hest([core::int* fisk]) → 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>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} core::int*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.transformed.expect
index 8ad93c0..a5a0b39 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.transformed.expect
@@ -7,12 +7,12 @@
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation* i) → dynamic {
-    if(i.{core::Invocation::memberName}{core::Symbol*} =={core::Symbol::==}{(core::Object*) →* core::bool*} (#C1)) {
-      return i.{core::Invocation::namedArguments}{core::Map<core::Symbol*, dynamic>*}.{core::Map::[]}(#C2){(core::Object*) →* dynamic};
+    if(i.{core::Invocation::memberName}.{core::Symbol::==}(#C1)) {
+      return i.{core::Invocation::namedArguments}.{core::Map::[]}(#C2);
     }
     else
-      if(i.{core::Invocation::memberName}{core::Symbol*} =={core::Symbol::==}{(core::Object*) →* core::bool*} (#C3)) {
-        return i.{core::Invocation::positionalArguments}{core::List<dynamic>*}.{core::List::[]}(0){(core::int*) →* dynamic};
+      if(i.{core::Invocation::memberName}.{core::Symbol::==}(#C3)) {
+        return i.{core::Invocation::positionalArguments}.{core::List::[]}(0);
       }
     return null;
   }
@@ -33,17 +33,17 @@
     : 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}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} 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,ForDynamic} 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>(core::_GrowableList::_literal1<dynamic>(fisk)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C8))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C6, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(fisk)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C8))) as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {
   self::B* b = new self::B::•();
   dynamic value;
-  if(!((value = b.{self::A::foo}(){({bar: core::String*}) →* core::String*}) =={core::String::==}{(core::Object*) →* core::bool*} "baz")) {
+  if(!(value = b.{self::A::foo}()).{core::String::==}("baz")) {
     throw "Unexpected value: '${value}'; expected 'baz'.";
   }
-  if(!((value = b.{self::A::hest}(){([core::int*]) →* core::int*}) =={core::num::==}{(core::Object*) →* core::bool*} 42)) {
+  if(!(value = b.{self::A::hest}()).{core::num::==}(42)) {
     throw "Unexpected value: '${value}'; expected '42'.";
   }
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.expect
index 3633d99..ff918a4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.expect
@@ -50,7 +50,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic};
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.outline.expect
index 84fb848..ce29ada 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.outline.expect
@@ -47,7 +47,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method foo() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.transformed.expect
index 3633d99..ff918a4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.transformed.expect
@@ -50,7 +50,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic};
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.expect
index d34e31b..d0e5a4c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.expect
@@ -38,11 +38,11 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get bar() → core::int*
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder method baz(core::int* x, {core::String* y = #C1, core::double* z = #C1}) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: y, #C8: z}))){(core::Invocation*) →* dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: y, #C8: z})));
   no-such-method-forwarder set foo(core::int* value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -64,15 +64,15 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateGetter() → core::int*
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateField() → core::int*
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateMethod() → void
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateSetter(core::int* value) → void
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateField(core::int* value) → void
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 class F extends self::E {
   synthetic constructor •() → self::F*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.outline.expect
index 094b3e6..dcd9757 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.outline.expect
@@ -37,11 +37,11 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get bar() → core::int*
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#bar, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#bar, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder method baz(core::int* x, {core::String* y, core::double* z}) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#baz, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#y: y, #z: z}))){(core::Invocation*) →* dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#baz, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#y: y, #z: z})));
   no-such-method-forwarder set foo(core::int* value) → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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>{})));
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -61,15 +61,15 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateGetter() → core::int*
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateGetter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateGetter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateField() → core::int*
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateMethod() → void
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder set /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateSetter(core::int* value) → void
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateSetter=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateSetter=, 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 /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateField(core::int* value) → void
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateField=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateField=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
 class F extends self::E {
   synthetic constructor •() → self::F*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.transformed.expect
index a9d34c1..410396b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.transformed.expect
@@ -38,11 +38,11 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get bar() → core::int*
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder method baz(core::int* x, {core::String* y = #C1, core::double* z = #C1}) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: y, #C8: z}))){(core::Invocation*) →* dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: y, #C8: z})));
   no-such-method-forwarder set foo(core::int* value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -64,15 +64,15 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateGetter() → core::int*
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateField() → core::int*
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateMethod() → void
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateSetter(core::int* value) → void
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateField(core::int* value) → void
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 class F extends self::E {
   synthetic constructor •() → self::F*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.expect
index d1335fe..d4f16a5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.expect
@@ -34,7 +34,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 abstract class _B&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A*
@@ -57,7 +57,7 @@
     : super self::_B&Object&A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_B&Object&A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::_B&Object&A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.outline.expect
index 50e7958..9246c58 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.outline.expect
@@ -32,7 +32,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method foo() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A*
@@ -54,7 +54,7 @@
   synthetic constructor •() → self::B*
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_B&Object&A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::_B&Object&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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.transformed.expect
index 34cb10d..3a32356 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.transformed.expect
@@ -34,7 +34,7 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   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))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 abstract class _B&Object&A extends core::Object implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A*
@@ -57,7 +57,7 @@
     : super self::_B&Object&A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_B&Object&A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::_B&Object&A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.expect
index c296d8d..acee4b7 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.expect
@@ -40,7 +40,7 @@
     : 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))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.outline.expect
index a80f440..6986170 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.outline.expect
@@ -37,7 +37,7 @@
   synthetic constructor •() → self::B*
     ;
   no-such-method-forwarder method foo() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.transformed.expect
index c296d8d..acee4b7 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.transformed.expect
@@ -40,7 +40,7 @@
     : 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))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.expect
index 11b038f..0f6e0f1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.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))){(core::Invocation*) →* dynamic};
+    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -57,7 +57,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_A&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::_A&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 abstract class _B&Object&M = core::Object with self::M /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M*
@@ -80,7 +80,7 @@
     : super self::_B&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_B&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::_B&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.outline.expect
index 1e32f6d..c4af234 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.outline.expect
@@ -8,7 +8,7 @@
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
   no-such-method-forwarder method foo() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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>{})));
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -54,7 +54,7 @@
   synthetic constructor •() → self::A*
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_A&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::_A&Object&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 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M*
@@ -76,7 +76,7 @@
   synthetic constructor •() → self::B*
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_B&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::_B&Object&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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.transformed.expect
index f59813d..a177218 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.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))){(core::Invocation*) →* dynamic};
+    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -57,7 +57,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_A&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::_A&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 abstract class _B&Object&M extends core::Object implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M*
@@ -80,7 +80,7 @@
     : super self::_B&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_B&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::_B&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.expect
index dabbcd8..297ab3b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.expect
@@ -72,9 +72,9 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get bar() → Null
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} Null;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} Null;
   no-such-method-forwarder set foo(core::num* value) → void
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.outline.expect
index fd16e8c42..bc566ba 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.outline.expect
@@ -71,9 +71,9 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get bar() → Null
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#bar, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} Null;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#bar, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} Null;
   no-such-method-forwarder set foo(core::num* value) → void
-    return this.{self::D::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>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::D::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 main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.transformed.expect
index 6b924bd..d5f3d88 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.transformed.expect
@@ -72,9 +72,9 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder get bar() → Null
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} Null;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} Null;
   no-such-method-forwarder set foo(core::num* value) → void
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.expect
index 70c94e6..068d744 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.expect
@@ -24,7 +24,7 @@
     : 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))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.outline.expect
index 19eb325..c81571e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.outline.expect
@@ -22,7 +22,7 @@
   synthetic constructor •() → self::B*
     ;
   no-such-method-forwarder method foo() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.transformed.expect
index 70c94e6..068d744 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
     : 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))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.expect
index 3d97e3b..920d9ef 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.expect
@@ -29,7 +29,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))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 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.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.outline.expect
index dfa0b76..59a56b80 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.outline.expect
@@ -26,7 +26,7 @@
   synthetic constructor •() → self::C*
     ;
   no-such-method-forwarder method foo() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.transformed.expect
index 3d97e3b..920d9ef 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.transformed.expect
@@ -29,7 +29,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))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.expect
index 10936ab..9d5a43e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.expect
@@ -23,7 +23,7 @@
     : 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))){(core::Invocation*) →* dynamic};
+    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)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.outline.expect
index 568adcd..cf93dc7 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.outline.expect
@@ -21,7 +21,7 @@
   synthetic constructor •() → self::A*
     ;
   no-such-method-forwarder method call(core::String* s) → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.transformed.expect
index 1562403..0428014 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
     : 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>(core::_GrowableList::_literal1<dynamic>(s)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(s)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.expect
index 6c574dd..7c7b366 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.expect
@@ -40,7 +40,7 @@
     : super self::_B&Object&A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_B&Object&A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::_B&Object&A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.outline.expect
index 7e408bc..1a05075 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.outline.expect
@@ -37,7 +37,7 @@
   synthetic constructor •() → self::B*
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_B&Object&A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{self::_B&Object&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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.transformed.expect
index 2b5bfe3..a38cf96 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.transformed.expect
@@ -41,7 +41,7 @@
     : super self::_B&Object&A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_B&Object&A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::_B&Object&A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.expect
index fe2544d..735122a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.expect
@@ -26,7 +26,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))){(core::Invocation*) →* dynamic};
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class Baz extends self::Foo implements pri::Fisk {
   synthetic constructor •() → self::Baz*
@@ -35,7 +35,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))){(core::Invocation*) →* dynamic};
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.outline.expect
index 0808248..2d1038e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.outline.expect
@@ -24,7 +24,7 @@
   synthetic constructor •() → self::Bar*
     ;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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*
@@ -32,7 +32,7 @@
   method _hest() → dynamic
     ;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.transformed.expect
index fe2544d..735122a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.transformed.expect
@@ -26,7 +26,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))){(core::Invocation*) →* dynamic};
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class Baz extends self::Foo implements pri::Fisk {
   synthetic constructor •() → self::Baz*
@@ -35,7 +35,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))){(core::Invocation*) →* dynamic};
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.expect
index ed53431..44124fc 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.expect
@@ -25,7 +25,7 @@
   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))){(core::Invocation*) →* dynamic};
+    return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.outline.expect
index 0dd40c8..40e53fb 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.outline.expect
@@ -23,7 +23,7 @@
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
   no-such-method-forwarder method _foo() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.transformed.expect
index ed53431..44124fc 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.transformed.expect
@@ -25,7 +25,7 @@
   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))){(core::Invocation*) →* dynamic};
+    return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.expect
index 864895d..d7d3047 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.expect
@@ -10,7 +10,7 @@
     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))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.outline.expect
index 98fba7e..b321f75 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.outline.expect
@@ -8,7 +8,7 @@
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
   no-such-method-forwarder method foo() → void
-    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>{}))){(core::Invocation*) →* dynamic};
+    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 member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.transformed.expect
index 864895d..d7d3047 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
     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))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.expect
index 938f3bd..b37c6af5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.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))){(core::Invocation*) →* dynamic};
+    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)));
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.outline.expect
index 5bae423..7c74a0a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.outline.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(#foo=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    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
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.transformed.expect
index 20c7622..a110b1a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.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>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.expect
index 24d4686..3676843 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.expect
@@ -56,7 +56,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → core::int*
-    return this.{self::_A&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::_A&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.outline.expect
index ca3cde3..80e949b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.outline.expect
@@ -52,7 +52,7 @@
   synthetic constructor •() → self::A*
     ;
   no-such-method-forwarder method foo() → core::int*
-    return this.{self::_A&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::_A&Object&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,ForDynamic} core::int*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.transformed.expect
index d830d60..84fdbfc 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.transformed.expect
@@ -57,7 +57,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → core::int*
-    return this.{self::_A&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+    return this.{self::_A&Object&M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.strong.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.strong.expect
index 61ac447..b0f5897 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.strong.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.strong.expect
@@ -116,26 +116,26 @@
     : super core::Object::•()
     ;
   method instance1<X extends self::A<self::Class::instance1::X> = self::A<dynamic>>(() → self::A<self::Class::instance1::X> g) → void
-    return g(){() → self::A<self::Class::instance1::X>};
+    return g.call();
   method instance2<X extends self::A<self::Class::instance2::X> = self::A<dynamic>>(() → self::A<self::Class::instance2::X> g) → void
-    return g(){() → self::A<self::Class::instance2::X>};
+    return g.call();
   method test() → void {
     function local1<X extends self::A<X> = self::A<dynamic>>(() → self::A<X> g) → void
-      return g(){() → self::A<X>};
+      return g.call();
     function local2<X extends self::A<X> = self::A<dynamic>>(() → self::A<X> g) → void
-      return g(){() → self::A<X>};
+      return g.call();
     <X extends self::A<X> = self::A<dynamic>>(() → self::A<X>) → void f1 = local1;
     <X extends self::A<X> = self::A<dynamic>>(() → self::A<X>) → void f2 = local2;
     new self::A::•<self::A<core::Object?>>();
     new self::A::•<self::A<core::Object?>>();
-    f1<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    f2<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    local1<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    local2<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
+    f1.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    f2.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    local1.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    local2.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
     self::topLevel1<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
     self::topLevel2<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
-    this.{self::Class::instance1}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    this.{self::Class::instance2}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
+    this.{self::Class::instance1}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    this.{self::Class::instance2}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
   }
 }
 class Subclass extends self::Class {
@@ -154,7 +154,7 @@
   throw "Error";
 }
 static method topLevel1<X extends self::A<self::topLevel1::X> = self::A<dynamic>>(() → self::A<self::topLevel1::X> g) → void
-  return g(){() → self::A<self::topLevel1::X>};
+  return g.call();
 static method topLevel2<X extends self::A<self::topLevel2::X> = self::A<dynamic>>(() → self::A<self::topLevel2::X> g) → void
-  return g(){() → self::A<self::topLevel2::X>};
+  return g.call();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.strong.transformed.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.strong.transformed.expect
index 61ac447..b0f5897 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.strong.transformed.expect
@@ -116,26 +116,26 @@
     : super core::Object::•()
     ;
   method instance1<X extends self::A<self::Class::instance1::X> = self::A<dynamic>>(() → self::A<self::Class::instance1::X> g) → void
-    return g(){() → self::A<self::Class::instance1::X>};
+    return g.call();
   method instance2<X extends self::A<self::Class::instance2::X> = self::A<dynamic>>(() → self::A<self::Class::instance2::X> g) → void
-    return g(){() → self::A<self::Class::instance2::X>};
+    return g.call();
   method test() → void {
     function local1<X extends self::A<X> = self::A<dynamic>>(() → self::A<X> g) → void
-      return g(){() → self::A<X>};
+      return g.call();
     function local2<X extends self::A<X> = self::A<dynamic>>(() → self::A<X> g) → void
-      return g(){() → self::A<X>};
+      return g.call();
     <X extends self::A<X> = self::A<dynamic>>(() → self::A<X>) → void f1 = local1;
     <X extends self::A<X> = self::A<dynamic>>(() → self::A<X>) → void f2 = local2;
     new self::A::•<self::A<core::Object?>>();
     new self::A::•<self::A<core::Object?>>();
-    f1<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    f2<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    local1<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    local2<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
+    f1.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    f2.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    local1.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    local2.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
     self::topLevel1<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
     self::topLevel2<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
-    this.{self::Class::instance1}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    this.{self::Class::instance2}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
+    this.{self::Class::instance1}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    this.{self::Class::instance2}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
   }
 }
 class Subclass extends self::Class {
@@ -154,7 +154,7 @@
   throw "Error";
 }
 static method topLevel1<X extends self::A<self::topLevel1::X> = self::A<dynamic>>(() → self::A<self::topLevel1::X> g) → void
-  return g(){() → self::A<self::topLevel1::X>};
+  return g.call();
 static method topLevel2<X extends self::A<self::topLevel2::X> = self::A<dynamic>>(() → self::A<self::topLevel2::X> g) → void
-  return g(){() → self::A<self::topLevel2::X>};
+  return g.call();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.weak.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.weak.expect
index 61ac447..b0f5897 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.weak.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.weak.expect
@@ -116,26 +116,26 @@
     : super core::Object::•()
     ;
   method instance1<X extends self::A<self::Class::instance1::X> = self::A<dynamic>>(() → self::A<self::Class::instance1::X> g) → void
-    return g(){() → self::A<self::Class::instance1::X>};
+    return g.call();
   method instance2<X extends self::A<self::Class::instance2::X> = self::A<dynamic>>(() → self::A<self::Class::instance2::X> g) → void
-    return g(){() → self::A<self::Class::instance2::X>};
+    return g.call();
   method test() → void {
     function local1<X extends self::A<X> = self::A<dynamic>>(() → self::A<X> g) → void
-      return g(){() → self::A<X>};
+      return g.call();
     function local2<X extends self::A<X> = self::A<dynamic>>(() → self::A<X> g) → void
-      return g(){() → self::A<X>};
+      return g.call();
     <X extends self::A<X> = self::A<dynamic>>(() → self::A<X>) → void f1 = local1;
     <X extends self::A<X> = self::A<dynamic>>(() → self::A<X>) → void f2 = local2;
     new self::A::•<self::A<core::Object?>>();
     new self::A::•<self::A<core::Object?>>();
-    f1<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    f2<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    local1<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    local2<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
+    f1.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    f2.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    local1.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    local2.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
     self::topLevel1<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
     self::topLevel2<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
-    this.{self::Class::instance1}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    this.{self::Class::instance2}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
+    this.{self::Class::instance1}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    this.{self::Class::instance2}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
   }
 }
 class Subclass extends self::Class {
@@ -154,7 +154,7 @@
   throw "Error";
 }
 static method topLevel1<X extends self::A<self::topLevel1::X> = self::A<dynamic>>(() → self::A<self::topLevel1::X> g) → void
-  return g(){() → self::A<self::topLevel1::X>};
+  return g.call();
 static method topLevel2<X extends self::A<self::topLevel2::X> = self::A<dynamic>>(() → self::A<self::topLevel2::X> g) → void
-  return g(){() → self::A<self::topLevel2::X>};
+  return g.call();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.weak.transformed.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.weak.transformed.expect
index 61ac447..b0f5897 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45464.dart.weak.transformed.expect
@@ -116,26 +116,26 @@
     : super core::Object::•()
     ;
   method instance1<X extends self::A<self::Class::instance1::X> = self::A<dynamic>>(() → self::A<self::Class::instance1::X> g) → void
-    return g(){() → self::A<self::Class::instance1::X>};
+    return g.call();
   method instance2<X extends self::A<self::Class::instance2::X> = self::A<dynamic>>(() → self::A<self::Class::instance2::X> g) → void
-    return g(){() → self::A<self::Class::instance2::X>};
+    return g.call();
   method test() → void {
     function local1<X extends self::A<X> = self::A<dynamic>>(() → self::A<X> g) → void
-      return g(){() → self::A<X>};
+      return g.call();
     function local2<X extends self::A<X> = self::A<dynamic>>(() → self::A<X> g) → void
-      return g(){() → self::A<X>};
+      return g.call();
     <X extends self::A<X> = self::A<dynamic>>(() → self::A<X>) → void f1 = local1;
     <X extends self::A<X> = self::A<dynamic>>(() → self::A<X>) → void f2 = local2;
     new self::A::•<self::A<core::Object?>>();
     new self::A::•<self::A<core::Object?>>();
-    f1<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    f2<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    local1<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    local2<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
+    f1.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    f2.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    local1.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    local2.call<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
     self::topLevel1<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
     self::topLevel2<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
-    this.{self::Class::instance1}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
-    this.{self::Class::instance2}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>()){(() → self::A<core::Object?>) → void};
+    this.{self::Class::instance1}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
+    this.{self::Class::instance2}<core::Object?>(() → self::A<core::Object?> => self::captureTypeArgument<self::A<core::Object?>>());
   }
 }
 class Subclass extends self::Class {
@@ -154,7 +154,7 @@
   throw "Error";
 }
 static method topLevel1<X extends self::A<self::topLevel1::X> = self::A<dynamic>>(() → self::A<self::topLevel1::X> g) → void
-  return g(){() → self::A<self::topLevel1::X>};
+  return g.call();
 static method topLevel2<X extends self::A<self::topLevel2::X> = self::A<dynamic>>(() → self::A<self::topLevel2::X> g) → void
-  return g(){() → self::A<self::topLevel2::X>};
+  return g.call();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/rasta/cascades.dart.weak.expect b/pkg/front_end/testcases/rasta/cascades.dart.weak.expect
index 73ffa41..e2ebba6 100644
--- a/pkg/front_end/testcases/rasta/cascades.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/cascades.dart.weak.expect
@@ -24,6 +24,6 @@
   function f(dynamic x) → dynamic
     return x;
   let final self::A* #t1 = a in block {
-    #t1.{self::A::add}(f){(dynamic) →* dynamic}{dynamic}.call("WHAT");
+    #t1.{self::A::add}(f).call("WHAT");
   } =>#t1;
 }
diff --git a/pkg/front_end/testcases/rasta/cascades.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/cascades.dart.weak.transformed.expect
index 73ffa41..e2ebba6 100644
--- a/pkg/front_end/testcases/rasta/cascades.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/cascades.dart.weak.transformed.expect
@@ -24,6 +24,6 @@
   function f(dynamic x) → dynamic
     return x;
   let final self::A* #t1 = a in block {
-    #t1.{self::A::add}(f){(dynamic) →* dynamic}{dynamic}.call("WHAT");
+    #t1.{self::A::add}(f).call("WHAT");
   } =>#t1;
 }
diff --git a/pkg/front_end/testcases/rasta/for_loop.dart.weak.expect b/pkg/front_end/testcases/rasta/for_loop.dart.weak.expect
index 94b2d41..e3bd4bb 100644
--- a/pkg/front_end/testcases/rasta/for_loop.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/for_loop.dart.weak.expect
@@ -3,11 +3,11 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::int* c = new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int*};
-  for (core::int* i = 0; i.{core::num::<}(100){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    core::print(let final core::int* #t1 = i in let final core::int* #t2 = i = #t1.{core::num::+}(1){(core::num*) →* core::int*} in #t1);
+  core::int* c = new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch};
+  for (core::int* i = 0; i.{core::num::<}(100); i = i.{core::num::+}(1)) {
+    core::print(let final core::int* #t1 = i in let final core::int* #t2 = i = #t1.{core::num::+}(1) in #t1);
   }
-  for (core::int* i = 0; i.{core::num::<}(100){(core::num*) →* core::bool*}; c.{core::num::<}(42){(core::num*) →* core::bool*} ?{core::int*} throw "fisk" : let final core::int* #t3 = i in let final core::int* #t4 = i = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3) {
-    core::print(let final core::int* #t5 = i in let final core::int* #t6 = i = #t5.{core::num::+}(1){(core::num*) →* core::int*} in #t5);
+  for (core::int* i = 0; i.{core::num::<}(100); c.{core::num::<}(42) ?{core::int*} throw "fisk" : let final core::int* #t3 = i in let final core::int* #t4 = i = #t3.{core::num::+}(1) in #t3) {
+    core::print(let final core::int* #t5 = i in let final core::int* #t6 = i = #t5.{core::num::+}(1) in #t5);
   }
 }
diff --git a/pkg/front_end/testcases/rasta/for_loop.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/for_loop.dart.weak.transformed.expect
index 94b2d41..e3bd4bb 100644
--- a/pkg/front_end/testcases/rasta/for_loop.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/for_loop.dart.weak.transformed.expect
@@ -3,11 +3,11 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::int* c = new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int*};
-  for (core::int* i = 0; i.{core::num::<}(100){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    core::print(let final core::int* #t1 = i in let final core::int* #t2 = i = #t1.{core::num::+}(1){(core::num*) →* core::int*} in #t1);
+  core::int* c = new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch};
+  for (core::int* i = 0; i.{core::num::<}(100); i = i.{core::num::+}(1)) {
+    core::print(let final core::int* #t1 = i in let final core::int* #t2 = i = #t1.{core::num::+}(1) in #t1);
   }
-  for (core::int* i = 0; i.{core::num::<}(100){(core::num*) →* core::bool*}; c.{core::num::<}(42){(core::num*) →* core::bool*} ?{core::int*} throw "fisk" : let final core::int* #t3 = i in let final core::int* #t4 = i = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3) {
-    core::print(let final core::int* #t5 = i in let final core::int* #t6 = i = #t5.{core::num::+}(1){(core::num*) →* core::int*} in #t5);
+  for (core::int* i = 0; i.{core::num::<}(100); c.{core::num::<}(42) ?{core::int*} throw "fisk" : let final core::int* #t3 = i in let final core::int* #t4 = i = #t3.{core::num::+}(1) in #t3) {
+    core::print(let final core::int* #t5 = i in let final core::int* #t6 = i = #t5.{core::num::+}(1) in #t5);
   }
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000002.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000002.dart.weak.expect
index 90a6469..0b76554 100644
--- a/pkg/front_end/testcases/rasta/issue_000002.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000002.dart.weak.expect
@@ -27,6 +27,6 @@
 }
 static field core::List<core::int*>* list = <core::int*>[1, 2, 3];
 static method main() → dynamic {
-  exp::Expect::isTrue(typ::Uint8List::fromList(self::list).{core::List::[]}(1){(core::int*) →* core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 2);
-  exp::Expect::isTrue(self::Foo::fac(10).{self::Foo::value}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} 10);
+  exp::Expect::isTrue(typ::Uint8List::fromList(self::list).{core::List::[]}(1).{core::num::==}(2));
+  exp::Expect::isTrue(self::Foo::fac(10).{self::Foo::value}.{core::Object::==}(10));
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000002.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000002.dart.weak.transformed.expect
index 8a8d79b..669881c 100644
--- a/pkg/front_end/testcases/rasta/issue_000002.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000002.dart.weak.transformed.expect
@@ -27,6 +27,6 @@
 }
 static field core::List<core::int*>* list = core::_GrowableList::_literal3<core::int*>(1, 2, 3);
 static method main() → dynamic {
-  exp::Expect::isTrue(typ::Uint8List::fromList(self::list).{core::List::[]}(1){(core::int*) →* core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 2);
-  exp::Expect::isTrue(self::Foo::fac(10).{self::Foo::value}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} 10);
+  exp::Expect::isTrue(typ::Uint8List::fromList(self::list).{core::List::[]}(1).{core::num::==}(2));
+  exp::Expect::isTrue(self::Foo::fac(10).{self::Foo::value}.{core::Object::==}(10));
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000004.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000004.dart.weak.expect
index 8b66203..f7d1185 100644
--- a/pkg/front_end/testcases/rasta/issue_000004.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000004.dart.weak.expect
@@ -9,7 +9,7 @@
 static method fact4() → dynamic {
   core::int* f = 1;
   for (core::int* n in <core::int*>[1, 2, 3, 4]) {
-    f = f.{core::num::*}(n){(core::num*) →* core::int*};
+    f = f.{core::num::*}(n);
   }
   return f;
 }
@@ -18,7 +18,7 @@
   dynamic n;
   for (final dynamic #t1 in <dynamic>[1, 2, 3, 4, 5]) {
     n = #t1;
-    f = f.{core::num::*}(n as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*} as{TypeError} core::int*;
+    f = f.{core::num::*}(n as{TypeError,ForDynamic} core::num*) as{TypeError} core::int*;
   }
   return f;
 }
@@ -26,12 +26,12 @@
   core::int* f = 1;
   for (final dynamic #t2 in <dynamic>[1, 2, 3, 4, 5, 6]) {
     self::global = #t2;
-    f = f.{core::num::*}(self::global as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*} as{TypeError} core::int*;
+    f = f.{core::num::*}(self::global as{TypeError,ForDynamic} core::num*) as{TypeError} core::int*;
   }
   return f;
 }
 static method main() → dynamic {
-  exp::Expect::isTrue(self::fact4() =={core::Object::==}{(core::Object*) →* core::bool*} 24);
-  exp::Expect::isTrue(self::fact5() =={core::Object::==}{(core::Object*) →* core::bool*} 120);
-  exp::Expect::isTrue(self::fact6() =={core::Object::==}{(core::Object*) →* core::bool*} 720);
+  exp::Expect::isTrue(self::fact4().{core::Object::==}(24));
+  exp::Expect::isTrue(self::fact5().{core::Object::==}(120));
+  exp::Expect::isTrue(self::fact6().{core::Object::==}(720));
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000004.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000004.dart.weak.transformed.expect
index 533f9ab..9abdbc2 100644
--- a/pkg/front_end/testcases/rasta/issue_000004.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000004.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       core::int* n = :sync-for-iterator.{core::Iterator::current};
       {
-        f = f.{core::num::*}(n){(core::num*) →* core::int*};
+        f = f.{core::num::*}(n);
       }
     }
   }
@@ -28,7 +28,7 @@
       final dynamic #t1 = :sync-for-iterator.{core::Iterator::current};
       {
         n = #t1;
-        f = f.{core::num::*}(n as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*} as{TypeError} core::int*;
+        f = f.{core::num::*}(n as{TypeError,ForDynamic} core::num*) as{TypeError} core::int*;
       }
     }
   }
@@ -42,14 +42,14 @@
       final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
       {
         self::global = #t2;
-        f = f.{core::num::*}(self::global as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*} as{TypeError} core::int*;
+        f = f.{core::num::*}(self::global as{TypeError,ForDynamic} core::num*) as{TypeError} core::int*;
       }
     }
   }
   return f;
 }
 static method main() → dynamic {
-  exp::Expect::isTrue(self::fact4() =={core::Object::==}{(core::Object*) →* core::bool*} 24);
-  exp::Expect::isTrue(self::fact5() =={core::Object::==}{(core::Object*) →* core::bool*} 120);
-  exp::Expect::isTrue(self::fact6() =={core::Object::==}{(core::Object*) →* core::bool*} 720);
+  exp::Expect::isTrue(self::fact4().{core::Object::==}(24));
+  exp::Expect::isTrue(self::fact5().{core::Object::==}(120));
+  exp::Expect::isTrue(self::fact6().{core::Object::==}(720));
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000006.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000006.dart.weak.expect
index d8e5d49..a79616d 100644
--- a/pkg/front_end/testcases/rasta/issue_000006.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000006.dart.weak.expect
@@ -4,5 +4,5 @@
 
 static field core::List<core::int*>* list = <core::int*>[1, 2, 3];
 static method main() → dynamic {
-  self::list.{core::List::add}(1){(core::int*) →* void};
+  self::list.{core::List::add}(1);
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000006.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000006.dart.weak.transformed.expect
index f8135d2..435535b 100644
--- a/pkg/front_end/testcases/rasta/issue_000006.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000006.dart.weak.transformed.expect
@@ -4,5 +4,5 @@
 
 static field core::List<core::int*>* list = core::_GrowableList::_literal3<core::int*>(1, 2, 3);
 static method main() → dynamic {
-  self::list.{core::List::add}(1){(core::int*) →* void};
+  self::list.{core::List::add}(1);
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000007.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000007.dart.weak.expect
index 6cd1688..d37774c 100644
--- a/pkg/front_end/testcases/rasta/issue_000007.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000007.dart.weak.expect
@@ -47,5 +47,5 @@
     ;
 }
 static method main() → dynamic {
-  new self::Sub::•().{self::_Sub&Base&Mixin::foo}(){() →* dynamic};
+  new self::Sub::•().{self::_Sub&Base&Mixin::foo}();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000007.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000007.dart.weak.transformed.expect
index ed3512d..3961807 100644
--- a/pkg/front_end/testcases/rasta/issue_000007.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000007.dart.weak.transformed.expect
@@ -47,5 +47,5 @@
     ;
 }
 static method main() → dynamic {
-  new self::Sub::•().{self::_Sub&Base&Mixin::foo}(){() →* dynamic};
+  new self::Sub::•().{self::_Sub&Base&Mixin::foo}();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000012.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000012.dart.weak.expect
index e6e3429..955bf4c 100644
--- a/pkg/front_end/testcases/rasta/issue_000012.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000012.dart.weak.expect
@@ -27,5 +27,5 @@
   }
 }
 static method main() → dynamic {
-  new self::B::•().{self::B::m}(){() →* dynamic};
+  new self::B::•().{self::B::m}();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000012.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000012.dart.weak.transformed.expect
index e6e3429..955bf4c 100644
--- a/pkg/front_end/testcases/rasta/issue_000012.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000012.dart.weak.transformed.expect
@@ -27,5 +27,5 @@
   }
 }
 static method main() → dynamic {
-  new self::B::•().{self::B::m}(){() →* dynamic};
+  new self::B::•().{self::B::m}();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000026.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000026.dart.weak.expect
index 9e127fd..b3330742 100644
--- a/pkg/front_end/testcases/rasta/issue_000026.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000026.dart.weak.expect
@@ -5,7 +5,7 @@
 class C extends core::Object {
   field dynamic a = null;
   field core::int* b = 0;
-  field core::int* c = 1.{core::num::+}(2){(core::num*) →* core::int*};
+  field core::int* c = 1.{core::num::+}(2);
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
@@ -23,7 +23,7 @@
 class D extends core::Object {
   field dynamic a = null;
   field core::int* b = 1;
-  field core::int* c = 2.{core::num::-}(3){(core::num*) →* core::int*};
+  field core::int* c = 2.{core::num::-}(3);
   constructor •() → self::D*
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/rasta/issue_000026.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000026.dart.weak.transformed.expect
index d859b4b..d8064f6 100644
--- a/pkg/front_end/testcases/rasta/issue_000026.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000026.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
 class C extends core::Object {
   field dynamic a = null;
   field core::int* b = 0;
-  field core::int* c = 1.{core::num::+}(2){(core::num*) →* core::int*};
+  field core::int* c = 1.{core::num::+}(2);
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
@@ -23,7 +23,7 @@
 class D extends core::Object {
   field dynamic a = null;
   field core::int* b = 1;
-  field core::int* c = 2.{core::num::-}(3){(core::num*) →* core::int*};
+  field core::int* c = 2.{core::num::-}(3);
   constructor •() → self::D*
     : super core::Object::•()
     ;
@@ -45,6 +45,6 @@
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue_000026.dart:8:13 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue_000026.dart:14:13 -> IntConstant(-1)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///issue_000026.dart:8:13 -> IntConstant(3)
+Evaluated: MethodInvocation @ org-dartlang-testcase:///issue_000026.dart:14:13 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 4, effectively constant: 2
diff --git a/pkg/front_end/testcases/rasta/issue_000031.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000031.dart.weak.expect
index 0485f14..10e6c4d 100644
--- a/pkg/front_end/testcases/rasta/issue_000031.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000031.dart.weak.expect
@@ -15,6 +15,6 @@
   let final dynamic #t1 = invalid-expression "pkg/front_end/testcases/rasta/issue_000031.dart:8:3: Error: A prefix can't be used as an expression.
   math..toString();
   ^^^^" in block {
-    #t1.{core::Object::toString}(){() →* core::String*};
+    #t1.{core::Object::toString}();
   } =>#t1;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000031.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000031.dart.weak.transformed.expect
index 0485f14..10e6c4d 100644
--- a/pkg/front_end/testcases/rasta/issue_000031.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000031.dart.weak.transformed.expect
@@ -15,6 +15,6 @@
   let final dynamic #t1 = invalid-expression "pkg/front_end/testcases/rasta/issue_000031.dart:8:3: Error: A prefix can't be used as an expression.
   math..toString();
   ^^^^" in block {
-    #t1.{core::Object::toString}(){() →* core::String*};
+    #t1.{core::Object::toString}();
   } =>#t1;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000036.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000036.dart.weak.expect
index 27dc313..433f8d9 100644
--- a/pkg/front_end/testcases/rasta/issue_000036.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000036.dart.weak.expect
@@ -18,4 +18,4 @@
   return invalid-expression "pkg/front_end/testcases/rasta/issue_000036.dart:5:14: Error: Expected an identifier, but got ''.
 Try inserting an identifier before ''.
 main() => a. - 5;
-             ^"{dynamic}.-(5);
+             ^".-(5);
diff --git a/pkg/front_end/testcases/rasta/issue_000036.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000036.dart.weak.transformed.expect
index 27dc313..433f8d9 100644
--- a/pkg/front_end/testcases/rasta/issue_000036.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000036.dart.weak.transformed.expect
@@ -18,4 +18,4 @@
   return invalid-expression "pkg/front_end/testcases/rasta/issue_000036.dart:5:14: Error: Expected an identifier, but got ''.
 Try inserting an identifier before ''.
 main() => a. - 5;
-             ^"{dynamic}.-(5);
+             ^".-(5);
diff --git a/pkg/front_end/testcases/rasta/issue_000041.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000041.dart.weak.expect
index 63fc41c..0c48907 100644
--- a/pkg/front_end/testcases/rasta/issue_000041.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000041.dart.weak.expect
@@ -22,7 +22,7 @@
   method test() → dynamic {
     self::use(invalid-expression "pkg/front_end/testcases/rasta/issue_000041.dart:7:9: Error: This couldn't be parsed.
     use(+super);
-        ^"{dynamic}.+(invalid-expression "pkg/front_end/testcases/rasta/issue_000041.dart:7:10: Error: Can't use 'super' as an expression.
+        ^".+(invalid-expression "pkg/front_end/testcases/rasta/issue_000041.dart:7:10: Error: Can't use 'super' as an expression.
 To delegate a constructor to a super constructor, put the super call as an initializer.
     use(+super);
          ^^^^^"));
@@ -41,5 +41,5 @@
 static method use(dynamic _) → dynamic
   return null;
 static method main() → dynamic {
-  new self::C::•().{self::C::test}(){() →* dynamic};
+  new self::C::•().{self::C::test}();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000041.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000041.dart.weak.transformed.expect
index 63fc41c..0c48907 100644
--- a/pkg/front_end/testcases/rasta/issue_000041.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000041.dart.weak.transformed.expect
@@ -22,7 +22,7 @@
   method test() → dynamic {
     self::use(invalid-expression "pkg/front_end/testcases/rasta/issue_000041.dart:7:9: Error: This couldn't be parsed.
     use(+super);
-        ^"{dynamic}.+(invalid-expression "pkg/front_end/testcases/rasta/issue_000041.dart:7:10: Error: Can't use 'super' as an expression.
+        ^".+(invalid-expression "pkg/front_end/testcases/rasta/issue_000041.dart:7:10: Error: Can't use 'super' as an expression.
 To delegate a constructor to a super constructor, put the super call as an initializer.
     use(+super);
          ^^^^^"));
@@ -41,5 +41,5 @@
 static method use(dynamic _) → dynamic
   return null;
 static method main() → dynamic {
-  new self::C::•().{self::C::test}(){() →* dynamic};
+  new self::C::•().{self::C::test}();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000043.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000043.dart.weak.expect
index 0c2f2cb..dd43e98 100644
--- a/pkg/front_end/testcases/rasta/issue_000043.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000043.dart.weak.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   get x() → dynamic
-    return "${#C1}".{core::String::hashCode}{core::int*};
+    return "${#C1}".{core::String::hashCode};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/rasta/issue_000043.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000043.dart.weak.transformed.expect
index 0c2f2cb..dd43e98 100644
--- a/pkg/front_end/testcases/rasta/issue_000043.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000043.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   get x() → dynamic
-    return "${#C1}".{core::String::hashCode}{core::int*};
+    return "${#C1}".{core::String::hashCode};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.expect
index 9513300..24463fa 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.expect
@@ -104,7 +104,7 @@
   print(const C.missingFactoryKeyword());
               ^");
   core::print(#C1);
-  core::print(new self::C::constant().{self::C::notEvenAConstructor}(null){(dynamic) →* self::C*});
+  core::print(new self::C::constant().{self::C::notEvenAConstructor}(null));
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.transformed.expect
index 186f22a..640e041 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.transformed.expect
@@ -104,7 +104,7 @@
   print(const C.missingFactoryKeyword());
               ^");
   core::print(#C1);
-  core::print(new self::C::constant().{self::C::notEvenAConstructor}(null){(dynamic) →* self::C*});
+  core::print(new self::C::constant().{self::C::notEvenAConstructor}(null));
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/rasta/issue_000052.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000052.dart.weak.expect
index 4c2e652..bfd2076 100644
--- a/pkg/front_end/testcases/rasta/issue_000052.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000052.dart.weak.expect
@@ -6,5 +6,5 @@
   function f() → Null {
     core::print("hello");
   }
-  f(){() →* Null};
+  f.call();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000052.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000052.dart.weak.transformed.expect
index 4c2e652..bfd2076 100644
--- a/pkg/front_end/testcases/rasta/issue_000052.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000052.dart.weak.transformed.expect
@@ -6,5 +6,5 @@
   function f() → Null {
     core::print("hello");
   }
-  f(){() →* Null};
+  f.call();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000053.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000053.dart.weak.expect
index f4841de..b732bad 100644
--- a/pkg/front_end/testcases/rasta/issue_000053.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000053.dart.weak.expect
@@ -22,5 +22,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  new self::C::•().{self::C::test}(){() →* dynamic};
+  new self::C::•().{self::C::test}();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000053.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000053.dart.weak.transformed.expect
index f4841de..b732bad 100644
--- a/pkg/front_end/testcases/rasta/issue_000053.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000053.dart.weak.transformed.expect
@@ -22,5 +22,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  new self::C::•().{self::C::test}(){() →* dynamic};
+  new self::C::•().{self::C::test}();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000067.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000067.dart.weak.expect
index 033c0fd..72b1c0e 100644
--- a/pkg/front_end/testcases/rasta/issue_000067.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000067.dart.weak.expect
@@ -43,5 +43,5 @@
 }
 static method main() → dynamic {
   self::A* a = new self::D::•();
-  exp::Expect::equals(2, a.{self::A::m}(){() →* core::int*});
+  exp::Expect::equals(2, a.{self::A::m}());
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000067.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000067.dart.weak.transformed.expect
index d34604a..78a21ce 100644
--- a/pkg/front_end/testcases/rasta/issue_000067.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000067.dart.weak.transformed.expect
@@ -43,5 +43,5 @@
 }
 static method main() → dynamic {
   self::A* a = new self::D::•();
-  exp::Expect::equals(2, a.{self::A::m}(){() →* core::int*});
+  exp::Expect::equals(2, a.{self::A::m}());
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000069.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000069.dart.weak.expect
index 07c2ec1..12a916f 100644
--- a/pkg/front_end/testcases/rasta/issue_000069.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000069.dart.weak.expect
@@ -5,7 +5,7 @@
 static method main() → dynamic {
   dynamic x;
   core::int* i = 0;
-  while ((let final core::int* #t1 = i in let final core::int* #t2 = i = #t1.{core::num::+}(1){(core::num*) →* core::int*} in #t1).{core::num::<}(5){(core::num*) →* core::bool*}) {
+  while ((let final core::int* #t1 = i in let final core::int* #t2 = i = #t1.{core::num::+}(1) in #t1).{core::num::<}(5)) {
     core::int* x = i;
   }
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000069.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000069.dart.weak.transformed.expect
index 07c2ec1..12a916f 100644
--- a/pkg/front_end/testcases/rasta/issue_000069.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000069.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
 static method main() → dynamic {
   dynamic x;
   core::int* i = 0;
-  while ((let final core::int* #t1 = i in let final core::int* #t2 = i = #t1.{core::num::+}(1){(core::num*) →* core::int*} in #t1).{core::num::<}(5){(core::num*) →* core::bool*}) {
+  while ((let final core::int* #t1 = i in let final core::int* #t2 = i = #t1.{core::num::+}(1) in #t1).{core::num::<}(5)) {
     core::int* x = i;
   }
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000070.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000070.dart.weak.expect
index 18d9024..fcbc6d2 100644
--- a/pkg/front_end/testcases/rasta/issue_000070.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000070.dart.weak.expect
@@ -22,7 +22,7 @@
     return new self::A::empty<self::A::f::N*, self::A::f::S*, self::A::f::U*>();
   }
   get getter() → core::List<self::A::U*>* {
-    return this.{self::A::field}{core::List<self::A::U*>*};
+    return this.{self::A::field};
   }
   set setter(generic-covariant-impl self::A::S* s) → void {}
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -60,7 +60,7 @@
   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;
-  core::List<dynamic>* z = a.{self::A::getter}{core::List<dynamic>*};
+  core::List<dynamic>* z = a.{self::A::getter};
   a.{self::A::setter} = 1;
 }
 
diff --git a/pkg/front_end/testcases/rasta/issue_000070.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000070.dart.weak.transformed.expect
index 9534f31..41a034d 100644
--- a/pkg/front_end/testcases/rasta/issue_000070.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000070.dart.weak.transformed.expect
@@ -22,7 +22,7 @@
     return new self::A::empty<self::A::f::N*, self::A::f::S*, self::A::f::U*>();
   }
   get getter() → core::List<self::A::U*>* {
-    return this.{self::A::field}{core::List<self::A::U*>*};
+    return this.{self::A::field};
   }
   set setter(generic-covariant-impl self::A::S* s) → void {}
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -60,7 +60,7 @@
   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;
-  core::List<dynamic>* z = a.{self::A::getter}{core::List<dynamic>*};
+  core::List<dynamic>* z = a.{self::A::getter};
   a.{self::A::setter} = 1;
 }
 
diff --git a/pkg/front_end/testcases/rasta/issue_000080.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000080.dart.weak.expect
index e61a3ce..102e810 100644
--- a/pkg/front_end/testcases/rasta/issue_000080.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000080.dart.weak.expect
@@ -53,5 +53,5 @@
 static method main() → dynamic {
   self::Foo* f = new self::Foo::•();
   f.{self::_Foo&Object&Mixin::field} = 42;
-  core::print(f.{self::Foo::bar}(){() →* dynamic});
+  core::print(f.{self::Foo::bar}());
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000080.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000080.dart.weak.transformed.expect
index 8e37860..c8a45db 100644
--- a/pkg/front_end/testcases/rasta/issue_000080.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000080.dart.weak.transformed.expect
@@ -50,5 +50,5 @@
 static method main() → dynamic {
   self::Foo* f = new self::Foo::•();
   f.{self::_Foo&Object&Mixin::field} = 42;
-  core::print(f.{self::Foo::bar}(){() →* dynamic});
+  core::print(f.{self::Foo::bar}());
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000081.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000081.dart.weak.expect
index 5549963..a132ec8 100644
--- a/pkg/front_end/testcases/rasta/issue_000081.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000081.dart.weak.expect
@@ -23,13 +23,13 @@
     : super self::Base::•()
     ;
   get hashCode() → core::int*
-    return let final core::int* #t1 = this.{self::Sub::_hashCode}{core::int*} in #t1 == null ?{core::int*} this.{self::Sub::_hashCode} = super.{self::Base::hashCode} : #t1;
+    return let final core::int* #t1 = this.{self::Sub::_hashCode} in #t1.{core::num::==}(null) ?{core::int*} this.{self::Sub::_hashCode} = super.{self::Base::hashCode} : #t1;
   method foo() → dynamic {
-    this.{self::Sub::_hashCode}{core::int*} == null ?{core::int*} this.{self::Sub::_hashCode} = super.{self::Base::hashCode} : null;
+    this.{self::Sub::_hashCode}.{core::num::==}(null) ?{core::int*} this.{self::Sub::_hashCode} = super.{self::Base::hashCode} : null;
   }
 }
 static method main() → dynamic {
-  core::print(new self::Sub::•().{self::Sub::hashCode}{core::int*});
+  core::print(new self::Sub::•().{self::Sub::hashCode});
   core::List<Null>* l = <Null>[null];
-  let final core::List<Null>* #t2 = l in let final core::int* #t3 = 0 in #t2.{core::List::[]}(#t3){(core::int*) →* Null} == null ?{core::String*} #t2.{core::List::[]=}(#t3, "fisk" as{TypeError} Null){(core::int*, Null) →* void} : null;
+  let final core::List<Null>* #t2 = l in let final core::int* #t3 = 0 in #t2.{core::List::[]}(#t3).{core::Object::==}(null) ?{core::String*} #t2.{core::List::[]=}(#t3, "fisk" as{TypeError} Null) : null;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000081.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000081.dart.weak.transformed.expect
index 5e4e553..b1d4d3f 100644
--- a/pkg/front_end/testcases/rasta/issue_000081.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000081.dart.weak.transformed.expect
@@ -23,15 +23,15 @@
     : super self::Base::•()
     ;
   get hashCode() → core::int*
-    return let final core::int* #t1 = this.{self::Sub::_hashCode}{core::int*} in #t1 == null ?{core::int*} this.{self::Sub::_hashCode} = super.{self::Base::hashCode} : #t1;
+    return let final core::int* #t1 = this.{self::Sub::_hashCode} in #t1.{core::num::==}(null) ?{core::int*} this.{self::Sub::_hashCode} = super.{self::Base::hashCode} : #t1;
   method foo() → dynamic {
-    this.{self::Sub::_hashCode}{core::int*} == null ?{core::int*} this.{self::Sub::_hashCode} = super.{self::Base::hashCode} : null;
+    this.{self::Sub::_hashCode}.{core::num::==}(null) ?{core::int*} this.{self::Sub::_hashCode} = super.{self::Base::hashCode} : null;
   }
 }
 static method main() → dynamic {
-  core::print(new self::Sub::•().{self::Sub::hashCode}{core::int*});
+  core::print(new self::Sub::•().{self::Sub::hashCode});
   core::List<Null>* l = core::_GrowableList::_literal1<Null>(null);
-  let final core::List<Null>* #t2 = l in let final core::int* #t3 = 0 in #t2.{core::List::[]}(#t3){(core::int*) →* Null} == null ?{core::String*} #t2.{core::List::[]=}(#t3, "fisk" as{TypeError} Null){(core::int*, Null) →* void} : null;
+  let final core::List<Null>* #t2 = l in let final core::int* #t3 = 0 in #t2.{core::List::[]}(#t3).{core::Object::==}(null) ?{core::String*} #t2.{core::List::[]=}(#t3, "fisk" as{TypeError} Null) : null;
 }
 
 
diff --git a/pkg/front_end/testcases/rasta/mixin_library.dart.weak.expect b/pkg/front_end/testcases/rasta/mixin_library.dart.weak.expect
index bca934b..353bded 100644
--- a/pkg/front_end/testcases/rasta/mixin_library.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/mixin_library.dart.weak.expect
@@ -18,7 +18,7 @@
     : super core::Object::•()
     ;
   method foo() → dynamic
-    return super.foo(){dynamic}.+(self::f());
+    return super.foo().+(self::f());
   method g(generic-covariant-impl self::Mixin::T* a) → self::Mixin::T*
     return null;
   method h() → dynamic
@@ -28,7 +28,7 @@
   method _privateMethod() → dynamic
     return 49;
   method publicMethod() → dynamic
-    return this.{self::Mixin::_privateMethod}(){() →* dynamic};
+    return this.{self::Mixin::_privateMethod}();
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -47,4 +47,4 @@
 static method _private() → dynamic
   return 117;
 static method foo(dynamic m) → dynamic
-  return m{dynamic}._privateMethod();
+  return m._privateMethod();
diff --git a/pkg/front_end/testcases/rasta/parser_error.dart.weak.expect b/pkg/front_end/testcases/rasta/parser_error.dart.weak.expect
index 6547bf2..1b9b0f8 100644
--- a/pkg/front_end/testcases/rasta/parser_error.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/parser_error.dart.weak.expect
@@ -29,7 +29,7 @@
   if (?b) return b;  /// 01: compile-time error
         ^") as{TypeError,ForDynamic} core::bool*)
     return b as{TypeError,ForDynamic} core::int*;
-  return a{dynamic}.+(b){dynamic}.+(c) as{TypeError,ForDynamic} core::int*;
+  return a.+(b).+(c) as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {
   exp::Expect::equals(6, self::test(1, b: 2, c: 3));
diff --git a/pkg/front_end/testcases/rasta/parser_error.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/parser_error.dart.weak.transformed.expect
index a26a0de..a7bf51f 100644
--- a/pkg/front_end/testcases/rasta/parser_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/parser_error.dart.weak.transformed.expect
@@ -29,7 +29,7 @@
   if (?b) return b;  /// 01: compile-time error
         ^") as{TypeError,ForDynamic} core::bool*)
     return b as{TypeError,ForDynamic} core::int*;
-  return a{dynamic}.+(b){dynamic}.+(c) as{TypeError,ForDynamic} core::int*;
+  return a.+(b).+(c) as{TypeError,ForDynamic} core::int*;
 }
 static method main() → dynamic {
   exp::Expect::equals(6, self::test(1, b: 2, c: 3));
diff --git a/pkg/front_end/testcases/rasta/static.dart.weak.expect b/pkg/front_end/testcases/rasta/static.dart.weak.expect
index 79e268c..b43a9e5 100644
--- a/pkg/front_end/testcases/rasta/static.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.weak.expect
@@ -183,7 +183,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method use(dynamic x) → dynamic {
-  if(x =={core::Object::==}{(core::Object*) →* core::bool*} new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int*})
+  if(x.{core::Object::==}(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}))
     throw "Shouldn't happen";
 }
 static method main() → dynamic {
@@ -208,8 +208,8 @@
     self::use(let final core::int* #t1 = #C1 in let final dynamic #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){(core::num*) →* core::int*};
-    self::use(let final core::int* #t3 = self::Foo::staticField in let final core::int* #t4 = self::Foo::staticField = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3);
+    self::Foo::staticField = self::Foo::staticField.{core::num::+}(1);
+    self::use(let final core::int* #t3 = self::Foo::staticField in let final core::int* #t4 = self::Foo::staticField = #t3.{core::num::+}(1) in #t3);
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:35:9: Error: Setter not found: 'staticFunction'.
     Foo.staticFunction++;
         ^^^^^^^^^^^^^^";
@@ -224,18 +224,18 @@
             ^^^^^^^^^^^^" in #t7);
     self::Foo::staticSetter = invalid-expression "pkg/front_end/testcases/rasta/static.dart:39:9: Error: Getter not found: 'staticSetter'.
     Foo.staticSetter++;
-        ^^^^^^^^^^^^"{dynamic}.+(1);
+        ^^^^^^^^^^^^".+(1);
     self::use(let final dynamic #t9 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:40:13: Error: Getter not found: 'staticSetter'.
     use(Foo.staticSetter++);
-            ^^^^^^^^^^^^" in let final dynamic #t10 = self::Foo::staticSetter = #t9{dynamic}.+(1) in #t9);
+            ^^^^^^^^^^^^" in let final dynamic #t10 = self::Foo::staticSetter = #t9.+(1) in #t9);
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:42:11: Error: Setter not found: 'staticConstant'.
     ++Foo.staticConstant;
           ^^^^^^^^^^^^^^";
     self::use(invalid-expression "pkg/front_end/testcases/rasta/static.dart:43:15: Error: Setter not found: 'staticConstant'.
     use(++Foo.staticConstant);
               ^^^^^^^^^^^^^^");
-    self::Foo::staticField = self::Foo::staticField.{core::num::+}(1){(core::num*) →* core::int*};
-    self::use(self::Foo::staticField = self::Foo::staticField.{core::num::+}(1){(core::num*) →* core::int*});
+    self::Foo::staticField = self::Foo::staticField.{core::num::+}(1);
+    self::use(self::Foo::staticField = self::Foo::staticField.{core::num::+}(1));
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:46:11: Error: Setter not found: 'staticFunction'.
     ++Foo.staticFunction;
           ^^^^^^^^^^^^^^";
@@ -250,10 +250,10 @@
               ^^^^^^^^^^^^");
     self::Foo::staticSetter = invalid-expression "pkg/front_end/testcases/rasta/static.dart:50:11: Error: Getter not found: 'staticSetter'.
     ++Foo.staticSetter;
-          ^^^^^^^^^^^^"{dynamic}.+(1);
+          ^^^^^^^^^^^^".+(1);
     self::use(self::Foo::staticSetter = invalid-expression "pkg/front_end/testcases/rasta/static.dart:51:15: Error: Getter not found: 'staticSetter'.
     use(++Foo.staticSetter);
-              ^^^^^^^^^^^^"{dynamic}.+(1));
+              ^^^^^^^^^^^^".+(1));
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:53:23: 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'.
     Foo.staticConstant();
@@ -272,14 +272,14 @@
                        ^");
     self::Foo::staticFunction();
     self::use(self::Foo::staticFunction());
-    self::Foo::staticGetter{dynamic}.call();
-    self::use(self::Foo::staticGetter{dynamic}.call());
+    self::Foo::staticGetter.call();
+    self::use(self::Foo::staticGetter.call());
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:61:9: Error: Getter not found: 'staticSetter'.
     Foo.staticSetter();
-        ^^^^^^^^^^^^"{dynamic}.call();
+        ^^^^^^^^^^^^".call();
     self::use(invalid-expression "pkg/front_end/testcases/rasta/static.dart:62:13: Error: Getter not found: 'staticSetter'.
     use(Foo.staticSetter());
-            ^^^^^^^^^^^^"{dynamic}.call());
+            ^^^^^^^^^^^^".call());
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:64:9: Error: Setter not found: 'staticConstant'.
     Foo.staticConstant = 87;
         ^^^^^^^^^^^^^^";
@@ -302,32 +302,32 @@
             ^^^^^^^^^^^^");
     self::Foo::staticSetter = 87;
     self::use(self::Foo::staticSetter = 87);
-    (#C1) == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:75:9: Error: Setter not found: 'staticConstant'.
+    (#C1).{core::num::==}(null) ?{dynamic} 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 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:76:13: Error: Setter not found: 'staticConstant'.
+    self::use(let final core::int* #t11 = #C1 in #t11.{core::num::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:76:13: Error: Setter not found: 'staticConstant'.
     use(Foo.staticConstant ??= 87);
             ^^^^^^^^^^^^^^" : #t11);
-    self::Foo::staticField == null ?{core::int*} self::Foo::staticField = 87 : null;
-    self::use(let final core::int* #t12 = self::Foo::staticField in #t12 == null ?{core::int*} self::Foo::staticField = 87 : #t12);
-    (#C2) == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:79:9: Error: Setter not found: 'staticFunction'.
+    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) ?{dynamic} 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 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:80:13: Error: Setter not found: 'staticFunction'.
+    self::use(let final () →* dynamic #t13 = #C2 in #t13.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:80:13: Error: Setter not found: 'staticFunction'.
     use(Foo.staticFunction ??= 87);
             ^^^^^^^^^^^^^^" : #t13);
-    self::Foo::staticGetter == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:81:9: Error: Setter not found: 'staticGetter'.
+    self::Foo::staticGetter.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:81:9: Error: Setter not found: 'staticGetter'.
     Foo.staticGetter ??= 87;
         ^^^^^^^^^^^^" : null;
-    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:82:13: Error: Setter not found: 'staticGetter'.
+    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:82:13: Error: Setter not found: 'staticGetter'.
     use(Foo.staticGetter ??= 87);
             ^^^^^^^^^^^^" : #t14);
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:83:9: Error: Getter not found: 'staticSetter'.
     Foo.staticSetter ??= 87;
-        ^^^^^^^^^^^^" == null ?{dynamic} self::Foo::staticSetter = 87 : null;
+        ^^^^^^^^^^^^".{core::Object::==}(null) ?{dynamic} self::Foo::staticSetter = 87 : null;
     self::use(let final dynamic #t15 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:84:13: Error: Getter not found: 'staticSetter'.
     use(Foo.staticSetter ??= 87);
-            ^^^^^^^^^^^^" in #t15 == null ?{dynamic} self::Foo::staticSetter = 87 : #t15);
+            ^^^^^^^^^^^^" in #t15.{core::Object::==}(null) ?{dynamic} self::Foo::staticSetter = 87 : #t15);
   }
   on core::NoSuchMethodError* catch(no-exception-var) {
   }
diff --git a/pkg/front_end/testcases/rasta/static.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/static.dart.weak.transformed.expect
index fd27fff..7c94fe0 100644
--- a/pkg/front_end/testcases/rasta/static.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.weak.transformed.expect
@@ -183,7 +183,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method use(dynamic x) → dynamic {
-  if(x =={core::Object::==}{(core::Object*) →* core::bool*} new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int*})
+  if(x.{core::Object::==}(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}))
     throw "Shouldn't happen";
 }
 static method main() → dynamic {
@@ -208,8 +208,8 @@
     self::use(let final core::int* #t1 = #C1 in let final dynamic #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){(core::num*) →* core::int*};
-    self::use(let final core::int* #t3 = self::Foo::staticField in let final core::int* #t4 = self::Foo::staticField = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3);
+    self::Foo::staticField = self::Foo::staticField.{core::num::+}(1);
+    self::use(let final core::int* #t3 = self::Foo::staticField in let final core::int* #t4 = self::Foo::staticField = #t3.{core::num::+}(1) in #t3);
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:35:9: Error: Setter not found: 'staticFunction'.
     Foo.staticFunction++;
         ^^^^^^^^^^^^^^";
@@ -224,18 +224,18 @@
             ^^^^^^^^^^^^" in #t7);
     self::Foo::staticSetter = invalid-expression "pkg/front_end/testcases/rasta/static.dart:39:9: Error: Getter not found: 'staticSetter'.
     Foo.staticSetter++;
-        ^^^^^^^^^^^^"{dynamic}.+(1);
+        ^^^^^^^^^^^^".+(1);
     self::use(let final dynamic #t9 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:40:13: Error: Getter not found: 'staticSetter'.
     use(Foo.staticSetter++);
-            ^^^^^^^^^^^^" in let final dynamic #t10 = self::Foo::staticSetter = #t9{dynamic}.+(1) in #t9);
+            ^^^^^^^^^^^^" in let final dynamic #t10 = self::Foo::staticSetter = #t9.+(1) in #t9);
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:42:11: Error: Setter not found: 'staticConstant'.
     ++Foo.staticConstant;
           ^^^^^^^^^^^^^^";
     self::use(invalid-expression "pkg/front_end/testcases/rasta/static.dart:43:15: Error: Setter not found: 'staticConstant'.
     use(++Foo.staticConstant);
               ^^^^^^^^^^^^^^");
-    self::Foo::staticField = self::Foo::staticField.{core::num::+}(1){(core::num*) →* core::int*};
-    self::use(self::Foo::staticField = self::Foo::staticField.{core::num::+}(1){(core::num*) →* core::int*});
+    self::Foo::staticField = self::Foo::staticField.{core::num::+}(1);
+    self::use(self::Foo::staticField = self::Foo::staticField.{core::num::+}(1));
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:46:11: Error: Setter not found: 'staticFunction'.
     ++Foo.staticFunction;
           ^^^^^^^^^^^^^^";
@@ -250,10 +250,10 @@
               ^^^^^^^^^^^^");
     self::Foo::staticSetter = invalid-expression "pkg/front_end/testcases/rasta/static.dart:50:11: Error: Getter not found: 'staticSetter'.
     ++Foo.staticSetter;
-          ^^^^^^^^^^^^"{dynamic}.+(1);
+          ^^^^^^^^^^^^".+(1);
     self::use(self::Foo::staticSetter = invalid-expression "pkg/front_end/testcases/rasta/static.dart:51:15: Error: Getter not found: 'staticSetter'.
     use(++Foo.staticSetter);
-              ^^^^^^^^^^^^"{dynamic}.+(1));
+              ^^^^^^^^^^^^".+(1));
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:53:23: 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'.
     Foo.staticConstant();
@@ -272,14 +272,14 @@
                        ^");
     self::Foo::staticFunction();
     self::use(self::Foo::staticFunction());
-    self::Foo::staticGetter{dynamic}.call();
-    self::use(self::Foo::staticGetter{dynamic}.call());
+    self::Foo::staticGetter.call();
+    self::use(self::Foo::staticGetter.call());
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:61:9: Error: Getter not found: 'staticSetter'.
     Foo.staticSetter();
-        ^^^^^^^^^^^^"{dynamic}.call();
+        ^^^^^^^^^^^^".call();
     self::use(invalid-expression "pkg/front_end/testcases/rasta/static.dart:62:13: Error: Getter not found: 'staticSetter'.
     use(Foo.staticSetter());
-            ^^^^^^^^^^^^"{dynamic}.call());
+            ^^^^^^^^^^^^".call());
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:64:9: Error: Setter not found: 'staticConstant'.
     Foo.staticConstant = 87;
         ^^^^^^^^^^^^^^";
@@ -302,32 +302,32 @@
             ^^^^^^^^^^^^");
     self::Foo::staticSetter = 87;
     self::use(self::Foo::staticSetter = 87);
-    (#C1) == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:75:9: Error: Setter not found: 'staticConstant'.
+    (#C1).{core::num::==}(null) ?{dynamic} 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 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:76:13: Error: Setter not found: 'staticConstant'.
+    self::use(let final core::int* #t11 = #C1 in #t11.{core::num::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:76:13: Error: Setter not found: 'staticConstant'.
     use(Foo.staticConstant ??= 87);
             ^^^^^^^^^^^^^^" : #t11);
-    self::Foo::staticField == null ?{core::int*} self::Foo::staticField = 87 : null;
-    self::use(let final core::int* #t12 = self::Foo::staticField in #t12 == null ?{core::int*} self::Foo::staticField = 87 : #t12);
-    (#C2) == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:79:9: Error: Setter not found: 'staticFunction'.
+    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) ?{dynamic} 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 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:80:13: Error: Setter not found: 'staticFunction'.
+    self::use(let final () →* dynamic #t13 = #C2 in #t13.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:80:13: Error: Setter not found: 'staticFunction'.
     use(Foo.staticFunction ??= 87);
             ^^^^^^^^^^^^^^" : #t13);
-    self::Foo::staticGetter == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:81:9: Error: Setter not found: 'staticGetter'.
+    self::Foo::staticGetter.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:81:9: Error: Setter not found: 'staticGetter'.
     Foo.staticGetter ??= 87;
         ^^^^^^^^^^^^" : null;
-    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:82:13: Error: Setter not found: 'staticGetter'.
+    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:82:13: Error: Setter not found: 'staticGetter'.
     use(Foo.staticGetter ??= 87);
             ^^^^^^^^^^^^" : #t14);
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:83:9: Error: Getter not found: 'staticSetter'.
     Foo.staticSetter ??= 87;
-        ^^^^^^^^^^^^" == null ?{dynamic} self::Foo::staticSetter = 87 : null;
+        ^^^^^^^^^^^^".{core::Object::==}(null) ?{dynamic} self::Foo::staticSetter = 87 : null;
     self::use(let final dynamic #t15 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:84:13: Error: Getter not found: 'staticSetter'.
     use(Foo.staticSetter ??= 87);
-            ^^^^^^^^^^^^" in #t15 == null ?{dynamic} self::Foo::staticSetter = 87 : #t15);
+            ^^^^^^^^^^^^" in #t15.{core::Object::==}(null) ?{dynamic} self::Foo::staticSetter = 87 : #t15);
   }
   on core::NoSuchMethodError* catch(no-exception-var) {
   }
diff --git a/pkg/front_end/testcases/rasta/super.dart.weak.expect b/pkg/front_end/testcases/rasta/super.dart.weak.expect
index 2afaa67..17305dd 100644
--- a/pkg/front_end/testcases/rasta/super.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/super.dart.weak.expect
@@ -406,13 +406,13 @@
     self::use(super.{self::A::unary-}());
     invalid-expression "pkg/front_end/testcases/rasta/super.dart:43:5: Error: This couldn't be parsed.
     +super;
-    ^"{dynamic}.+(invalid-expression "pkg/front_end/testcases/rasta/super.dart:43:6: Error: Can't use 'super' as an expression.
+    ^".+(invalid-expression "pkg/front_end/testcases/rasta/super.dart:43:6: Error: Can't use 'super' as an expression.
 To delegate a constructor to a super constructor, put the super call as an initializer.
     +super;
      ^^^^^");
     self::use(invalid-expression "pkg/front_end/testcases/rasta/super.dart:44:9: Error: This couldn't be parsed.
     use(+super);
-        ^"{dynamic}.+(invalid-expression "pkg/front_end/testcases/rasta/super.dart:44:10: Error: Can't use 'super' as an expression.
+        ^".+(invalid-expression "pkg/front_end/testcases/rasta/super.dart:44:10: Error: Can't use 'super' as an expression.
 To delegate a constructor to a super constructor, put the super call as an initializer.
     use(+super);
          ^^^^^"));
@@ -444,26 +444,26 @@
     self::use(super.{self::A::m});
     super.{self::A::n};
     self::use(super.{self::A::n});
-    super.{self::A::a} = super.{self::A::a}{dynamic}.+(1);
-    self::use(let final dynamic #t1 = super.{self::A::a} in let final dynamic #t2 = super.{self::A::a} = #t1{dynamic}.+(1) in #t1);
-    super.{self::A::b} = super.{self::B::b}{dynamic}.+(1);
-    self::use(let final dynamic #t3 = super.{self::B::b} in let final dynamic #t4 = super.{self::A::b} = #t3{dynamic}.+(1) in #t3);
-    super.{self::B::c} = super.{self::A::c}{dynamic}.+(1);
-    self::use(let final dynamic #t5 = super.{self::A::c} in let final dynamic #t6 = super.{self::B::c} = #t5{dynamic}.+(1) in #t5);
-    super.{self::A::d} = super.{self::B::d}{dynamic}.+(1);
-    self::use(let final dynamic #t7 = super.{self::B::d} in let final dynamic #t8 = super.{self::A::d} = #t7{dynamic}.+(1) in #t7);
-    super.e = super.{self::A::e}{dynamic}.+(1);
-    self::use(let final dynamic #t9 = super.{self::A::e} in let final dynamic #t10 = super.e = #t9{dynamic}.+(1) in #t9);
-    super.f = super.{self::A::f}{dynamic}.+(1);
-    self::use(let final dynamic #t11 = super.{self::A::f} in let final dynamic #t12 = super.f = #t11{dynamic}.+(1) in #t11);
-    super.{self::A::g} = super.g{dynamic}.+(1);
-    self::use(let final dynamic #t13 = super.g in let final dynamic #t14 = super.{self::A::g} = #t13{dynamic}.+(1) in #t13);
-    super.{self::A::h} = super.{self::A::h}{dynamic}.+(1);
-    self::use(let final dynamic #t15 = super.{self::A::h} in let final dynamic #t16 = super.{self::A::h} = #t15{dynamic}.+(1) in #t15);
-    super.{self::B::i} = super.{self::A::i}{dynamic}.+(1);
-    self::use(let final dynamic #t17 = super.{self::A::i} in let final dynamic #t18 = super.{self::B::i} = #t17{dynamic}.+(1) in #t17);
-    let final core::int* #t19 = 87 in super.{self::A::[]=}(#t19, super.{self::A::[]}(#t19){dynamic}.+(1));
-    self::use(let final core::int* #t20 = 87 in let final dynamic #t21 = super.{self::A::[]}(#t20) in let final void #t22 = super.{self::A::[]=}(#t20, #t21{dynamic}.+(1)) in #t21);
+    super.{self::A::a} = super.{self::A::a}.+(1);
+    self::use(let final dynamic #t1 = super.{self::A::a} in let final dynamic #t2 = super.{self::A::a} = #t1.+(1) in #t1);
+    super.{self::A::b} = super.{self::B::b}.+(1);
+    self::use(let final dynamic #t3 = super.{self::B::b} in let final dynamic #t4 = super.{self::A::b} = #t3.+(1) in #t3);
+    super.{self::B::c} = super.{self::A::c}.+(1);
+    self::use(let final dynamic #t5 = super.{self::A::c} in let final dynamic #t6 = super.{self::B::c} = #t5.+(1) in #t5);
+    super.{self::A::d} = super.{self::B::d}.+(1);
+    self::use(let final dynamic #t7 = super.{self::B::d} in let final dynamic #t8 = super.{self::A::d} = #t7.+(1) in #t7);
+    super.e = super.{self::A::e}.+(1);
+    self::use(let final dynamic #t9 = super.{self::A::e} in let final dynamic #t10 = super.e = #t9.+(1) in #t9);
+    super.f = super.{self::A::f}.+(1);
+    self::use(let final dynamic #t11 = super.{self::A::f} in let final dynamic #t12 = super.f = #t11.+(1) in #t11);
+    super.{self::A::g} = super.g.+(1);
+    self::use(let final dynamic #t13 = super.g in let final dynamic #t14 = super.{self::A::g} = #t13.+(1) in #t13);
+    super.{self::A::h} = super.{self::A::h}.+(1);
+    self::use(let final dynamic #t15 = super.{self::A::h} in let final dynamic #t16 = super.{self::A::h} = #t15.+(1) in #t15);
+    super.{self::B::i} = super.{self::A::i}.+(1);
+    self::use(let final dynamic #t17 = super.{self::A::i} in let final dynamic #t18 = super.{self::B::i} = #t17.+(1) in #t17);
+    let final core::int* #t19 = 87 in super.{self::A::[]=}(#t19, super.{self::A::[]}(#t19).+(1));
+    self::use(let final core::int* #t20 = 87 in let final dynamic #t21 = super.{self::A::[]}(#t20) in let final void #t22 = super.{self::A::[]=}(#t20, #t21.+(1)) in #t21);
     super.m = invalid-expression "pkg/front_end/testcases/rasta/super.dart:95:12: Error: The operator '+' isn't defined for the class 'void Function()'.
 Try correcting the operator to an existing operator, or defining a '+' operator.
     super.m++;
@@ -480,26 +480,26 @@
 Try correcting the operator to an existing operator, or defining a '+' operator.
     use(super.n++);
                ^" in #t25);
-    super.{self::A::a} = super.{self::A::a}{dynamic}.+(1);
-    self::use(super.{self::A::a} = super.{self::A::a}{dynamic}.+(1));
-    super.{self::A::b} = super.{self::B::b}{dynamic}.+(1);
-    self::use(super.{self::A::b} = super.{self::B::b}{dynamic}.+(1));
-    super.{self::B::c} = super.{self::A::c}{dynamic}.+(1);
-    self::use(super.{self::B::c} = super.{self::A::c}{dynamic}.+(1));
-    super.{self::A::d} = super.{self::B::d}{dynamic}.+(1);
-    self::use(super.{self::A::d} = super.{self::B::d}{dynamic}.+(1));
-    super.e = super.{self::A::e}{dynamic}.+(1);
-    self::use(super.e = super.{self::A::e}{dynamic}.+(1));
-    super.f = super.{self::A::f}{dynamic}.+(1);
-    self::use(super.f = super.{self::A::f}{dynamic}.+(1));
-    super.{self::A::g} = super.g{dynamic}.+(1);
-    self::use(super.{self::A::g} = super.g{dynamic}.+(1));
-    super.{self::A::h} = super.{self::A::h}{dynamic}.+(1);
-    self::use(super.{self::A::h} = super.{self::A::h}{dynamic}.+(1));
-    super.{self::B::i} = super.{self::A::i}{dynamic}.+(1);
-    self::use(super.{self::B::i} = super.{self::A::i}{dynamic}.+(1));
-    let final core::int* #t27 = 87 in let final dynamic #t28 = super.{self::A::[]}(#t27){dynamic}.+(1) in let final void #t29 = super.{self::A::[]=}(#t27, #t28) in #t28;
-    self::use(let final core::int* #t30 = 87 in let final dynamic #t31 = super.{self::A::[]}(#t30){dynamic}.+(1) in let final void #t32 = super.{self::A::[]=}(#t30, #t31) in #t31);
+    super.{self::A::a} = super.{self::A::a}.+(1);
+    self::use(super.{self::A::a} = super.{self::A::a}.+(1));
+    super.{self::A::b} = super.{self::B::b}.+(1);
+    self::use(super.{self::A::b} = super.{self::B::b}.+(1));
+    super.{self::B::c} = super.{self::A::c}.+(1);
+    self::use(super.{self::B::c} = super.{self::A::c}.+(1));
+    super.{self::A::d} = super.{self::B::d}.+(1);
+    self::use(super.{self::A::d} = super.{self::B::d}.+(1));
+    super.e = super.{self::A::e}.+(1);
+    self::use(super.e = super.{self::A::e}.+(1));
+    super.f = super.{self::A::f}.+(1);
+    self::use(super.f = super.{self::A::f}.+(1));
+    super.{self::A::g} = super.g.+(1);
+    self::use(super.{self::A::g} = super.g.+(1));
+    super.{self::A::h} = super.{self::A::h}.+(1);
+    self::use(super.{self::A::h} = super.{self::A::h}.+(1));
+    super.{self::B::i} = super.{self::A::i}.+(1);
+    self::use(super.{self::B::i} = super.{self::A::i}.+(1));
+    let final core::int* #t27 = 87 in let final dynamic #t28 = super.{self::A::[]}(#t27).+(1) in let final void #t29 = super.{self::A::[]=}(#t27, #t28) in #t28;
+    self::use(let final core::int* #t30 = 87 in let final dynamic #t31 = super.{self::A::[]}(#t30).+(1) in let final void #t32 = super.{self::A::[]=}(#t30, #t31) in #t31);
     super.m = invalid-expression "pkg/front_end/testcases/rasta/super.dart:120:5: Error: The operator '+' isn't defined for the class 'void Function()'.
 Try correcting the operator to an existing operator, or defining a '+' operator.
     ++super.m;
@@ -516,26 +516,26 @@
 Try correcting the operator to an existing operator, or defining a '+' operator.
     use(++super.n);
         ^");
-    super.{self::A::a}{dynamic}.call();
-    self::use(super.{self::A::a}{dynamic}.call());
-    super.{self::B::b}{dynamic}.call();
-    self::use(super.{self::B::b}{dynamic}.call());
-    super.{self::A::c}{dynamic}.call();
-    self::use(super.{self::A::c}{dynamic}.call());
-    super.{self::B::d}{dynamic}.call();
-    self::use(super.{self::B::d}{dynamic}.call());
-    super.{self::A::e}{dynamic}.call();
-    self::use(super.{self::A::e}{dynamic}.call());
-    super.{self::A::f}{dynamic}.call();
-    self::use(super.{self::A::f}{dynamic}.call());
+    super.{self::A::a}.call();
+    self::use(super.{self::A::a}.call());
+    super.{self::B::b}.call();
+    self::use(super.{self::B::b}.call());
+    super.{self::A::c}.call();
+    self::use(super.{self::A::c}.call());
+    super.{self::B::d}.call();
+    self::use(super.{self::B::d}.call());
+    super.{self::A::e}.call();
+    self::use(super.{self::A::e}.call());
+    super.{self::A::f}.call();
+    self::use(super.{self::A::f}.call());
     super.g();
     self::use(super.g());
-    super.{self::A::h}{dynamic}.call();
-    self::use(super.{self::A::h}{dynamic}.call());
-    super.{self::A::i}{dynamic}.call();
-    self::use(super.{self::A::i}{dynamic}.call());
-    super.{self::A::[]}(87){dynamic}.call();
-    self::use(super.{self::A::[]}(87){dynamic}.call());
+    super.{self::A::h}.call();
+    self::use(super.{self::A::h}.call());
+    super.{self::A::i}.call();
+    self::use(super.{self::A::i}.call());
+    super.{self::A::[]}(87).call();
+    self::use(super.{self::A::[]}(87).call());
     super.{self::A::m}();
     self::use(let final Never* #t33 = invalid-expression "pkg/front_end/testcases/rasta/super.dart:146:15: Error: This expression has type 'void' and can't be used.
     use(super.m());
@@ -580,50 +580,50 @@
     self::use(super.m = 42);
     super.{self::A::n} = 42;
     self::use(super.{self::A::n} = 42);
-    super.{self::A::a} == null ?{dynamic} super.{self::A::a} = 42 : null;
-    self::use(let final dynamic #t41 = super.{self::A::a} in #t41 == null ?{dynamic} super.{self::A::a} = 42 : #t41);
-    super.{self::B::b} == null ?{dynamic} super.{self::A::b} = 42 : null;
-    self::use(let final dynamic #t42 = super.{self::B::b} in #t42 == null ?{dynamic} super.{self::A::b} = 42 : #t42);
-    super.{self::A::c} == null ?{dynamic} super.{self::B::c} = 42 : null;
-    self::use(let final dynamic #t43 = super.{self::A::c} in #t43 == null ?{dynamic} super.{self::B::c} = 42 : #t43);
-    super.{self::B::d} == null ?{dynamic} super.{self::A::d} = 42 : null;
-    self::use(let final dynamic #t44 = super.{self::B::d} in #t44 == null ?{dynamic} super.{self::A::d} = 42 : #t44);
-    super.{self::A::e} == null ?{dynamic} super.e = 42 : null;
-    self::use(let final dynamic #t45 = super.{self::A::e} in #t45 == null ?{dynamic} super.e = 42 : #t45);
-    super.{self::A::f} == null ?{dynamic} super.f = 42 : null;
-    self::use(let final dynamic #t46 = super.{self::A::f} in #t46 == null ?{dynamic} super.f = 42 : #t46);
-    super.g == null ?{dynamic} super.{self::A::g} = 42 : null;
-    self::use(let final dynamic #t47 = super.g in #t47 == null ?{dynamic} super.{self::A::g} = 42 : #t47);
-    super.{self::A::h} == null ?{dynamic} super.{self::A::h} = 42 : null;
-    self::use(let final dynamic #t48 = super.{self::A::h} in #t48 == null ?{dynamic} super.{self::A::h} = 42 : #t48);
-    super.{self::A::i} == null ?{dynamic} super.{self::B::i} = 42 : null;
-    self::use(let final dynamic #t49 = super.{self::A::i} in #t49 == null ?{dynamic} super.{self::B::i} = 42 : #t49);
-    let final core::int* #t50 = 87 in super.{self::A::[]}(#t50) == null ?{dynamic} super.{self::A::[]=}(#t50, 42) : null;
-    self::use(let final core::int* #t51 = 87 in let final dynamic #t52 = super.{self::A::[]}(#t51) in #t52 == null ?{dynamic} let final core::int* #t53 = 42 in let final void #t54 = super.{self::A::[]=}(#t51, #t53) in #t53 : #t52);
-    super.{self::A::m} == null ?{core::Object*} super.m = 42 : null;
-    self::use(let final () →* void #t55 = super.{self::A::m} in #t55 == null ?{core::Object*} super.m = 42 : #t55);
-    super.{self::A::n} == null ?{core::Object*} super.{self::A::n} = 42 : null;
-    self::use(let final () →* void #t56 = super.{self::A::n} in #t56 == null ?{core::Object*} super.{self::A::n} = 42 : #t56);
-    super.{self::A::a} = super.{self::A::a}{dynamic}.+(42);
-    self::use(super.{self::A::a} = super.{self::A::a}{dynamic}.+(42));
-    super.{self::A::b} = super.{self::B::b}{dynamic}.+(42);
-    self::use(super.{self::A::b} = super.{self::B::b}{dynamic}.+(42));
-    super.{self::B::c} = super.{self::A::c}{dynamic}.+(42);
-    self::use(super.{self::B::c} = super.{self::A::c}{dynamic}.+(42));
-    super.{self::A::d} = super.{self::B::d}{dynamic}.+(42);
-    self::use(super.{self::A::d} = super.{self::B::d}{dynamic}.+(42));
-    super.e = super.{self::A::e}{dynamic}.+(42);
-    self::use(super.e = super.{self::A::e}{dynamic}.+(42));
-    super.f = super.{self::A::f}{dynamic}.+(42);
-    self::use(super.f = super.{self::A::f}{dynamic}.+(42));
-    super.{self::A::g} = super.g{dynamic}.+(42);
-    self::use(super.{self::A::g} = super.g{dynamic}.+(42));
-    super.{self::A::h} = super.{self::A::h}{dynamic}.+(42);
-    self::use(super.{self::A::h} = super.{self::A::h}{dynamic}.+(42));
-    super.{self::B::i} = super.{self::A::i}{dynamic}.+(42);
-    self::use(super.{self::B::i} = super.{self::A::i}{dynamic}.+(42));
-    let final core::int* #t57 = 87 in super.{self::A::[]=}(#t57, super.{self::A::[]}(#t57){dynamic}.+(42));
-    self::use(let final core::int* #t58 = 87 in let final dynamic #t59 = super.{self::A::[]}(#t58){dynamic}.+(42) in let final void #t60 = super.{self::A::[]=}(#t58, #t59) in #t59);
+    super.{self::A::a}.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : null;
+    self::use(let final dynamic #t41 = super.{self::A::a} in #t41.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : #t41);
+    super.{self::B::b}.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : null;
+    self::use(let final dynamic #t42 = super.{self::B::b} in #t42.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : #t42);
+    super.{self::A::c}.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : null;
+    self::use(let final dynamic #t43 = super.{self::A::c} in #t43.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : #t43);
+    super.{self::B::d}.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : null;
+    self::use(let final dynamic #t44 = super.{self::B::d} in #t44.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : #t44);
+    super.{self::A::e}.{core::Object::==}(null) ?{dynamic} super.e = 42 : null;
+    self::use(let final dynamic #t45 = super.{self::A::e} in #t45.{core::Object::==}(null) ?{dynamic} super.e = 42 : #t45);
+    super.{self::A::f}.{core::Object::==}(null) ?{dynamic} super.f = 42 : null;
+    self::use(let final dynamic #t46 = super.{self::A::f} in #t46.{core::Object::==}(null) ?{dynamic} super.f = 42 : #t46);
+    super.g.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : null;
+    self::use(let final dynamic #t47 = super.g in #t47.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : #t47);
+    super.{self::A::h}.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : null;
+    self::use(let final dynamic #t48 = super.{self::A::h} in #t48.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : #t48);
+    super.{self::A::i}.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : null;
+    self::use(let final dynamic #t49 = super.{self::A::i} in #t49.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : #t49);
+    let final core::int* #t50 = 87 in super.{self::A::[]}(#t50).{core::Object::==}(null) ?{dynamic} super.{self::A::[]=}(#t50, 42) : null;
+    self::use(let final core::int* #t51 = 87 in let final dynamic #t52 = super.{self::A::[]}(#t51) in #t52.{core::Object::==}(null) ?{dynamic} let final core::int* #t53 = 42 in let final void #t54 = super.{self::A::[]=}(#t51, #t53) in #t53 : #t52);
+    super.{self::A::m}.{core::Object::==}(null) ?{core::Object*} super.m = 42 : null;
+    self::use(let final () →* void #t55 = super.{self::A::m} in #t55.{core::Object::==}(null) ?{core::Object*} super.m = 42 : #t55);
+    super.{self::A::n}.{core::Object::==}(null) ?{core::Object*} super.{self::A::n} = 42 : null;
+    self::use(let final () →* void #t56 = super.{self::A::n} in #t56.{core::Object::==}(null) ?{core::Object*} super.{self::A::n} = 42 : #t56);
+    super.{self::A::a} = super.{self::A::a}.+(42);
+    self::use(super.{self::A::a} = super.{self::A::a}.+(42));
+    super.{self::A::b} = super.{self::B::b}.+(42);
+    self::use(super.{self::A::b} = super.{self::B::b}.+(42));
+    super.{self::B::c} = super.{self::A::c}.+(42);
+    self::use(super.{self::B::c} = super.{self::A::c}.+(42));
+    super.{self::A::d} = super.{self::B::d}.+(42);
+    self::use(super.{self::A::d} = super.{self::B::d}.+(42));
+    super.e = super.{self::A::e}.+(42);
+    self::use(super.e = super.{self::A::e}.+(42));
+    super.f = super.{self::A::f}.+(42);
+    self::use(super.f = super.{self::A::f}.+(42));
+    super.{self::A::g} = super.g.+(42);
+    self::use(super.{self::A::g} = super.g.+(42));
+    super.{self::A::h} = super.{self::A::h}.+(42);
+    self::use(super.{self::A::h} = super.{self::A::h}.+(42));
+    super.{self::B::i} = super.{self::A::i}.+(42);
+    self::use(super.{self::B::i} = super.{self::A::i}.+(42));
+    let final core::int* #t57 = 87 in super.{self::A::[]=}(#t57, super.{self::A::[]}(#t57).+(42));
+    self::use(let final core::int* #t58 = 87 in let final dynamic #t59 = super.{self::A::[]}(#t58).+(42) in let final void #t60 = super.{self::A::[]=}(#t58, #t59) in #t59);
     super.m = invalid-expression "pkg/front_end/testcases/rasta/super.dart:222:13: Error: The operator '+' isn't defined for the class 'void Function()'.
 Try correcting the operator to an existing operator, or defining a '+' operator.
     super.m += 42;
@@ -640,26 +640,26 @@
 Try correcting the operator to an existing operator, or defining a '+' operator.
     use(super.n += 42);
                 ^");
-    super.{self::A::a} = super.{self::A::a}{dynamic}.-(42);
-    self::use(super.{self::A::a} = super.{self::A::a}{dynamic}.-(42));
-    super.{self::A::b} = super.{self::B::b}{dynamic}.-(42);
-    self::use(super.{self::A::b} = super.{self::B::b}{dynamic}.-(42));
-    super.{self::B::c} = super.{self::A::c}{dynamic}.-(42);
-    self::use(super.{self::B::c} = super.{self::A::c}{dynamic}.-(42));
-    super.{self::A::d} = super.{self::B::d}{dynamic}.-(42);
-    self::use(super.{self::A::d} = super.{self::B::d}{dynamic}.-(42));
-    super.e = super.{self::A::e}{dynamic}.-(42);
-    self::use(super.e = super.{self::A::e}{dynamic}.-(42));
-    super.f = super.{self::A::f}{dynamic}.-(42);
-    self::use(super.f = super.{self::A::f}{dynamic}.-(42));
-    super.{self::A::g} = super.g{dynamic}.-(42);
-    self::use(super.{self::A::g} = super.g{dynamic}.-(42));
-    super.{self::A::h} = super.{self::A::h}{dynamic}.-(42);
-    self::use(super.{self::A::h} = super.{self::A::h}{dynamic}.-(42));
-    super.{self::B::i} = super.{self::A::i}{dynamic}.-(42);
-    self::use(super.{self::B::i} = super.{self::A::i}{dynamic}.-(42));
-    let final core::int* #t61 = 87 in super.{self::A::[]=}(#t61, super.{self::A::[]}(#t61){dynamic}.-(42));
-    self::use(let final core::int* #t62 = 87 in let final dynamic #t63 = super.{self::A::[]}(#t62){dynamic}.-(42) in let final void #t64 = super.{self::A::[]=}(#t62, #t63) in #t63);
+    super.{self::A::a} = super.{self::A::a}.-(42);
+    self::use(super.{self::A::a} = super.{self::A::a}.-(42));
+    super.{self::A::b} = super.{self::B::b}.-(42);
+    self::use(super.{self::A::b} = super.{self::B::b}.-(42));
+    super.{self::B::c} = super.{self::A::c}.-(42);
+    self::use(super.{self::B::c} = super.{self::A::c}.-(42));
+    super.{self::A::d} = super.{self::B::d}.-(42);
+    self::use(super.{self::A::d} = super.{self::B::d}.-(42));
+    super.e = super.{self::A::e}.-(42);
+    self::use(super.e = super.{self::A::e}.-(42));
+    super.f = super.{self::A::f}.-(42);
+    self::use(super.f = super.{self::A::f}.-(42));
+    super.{self::A::g} = super.g.-(42);
+    self::use(super.{self::A::g} = super.g.-(42));
+    super.{self::A::h} = super.{self::A::h}.-(42);
+    self::use(super.{self::A::h} = super.{self::A::h}.-(42));
+    super.{self::B::i} = super.{self::A::i}.-(42);
+    self::use(super.{self::B::i} = super.{self::A::i}.-(42));
+    let final core::int* #t61 = 87 in super.{self::A::[]=}(#t61, super.{self::A::[]}(#t61).-(42));
+    self::use(let final core::int* #t62 = 87 in let final dynamic #t63 = super.{self::A::[]}(#t62).-(42) in let final void #t64 = super.{self::A::[]=}(#t62, #t63) in #t63);
     super.m = invalid-expression "pkg/front_end/testcases/rasta/super.dart:247:13: Error: The operator '-' isn't defined for the class 'void Function()'.
 Try correcting the operator to an existing operator, or defining a '-' operator.
     super.m -= 42;
@@ -679,9 +679,9 @@
   }
 }
 static method use(dynamic x) → dynamic {
-  if(x =={core::Object::==}{(core::Object*) →* core::bool*} new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int*})
+  if(x.{core::Object::==}(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}))
     throw "Shouldn't happen";
 }
 static method main() → dynamic {
-  new self::C::•().{self::C::test}(){() →* dynamic};
+  new self::C::•().{self::C::test}();
 }
diff --git a/pkg/front_end/testcases/rasta/super_mixin.dart.weak.expect b/pkg/front_end/testcases/rasta/super_mixin.dart.weak.expect
index 0c41919..e19cafa 100644
--- a/pkg/front_end/testcases/rasta/super_mixin.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/super_mixin.dart.weak.expect
@@ -167,8 +167,8 @@
     return super.{mix::Mixin::publicMethod}();
 }
 static method main() → dynamic {
-  core::print(new self::C::•<dynamic>().{self::_C&Super&Mixin::foo}(){() →* dynamic});
-  core::print(new self::C2::•<dynamic>().{self::C2::foo}(){() →* dynamic});
+  core::print(new self::C::•<dynamic>().{self::_C&Super&Mixin::foo}());
+  core::print(new self::C2::•<dynamic>().{self::C2::foo}());
 }
 
 library test.mixin_library;
@@ -191,7 +191,7 @@
     : super core::Object::•()
     ;
   method foo() → dynamic
-    return super.foo(){dynamic}.+(mix::f());
+    return super.foo().+(mix::f());
   method g(generic-covariant-impl mix::Mixin::T* a) → mix::Mixin::T*
     return null;
   method h() → dynamic
@@ -201,7 +201,7 @@
   method _privateMethod() → dynamic
     return 49;
   method publicMethod() → dynamic
-    return this.{mix::Mixin::_privateMethod}(){() →* dynamic};
+    return this.{mix::Mixin::_privateMethod}();
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -220,4 +220,4 @@
 static method _private() → dynamic
   return 117;
 static method foo(dynamic m) → dynamic
-  return m{dynamic}._privateMethod();
+  return m._privateMethod();
diff --git a/pkg/front_end/testcases/rasta/super_operator.dart.weak.expect b/pkg/front_end/testcases/rasta/super_operator.dart.weak.expect
index 8b04b02..33b1414 100644
--- a/pkg/front_end/testcases/rasta/super_operator.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/super_operator.dart.weak.expect
@@ -38,7 +38,7 @@
   operator [](dynamic i) → dynamic
     return super.{self::A::[]}(i);
   operator []=(dynamic i, dynamic val) → void
-    return let final dynamic #t1 = let final dynamic #t2 = i in let final dynamic #t3 = i = #t2{dynamic}.+(1) in #t2 in let final dynamic #t4 = super.{self::A::[]}(#t1){dynamic}.+(val) in let final void #t5 = super.{self::A::[]=}(#t1, #t4) in #t4;
+    return let final dynamic #t1 = let final dynamic #t2 = i in let final dynamic #t3 = i = #t2.+(1) in #t2 in let final dynamic #t4 = super.{self::A::[]}(#t1).+(val) in let final void #t5 = super.{self::A::[]=}(#t1, #t4) in #t4;
 }
 class Autobianchi extends core::Object {
   synthetic constructor •() → self::Autobianchi*
diff --git a/pkg/front_end/testcases/rasta/this_invoke.dart.weak.expect b/pkg/front_end/testcases/rasta/this_invoke.dart.weak.expect
index 37dfbd7..7e456ad 100644
--- a/pkg/front_end/testcases/rasta/this_invoke.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/this_invoke.dart.weak.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method m(dynamic x) → dynamic
-    return this.{self::C::call}(x){(dynamic) →* dynamic};
+    return this.{self::C::call}(x);
   method call(dynamic x) → dynamic
     return 42;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -22,5 +22,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::C::m}(42){(dynamic) →* dynamic});
+  core::print(new self::C::•().{self::C::m}(42));
 }
diff --git a/pkg/front_end/testcases/rasta/this_invoke.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/this_invoke.dart.weak.transformed.expect
index 37dfbd7..7e456ad 100644
--- a/pkg/front_end/testcases/rasta/this_invoke.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/this_invoke.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method m(dynamic x) → dynamic
-    return this.{self::C::call}(x){(dynamic) →* dynamic};
+    return this.{self::C::call}(x);
   method call(dynamic x) → dynamic
     return 42;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -22,5 +22,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::C::m}(42){(dynamic) →* dynamic});
+  core::print(new self::C::•().{self::C::m}(42));
 }
diff --git a/pkg/front_end/testcases/rasta/type_literals.dart.weak.expect b/pkg/front_end/testcases/rasta/type_literals.dart.weak.expect
index 4b8a87c..d9cda9f 100644
--- a/pkg/front_end/testcases/rasta/type_literals.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/type_literals.dart.weak.expect
@@ -439,28 +439,28 @@
     self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:72:11: Error: Can't assign to a type literal.
     use(--Func);
           ^^^^");
-    (#C1) == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:74:5: Error: Can't assign to a type literal.
+    (#C1).{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:74:5: Error: Can't assign to a type literal.
     C ??= 42;
     ^" : null;
-    self::use(let final core::Type* #t1 = #C1 in #t1 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:75:9: Error: Can't assign to a type literal.
+    self::use(let final core::Type* #t1 = #C1 in #t1.{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:75:9: Error: Can't assign to a type literal.
     use(C ??= 42);
         ^" : #t1);
-    (#C2) == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:76:5: Error: Can't assign to a type literal.
+    (#C2).{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:76:5: Error: Can't assign to a type literal.
     dynamic ??= 42;
     ^^^^^^^" : null;
-    self::use(let final core::Type* #t2 = #C2 in #t2 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:77:9: Error: Can't assign to a type literal.
+    self::use(let final core::Type* #t2 = #C2 in #t2.{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:77:9: Error: Can't assign to a type literal.
     use(dynamic ??= 42);
         ^^^^^^^" : #t2);
-    self::C::T* == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:78:5: Error: Can't assign to a type literal.
+    self::C::T*.{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:78:5: Error: Can't assign to a type literal.
     T ??= 42;
     ^" : null;
-    self::use(let final core::Type* #t3 = self::C::T* in #t3 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:79:9: Error: Can't assign to a type literal.
+    self::use(let final core::Type* #t3 = self::C::T* in #t3.{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:79:9: Error: Can't assign to a type literal.
     use(T ??= 42);
         ^" : #t3);
-    (#C3) == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:80:5: Error: Can't assign to a type literal.
+    (#C3).{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:80:5: Error: Can't assign to a type literal.
     Func ??= 42;
     ^^^^" : null;
-    self::use(let final core::Type* #t4 = #C3 in #t4 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:81:9: Error: Can't assign to a type literal.
+    self::use(let final core::Type* #t4 = #C3 in #t4.{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:81:9: Error: Can't assign to a type literal.
     use(Func ??= 42);
         ^^^^" : #t4);
     invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:83:5: Error: Can't assign to a type literal.
@@ -524,11 +524,11 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method use(dynamic x) → dynamic {
-  if(x =={core::Object::==}{(core::Object*) →* core::bool*} new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int*})
+  if(x.{core::Object::==}(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}))
     throw "Shouldn't happen";
 }
 static method main() → dynamic {
-  new self::C::•<dynamic>().{self::C::test}(){() →* dynamic};
+  new self::C::•<dynamic>().{self::C::test}();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/rasta/type_literals.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/type_literals.dart.weak.transformed.expect
index 18048bd..dfb5a65 100644
--- a/pkg/front_end/testcases/rasta/type_literals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/type_literals.dart.weak.transformed.expect
@@ -439,28 +439,28 @@
     self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:72:11: Error: Can't assign to a type literal.
     use(--Func);
           ^^^^");
-    (#C1) == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:74:5: Error: Can't assign to a type literal.
+    (#C1).{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:74:5: Error: Can't assign to a type literal.
     C ??= 42;
     ^" : null;
-    self::use(let final core::Type* #t1 = #C1 in #t1 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:75:9: Error: Can't assign to a type literal.
+    self::use(let final core::Type* #t1 = #C1 in #t1.{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:75:9: Error: Can't assign to a type literal.
     use(C ??= 42);
         ^" : #t1);
-    (#C2) == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:76:5: Error: Can't assign to a type literal.
+    (#C2).{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:76:5: Error: Can't assign to a type literal.
     dynamic ??= 42;
     ^^^^^^^" : null;
-    self::use(let final core::Type* #t2 = #C2 in #t2 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:77:9: Error: Can't assign to a type literal.
+    self::use(let final core::Type* #t2 = #C2 in #t2.{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:77:9: Error: Can't assign to a type literal.
     use(dynamic ??= 42);
         ^^^^^^^" : #t2);
-    self::C::T* == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:78:5: Error: Can't assign to a type literal.
+    self::C::T*.{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:78:5: Error: Can't assign to a type literal.
     T ??= 42;
     ^" : null;
-    self::use(let final core::Type* #t3 = self::C::T* in #t3 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:79:9: Error: Can't assign to a type literal.
+    self::use(let final core::Type* #t3 = self::C::T* in #t3.{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:79:9: Error: Can't assign to a type literal.
     use(T ??= 42);
         ^" : #t3);
-    (#C3) == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:80:5: Error: Can't assign to a type literal.
+    (#C3).{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:80:5: Error: Can't assign to a type literal.
     Func ??= 42;
     ^^^^" : null;
-    self::use(let final core::Type* #t4 = #C3 in #t4 == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:81:9: Error: Can't assign to a type literal.
+    self::use(let final core::Type* #t4 = #C3 in #t4.{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:81:9: Error: Can't assign to a type literal.
     use(Func ??= 42);
         ^^^^" : #t4);
     invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:83:5: Error: Can't assign to a type literal.
@@ -524,11 +524,11 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method use(dynamic x) → dynamic {
-  if(x =={core::Object::==}{(core::Object*) →* core::bool*} new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int*})
+  if(x.{core::Object::==}(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}))
     throw "Shouldn't happen";
 }
 static method main() → dynamic {
-  new self::C::•<dynamic>().{self::C::test}(){() →* dynamic};
+  new self::C::•<dynamic>().{self::C::test}();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/rasta/typedef.dart.weak.expect b/pkg/front_end/testcases/rasta/typedef.dart.weak.expect
index 6892897..e46b1bf 100644
--- a/pkg/front_end/testcases/rasta/typedef.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/typedef.dart.weak.expect
@@ -23,7 +23,7 @@
   invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:9:3: Error: Can't assign to a type literal.
   Foo = null;
   ^^^";
-  (#C1) == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:10:3: Error: Can't assign to a type literal.
+  (#C1).{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:10:3: Error: Can't assign to a type literal.
   Foo ??= null;
   ^^^" : null;
   invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:11:3: Error: Method not found: 'Foo'.
diff --git a/pkg/front_end/testcases/rasta/typedef.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/typedef.dart.weak.transformed.expect
index 85363aa..611a358 100644
--- a/pkg/front_end/testcases/rasta/typedef.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/typedef.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
   invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:9:3: Error: Can't assign to a type literal.
   Foo = null;
   ^^^";
-  (#C1) == null ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:10:3: Error: Can't assign to a type literal.
+  (#C1).{core::Type::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:10:3: Error: Can't assign to a type literal.
   Foo ??= null;
   ^^^" : null;
   invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:11:3: Error: Method not found: 'Foo'.
diff --git a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.weak.expect b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.weak.expect
index d9c6c13..457d764 100644
--- a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.weak.expect
@@ -60,13 +60,13 @@
 static field core::bool* z = true;
 static method x() → dynamic {}
 static method foo() → void {
-  if(!(invalid-expression "pkg/front_end/testcases/regress/ambiguous_builder_01.dart:8:7: Error: Can't use 'x' because it is declared more than once.
+  if(!invalid-expression "pkg/front_end/testcases/regress/ambiguous_builder_01.dart:8:7: Error: Can't use 'x' because it is declared more than once.
   if (x != null) {}
-      ^" == null)) {
+      ^".{core::Object::==}(null)) {
   }
-  if(!(invalid-expression "pkg/front_end/testcases/regress/ambiguous_builder_01.dart:9:15: Error: Can't use 'x' because it is declared more than once.
+  if(!null.{core::Object::==}(invalid-expression "pkg/front_end/testcases/regress/ambiguous_builder_01.dart:9:15: Error: Can't use 'x' because it is declared more than once.
   if (null != x) {}
-              ^" == null)) {
+              ^")) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.weak.transformed.expect
index d9c6c13..457d764 100644
--- a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.weak.transformed.expect
@@ -60,13 +60,13 @@
 static field core::bool* z = true;
 static method x() → dynamic {}
 static method foo() → void {
-  if(!(invalid-expression "pkg/front_end/testcases/regress/ambiguous_builder_01.dart:8:7: Error: Can't use 'x' because it is declared more than once.
+  if(!invalid-expression "pkg/front_end/testcases/regress/ambiguous_builder_01.dart:8:7: Error: Can't use 'x' because it is declared more than once.
   if (x != null) {}
-      ^" == null)) {
+      ^".{core::Object::==}(null)) {
   }
-  if(!(invalid-expression "pkg/front_end/testcases/regress/ambiguous_builder_01.dart:9:15: Error: Can't use 'x' because it is declared more than once.
+  if(!null.{core::Object::==}(invalid-expression "pkg/front_end/testcases/regress/ambiguous_builder_01.dart:9:15: Error: Can't use 'x' because it is declared more than once.
   if (null != x) {}
-              ^" == null)) {
+              ^")) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_29979.dart.weak.expect b/pkg/front_end/testcases/regress/issue_29979.dart.weak.expect
index 66cb15d..aee80bb 100644
--- a/pkg/front_end/testcases/regress/issue_29979.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_29979.dart.weak.expect
@@ -9,5 +9,5 @@
 import self as self;
 
 static method main() → dynamic {
-  (let final () →* Null f = () → Null {} in f)(){() →* Null};
+  (let final () →* Null f = () → Null {} in f).call();
 }
diff --git a/pkg/front_end/testcases/regress/issue_29979.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_29979.dart.weak.transformed.expect
index 66cb15d..aee80bb 100644
--- a/pkg/front_end/testcases/regress/issue_29979.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29979.dart.weak.transformed.expect
@@ -9,5 +9,5 @@
 import self as self;
 
 static method main() → dynamic {
-  (let final () →* Null f = () → Null {} in f)(){() →* Null};
+  (let final () →* Null f = () → Null {} in f).call();
 }
diff --git a/pkg/front_end/testcases/regress/issue_29982.dart.weak.expect b/pkg/front_end/testcases/regress/issue_29982.dart.weak.expect
index 32136e8..89f62f2 100644
--- a/pkg/front_end/testcases/regress/issue_29982.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_29982.dart.weak.expect
@@ -44,5 +44,5 @@
   core::Map<core::String*, core::String*>* eh = <core::String*, core::String*>{"\u0233h": "\u0233h"};
   core::print("${eh.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/regress/issue_29982.dart:7:15: Error: Getter not found: '\u0233h'.
   print('\${eh[\u0233h']}');
-              ^^"){(core::Object*) →* core::String*}}");
+              ^^")}");
 }
diff --git a/pkg/front_end/testcases/regress/issue_29982.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_29982.dart.weak.transformed.expect
index 32136e8..89f62f2 100644
--- a/pkg/front_end/testcases/regress/issue_29982.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29982.dart.weak.transformed.expect
@@ -44,5 +44,5 @@
   core::Map<core::String*, core::String*>* eh = <core::String*, core::String*>{"\u0233h": "\u0233h"};
   core::print("${eh.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/regress/issue_29982.dart:7:15: Error: Getter not found: '\u0233h'.
   print('\${eh[\u0233h']}');
-              ^^"){(core::Object*) →* core::String*}}");
+              ^^")}");
 }
diff --git a/pkg/front_end/testcases/regress/issue_29983.dart.weak.expect b/pkg/front_end/testcases/regress/issue_29983.dart.weak.expect
index 37906e0..0c6a13d 100644
--- a/pkg/front_end/testcases/regress/issue_29983.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_29983.dart.weak.expect
@@ -31,6 +31,6 @@
 g() sync* => dummy;
              ^";
 static method h() → dynamic sync* {
-  (() → core::String* => "return")(){() →* core::String*};
+  (() → core::String* => "return").call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_29983.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_29983.dart.weak.transformed.expect
index fedb52d..aeb1e86 100644
--- a/pkg/front_end/testcases/regress/issue_29983.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29983.dart.weak.transformed.expect
@@ -57,7 +57,7 @@
     dynamic :await_ctx_var;
     function :sync_op(core::_SyncIterator<dynamic>* :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
       {
-        (() → core::String* => "return")(){() →* core::String*};
+        (() → core::String* => "return").call();
       }
       return false;
     }
diff --git a/pkg/front_end/testcases/regress/issue_30838.dart.weak.expect b/pkg/front_end/testcases/regress/issue_30838.dart.weak.expect
index a71fae5..e570118 100644
--- a/pkg/front_end/testcases/regress/issue_30838.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_30838.dart.weak.expect
@@ -9,7 +9,7 @@
     : super core::Object::•()
     ;
   method test() → void {
-    let final core::String* #t1 = "hello" in this.{self::A::f}{<T extends core::Object* = dynamic>(T*) →* core::int*}<core::String*>(#t1){(core::String*) →* core::int*};
+    let final core::String* #t1 = "hello" in this.{self::A::f}.call<core::String*>(#t1);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -27,7 +27,7 @@
 static method bar() → <T extends core::Object* = dynamic>(T*) →* core::int*
   return #C1;
 static method test1() → void {
-  self::bar()<core::String*>("hello"){(core::String*) →* core::int*};
+  self::bar().call<core::String*>("hello");
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/regress/issue_30838.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_30838.dart.weak.transformed.expect
index acb1618..83eb83e 100644
--- a/pkg/front_end/testcases/regress/issue_30838.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_30838.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     : super core::Object::•()
     ;
   method test() → void {
-    let final core::String* #t1 = "hello" in this.{self::A::f}{<T extends core::Object* = dynamic>(T*) →* core::int*}<core::String*>(#t1){(core::String*) →* core::int*};
+    let final core::String* #t1 = "hello" in this.{self::A::f}.call<core::String*>(#t1);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -27,7 +27,7 @@
 static method bar() → <T extends core::Object* = dynamic>(T*) →* core::int*
   return #C1;
 static method test1() → void {
-  self::bar()<core::String*>("hello"){(core::String*) →* core::int*};
+  self::bar().call<core::String*>("hello");
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/regress/issue_31180.dart.weak.expect b/pkg/front_end/testcases/regress/issue_31180.dart.weak.expect
index 3412492..9fe9d75 100644
--- a/pkg/front_end/testcases/regress/issue_31180.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_31180.dart.weak.expect
@@ -11,8 +11,9 @@
 // ^^^^^^^^^^^^
 //
 import self as self;
+import "dart:core" as core;
 
 static method bad() → dynamic {
-  return let final dynamic #t1 = null in #t1 == null ?{dynamic} null : #t1{dynamic}.[](1);
+  return let final dynamic #t1 = null in #t1.{core::Object::==}(null) ?{dynamic} null : #t1.[](1);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31184.dart.weak.expect b/pkg/front_end/testcases/regress/issue_31184.dart.weak.expect
index 962f180..059fa66 100644
--- a/pkg/front_end/testcases/regress/issue_31184.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_31184.dart.weak.expect
@@ -26,7 +26,7 @@
   for (int i = 0, i > 10; i++) {}
                   ^" as{TypeError,ForDynamic} core::int*; invalid-expression "pkg/front_end/testcases/regress/issue_31184.dart:6:21: Error: This couldn't be parsed.
   for (int i = 0, i > 10; i++) {}
-                    ^"{dynamic}.>(10) as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+                    ^".>(10) as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31184.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_31184.dart.weak.transformed.expect
index 05cce7d..5737a9e 100644
--- a/pkg/front_end/testcases/regress/issue_31184.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31184.dart.weak.transformed.expect
@@ -26,7 +26,7 @@
   for (int i = 0, i > 10; i++) {}
                   ^"; invalid-expression "pkg/front_end/testcases/regress/issue_31184.dart:6:21: Error: This couldn't be parsed.
   for (int i = 0, i > 10; i++) {}
-                    ^"{dynamic}.>(10) as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+                    ^".>(10) as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31185.dart.weak.expect b/pkg/front_end/testcases/regress/issue_31185.dart.weak.expect
index 7170828..b100603 100644
--- a/pkg/front_end/testcases/regress/issue_31185.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_31185.dart.weak.expect
@@ -19,7 +19,7 @@
 
 static field core::int* i = 5;
 static method test1() → core::int* {
-  return let final core::int* #t1 = self::i in let final core::int* #t2 = self::i = #t1.{core::num::+}(1){(core::num*) →* core::int*} in #t1;
+  return let final core::int* #t1 = self::i in let final core::int* #t2 = self::i = #t1.{core::num::+}(1) in #t1;
   self::i;
 }
 static method test2() → core::int* {
diff --git a/pkg/front_end/testcases/regress/issue_31185.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_31185.dart.weak.transformed.expect
index ec82b98..a236821 100644
--- a/pkg/front_end/testcases/regress/issue_31185.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31185.dart.weak.transformed.expect
@@ -19,7 +19,7 @@
 
 static field core::int* i = 5;
 static method test1() → core::int* {
-  return let final core::int* #t1 = self::i in let final core::int* #t2 = self::i = #t1.{core::num::+}(1){(core::num*) →* core::int*} in #t1;
+  return let final core::int* #t1 = self::i in let final core::int* #t2 = self::i = #t1.{core::num::+}(1) in #t1;
   self::i;
 }
 static method test2() → core::int* {
diff --git a/pkg/front_end/testcases/regress/issue_31299.dart.weak.expect b/pkg/front_end/testcases/regress/issue_31299.dart.weak.expect
index 2d8b859..b463377 100644
--- a/pkg/front_end/testcases/regress/issue_31299.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_31299.dart.weak.expect
@@ -26,7 +26,7 @@
     : self::A::m = 2, super core::Object::•()
     ;
   method foo(core::int* a, core::int* b) → core::int*
-    return a.{core::num::+}(b.{core::num::*}(this.{self::A::m}{core::int*}){(core::num*) →* core::int*}){(core::num*) →* core::int*};
+    return a.{core::num::+}(b.{core::num::*}(this.{self::A::m}));
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -41,8 +41,8 @@
 static method test() → dynamic {
   let final Never* #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_31299.dart:15:14: Error: Too few positional arguments: 2 required, 0 given.
   new A().foo();
-             ^" in new self::A::•().{self::A::foo}{<inapplicable>}.(){() →* invalid-type};
-  new self::A::•().{self::A::foo}(1, 2){(core::int*, core::int*) →* core::int*};
+             ^" in new self::A::•().{self::A::foo}();
+  new self::A::•().{self::A::foo}(1, 2);
   new self::A::foo();
   invalid-expression "pkg/front_end/testcases/regress/issue_31299.dart:18:12: Error: Too many positional arguments: 0 allowed, but 2 found.
 Try removing the extra positional arguments.
diff --git a/pkg/front_end/testcases/regress/issue_31766.dart.weak.expect b/pkg/front_end/testcases/regress/issue_31766.dart.weak.expect
index ec4557f..9fcb7e6 100644
--- a/pkg/front_end/testcases/regress/issue_31766.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_31766.dart.weak.expect
@@ -21,10 +21,10 @@
 }
 static method main() → dynamic {
   function bar<T extends self::A*>(T* t) → void {
-    core::print("t.foo()=${t.{self::A::foo}(){() →* dynamic}}");
+    core::print("t.foo()=${t.{self::A::foo}()}");
   }
-  bar<self::A*>(new self::A::•()){(self::A*) →* void};
+  bar.call<self::A*>(new self::A::•());
   (<S extends self::A*>(S* s) → Null {
-    core::print("s.foo()=${s.{self::A::foo}(){() →* dynamic}}");
-  })<self::A*>(new self::A::•()){(self::A*) →* Null};
+    core::print("s.foo()=${s.{self::A::foo}()}");
+  }).call<self::A*>(new self::A::•());
 }
diff --git a/pkg/front_end/testcases/regress/issue_31766.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_31766.dart.weak.transformed.expect
index ec4557f..9fcb7e6 100644
--- a/pkg/front_end/testcases/regress/issue_31766.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31766.dart.weak.transformed.expect
@@ -21,10 +21,10 @@
 }
 static method main() → dynamic {
   function bar<T extends self::A*>(T* t) → void {
-    core::print("t.foo()=${t.{self::A::foo}(){() →* dynamic}}");
+    core::print("t.foo()=${t.{self::A::foo}()}");
   }
-  bar<self::A*>(new self::A::•()){(self::A*) →* void};
+  bar.call<self::A*>(new self::A::•());
   (<S extends self::A*>(S* s) → Null {
-    core::print("s.foo()=${s.{self::A::foo}(){() →* dynamic}}");
-  })<self::A*>(new self::A::•()){(self::A*) →* Null};
+    core::print("s.foo()=${s.{self::A::foo}()}");
+  }).call<self::A*>(new self::A::•());
 }
diff --git a/pkg/front_end/testcases/regress/issue_31846.dart.weak.expect b/pkg/front_end/testcases/regress/issue_31846.dart.weak.expect
index 0966591..98bf326 100644
--- a/pkg/front_end/testcases/regress/issue_31846.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_31846.dart.weak.expect
@@ -4,12 +4,12 @@
 
 static method main() → dynamic {
   core::print((#C1) is () →* dynamic);
-  core::print((<T extends core::Object* = dynamic>(T* x) → T* => x).{core::Object::runtimeType}{core::Type*});
-  core::print((<T extends core::num*>(T* x) → T* => x).{core::Object::runtimeType}{core::Type*});
-  core::print((<T extends core::Comparable<T*>* = core::Comparable<dynamic>*>(T* x) → T* => x).{core::Object::runtimeType}{core::Type*});
-  core::print((<T extends core::Comparable<S*>* = core::Comparable<dynamic>*, S extends core::Object* = dynamic>(T* x) → T* => x).{core::Object::runtimeType}{core::Type*});
-  core::print((<T extends (T*) →* dynamic = (Null) →* dynamic>(T* x) → T* => x).{core::Object::runtimeType}{core::Type*});
-  core::print((<T extends core::List<core::List<T*>*>* = core::List<core::List<dynamic>*>*>(T* x) → T* => x).{core::Object::runtimeType}{core::Type*});
+  core::print((<T extends core::Object* = dynamic>(T* x) → T* => x).{core::Object::runtimeType});
+  core::print((<T extends 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});
+  core::print((<T extends core::Comparable<S*>* = core::Comparable<dynamic>*, S extends core::Object* = dynamic>(T* x) → T* => x).{core::Object::runtimeType});
+  core::print((<T extends (T*) →* dynamic = (Null) →* dynamic>(T* x) → T* => x).{core::Object::runtimeType});
+  core::print((<T extends core::List<core::List<T*>*>* = core::List<core::List<dynamic>*>*>(T* x) → T* => x).{core::Object::runtimeType});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/regress/issue_31846.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_31846.dart.weak.transformed.expect
index 1a1cf76..4202e10 100644
--- a/pkg/front_end/testcases/regress/issue_31846.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31846.dart.weak.transformed.expect
@@ -4,12 +4,12 @@
 
 static method main() → dynamic {
   core::print((#C1) is () →* dynamic);
-  core::print((<T extends core::Object* = dynamic>(T* x) → T* => x).{core::Object::runtimeType}{core::Type*});
-  core::print((<T extends core::num*>(T* x) → T* => x).{core::Object::runtimeType}{core::Type*});
-  core::print((<T extends core::Comparable<T*>* = core::Comparable<dynamic>*>(T* x) → T* => x).{core::Object::runtimeType}{core::Type*});
-  core::print((<T extends core::Comparable<S*>* = core::Comparable<dynamic>*, S extends core::Object* = dynamic>(T* x) → T* => x).{core::Object::runtimeType}{core::Type*});
-  core::print((<T extends (T*) →* dynamic = (Null) →* dynamic>(T* x) → T* => x).{core::Object::runtimeType}{core::Type*});
-  core::print((<T extends core::List<core::List<T*>*>* = core::List<core::List<dynamic>*>*>(T* x) → T* => x).{core::Object::runtimeType}{core::Type*});
+  core::print((<T extends core::Object* = dynamic>(T* x) → T* => x).{core::Object::runtimeType});
+  core::print((<T extends 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});
+  core::print((<T extends core::Comparable<S*>* = core::Comparable<dynamic>*, S extends core::Object* = dynamic>(T* x) → T* => x).{core::Object::runtimeType});
+  core::print((<T extends (T*) →* dynamic = (Null) →* dynamic>(T* x) → T* => x).{core::Object::runtimeType});
+  core::print((<T extends core::List<core::List<T*>*>* = core::List<core::List<dynamic>*>*>(T* x) → T* => x).{core::Object::runtimeType});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/regress/issue_32182.dart.weak.expect b/pkg/front_end/testcases/regress/issue_32182.dart.weak.expect
index 3b90e8d..4714ed4 100644
--- a/pkg/front_end/testcases/regress/issue_32182.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_32182.dart.weak.expect
@@ -49,5 +49,5 @@
     ;
 }
 static method main() → dynamic {
-  new self::C::•().{self::_C&A&M::m}(){() →* dynamic}{dynamic}.+(1);
+  new self::C::•().{self::_C&A&M::m}().+(1);
 }
diff --git a/pkg/front_end/testcases/regress/issue_32182.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_32182.dart.weak.transformed.expect
index afa52c8..560ee52 100644
--- a/pkg/front_end/testcases/regress/issue_32182.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32182.dart.weak.transformed.expect
@@ -49,5 +49,5 @@
     ;
 }
 static method main() → dynamic {
-  new self::C::•().{self::_C&A&M::m}(){() →* dynamic}{dynamic}.+(1);
+  new self::C::•().{self::_C&A&M::m}().+(1);
 }
diff --git a/pkg/front_end/testcases/regress/issue_32660.dart.weak.expect b/pkg/front_end/testcases/regress/issue_32660.dart.weak.expect
index ec03c53..3493cad 100644
--- a/pkg/front_end/testcases/regress/issue_32660.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_32660.dart.weak.expect
@@ -92,7 +92,7 @@
     ;
   abstract method foo(core::int* x, {core::int* y = #C1}) → dynamic;
   method noSuchMethod(core::Invocation* i) → dynamic {
-    core::print(i.{core::Invocation::namedArguments}{core::Map<core::Symbol*, dynamic>*});
+    core::print(i.{core::Invocation::namedArguments});
     return 42;
   }
 }
diff --git a/pkg/front_end/testcases/regress/issue_32660.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_32660.dart.weak.transformed.expect
index ec03c53..3493cad 100644
--- a/pkg/front_end/testcases/regress/issue_32660.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32660.dart.weak.transformed.expect
@@ -92,7 +92,7 @@
     ;
   abstract method foo(core::int* x, {core::int* y = #C1}) → dynamic;
   method noSuchMethod(core::Invocation* i) → dynamic {
-    core::print(i.{core::Invocation::namedArguments}{core::Map<core::Symbol*, dynamic>*});
+    core::print(i.{core::Invocation::namedArguments});
     return 42;
   }
 }
diff --git a/pkg/front_end/testcases/regress/issue_32972.dart.weak.expect b/pkg/front_end/testcases/regress/issue_32972.dart.weak.expect
index 36cb030..4d6f98a 100644
--- a/pkg/front_end/testcases/regress/issue_32972.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_32972.dart.weak.expect
@@ -81,8 +81,8 @@
   self::Foo* f = new self::Foo::•();
   let final Never* #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_32972.dart:27:5: Error: Expected 1 type arguments.
   f.bar<double, double>(42.42);
-    ^" in f.{self::Foo::bar}{<inapplicable>}.<core::double*, core::double*>(42.42){(invalid-type) →* invalid-type};
-  f.{self::Foo::bar}<core::double*>(42.42){(core::double*) →* dynamic};
+    ^" in f.{self::Foo::bar}<core::double*, core::double*>(42.42);
+  f.{self::Foo::bar}<core::double*>(42.42);
   invalid-expression "pkg/front_end/testcases/regress/issue_32972.dart:29:7: Error: Expected 2 type arguments.
   new Bar<String>();
       ^";
diff --git a/pkg/front_end/testcases/regress/issue_33672.dart.weak.expect b/pkg/front_end/testcases/regress/issue_33672.dart.weak.expect
index 7caa5cb..e759d28 100644
--- a/pkg/front_end/testcases/regress/issue_33672.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_33672.dart.weak.expect
@@ -5,14 +5,14 @@
 static method main() → dynamic {
   core::int* count = 0;
   #L1:
-  for (core::int* a = 0; a.{core::num::<}(10){(core::num*) →* core::bool*}; a = a.{core::num::+}(1){(core::num*) →* core::int*}) {
-    for (core::int* b = 0; b.{core::num::<}(10){(core::num*) →* core::bool*}; b = b.{core::num::+}(1){(core::num*) →* core::int*}) {
-      count = count.{core::num::+}(1){(core::num*) →* core::int*};
-      if(count =={core::num::==}{(core::Object*) →* core::bool*} 27)
+  for (core::int* a = 0; a.{core::num::<}(10); a = a.{core::num::+}(1)) {
+    for (core::int* b = 0; b.{core::num::<}(10); b = b.{core::num::+}(1)) {
+      count = count.{core::num::+}(1);
+      if(count.{core::num::==}(27))
         break #L1;
     }
-    count = count.{core::num::+}(1){(core::num*) →* core::int*};
+    count = count.{core::num::+}(1);
   }
-  if(!(count =={core::num::==}{(core::Object*) →* core::bool*} 27))
+  if(!count.{core::num::==}(27))
     throw "failed: ${count}";
 }
diff --git a/pkg/front_end/testcases/regress/issue_33672.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_33672.dart.weak.transformed.expect
index 7caa5cb..e759d28 100644
--- a/pkg/front_end/testcases/regress/issue_33672.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_33672.dart.weak.transformed.expect
@@ -5,14 +5,14 @@
 static method main() → dynamic {
   core::int* count = 0;
   #L1:
-  for (core::int* a = 0; a.{core::num::<}(10){(core::num*) →* core::bool*}; a = a.{core::num::+}(1){(core::num*) →* core::int*}) {
-    for (core::int* b = 0; b.{core::num::<}(10){(core::num*) →* core::bool*}; b = b.{core::num::+}(1){(core::num*) →* core::int*}) {
-      count = count.{core::num::+}(1){(core::num*) →* core::int*};
-      if(count =={core::num::==}{(core::Object*) →* core::bool*} 27)
+  for (core::int* a = 0; a.{core::num::<}(10); a = a.{core::num::+}(1)) {
+    for (core::int* b = 0; b.{core::num::<}(10); b = b.{core::num::+}(1)) {
+      count = count.{core::num::+}(1);
+      if(count.{core::num::==}(27))
         break #L1;
     }
-    count = count.{core::num::+}(1){(core::num*) →* core::int*};
+    count = count.{core::num::+}(1);
   }
-  if(!(count =={core::num::==}{(core::Object*) →* core::bool*} 27))
+  if(!count.{core::num::==}(27))
     throw "failed: ${count}";
 }
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.weak.expect b/pkg/front_end/testcases/regress/issue_34403.dart.weak.expect
index 681977f..d4c306b 100644
--- a/pkg/front_end/testcases/regress/issue_34403.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.weak.expect
@@ -120,29 +120,29 @@
 }
 static method main() → dynamic {
   self::C<core::int*>* c1 = new self::C::bar<core::int*>();
-  c1.{self::C::toString}(){() →* core::String*};
+  c1.{self::C::toString}();
   self::C<core::int*>* c2 = new self::C::bar<core::int*>();
-  c2.{self::C::toString}(){() →* core::String*};
+  c2.{self::C::toString}();
   self::C<core::String*>* c3 = new self::C::bar<core::String*>();
-  c3.{self::C::toString}(){() →* core::String*};
+  c3.{self::C::toString}();
   self::C<core::String*>* c4 = new self::C::bar<core::String*>();
-  c4.{self::C::toString}(){() →* core::String*};
-  (#C1).{self::D::toString}(){() →* core::String*};
-  (#C1).{self::D::toString}(){() →* core::String*};
-  (#C2).{self::D::toString}(){() →* core::String*};
-  (#C2).{self::D::toString}(){() →* core::String*};
+  c4.{self::C::toString}();
+  (#C1).{self::D::toString}();
+  (#C1).{self::D::toString}();
+  (#C2).{self::D::toString}();
+  (#C2).{self::D::toString}();
   iss::E<core::int*>* e1 = new iss::E::bar<core::int*>();
-  e1.{iss::E::toString}(){() →* core::String*};
+  e1.{iss::E::toString}();
   iss::E<dynamic>* e2 = new iss::E::bar<dynamic>();
-  e2.{iss::E::toString}(){() →* core::String*};
+  e2.{iss::E::toString}();
   iss::E<core::String*>* e3 = new iss::E::bar<core::String*>();
-  e3.{iss::E::toString}(){() →* core::String*};
+  e3.{iss::E::toString}();
   iss::E<core::String*>* e4 = new iss::E::bar<core::String*>();
-  e4.{iss::E::toString}(){() →* core::String*};
-  (#C3).{iss::F::toString}(){() →* core::String*};
-  (#C4).{iss::F::toString}(){() →* core::String*};
-  (#C5).{iss::F::toString}(){() →* core::String*};
-  (#C5).{iss::F::toString}(){() →* core::String*};
+  e4.{iss::E::toString}();
+  (#C3).{iss::F::toString}();
+  (#C4).{iss::F::toString}();
+  (#C5).{iss::F::toString}();
+  (#C5).{iss::F::toString}();
 }
 
 library;
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_34403.dart.weak.transformed.expect
index 681977f..d4c306b 100644
--- a/pkg/front_end/testcases/regress/issue_34403.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.weak.transformed.expect
@@ -120,29 +120,29 @@
 }
 static method main() → dynamic {
   self::C<core::int*>* c1 = new self::C::bar<core::int*>();
-  c1.{self::C::toString}(){() →* core::String*};
+  c1.{self::C::toString}();
   self::C<core::int*>* c2 = new self::C::bar<core::int*>();
-  c2.{self::C::toString}(){() →* core::String*};
+  c2.{self::C::toString}();
   self::C<core::String*>* c3 = new self::C::bar<core::String*>();
-  c3.{self::C::toString}(){() →* core::String*};
+  c3.{self::C::toString}();
   self::C<core::String*>* c4 = new self::C::bar<core::String*>();
-  c4.{self::C::toString}(){() →* core::String*};
-  (#C1).{self::D::toString}(){() →* core::String*};
-  (#C1).{self::D::toString}(){() →* core::String*};
-  (#C2).{self::D::toString}(){() →* core::String*};
-  (#C2).{self::D::toString}(){() →* core::String*};
+  c4.{self::C::toString}();
+  (#C1).{self::D::toString}();
+  (#C1).{self::D::toString}();
+  (#C2).{self::D::toString}();
+  (#C2).{self::D::toString}();
   iss::E<core::int*>* e1 = new iss::E::bar<core::int*>();
-  e1.{iss::E::toString}(){() →* core::String*};
+  e1.{iss::E::toString}();
   iss::E<dynamic>* e2 = new iss::E::bar<dynamic>();
-  e2.{iss::E::toString}(){() →* core::String*};
+  e2.{iss::E::toString}();
   iss::E<core::String*>* e3 = new iss::E::bar<core::String*>();
-  e3.{iss::E::toString}(){() →* core::String*};
+  e3.{iss::E::toString}();
   iss::E<core::String*>* e4 = new iss::E::bar<core::String*>();
-  e4.{iss::E::toString}(){() →* core::String*};
-  (#C3).{iss::F::toString}(){() →* core::String*};
-  (#C4).{iss::F::toString}(){() →* core::String*};
-  (#C5).{iss::F::toString}(){() →* core::String*};
-  (#C5).{iss::F::toString}(){() →* core::String*};
+  e4.{iss::E::toString}();
+  (#C3).{iss::F::toString}();
+  (#C4).{iss::F::toString}();
+  (#C5).{iss::F::toString}();
+  (#C5).{iss::F::toString}();
 }
 
 library;
diff --git a/pkg/front_end/testcases/regress/issue_34563.dart.weak.expect b/pkg/front_end/testcases/regress/issue_34563.dart.weak.expect
index 5f2bf3e..ab53dc8 100644
--- a/pkg/front_end/testcases/regress/issue_34563.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_34563.dart.weak.expect
@@ -136,7 +136,7 @@
  - 'C2' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'm'.
   c2.m + c2.c;
-     ^"{dynamic}.+(invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:13: Error: The getter 'c' isn't defined for the class 'C2'.
+     ^".+(invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:13: Error: The getter 'c' isn't defined for the class 'C2'.
  - 'C2' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'c'.
   c2.m + c2.c;
@@ -146,7 +146,7 @@
  - 'C3' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'm'.
   c3.m + c3.c;
-     ^"{dynamic}.+(invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:13: Error: The getter 'c' isn't defined for the class 'C3'.
+     ^".+(invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:13: Error: The getter 'c' isn't defined for the class 'C3'.
  - 'C3' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'c'.
   c3.m + c3.c;
diff --git a/pkg/front_end/testcases/regress/issue_34563.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_34563.dart.weak.transformed.expect
index 5f2bf3e..ab53dc8 100644
--- a/pkg/front_end/testcases/regress/issue_34563.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34563.dart.weak.transformed.expect
@@ -136,7 +136,7 @@
  - 'C2' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'm'.
   c2.m + c2.c;
-     ^"{dynamic}.+(invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:13: Error: The getter 'c' isn't defined for the class 'C2'.
+     ^".+(invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:13: Error: The getter 'c' isn't defined for the class 'C2'.
  - 'C2' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'c'.
   c2.m + c2.c;
@@ -146,7 +146,7 @@
  - 'C3' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'm'.
   c3.m + c3.c;
-     ^"{dynamic}.+(invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:13: Error: The getter 'c' isn't defined for the class 'C3'.
+     ^".+(invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:13: Error: The getter 'c' isn't defined for the class 'C3'.
  - 'C3' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'c'.
   c3.m + c3.c;
diff --git a/pkg/front_end/testcases/regress/issue_34610.dart.weak.expect b/pkg/front_end/testcases/regress/issue_34610.dart.weak.expect
index db6cda1..ebbd094 100644
--- a/pkg/front_end/testcases/regress/issue_34610.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_34610.dart.weak.expect
@@ -94,14 +94,14 @@
 }
 static method main() → dynamic {
   try {
-    core::print(new self::A::named().{self::A::bar}{dynamic});
+    core::print(new self::A::named().{self::A::bar});
     throw "expected exception";
   }
   on dynamic catch(final dynamic e) {
   }
-  core::print(new self::B::named().{self::B::bar}{dynamic});
+  core::print(new self::B::named().{self::B::bar});
   try {
-    core::print(new self::C::named().{self::C::bar}{dynamic});
+    core::print(new self::C::named().{self::C::bar});
     throw "expected exception";
   }
   on dynamic catch(final dynamic e) {
diff --git a/pkg/front_end/testcases/regress/issue_34610.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_34610.dart.weak.transformed.expect
index db6cda1..ebbd094 100644
--- a/pkg/front_end/testcases/regress/issue_34610.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34610.dart.weak.transformed.expect
@@ -94,14 +94,14 @@
 }
 static method main() → dynamic {
   try {
-    core::print(new self::A::named().{self::A::bar}{dynamic});
+    core::print(new self::A::named().{self::A::bar});
     throw "expected exception";
   }
   on dynamic catch(final dynamic e) {
   }
-  core::print(new self::B::named().{self::B::bar}{dynamic});
+  core::print(new self::B::named().{self::B::bar});
   try {
-    core::print(new self::C::named().{self::C::bar}{dynamic});
+    core::print(new self::C::named().{self::C::bar});
     throw "expected exception";
   }
   on dynamic catch(final dynamic e) {
diff --git a/pkg/front_end/testcases/regress/issue_34614.dart.weak.expect b/pkg/front_end/testcases/regress/issue_34614.dart.weak.expect
index 9092aae..c556791 100644
--- a/pkg/front_end/testcases/regress/issue_34614.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_34614.dart.weak.expect
@@ -36,5 +36,5 @@
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  c.{self::C::toString}(){() →* core::String*};
+  c.{self::C::toString}();
 }
diff --git a/pkg/front_end/testcases/regress/issue_34614.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_34614.dart.weak.transformed.expect
index 9092aae..c556791 100644
--- a/pkg/front_end/testcases/regress/issue_34614.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34614.dart.weak.transformed.expect
@@ -36,5 +36,5 @@
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  c.{self::C::toString}(){() →* core::String*};
+  c.{self::C::toString}();
 }
diff --git a/pkg/front_end/testcases/regress/issue_35177.dart.weak.expect b/pkg/front_end/testcases/regress/issue_35177.dart.weak.expect
index ecd497c..74f9a1f 100644
--- a/pkg/front_end/testcases/regress/issue_35177.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_35177.dart.weak.expect
@@ -4,5 +4,5 @@
 
 static method main() → dynamic {
   () →* dynamic f;
-  f(){dynamic}.call<core::int*>();
+  f.call().call<core::int*>();
 }
diff --git a/pkg/front_end/testcases/regress/issue_35177.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_35177.dart.weak.transformed.expect
index ecd497c..74f9a1f 100644
--- a/pkg/front_end/testcases/regress/issue_35177.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35177.dart.weak.transformed.expect
@@ -4,5 +4,5 @@
 
 static method main() → dynamic {
   () →* dynamic f;
-  f(){dynamic}.call<core::int*>();
+  f.call().call<core::int*>();
 }
diff --git a/pkg/front_end/testcases/regress/issue_35220.dart.weak.expect b/pkg/front_end/testcases/regress/issue_35220.dart.weak.expect
index 3a8e95f..2c6a495 100644
--- a/pkg/front_end/testcases/regress/issue_35220.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_35220.dart.weak.expect
@@ -18,7 +18,7 @@
     return let final Never* #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_35220.dart:6:25: Error: A value of type 'bool' can't be assigned to a variable of type 'A'.
  - 'A' is from 'pkg/front_end/testcases/regress/issue_35220.dart'.
   A bad() { return true != 2; }
-                        ^" in !(true =={core::Object::==}{(core::Object*) →* core::bool*} 2) as{TypeError} self::A*;
+                        ^" in !true.{core::Object::==}(2) as{TypeError} self::A*;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/regress/issue_35220.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_35220.dart.weak.transformed.expect
index fdaaf0b..73c291c 100644
--- a/pkg/front_end/testcases/regress/issue_35220.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35220.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
     return let final Never* #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_35220.dart:6:25: Error: A value of type 'bool' can't be assigned to a variable of type 'A'.
  - 'A' is from 'pkg/front_end/testcases/regress/issue_35220.dart'.
   A bad() { return true != 2; }
-                        ^" in !(true =={core::Object::==}{(core::Object*) →* core::bool*} 2) as{TypeError} self::A*;
+                        ^" in !true.{core::Object::==}(2) as{TypeError} self::A*;
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/regress/issue_37681.dart.weak.expect b/pkg/front_end/testcases/regress/issue_37681.dart.weak.expect
index c92257e..0ea7212 100644
--- a/pkg/front_end/testcases/regress/issue_37681.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_37681.dart.weak.expect
@@ -22,17 +22,17 @@
   function f_async() → core::int* async {
     return 42;
   }
-  core::print(await f_async(){() →* core::int*});
+  core::print(await f_async.call());
   function f_async_star() → core::int* async* {
     yield 42;
   }
-  await for (dynamic x in (f_async_star(){() →* core::int*} as dynamic) as{TypeError,ForDynamic} asy::Stream<dynamic>*) {
+  await for (dynamic x in (f_async_star.call() as dynamic) as{TypeError,ForDynamic} asy::Stream<dynamic>*) {
     core::print(x);
   }
   function f_sync_star() → core::int* sync* {
     yield 42;
   }
-  for (dynamic x in (f_sync_star(){() →* core::int*} as dynamic) as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
+  for (dynamic x in (f_sync_star.call() as dynamic) as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
     core::print(x);
   }
 }
diff --git a/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect
index 6ae56e4..8458a57 100644
--- a/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect
@@ -62,7 +62,7 @@
           :is_sync = true;
           return :async_future;
         }
-        [yield] let dynamic #t1 = asy::_awaitHelper(f_async(){() →* core::int*}, :async_op_then, :async_op_error, :async_op) in null;
+        [yield] let dynamic #t1 = asy::_awaitHelper(f_async.call(), :async_op_then, :async_op_error, :async_op) in null;
         core::print(_in::unsafeCast<core::int*>(:result));
         function f_async_star() → core::int* /* originally async* */ {
           asy::_AsyncStarStreamController<dynamic>* :controller;
@@ -98,7 +98,7 @@
           return :controller_stream;
         }
         {
-          asy::Stream<dynamic>* :stream = (f_async_star(){() →* core::int*} as dynamic) as{TypeError,ForDynamic} asy::Stream<dynamic>*;
+          asy::Stream<dynamic>* :stream = (f_async_star.call() as dynamic) as{TypeError,ForDynamic} asy::Stream<dynamic>*;
           asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
           try
             #L4:
@@ -138,7 +138,7 @@
           return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
         }
         {
-          core::Iterator<dynamic>* :sync-for-iterator = ((f_sync_star(){() →* core::int*} as dynamic) as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
+          core::Iterator<dynamic>* :sync-for-iterator = ((f_sync_star.call() as dynamic) as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
           for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
             dynamic x = :sync-for-iterator.{core::Iterator::current};
             {
diff --git a/pkg/front_end/testcases/regress/issue_39040.dart.weak.expect b/pkg/front_end/testcases/regress/issue_39040.dart.weak.expect
index ade6db2..ccb6dec 100644
--- a/pkg/front_end/testcases/regress/issue_39040.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_39040.dart.weak.expect
@@ -11,7 +11,7 @@
     #L2:
     case #C1:
       {
-        whereWasI.{core::List::add}("outer 0"){(core::String*) →* void};
+        whereWasI.{core::List::add}("outer 0");
         break #L1;
       }
     #L3:
@@ -22,19 +22,19 @@
             #L4:
             case #C1:
               {
-                whereWasI.{core::List::add}("inner 0"){(core::String*) →* void};
+                whereWasI.{core::List::add}("inner 0");
                 continue #L5;
               }
             #L5:
             case #C2:
               {
-                whereWasI.{core::List::add}("inner 1"){(core::String*) →* void};
+                whereWasI.{core::List::add}("inner 1");
               }
           }
-        })(){() →* Null};
+        }).call();
       }
   }
-  if(!(whereWasI.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 2) || !(whereWasI.{core::List::[]}(0){(core::int*) →* core::String*} =={core::String::==}{(core::Object*) →* core::bool*} "inner 0") || !(whereWasI.{core::List::[]}(1){(core::int*) →* core::String*} =={core::String::==}{(core::Object*) →* core::bool*} "inner 1")) {
+  if(!whereWasI.{core::List::length}.{core::num::==}(2) || !whereWasI.{core::List::[]}(0).{core::String::==}("inner 0") || !whereWasI.{core::List::[]}(1).{core::String::==}("inner 1")) {
     throw "Unexpected path.";
   }
   core::print(whereWasI);
diff --git a/pkg/front_end/testcases/regress/issue_39040.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_39040.dart.weak.transformed.expect
index 86da00b..581c2ce 100644
--- a/pkg/front_end/testcases/regress/issue_39040.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_39040.dart.weak.transformed.expect
@@ -11,7 +11,7 @@
     #L2:
     case #C1:
       {
-        whereWasI.{core::List::add}("outer 0"){(core::String*) →* void};
+        whereWasI.{core::List::add}("outer 0");
         break #L1;
       }
     #L3:
@@ -22,19 +22,19 @@
             #L4:
             case #C1:
               {
-                whereWasI.{core::List::add}("inner 0"){(core::String*) →* void};
+                whereWasI.{core::List::add}("inner 0");
                 continue #L5;
               }
             #L5:
             case #C2:
               {
-                whereWasI.{core::List::add}("inner 1"){(core::String*) →* void};
+                whereWasI.{core::List::add}("inner 1");
               }
           }
-        })(){() →* Null};
+        }).call();
       }
   }
-  if(!(whereWasI.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 2) || !(whereWasI.{core::List::[]}(0){(core::int*) →* core::String*} =={core::String::==}{(core::Object*) →* core::bool*} "inner 0") || !(whereWasI.{core::List::[]}(1){(core::int*) →* core::String*} =={core::String::==}{(core::Object*) →* core::bool*} "inner 1")) {
+  if(!whereWasI.{core::List::length}.{core::num::==}(2) || !whereWasI.{core::List::[]}(0).{core::String::==}("inner 0") || !whereWasI.{core::List::[]}(1).{core::String::==}("inner 1")) {
     throw "Unexpected path.";
   }
   core::print(whereWasI);
diff --git a/pkg/front_end/testcases/regress/issue_39682.dart.weak.expect b/pkg/front_end/testcases/regress/issue_39682.dart.weak.expect
index 9ab919a..690e86a 100644
--- a/pkg/front_end/testcases/regress/issue_39682.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_39682.dart.weak.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {
   () →* asy::Future<dynamic>* f = #C1;
-  f(){() →* asy::Future<dynamic>*};
+  f.call();
   core::print(self::__loadLibrary_foo());
 }
 static method __loadLibrary_foo() → core::String* {
diff --git a/pkg/front_end/testcases/regress/issue_39682.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_39682.dart.weak.transformed.expect
index 9ab919a..690e86a 100644
--- a/pkg/front_end/testcases/regress/issue_39682.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_39682.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {
   () →* asy::Future<dynamic>* f = #C1;
-  f(){() →* asy::Future<dynamic>*};
+  f.call();
   core::print(self::__loadLibrary_foo());
 }
 static method __loadLibrary_foo() → core::String* {
diff --git a/pkg/front_end/testcases/regress/issue_42423.dart.weak.expect b/pkg/front_end/testcases/regress/issue_42423.dart.weak.expect
index 62f3bfe..f462ef4 100644
--- a/pkg/front_end/testcases/regress/issue_42423.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_42423.dart.weak.expect
@@ -10,10 +10,10 @@
   core::Set<core::int*>* intSet = block {
     final core::Set<core::int*>* #t1 = col::LinkedHashSet::•<core::int*>();
     final core::Iterable<dynamic>* #t2 = stringList as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t2 == null))
+    if(!#t2.{core::Object::==}(null))
       for (final dynamic #t3 in #t2) {
         final core::int* #t4 = #t3 as{TypeError} core::int*;
-        #t1.{core::Set::add}(#t4){(core::int*) →* core::bool*};
+        #t1.{core::Set::add}{Invariant}(#t4);
       }
   } =>#t1;
 }
@@ -21,10 +21,10 @@
   core::List<core::int*>* intList = block {
     final core::List<core::int*>* #t5 = <core::int*>[];
     final core::Iterable<dynamic>* #t6 = stringList as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t6 == null))
+    if(!#t6.{core::Object::==}(null))
       for (final dynamic #t7 in #t6) {
         final core::int* #t8 = #t7 as{TypeError} core::int*;
-        #t5.{core::List::add}(#t8){(core::int*) →* void};
+        #t5.{core::List::add}{Invariant}(#t8);
       }
   } =>#t5;
 }
@@ -32,11 +32,11 @@
   core::Map<core::int*, core::int*>* intMap = block {
     final core::Map<core::int*, core::int*>* #t9 = <core::int*, core::int*>{};
     final core::Map<dynamic, dynamic>* #t10 = stringMap as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*;
-    if(!(#t10 == null))
+    if(!#t10.{core::Object::==}(null))
       for (final core::MapEntry<dynamic, dynamic>* #t11 in #t10.{core::Map::entries}) {
         final core::int* #t12 = #t11.{core::MapEntry::key} as{TypeError} core::int*;
         final core::int* #t13 = #t11.{core::MapEntry::value} as{TypeError} core::int*;
-        #t9.{core::Map::[]=}(#t12, #t13){(core::int*, core::int*) →* void};
+        #t9.{core::Map::[]=}{Invariant}(#t12, #t13);
       }
   } =>#t9;
 }
diff --git a/pkg/front_end/testcases/regress/issue_42423.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_42423.dart.weak.transformed.expect
index 45ca6bf..1ee9e4cd 100644
--- a/pkg/front_end/testcases/regress/issue_42423.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_42423.dart.weak.transformed.expect
@@ -10,13 +10,13 @@
   core::Set<core::int*>* intSet = block {
     final core::Set<core::int*>* #t1 = new col::_CompactLinkedHashSet::•<core::int*>();
     final core::Iterable<dynamic>* #t2 = stringList as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t2 == null)) {
+    if(!#t2.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t2.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t3 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t4 = #t3 as{TypeError} core::int*;
-          #t1.{core::Set::add}(#t4){(core::int*) →* core::bool*};
+          #t1.{core::Set::add}{Invariant}(#t4);
         }
       }
     }
@@ -26,13 +26,13 @@
   core::List<core::int*>* intList = block {
     final core::List<core::int*>* #t5 = core::_GrowableList::•<core::int*>(0);
     final core::Iterable<dynamic>* #t6 = stringList as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t6 == null)) {
+    if(!#t6.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t6.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t7 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t8 = #t7 as{TypeError} core::int*;
-          #t5.{core::List::add}(#t8){(core::int*) →* void};
+          #t5.{core::List::add}{Invariant}(#t8);
         }
       }
     }
@@ -42,14 +42,14 @@
   core::Map<core::int*, core::int*>* intMap = block {
     final core::Map<core::int*, core::int*>* #t9 = <core::int*, core::int*>{};
     final core::Map<dynamic, dynamic>* #t10 = stringMap as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*;
-    if(!(#t10 == null)) {
+    if(!#t10.{core::Object::==}(null)) {
       core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = #t10.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t11 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t12 = #t11.{core::MapEntry::key} as{TypeError} core::int*;
           final core::int* #t13 = #t11.{core::MapEntry::value} as{TypeError} core::int*;
-          #t9.{core::Map::[]=}(#t12, #t13){(core::int*, core::int*) →* void};
+          #t9.{core::Map::[]=}{Invariant}(#t12, #t13);
         }
       }
     }
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/call_kinds.dart.weak.expect
index d6a32ed..be79a68 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds.dart.weak.expect
@@ -13,12 +13,12 @@
   get h() → dynamic
     return null;
   method test() → void {
-    this.{self::C::f}(){() →* void};
-    this.{self::C::f}(){() →* void};
-    this.{self::C::g}{() →* void}(){() →* void};
-    this.{self::C::g}{() →* void}(){() →* void};
-    this.{self::C::h}{dynamic}{dynamic}.call();
-    this.{self::C::h}{dynamic}{dynamic}.call();
+    this.{self::C::f}();
+    this.{self::C::f}();
+    this.{self::C::g}.call();
+    this.{self::C::g}.call();
+    this.{self::C::h}.call();
+    this.{self::C::h}.call();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -32,11 +32,11 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C* c, () →* void f, dynamic d) → void {
-  c.{self::C::f}(){() →* void};
-  f(){() →* void};
-  d{dynamic}.call();
-  d{dynamic}.f();
-  c.{self::C::g}{() →* void}(){() →* void};
-  c.{self::C::h}{dynamic}{dynamic}.call();
+  c.{self::C::f}();
+  f.call();
+  d.call();
+  d.f();
+  c.{self::C::g}.call();
+  c.{self::C::h}.call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/call_kinds.dart.weak.transformed.expect
index d6a32ed..be79a68 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds.dart.weak.transformed.expect
@@ -13,12 +13,12 @@
   get h() → dynamic
     return null;
   method test() → void {
-    this.{self::C::f}(){() →* void};
-    this.{self::C::f}(){() →* void};
-    this.{self::C::g}{() →* void}(){() →* void};
-    this.{self::C::g}{() →* void}(){() →* void};
-    this.{self::C::h}{dynamic}{dynamic}.call();
-    this.{self::C::h}{dynamic}{dynamic}.call();
+    this.{self::C::f}();
+    this.{self::C::f}();
+    this.{self::C::g}.call();
+    this.{self::C::g}.call();
+    this.{self::C::h}.call();
+    this.{self::C::h}.call();
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -32,11 +32,11 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C* c, () →* void f, dynamic d) → void {
-  c.{self::C::f}(){() →* void};
-  f(){() →* void};
-  d{dynamic}.call();
-  d{dynamic}.f();
-  c.{self::C::g}{() →* void}(){() →* void};
-  c.{self::C::h}{dynamic}{dynamic}.call();
+  c.{self::C::f}();
+  f.call();
+  d.call();
+  d.f();
+  c.{self::C::g}.call();
+  c.{self::C::h}.call();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.weak.expect
index 96f9b35..ed18470 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.weak.expect
@@ -10,10 +10,10 @@
   get x() → dynamic
     return null;
   method test() → void {
-    dynamic v1 = this.{self::C::x}{dynamic};
-    dynamic v2 = this.{self::C::x}{dynamic};
-    dynamic v3 = this.{self::C::y}{dynamic};
-    dynamic v4 = this.{self::C::y}{dynamic};
+    dynamic v1 = this.{self::C::x};
+    dynamic v2 = this.{self::C::x};
+    dynamic v3 = this.{self::C::y};
+    dynamic v4 = this.{self::C::y};
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -27,8 +27,8 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C* c, dynamic d) → void {
-  dynamic v1 = c.{self::C::x}{dynamic};
-  dynamic v2 = c.{self::C::y}{dynamic};
-  dynamic v3 = d{dynamic}.x;
+  dynamic v1 = c.{self::C::x};
+  dynamic v2 = c.{self::C::y};
+  dynamic v3 = d.x;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.weak.transformed.expect
index 96f9b35..ed18470 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.weak.transformed.expect
@@ -10,10 +10,10 @@
   get x() → dynamic
     return null;
   method test() → void {
-    dynamic v1 = this.{self::C::x}{dynamic};
-    dynamic v2 = this.{self::C::x}{dynamic};
-    dynamic v3 = this.{self::C::y}{dynamic};
-    dynamic v4 = this.{self::C::y}{dynamic};
+    dynamic v1 = this.{self::C::x};
+    dynamic v2 = this.{self::C::x};
+    dynamic v3 = this.{self::C::y};
+    dynamic v4 = this.{self::C::y};
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -27,8 +27,8 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C* c, dynamic d) → void {
-  dynamic v1 = c.{self::C::x}{dynamic};
-  dynamic v2 = c.{self::C::y}{dynamic};
-  dynamic v3 = d{dynamic}.x;
+  dynamic v1 = c.{self::C::x};
+  dynamic v2 = c.{self::C::y};
+  dynamic v3 = d.x;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.weak.expect
index a78157b..150c15b 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.weak.expect
@@ -28,6 +28,6 @@
 static method test(self::C* c, dynamic d) → void {
   c.{self::C::x} = null;
   c.{self::C::y} = null;
-  d{dynamic}.x = null;
+  d.x = null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.weak.transformed.expect
index a78157b..150c15b 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.weak.transformed.expect
@@ -28,6 +28,6 @@
 static method test(self::C* c, dynamic d) → void {
   c.{self::C::x} = null;
   c.{self::C::y} = null;
-  d{dynamic}.x = null;
+  d.x = null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.weak.expect
index eb56668..472539f 100644
--- a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.weak.expect
@@ -19,5 +19,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  () →* void x = let final self::C* #t1 = new self::C::•() in #t1 == null ?{() →* void} null : #t1.{self::C::call};
+  () →* void x = let final self::C* #t1 = new self::C::•() in #t1.==(null) ?{() →* void} null : #t1.{self::C::call};
 }
diff --git a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.weak.transformed.expect
index eb56668..472539f 100644
--- a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.weak.transformed.expect
@@ -19,5 +19,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  () →* void x = let final self::C* #t1 = new self::C::•() in #t1 == null ?{() →* void} null : #t1.{self::C::call};
+  () →* void x = let final self::C* #t1 = new self::C::•() in #t1.==(null) ?{() →* void} null : #t1.{self::C::call};
 }
diff --git a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.weak.expect
index 2d573c9..e427cd9 100644
--- a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.weak.expect
@@ -21,5 +21,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  FutureOr<() →* void>* x = let final self::C* #t1 = new self::C::•() in #t1 == null ?{() →* void} null : #t1.{self::C::call};
+  FutureOr<() →* void>* x = let final self::C* #t1 = new self::C::•() in #t1.==(null) ?{() →* void} null : #t1.{self::C::call};
 }
diff --git a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.weak.transformed.expect
index 2d573c9..e427cd9 100644
--- a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.weak.transformed.expect
@@ -21,5 +21,5 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  FutureOr<() →* void>* x = let final self::C* #t1 = new self::C::•() in #t1 == null ?{() →* void} null : #t1.{self::C::call};
+  FutureOr<() →* void>* x = let final self::C* #t1 = new self::C::•() in #t1.==(null) ?{() →* void} null : #t1.{self::C::call};
 }
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.weak.expect
index 2142878..eb9c0e5 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.weak.expect
@@ -9,7 +9,7 @@
     : super core::Object::•()
     ;
   method f() → void {
-    (self::C::T*) →* void x = this.{self::C::y}{(self::C::T*) →* void};
+    (self::C::T*) →* void x = this.{self::C::y};
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -23,6 +23,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = c.{self::C::y}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = c.{self::C::y} as{TypeError,CovarianceCheck} (core::num*) →* void;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.weak.transformed.expect
index 2142878..eb9c0e5 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     : super core::Object::•()
     ;
   method f() → void {
-    (self::C::T*) →* void x = this.{self::C::y}{(self::C::T*) →* void};
+    (self::C::T*) →* void x = this.{self::C::y};
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -23,6 +23,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = c.{self::C::y}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = c.{self::C::y} as{TypeError,CovarianceCheck} (core::num*) →* void;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.weak.expect
index 3e9cb61..d05b36d 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.weak.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g(self::C<core::num*>* c) → void {
-  c.{self::C::f}<(core::Object*) →* void>((core::Object* o) → Null {}){((core::Object*) →* void) →* void};
+  c.{self::C::f}<(core::Object*) →* void>((core::Object* o) → Null {});
 }
 static method test() → void {
   self::g(new self::C::•<core::int*>());
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.weak.transformed.expect
index 3e9cb61..d05b36d 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g(self::C<core::num*>* c) → void {
-  c.{self::C::f}<(core::Object*) →* void>((core::Object* o) → Null {}){((core::Object*) →* void) →* void};
+  c.{self::C::f}<(core::Object*) →* void>((core::Object* o) → Null {});
 }
 static method test() → void {
   self::g(new self::C::•<core::int*>());
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.weak.expect
index a1cb113..c696e93 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.weak.expect
@@ -9,7 +9,7 @@
     ;
   method f1() → (self::C::T*) →* void {}
   method f2() → core::List<(self::C::T*) →* void>* {
-    return <(self::C::T*) →* void>[this.{self::C::f1}(){() →* (self::C::T*) →* void}];
+    return <(self::C::T*) →* void>[this.{self::C::f1}()];
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -23,15 +23,15 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = c.{self::C::f1}(){() →* (core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = c.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
   core::print("hello");
-  x(1.5){(core::num*) →* void};
+  x.call(1.5);
 }
 static method g2(self::C<core::num*>* c) → void {
-  (core::int*) →* void x = c.{self::C::f1}(){() →* (core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
-  x(1){(core::int*) →* void};
+  (core::int*) →* void x = c.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
+  x.call(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  core::List<(core::num*) →* void>* x = c.{self::C::f2}(){() →* core::List<(core::num*) →* void>*} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
+  core::List<(core::num*) →* void>* x = c.{self::C::f2}() as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.weak.transformed.expect
index 5c0c338..6d29b6e 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     ;
   method f1() → (self::C::T*) →* void {}
   method f2() → core::List<(self::C::T*) →* void>* {
-    return core::_GrowableList::_literal1<(self::C::T*) →* void>(this.{self::C::f1}(){() →* (self::C::T*) →* void});
+    return core::_GrowableList::_literal1<(self::C::T*) →* void>(this.{self::C::f1}());
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -23,15 +23,15 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = c.{self::C::f1}(){() →* (core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = c.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
   core::print("hello");
-  x(1.5){(core::num*) →* void};
+  x.call(1.5);
 }
 static method g2(self::C<core::num*>* c) → void {
-  (core::int*) →* void x = c.{self::C::f1}(){() →* (core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
-  x(1){(core::int*) →* void};
+  (core::int*) →* void x = c.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
+  x.call(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  core::List<(core::num*) →* void>* x = c.{self::C::f2}(){() →* core::List<(core::num*) →* void>*} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
+  core::List<(core::num*) →* void>* x = c.{self::C::f2}() as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.weak.expect
index a8aa298..ff20fa1 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.weak.expect
@@ -9,7 +9,7 @@
     ;
   method f1() → (self::C::T*) →* void {}
   method f2() → core::List<(self::C::T*) →* void>* {
-    return <(self::C::T*) →* void>[this.{self::C::f1}(){() →* (self::C::T*) →* void}];
+    return <(self::C::T*) →* void>[this.{self::C::f1}()];
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -23,15 +23,15 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1 == null ?{(core::num*) →* void} null : #t1.{self::C::f1}(){() →* (core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1.{self::C::==}(null) ?{(core::num*) →* void} null : #t1.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
   core::print("hello");
-  x(1.5){(core::num*) →* void};
+  x.call(1.5);
 }
 static method g2(self::C<core::num*>* c) → void {
-  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2 == null ?{(core::num*) →* void} null : #t2.{self::C::f1}(){() →* (core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
-  x(1){(core::int*) →* void};
+  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2.{self::C::==}(null) ?{(core::num*) →* void} null : #t2.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
+  x.call(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3 == null ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2}(){() →* core::List<(core::num*) →* void>*} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
+  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3.{self::C::==}(null) ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2}() as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.weak.transformed.expect
index 443ac4f..ca43160 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     ;
   method f1() → (self::C::T*) →* void {}
   method f2() → core::List<(self::C::T*) →* void>* {
-    return core::_GrowableList::_literal1<(self::C::T*) →* void>(this.{self::C::f1}(){() →* (self::C::T*) →* void});
+    return core::_GrowableList::_literal1<(self::C::T*) →* void>(this.{self::C::f1}());
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -23,15 +23,15 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1 == null ?{(core::num*) →* void} null : #t1.{self::C::f1}(){() →* (core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1.{self::C::==}(null) ?{(core::num*) →* void} null : #t1.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
   core::print("hello");
-  x(1.5){(core::num*) →* void};
+  x.call(1.5);
 }
 static method g2(self::C<core::num*>* c) → void {
-  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2 == null ?{(core::num*) →* void} null : #t2.{self::C::f1}(){() →* (core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
-  x(1){(core::int*) →* void};
+  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2.{self::C::==}(null) ?{(core::num*) →* void} null : #t2.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
+  x.call(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3 == null ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2}(){() →* core::List<(core::num*) →* void>*} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
+  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3.{self::C::==}(null) ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2}() as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.weak.expect
index 28fb659..ce30de5 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.weak.expect
@@ -10,7 +10,7 @@
     : self::C::_x = _x, super core::Object::•()
     ;
   method f() → (self::C::T*) →* void
-    return this.{self::C::_x}{(self::C::T*) →* void};
+    return this.{self::C::_x};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -23,7 +23,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g(self::C<core::num*>* c) → () →* (core::num*) →* void {
-  return c.{self::C::f}{() →* (core::num*) →* void} as{TypeError,CovarianceCheck} () →* (core::num*) →* void;
+  return c.{self::C::f} as{TypeError,CovarianceCheck} () →* (core::num*) →* void;
 }
 static method h(core::int* i) → void {
   core::print("${i}");
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.weak.transformed.expect
index 28fb659..ce30de5 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
     : self::C::_x = _x, super core::Object::•()
     ;
   method f() → (self::C::T*) →* void
-    return this.{self::C::_x}{(self::C::T*) →* void};
+    return this.{self::C::_x};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -23,7 +23,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g(self::C<core::num*>* c) → () →* (core::num*) →* void {
-  return c.{self::C::f}{() →* (core::num*) →* void} as{TypeError,CovarianceCheck} () →* (core::num*) →* void;
+  return c.{self::C::f} as{TypeError,CovarianceCheck} () →* (core::num*) →* void;
 }
 static method h(core::int* i) → void {
   core::print("${i}");
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.weak.expect
index 888b0a2..a081cbc 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.weak.expect
@@ -9,7 +9,7 @@
     : super core::Object::•()
     ;
   method f(generic-covariant-impl self::C::T* value) → void {
-    let final self::C::T* #t1 = value in this.{self::C::y}{(self::C::T*) →* void}(#t1){(self::C::T*) →* void};
+    let final self::C::T* #t1 = value in this.{self::C::y}.call(#t1);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -23,6 +23,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g(self::C<core::num*>* c) → void {
-  let final self::C<core::num*>* #t2 = c in let final core::double* #t3 = 1.5 in (#t2.{self::C::y}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void)(#t3){(core::num*) →* void};
+  let final self::C<core::num*>* #t2 = c in let final core::double* #t3 = 1.5 in (#t2.{self::C::y} as{TypeError,CovarianceCheck} (core::num*) →* void).call(#t3);
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.weak.transformed.expect
index b58547d..84c4721 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     : super core::Object::•()
     ;
   method f(generic-covariant-impl self::C::T* value) → void {
-    let final self::C::T* #t1 = value in this.{self::C::y}{(self::C::T*) →* void}(#t1){(self::C::T*) →* void};
+    let final self::C::T* #t1 = value in this.{self::C::y}.call(#t1);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -23,7 +23,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g(self::C<core::num*>* c) → void {
-  let final self::C<core::num*>* #t2 = c in let final core::double* #t3 = 1.5 in (#t2.{self::C::y}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void)(#t3){(core::num*) →* void};
+  let final self::C<core::num*>* #t2 = c in let final core::double* #t3 = 1.5 in (#t2.{self::C::y} as{TypeError,CovarianceCheck} (core::num*) →* void).call(#t3);
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.weak.expect
index 60445df..cfbae18 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.weak.expect
@@ -10,7 +10,7 @@
   get f1() → (self::C::T*) →* void
     return null;
   get f2() → core::List<(self::C::T*) →* void>* {
-    return <(self::C::T*) →* void>[this.{self::C::f1}{(self::C::T*) →* void}];
+    return <(self::C::T*) →* void>[this.{self::C::f1}];
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -24,15 +24,15 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = c.{self::C::f1}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = c.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
   core::print("hello");
-  x(1.5){(core::num*) →* void};
+  x.call(1.5);
 }
 static method g2(self::C<core::num*>* c) → void {
-  (core::int*) →* void x = c.{self::C::f1}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
-  x(1){(core::int*) →* void};
+  (core::int*) →* void x = c.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  x.call(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  core::List<(core::num*) →* void>* x = c.{self::C::f2}{core::List<(core::num*) →* void>*} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
+  core::List<(core::num*) →* void>* x = c.{self::C::f2} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.weak.transformed.expect
index 54d2c49..bf505b2 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
   get f1() → (self::C::T*) →* void
     return null;
   get f2() → core::List<(self::C::T*) →* void>* {
-    return core::_GrowableList::_literal1<(self::C::T*) →* void>(this.{self::C::f1}{(self::C::T*) →* void});
+    return core::_GrowableList::_literal1<(self::C::T*) →* void>(this.{self::C::f1});
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -24,15 +24,15 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = c.{self::C::f1}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = c.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
   core::print("hello");
-  x(1.5){(core::num*) →* void};
+  x.call(1.5);
 }
 static method g2(self::C<core::num*>* c) → void {
-  (core::int*) →* void x = c.{self::C::f1}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
-  x(1){(core::int*) →* void};
+  (core::int*) →* void x = c.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  x.call(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  core::List<(core::num*) →* void>* x = c.{self::C::f2}{core::List<(core::num*) →* void>*} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
+  core::List<(core::num*) →* void>* x = c.{self::C::f2} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.weak.expect
index 98e1172..b1c9392 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.weak.expect
@@ -10,7 +10,7 @@
   get f1() → (self::C::T*) →* void
     return null;
   get f2() → core::List<(self::C::T*) →* void>* {
-    return <(self::C::T*) →* void>[this.{self::C::f1}{(self::C::T*) →* void}];
+    return <(self::C::T*) →* void>[this.{self::C::f1}];
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -24,15 +24,15 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1 == null ?{(core::num*) →* void} null : #t1.{self::C::f1}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1.{self::C::==}(null) ?{(core::num*) →* void} null : #t1.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
   core::print("hello");
-  x(1.5){(core::num*) →* void};
+  x.call(1.5);
 }
 static method g2(self::C<core::num*>* c) → void {
-  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2 == null ?{(core::num*) →* void} null : #t2.{self::C::f1}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
-  x(1){(core::int*) →* void};
+  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2.{self::C::==}(null) ?{(core::num*) →* void} null : #t2.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  x.call(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3 == null ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2}{core::List<(core::num*) →* void>*} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
+  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3.{self::C::==}(null) ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.weak.transformed.expect
index 73da0a3..441c6fa 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
   get f1() → (self::C::T*) →* void
     return null;
   get f2() → core::List<(self::C::T*) →* void>* {
-    return core::_GrowableList::_literal1<(self::C::T*) →* void>(this.{self::C::f1}{(self::C::T*) →* void});
+    return core::_GrowableList::_literal1<(self::C::T*) →* void>(this.{self::C::f1});
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -24,15 +24,15 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1 == null ?{(core::num*) →* void} null : #t1.{self::C::f1}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1.{self::C::==}(null) ?{(core::num*) →* void} null : #t1.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
   core::print("hello");
-  x(1.5){(core::num*) →* void};
+  x.call(1.5);
 }
 static method g2(self::C<core::num*>* c) → void {
-  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2 == null ?{(core::num*) →* void} null : #t2.{self::C::f1}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
-  x(1){(core::int*) →* void};
+  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2.{self::C::==}(null) ?{(core::num*) →* void} null : #t2.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  x.call(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3 == null ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2}{core::List<(core::num*) →* void>*} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
+  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3.{self::C::==}(null) ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.weak.expect
index f2e772a..a1b22b2 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.weak.expect
@@ -23,7 +23,7 @@
   method g1<generic-covariant-impl U extends self::C::T*>() → void {
     this.{self::C::f}<self::C::g1::U*>(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart:11:15: Error: The argument type 'double' can't be assigned to the parameter type 'U'.
     this.f<U>(1.5);
-              ^" in 1.5 as{TypeError} Never){(self::C::g1::U*) →* void};
+              ^" in 1.5 as{TypeError} Never);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -37,10 +37,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g2(self::C<core::Object*>* c) → void {
-  c.{self::C::f}<core::num*>(1.5){(core::num*) →* void};
+  c.{self::C::f}<core::num*>(1.5);
 }
 static method test() → void {
-  new self::C::•<core::int*>().{self::C::g1}<core::num*>(){() →* void};
+  new self::C::•<core::int*>().{self::C::g1}<core::num*>();
   self::g2(new self::C::•<core::int*>());
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.weak.transformed.expect
index f2e772a..a1b22b2 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
   method g1<generic-covariant-impl U extends self::C::T*>() → void {
     this.{self::C::f}<self::C::g1::U*>(let final Never* #t1 = invalid-expression "pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart:11:15: Error: The argument type 'double' can't be assigned to the parameter type 'U'.
     this.f<U>(1.5);
-              ^" in 1.5 as{TypeError} Never){(self::C::g1::U*) →* void};
+              ^" in 1.5 as{TypeError} Never);
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -37,10 +37,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g2(self::C<core::Object*>* c) → void {
-  c.{self::C::f}<core::num*>(1.5){(core::num*) →* void};
+  c.{self::C::f}<core::num*>(1.5);
 }
 static method test() → void {
-  new self::C::•<core::int*>().{self::C::g1}<core::num*>(){() →* void};
+  new self::C::•<core::int*>().{self::C::g1}<core::num*>();
   self::g2(new self::C::•<core::int*>());
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.weak.expect
index 416b83b..bab4420 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.weak.expect
@@ -19,12 +19,12 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c) → void {
-  c.{self::C::f}(1.5){(core::num*) →* void};
+  c.{self::C::f}(1.5);
 }
 static method g2(self::C<core::int*>* c) → void {
-  c.{self::C::f}(1){(core::int*) →* void};
+  c.{self::C::f}(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  c.{self::C::f}(null){(core::num*) →* void};
+  c.{self::C::f}(null);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.weak.transformed.expect
index 416b83b..bab4420 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.weak.transformed.expect
@@ -19,12 +19,12 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c) → void {
-  c.{self::C::f}(1.5){(core::num*) →* void};
+  c.{self::C::f}(1.5);
 }
 static method g2(self::C<core::int*>* c) → void {
-  c.{self::C::f}(1){(core::int*) →* void};
+  c.{self::C::f}(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  c.{self::C::f}(null){(core::num*) →* void};
+  c.{self::C::f}(null);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.weak.expect
index 4cc02bb..7bc3def 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.weak.expect
@@ -22,15 +22,15 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c, core::List<core::num*>* l) → void {
-  c.{self::C::f1}(l){(core::List<core::num*>*) →* void};
+  c.{self::C::f1}(l);
 }
 static method g2(self::C<core::num*>* c, () →* core::num* callback) → void {
-  c.{self::C::f2}(callback){(() →* core::num*) →* void};
+  c.{self::C::f2}(callback);
 }
 static method g3(self::C<core::num*>* c, (core::num*) →* core::num* callback) → void {
-  c.{self::C::f3}(callback){((core::num*) →* core::num*) →* void};
+  c.{self::C::f3}(callback);
 }
 static method g4(self::C<core::num*>* c, (core::num*) →* void callback) → void {
-  c.{self::C::f4}(callback){((core::num*) →* void) →* void};
+  c.{self::C::f4}(callback);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.weak.transformed.expect
index 4cc02bb..7bc3def 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.weak.transformed.expect
@@ -22,15 +22,15 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c, core::List<core::num*>* l) → void {
-  c.{self::C::f1}(l){(core::List<core::num*>*) →* void};
+  c.{self::C::f1}(l);
 }
 static method g2(self::C<core::num*>* c, () →* core::num* callback) → void {
-  c.{self::C::f2}(callback){(() →* core::num*) →* void};
+  c.{self::C::f2}(callback);
 }
 static method g3(self::C<core::num*>* c, (core::num*) →* core::num* callback) → void {
-  c.{self::C::f3}(callback){((core::num*) →* core::num*) →* void};
+  c.{self::C::f3}(callback);
 }
 static method g4(self::C<core::num*>* c, (core::num*) →* void callback) → void {
-  c.{self::C::f4}(callback){((core::num*) →* void) →* void};
+  c.{self::C::f4}(callback);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.weak.expect
index b2163ff..fe4164c 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.weak.expect
@@ -44,19 +44,19 @@
   method f2(generic-covariant-impl core::int* x, [generic-covariant-impl self::D::U* y = #C1]) → void {}
 }
 static method g1(self::C<core::num*>* c) → void {
-  c.{self::C::f1}(1){(core::int*) →* void};
+  c.{self::C::f1}(1);
 }
 static method g2(self::I<core::num*>* i) → void {
-  i.{self::I::f1}(1.5){(core::num*) →* void};
+  i.{self::I::f1}(1.5);
 }
 static method g3(self::C<core::num*>* c) → void {
-  c.{self::C::f2}(1, 1.5){(core::int*, [core::num*]) →* void};
+  c.{self::C::f2}(1, 1.5);
 }
 static method g4(self::D<core::num*>* d) → void {
-  d.{self::D::f1}(1){(core::int*) →* void};
+  d.{self::D::f1}(1);
 }
 static method g5(self::D<core::num*>* d) → void {
-  d.{self::D::f2}(1, 1.5){(core::int*, [core::num*]) →* void};
+  d.{self::D::f2}(1, 1.5);
 }
 static method test() → void {
   self::g2(new self::C::•<core::num*>());
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.weak.transformed.expect
index b2163ff..fe4164c 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.weak.transformed.expect
@@ -44,19 +44,19 @@
   method f2(generic-covariant-impl core::int* x, [generic-covariant-impl self::D::U* y = #C1]) → void {}
 }
 static method g1(self::C<core::num*>* c) → void {
-  c.{self::C::f1}(1){(core::int*) →* void};
+  c.{self::C::f1}(1);
 }
 static method g2(self::I<core::num*>* i) → void {
-  i.{self::I::f1}(1.5){(core::num*) →* void};
+  i.{self::I::f1}(1.5);
 }
 static method g3(self::C<core::num*>* c) → void {
-  c.{self::C::f2}(1, 1.5){(core::int*, [core::num*]) →* void};
+  c.{self::C::f2}(1, 1.5);
 }
 static method g4(self::D<core::num*>* d) → void {
-  d.{self::D::f1}(1){(core::int*) →* void};
+  d.{self::D::f1}(1);
 }
 static method g5(self::D<core::num*>* d) → void {
-  d.{self::D::f2}(1, 1.5){(core::int*, [core::num*]) →* void};
+  d.{self::D::f2}(1, 1.5);
 }
 static method test() → void {
   self::g2(new self::C::•<core::num*>());
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.weak.expect
index ae3c830..9d84b87 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.weak.expect
@@ -58,10 +58,10 @@
     return super.{self::M::f}(x);
 }
 static method g1(self::C* c) → void {
-  c.{self::C::f}(1){(core::int*) →* void};
+  c.{self::C::f}(1);
 }
 static method g2(self::I<core::num*>* i) → void {
-  i.{self::I::f}(1.5){(core::num*) →* void};
+  i.{self::I::f}(1.5);
 }
 static method test() → void {
   self::g2(new self::C::•());
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.weak.transformed.expect
index a88ae80..8ddd7e7 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.weak.transformed.expect
@@ -57,10 +57,10 @@
   method f(generic-covariant-impl core::int* x) → void {}
 }
 static method g1(self::C* c) → void {
-  c.{self::C::f}(1){(core::int*) →* void};
+  c.{self::C::f}(1);
 }
 static method g2(self::I<core::num*>* i) → void {
-  i.{self::I::f}(1.5){(core::num*) →* void};
+  i.{self::I::f}(1.5);
 }
 static method test() → void {
   self::g2(new self::C::•());
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.weak.expect
index 5cda4e0..c3440ec 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.weak.expect
@@ -42,10 +42,10 @@
     return super.{self::B::f}(x);
 }
 static method g1(self::C* c) → void {
-  c.{self::C::f}(1){(core::int*) →* void};
+  c.{self::C::f}(1);
 }
 static method g2(self::I<core::num*>* i) → void {
-  i.{self::I::f}(1.5){(core::num*) →* void};
+  i.{self::I::f}(1.5);
 }
 static method test() → void {
   self::g2(new self::C::•());
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.weak.transformed.expect
index 5cda4e0..c3440ec 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.weak.transformed.expect
@@ -42,10 +42,10 @@
     return super.{self::B::f}(x);
 }
 static method g1(self::C* c) → void {
-  c.{self::C::f}(1){(core::int*) →* void};
+  c.{self::C::f}(1);
 }
 static method g2(self::I<core::num*>* i) → void {
-  i.{self::I::f}(1.5){(core::num*) →* void};
+  i.{self::I::f}(1.5);
 }
 static method test() → void {
   self::g2(new self::C::•());
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.weak.expect
index b2395d9..3d71880 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.weak.expect
@@ -57,10 +57,10 @@
     return super.{self::B::f}(x);
 }
 static method g1(self::C* c) → void {
-  c.{self::C::f}(1){(core::int*) →* void};
+  c.{self::C::f}(1);
 }
 static method g2(self::I<core::num*>* i) → void {
-  i.{self::I::f}(1.5){(core::num*) →* void};
+  i.{self::I::f}(1.5);
 }
 static method test() → void {
   self::g2(new self::C::•());
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.weak.transformed.expect
index eb463e7..d74360b 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.weak.transformed.expect
@@ -57,10 +57,10 @@
     return super.{self::B::f}(x);
 }
 static method g1(self::C* c) → void {
-  c.{self::C::f}(1){(core::int*) →* void};
+  c.{self::C::f}(1);
 }
 static method g2(self::I<core::num*>* i) → void {
-  i.{self::I::f}(1.5){(core::num*) →* void};
+  i.{self::I::f}(1.5);
 }
 static method test() → void {
   self::g2(new self::C::•());
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.weak.expect
index 05ac14b..3ee6fae 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.weak.expect
@@ -10,7 +10,7 @@
     ;
   method f1(generic-covariant-impl self::C::T* x) → void {}
   method f2(generic-covariant-impl core::List<self::C::T*>* x) → self::C::T*
-    return x.{core::Iterable::first}{self::C::T*};
+    return x.{core::Iterable::first};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -23,18 +23,18 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c) → (core::num*) →* void {
-  return c.{self::C::f1}{(core::num*) →* void};
+  return c.{self::C::f1};
 }
 static method g2(self::C<core::int*>* c, core::Object* x) → void {
   (core::Object*) →* void f = self::g1(c) as (core::Object*) →* void;
-  f(x){(core::Object*) →* void};
+  f.call(x);
 }
 static method g3(self::C<core::num*>* c) → (core::List<core::num*>*) →* core::num* {
-  return c.{self::C::f2}{(core::List<core::num*>*) →* core::num*};
+  return c.{self::C::f2};
 }
 static method test() → void {
   (core::num*) →* void x = self::g1(new self::C::•<core::int*>());
-  x(1.5){(core::num*) →* void};
+  x.call(1.5);
   self::g3(new self::C::•<core::int*>());
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.weak.transformed.expect
index 05ac14b..3ee6fae 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
     ;
   method f1(generic-covariant-impl self::C::T* x) → void {}
   method f2(generic-covariant-impl core::List<self::C::T*>* x) → self::C::T*
-    return x.{core::Iterable::first}{self::C::T*};
+    return x.{core::Iterable::first};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -23,18 +23,18 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(self::C<core::num*>* c) → (core::num*) →* void {
-  return c.{self::C::f1}{(core::num*) →* void};
+  return c.{self::C::f1};
 }
 static method g2(self::C<core::int*>* c, core::Object* x) → void {
   (core::Object*) →* void f = self::g1(c) as (core::Object*) →* void;
-  f(x){(core::Object*) →* void};
+  f.call(x);
 }
 static method g3(self::C<core::num*>* c) → (core::List<core::num*>*) →* core::num* {
-  return c.{self::C::f2}{(core::List<core::num*>*) →* core::num*};
+  return c.{self::C::f2};
 }
 static method test() → void {
   (core::num*) →* void x = self::g1(new self::C::•<core::int*>());
-  x(1.5){(core::num*) →* void};
+  x.call(1.5);
   self::g3(new self::C::•<core::int*>());
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.weak.expect
index e05a2b1..75c7857 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.weak.expect
@@ -32,10 +32,10 @@
   method f(covariant core::int* x) → void {}
 }
 static method g1(self::C* c) → void {
-  c.{self::C::f}(1.5){(core::num*) →* void};
+  c.{self::C::f}(1.5);
 }
 static method g2(self::C* c) → (core::num*) →* dynamic {
-  return c.{self::C::f}{(core::num*) →* void};
+  return c.{self::C::f};
 }
 static method test() → dynamic {
   self::g1(new self::D::•());
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.weak.transformed.expect
index e05a2b1..75c7857 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.weak.transformed.expect
@@ -32,10 +32,10 @@
   method f(covariant core::int* x) → void {}
 }
 static method g1(self::C* c) → void {
-  c.{self::C::f}(1.5){(core::num*) →* void};
+  c.{self::C::f}(1.5);
 }
 static method g2(self::C* c) → (core::num*) →* dynamic {
-  return c.{self::C::f}{(core::num*) →* void};
+  return c.{self::C::f};
 }
 static method test() → dynamic {
   self::g1(new self::D::•());
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.weak.expect
index bb26705..82e285a 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.weak.expect
@@ -26,10 +26,10 @@
   method f1(covariant generic-covariant-impl core::int* x) → void {}
 }
 static method g1(dynamic d) → void {
-  d{dynamic}.f1(1.5);
+  d.f1(1.5);
 }
 static method g2(dynamic d) → void {
-  d{dynamic}.f2(1.5);
+  d.f2(1.5);
 }
 static method test() → void {
   self::g1(new self::C::•<core::int*>());
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.weak.transformed.expect
index bb26705..82e285a 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.weak.transformed.expect
@@ -26,10 +26,10 @@
   method f1(covariant generic-covariant-impl core::int* x) → void {}
 }
 static method g1(dynamic d) → void {
-  d{dynamic}.f1(1.5);
+  d.f1(1.5);
 }
 static method g2(dynamic d) → void {
-  d{dynamic}.f2(1.5);
+  d.f2(1.5);
 }
 static method test() → void {
   self::g1(new self::C::•<core::int*>());
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.weak.expect
index 3093b2a..07dcc99 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.weak.expect
@@ -19,10 +19,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(dynamic d) → void {
-  d{dynamic}.f<core::num*>(1.5);
+  d.f<core::num*>(1.5);
 }
 static method g2(dynamic d) → void {
-  d{dynamic}.f(1.5);
+  d.f(1.5);
 }
 static method test() → void {
   self::g1(new self::C::•<core::int*>());
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.weak.transformed.expect
index 3093b2a..07dcc99 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.weak.transformed.expect
@@ -19,10 +19,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g1(dynamic d) → void {
-  d{dynamic}.f<core::num*>(1.5);
+  d.f<core::num*>(1.5);
 }
 static method g2(dynamic d) → void {
-  d{dynamic}.f(1.5);
+  d.f(1.5);
 }
 static method test() → void {
   self::g1(new self::C::•<core::int*>());
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.weak.expect
index 14294a1..89e5e57 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.weak.expect
@@ -19,7 +19,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g(self::C* c) → void {
-  let final self::C* #t1 = c in let final core::double* #t2 = 1.5 in #t1.{self::C::f}{dynamic}{dynamic}.call(#t2);
+  let final self::C* #t1 = c in let final core::double* #t2 = 1.5 in #t1.{self::C::f}.call(#t2);
 }
 static method h(core::int* i) → void {}
 static method test() → void {
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.weak.transformed.expect
index bde2247..12c20f9 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.weak.transformed.expect
@@ -19,7 +19,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method g(self::C* c) → void {
-  let final self::C* #t1 = c in let final core::double* #t2 = 1.5 in #t1.{self::C::f}{dynamic}{dynamic}.call(#t2);
+  let final self::C* #t1 = c in let final core::double* #t2 = 1.5 in #t1.{self::C::f}.call(#t2);
 }
 static method h(core::int* i) → void {}
 static method test() → void {
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.weak.expect
index 6c001e5..1839f07 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.weak.expect
@@ -14,8 +14,8 @@
     this.{self::B::_x} = x;
   }
   method check(core::Object* expectedValue) → void {
-    if(!(this.{self::B::_x}{core::Object*} =={core::Object::==}{(core::Object*) →* core::bool*} expectedValue)) {
-      throw "Expected _x == ${expectedValue}; got ${this.{self::B::_x}{core::Object*}}";
+    if(!this.{self::B::_x}.{core::Object::==}(expectedValue)) {
+      throw "Expected _x == ${expectedValue}; got ${this.{self::B::_x}}";
     }
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -57,10 +57,10 @@
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  c.{self::C::f}(){([core::num*]) →* void};
-  c.{self::B::check}(10){(core::Object*) →* void};
-  c.{self::C::g}(){({x: core::num*}) →* void};
-  c.{self::B::check}(20){(core::Object*) →* void};
+  c.{self::C::f}();
+  c.{self::B::check}(10);
+  c.{self::C::g}();
+  c.{self::B::check}(20);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.weak.transformed.expect
index 6c001e5..1839f07 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.weak.transformed.expect
@@ -14,8 +14,8 @@
     this.{self::B::_x} = x;
   }
   method check(core::Object* expectedValue) → void {
-    if(!(this.{self::B::_x}{core::Object*} =={core::Object::==}{(core::Object*) →* core::bool*} expectedValue)) {
-      throw "Expected _x == ${expectedValue}; got ${this.{self::B::_x}{core::Object*}}";
+    if(!this.{self::B::_x}.{core::Object::==}(expectedValue)) {
+      throw "Expected _x == ${expectedValue}; got ${this.{self::B::_x}}";
     }
   }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -57,10 +57,10 @@
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  c.{self::C::f}(){([core::num*]) →* void};
-  c.{self::B::check}(10){(core::Object*) →* void};
-  c.{self::C::g}(){({x: core::num*}) →* void};
-  c.{self::B::check}(20){(core::Object*) →* void};
+  c.{self::C::f}();
+  c.{self::B::check}(10);
+  c.{self::C::g}();
+  c.{self::B::check}(20);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/runtime_checks/implicit_downcast_for_condition.dart.weak.expect b/pkg/front_end/testcases/runtime_checks/implicit_downcast_for_condition.dart.weak.expect
index 40fe0be..0cd35c4 100644
--- a/pkg/front_end/testcases/runtime_checks/implicit_downcast_for_condition.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks/implicit_downcast_for_condition.dart.weak.expect
@@ -5,7 +5,7 @@
 static method main() → void {
   core::Object* o = 1;
   try {
-    for (core::int* i = 0; o as{TypeError} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; o as{TypeError} core::bool*; i = i.{core::num::+}(1)) {
     }
     throw "no exception";
   }
diff --git a/pkg/front_end/testcases/runtime_checks/implicit_downcast_for_condition.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks/implicit_downcast_for_condition.dart.weak.transformed.expect
index 40fe0be..0cd35c4 100644
--- a/pkg/front_end/testcases/runtime_checks/implicit_downcast_for_condition.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/implicit_downcast_for_condition.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
 static method main() → void {
   core::Object* o = 1;
   try {
-    for (core::int* i = 0; o as{TypeError} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+    for (core::int* i = 0; o as{TypeError} core::bool*; i = i.{core::num::+}(1)) {
     }
     throw "no exception";
   }
diff --git a/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.weak.expect b/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.weak.expect
index 76ccf53..dcb6067 100644
--- a/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.weak.expect
@@ -9,16 +9,16 @@
     ;
   method f(generic-covariant-impl self::C::T* x) → void {}
   method g1(generic-covariant-impl self::C::T* x) → void {
-    this.{self::C::f}(x){(self::C::T*) →* void};
+    this.{self::C::f}(x);
   }
   method g2(generic-covariant-impl self::C::T* x) → void {
-    this.{self::C::f}(x){(self::C::T*) →* void};
+    this.{self::C::f}(x);
   }
   method g3(generic-covariant-impl self::C<self::C::T*>* c, generic-covariant-impl self::C::T* x) → void {
-    c.{self::C::f}(x){(self::C::T*) →* void};
+    c.{self::C::f}(x);
   }
   method g4() → (self::C::T*) →* dynamic
-    return this.{self::C::f}{(self::C::T*) →* void};
+    return this.{self::C::f};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -42,8 +42,8 @@
   method f(covariant generic-covariant-impl core::int* x) → void {}
 }
 static method test() → dynamic {
-  (core::Object*) →* dynamic x = (new self::D::•().{self::C::g4}(){() →* (core::int*) →* dynamic} as{TypeError,CovarianceCheck} (core::int*) →* dynamic) as (core::Object*) →* dynamic;
-  x("hi"){(core::Object*) →* dynamic};
-  new self::E::•().{self::C::g1}(1.5){(core::num*) →* void};
+  (core::Object*) →* dynamic x = (new self::D::•().{self::C::g4}() as{TypeError,CovarianceCheck} (core::int*) →* dynamic) as (core::Object*) →* dynamic;
+  x.call("hi");
+  new self::E::•().{self::C::g1}(1.5);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.weak.transformed.expect
index 76ccf53..dcb6067 100644
--- a/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.weak.transformed.expect
@@ -9,16 +9,16 @@
     ;
   method f(generic-covariant-impl self::C::T* x) → void {}
   method g1(generic-covariant-impl self::C::T* x) → void {
-    this.{self::C::f}(x){(self::C::T*) →* void};
+    this.{self::C::f}(x);
   }
   method g2(generic-covariant-impl self::C::T* x) → void {
-    this.{self::C::f}(x){(self::C::T*) →* void};
+    this.{self::C::f}(x);
   }
   method g3(generic-covariant-impl self::C<self::C::T*>* c, generic-covariant-impl self::C::T* x) → void {
-    c.{self::C::f}(x){(self::C::T*) →* void};
+    c.{self::C::f}(x);
   }
   method g4() → (self::C::T*) →* dynamic
-    return this.{self::C::f}{(self::C::T*) →* void};
+    return this.{self::C::f};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -42,8 +42,8 @@
   method f(covariant generic-covariant-impl core::int* x) → void {}
 }
 static method test() → dynamic {
-  (core::Object*) →* dynamic x = (new self::D::•().{self::C::g4}(){() →* (core::int*) →* dynamic} as{TypeError,CovarianceCheck} (core::int*) →* dynamic) as (core::Object*) →* dynamic;
-  x("hi"){(core::Object*) →* dynamic};
-  new self::E::•().{self::C::g1}(1.5){(core::num*) →* void};
+  (core::Object*) →* dynamic x = (new self::D::•().{self::C::g4}() as{TypeError,CovarianceCheck} (core::int*) →* dynamic) as (core::Object*) →* dynamic;
+  x.call("hi");
+  new self::E::•().{self::C::g1}(1.5);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.weak.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.weak.expect
index d266b53..3bb4b53 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.weak.expect
@@ -41,19 +41,19 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test1(self::B<core::num*, (core::num*) →* void>* b) → void {
-  b = b.{self::B::+}(1){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
-  self::B<core::num*, (core::num*) →* void>* x = b = b.{self::B::+}(2){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
+  b = b.{self::B::+}(1) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
+  self::B<core::num*, (core::num*) →* void>* x = b = b.{self::B::+}(2) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
 }
 static method test2(self::C* c) → void {
-  let final self::C* #t1 = c in let final core::int* #t2 = 0 in #t1.{self::C::[]=}(#t2, #t1.{self::C::[]}(#t2){(core::int*) →* self::B<core::num*, (core::num*) →* void>*}.{self::B::+}(1){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*){(core::int*, self::B<core::num*, (core::num*) →* void>*) →* void};
-  self::B<core::num*, (core::num*) →* void>* x = let final self::C* #t3 = c in let final core::int* #t4 = 0 in let final self::B<core::num*, (core::num*) →* void>* #t5 = #t3.{self::C::[]}(#t4){(core::int*) →* self::B<core::num*, (core::num*) →* void>*}.{self::B::+}(2){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>* in let final void #t6 = #t3.{self::C::[]=}(#t4, #t5){(core::int*, self::B<core::num*, (core::num*) →* void>*) →* void} in #t5;
+  let final self::C* #t1 = c in let final core::int* #t2 = 0 in #t1.{self::C::[]=}(#t2, #t1.{self::C::[]}(#t2).{self::B::+}(1) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*);
+  self::B<core::num*, (core::num*) →* void>* x = let final self::C* #t3 = c in let final core::int* #t4 = 0 in let final self::B<core::num*, (core::num*) →* void>* #t5 = #t3.{self::C::[]}(#t4).{self::B::+}(2) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>* in let final void #t6 = #t3.{self::C::[]=}(#t4, #t5) in #t5;
 }
 static method test3(self::C* c) → void {
-  let final self::C* #t7 = c in #t7.{self::C::x} = #t7.{self::C::x}{self::B<core::num*, (core::num*) →* void>*}.{self::B::+}(1){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
-  self::B<core::num*, (core::num*) →* void>* x = let final self::C* #t8 = c in #t8.{self::C::x} = #t8.{self::C::x}{self::B<core::num*, (core::num*) →* void>*}.{self::B::+}(2){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
+  let final self::C* #t7 = c in #t7.{self::C::x} = #t7.{self::C::x}.{self::B::+}(1) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
+  self::B<core::num*, (core::num*) →* void>* x = let final self::C* #t8 = c in #t8.{self::C::x} = #t8.{self::C::x}.{self::B::+}(2) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
 }
 static method test4(self::C* c) → void {
-  self::C::y = self::C::y.{self::B::+}(1){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
-  self::B<core::num*, (core::num*) →* void>* x = self::C::y = self::C::y.{self::B::+}(2){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
+  self::C::y = self::C::y.{self::B::+}(1) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
+  self::B<core::num*, (core::num*) →* void>* x = self::C::y = self::C::y.{self::B::+}(2) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.weak.transformed.expect
index 28b2e93..f94a84b 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.weak.transformed.expect
@@ -41,20 +41,20 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test1(self::B<core::num*, (core::num*) →* void>* b) → void {
-  b = b.{self::B::+}(1){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
-  self::B<core::num*, (core::num*) →* void>* x = b = b.{self::B::+}(2){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
+  b = b.{self::B::+}(1) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
+  self::B<core::num*, (core::num*) →* void>* x = b = b.{self::B::+}(2) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
 }
 static method test2(self::C* c) → void {
-  let final self::C* #t1 = c in let final core::int* #t2 = 0 in #t1.{self::C::[]=}(#t2, #t1.{self::C::[]}(#t2){(core::int*) →* self::B<core::num*, (core::num*) →* void>*}.{self::B::+}(1){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*){(core::int*, self::B<core::num*, (core::num*) →* void>*) →* void};
-  self::B<core::num*, (core::num*) →* void>* x = let final self::C* #t3 = c in let final core::int* #t4 = 0 in let final self::B<core::num*, (core::num*) →* void>* #t5 = #t3.{self::C::[]}(#t4){(core::int*) →* self::B<core::num*, (core::num*) →* void>*}.{self::B::+}(2){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>* in let final void #t6 = #t3.{self::C::[]=}(#t4, #t5){(core::int*, self::B<core::num*, (core::num*) →* void>*) →* void} in #t5;
+  let final self::C* #t1 = c in let final core::int* #t2 = 0 in #t1.{self::C::[]=}(#t2, #t1.{self::C::[]}(#t2).{self::B::+}(1) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*);
+  self::B<core::num*, (core::num*) →* void>* x = let final self::C* #t3 = c in let final core::int* #t4 = 0 in let final self::B<core::num*, (core::num*) →* void>* #t5 = #t3.{self::C::[]}(#t4).{self::B::+}(2) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>* in let final void #t6 = #t3.{self::C::[]=}(#t4, #t5) in #t5;
 }
 static method test3(self::C* c) → void {
-  let final self::C* #t7 = c in #t7.{self::C::x} = #t7.{self::C::x}{self::B<core::num*, (core::num*) →* void>*}.{self::B::+}(1){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
-  self::B<core::num*, (core::num*) →* void>* x = let final self::C* #t8 = c in #t8.{self::C::x} = #t8.{self::C::x}{self::B<core::num*, (core::num*) →* void>*}.{self::B::+}(2){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
+  let final self::C* #t7 = c in #t7.{self::C::x} = #t7.{self::C::x}.{self::B::+}(1) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
+  self::B<core::num*, (core::num*) →* void>* x = let final self::C* #t8 = c in #t8.{self::C::x} = #t8.{self::C::x}.{self::B::+}(2) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
 }
 static method test4(self::C* c) → void {
-  self::C::y = self::C::y.{self::B::+}(1){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
-  self::B<core::num*, (core::num*) →* void>* x = self::C::y = self::C::y.{self::B::+}(2){(dynamic) →* self::B<core::num*, (core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
+  self::C::y = self::C::y.{self::B::+}(1) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
+  self::B<core::num*, (core::num*) →* void>* x = self::C::y = self::C::y.{self::B::+}(2) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.weak.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.weak.expect
index 889de80..88e10fb 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.weak.expect
@@ -27,7 +27,7 @@
     : self::C::plusResult = plusResult, super core::Object::•()
     ;
   operator +(core::int* i) → (self::C::T*) →* core::num*
-    return this.{self::C::plusResult}{(self::C::T*) →* core::num*};
+    return this.{self::C::plusResult};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -46,7 +46,7 @@
     : self::D::getValue = getValue, super core::Object::•()
     ;
   get value() → self::C<core::num*>*
-    return this.{self::D::getValue}{self::C<core::num*>*};
+    return this.{self::D::getValue};
   set value((core::int*) →* core::int* value) → void {
     this.{self::D::setValue} = value;
   }
@@ -63,14 +63,14 @@
 }
 static method expectTypeError(() →* void callback) → void {
   try {
-    callback(){() →* void};
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
   }
 }
 static method expect(core::Object* value, core::Object* expected) → void {
-  if(!(value =={core::Object::==}{(core::Object*) →* core::bool*} expected)) {
+  if(!value.{core::Object::==}(expected)) {
     throw "Expected ${expected}, got ${value}";
   }
 }
@@ -82,15 +82,15 @@
   self::D* d = new self::D::•(new self::C::•<core::num*>(#C1));
   let final self::D* #t1 = d in #t1.{self::D::value} = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:49:46: Error: A value of type 'num Function(num)' can't be assigned to a variable of type 'int Function(int)'.
   d.value /*@ checkReturn=(num*) ->* num* */ += 1;
-                                             ^" in (#t1.{self::D::value}{self::C<core::num*>*}.{self::C::+}(1){(core::int*) →* (core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*) as{TypeError} (core::int*) →* core::int*;
-  self::expect(let final self::D* #t3 = d in let final core::int* #t4 = 0 in #t3.{self::D::setValue}{(core::int*) →* core::int*}(#t4){(core::int*) →* core::int*}, 1);
+                                             ^" in (#t1.{self::D::value}.{self::C::+}(1) as{TypeError,CovarianceCheck} (core::num*) →* core::num*) as{TypeError} (core::int*) →* core::int*;
+  self::expect(let final self::D* #t3 = d in let final core::int* #t4 = 0 in #t3.{self::D::setValue}.call(#t4), 1);
   d = new self::D::•(new self::C::•<core::num*>(#C2));
   self::expectTypeError(() → Null {
     let final self::D* #t5 = d in #t5.{self::D::value} = let final Never* #t6 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:53:48: Error: A value of type 'num Function(num)' can't be assigned to a variable of type 'int Function(int)'.
     d.value /*@ checkReturn=(num*) ->* num* */ += 1;
-                                               ^" in (#t5.{self::D::value}{self::C<core::num*>*}.{self::C::+}(1){(core::int*) →* (core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*) as{TypeError} (core::int*) →* core::int*;
+                                               ^" in (#t5.{self::D::value}.{self::C::+}(1) as{TypeError,CovarianceCheck} (core::num*) →* core::num*) as{TypeError} (core::int*) →* core::int*;
   });
-  self::expect(d.{self::D::setValue}{(core::int*) →* core::int*}, null);
+  self::expect(d.{self::D::setValue}, null);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.weak.transformed.expect
index 4fec92e..8d05145 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.weak.transformed.expect
@@ -27,7 +27,7 @@
     : self::C::plusResult = plusResult, super core::Object::•()
     ;
   operator +(core::int* i) → (self::C::T*) →* core::num*
-    return this.{self::C::plusResult}{(self::C::T*) →* core::num*};
+    return this.{self::C::plusResult};
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -46,7 +46,7 @@
     : self::D::getValue = getValue, super core::Object::•()
     ;
   get value() → self::C<core::num*>*
-    return this.{self::D::getValue}{self::C<core::num*>*};
+    return this.{self::D::getValue};
   set value((core::int*) →* core::int* value) → void {
     this.{self::D::setValue} = value;
   }
@@ -63,14 +63,14 @@
 }
 static method expectTypeError(() →* void callback) → void {
   try {
-    callback(){() →* void};
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
   }
 }
 static method expect(core::Object* value, core::Object* expected) → void {
-  if(!(value =={core::Object::==}{(core::Object*) →* core::bool*} expected)) {
+  if(!value.{core::Object::==}(expected)) {
     throw "Expected ${expected}, got ${value}";
   }
 }
@@ -82,15 +82,15 @@
   self::D* d = new self::D::•(new self::C::•<core::num*>(#C1));
   let final self::D* #t1 = d in #t1.{self::D::value} = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:49:46: Error: A value of type 'num Function(num)' can't be assigned to a variable of type 'int Function(int)'.
   d.value /*@ checkReturn=(num*) ->* num* */ += 1;
-                                             ^" in (#t1.{self::D::value}{self::C<core::num*>*}.{self::C::+}(1){(core::int*) →* (core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*) as{TypeError} (core::int*) →* core::int*;
-  self::expect(let final self::D* #t3 = d in let final core::int* #t4 = 0 in #t3.{self::D::setValue}{(core::int*) →* core::int*}(#t4){(core::int*) →* core::int*}, 1);
+                                             ^" in (#t1.{self::D::value}.{self::C::+}(1) as{TypeError,CovarianceCheck} (core::num*) →* core::num*) as{TypeError} (core::int*) →* core::int*;
+  self::expect(let final self::D* #t3 = d in let final core::int* #t4 = 0 in #t3.{self::D::setValue}.call(#t4), 1);
   d = new self::D::•(new self::C::•<core::num*>(#C2));
   self::expectTypeError(() → Null {
     let final self::D* #t5 = d in #t5.{self::D::value} = let final Never* #t6 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:53:48: Error: A value of type 'num Function(num)' can't be assigned to a variable of type 'int Function(int)'.
     d.value /*@ checkReturn=(num*) ->* num* */ += 1;
-                                               ^" in (#t5.{self::D::value}{self::C<core::num*>*}.{self::C::+}(1){(core::int*) →* (core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*) as{TypeError} (core::int*) →* core::int*;
+                                               ^" in (#t5.{self::D::value}.{self::C::+}(1) as{TypeError,CovarianceCheck} (core::num*) →* core::num*) as{TypeError} (core::int*) →* core::int*;
   });
-  self::expect(d.{self::D::setValue}{(core::int*) →* core::int*}, null);
+  self::expect(d.{self::D::setValue}, null);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.weak.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.weak.expect
index 5bf031a..2115b29 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.weak.expect
@@ -62,19 +62,19 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C<core::num*>* c) → void {
-  let final self::C<core::num*>* #t1 = c in #t1.{self::C::x} = (#t1.{self::C::x}{self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:20:54: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
+  let final self::C<core::num*>* #t1 = c in #t1.{self::C::x} = (#t1.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:20:54: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   c. /*@ checkReturn=B<(num*) ->* void>* */ x += new B<num>();
-                                                     ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>*){(self::B<(core::num*) →* void>*) →* self::B<(core::num*) →* void>*};
-  self::B<(core::num*) →* void>* y = let final self::C<core::num*>* #t3 = c in #t3.{self::C::x} = (#t3.{self::C::x}{self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(let final Never* #t4 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:21:62: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
+                                                     ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>*);
+  self::B<(core::num*) →* void>* y = let final self::C<core::num*>* #t3 = c in #t3.{self::C::x} = (#t3.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(let final Never* #t4 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:21:62: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   var y = c. /*@ checkReturn=B<(num*) ->* void>* */ x += new B<num>();
-                                                             ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>*){(self::B<(core::num*) →* void>*) →* self::B<(core::num*) →* void>*};
-  let final self::C<core::num*>* #t5 = c in #t5.{self::C::x}{self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* == null ?{self::B<core::Object*>*} #t5.{self::C::x} = let final Never* #t6 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:22:55: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
+                                                             ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>*);
+  let final self::C<core::num*>* #t5 = c in (#t5.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::==}(null) ?{self::B<core::Object*>*} #t5.{self::C::x} = let final Never* #t6 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:22:55: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   c. /*@ checkReturn=B<(num*) ->* void>* */ x ??= new B<num>();
                                                       ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>* : null;
-  self::B<core::Object*>* z = let final self::C<core::num*>* #t7 = c in let final self::B<(core::num*) →* void>* #t8 = #t7.{self::C::x}{self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t8 == null ?{self::B<core::Object*>*} #t7.{self::C::x} = let final Never* #t9 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:23:63: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
+  self::B<core::Object*>* z = let final self::C<core::num*>* #t7 = c in let final self::B<(core::num*) →* void>* #t8 = #t7.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t8.{self::B::==}(null) ?{self::B<core::Object*>*} #t7.{self::C::x} = let final Never* #t9 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:23:63: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   var z = c. /*@ checkReturn=B<(num*) ->* void>* */ x ??= new B<num>();
                                                               ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>* : #t8;
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.weak.transformed.expect
index 5bf031a..2115b29 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.weak.transformed.expect
@@ -62,19 +62,19 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C<core::num*>* c) → void {
-  let final self::C<core::num*>* #t1 = c in #t1.{self::C::x} = (#t1.{self::C::x}{self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:20:54: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
+  let final self::C<core::num*>* #t1 = c in #t1.{self::C::x} = (#t1.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(let final Never* #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:20:54: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   c. /*@ checkReturn=B<(num*) ->* void>* */ x += new B<num>();
-                                                     ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>*){(self::B<(core::num*) →* void>*) →* self::B<(core::num*) →* void>*};
-  self::B<(core::num*) →* void>* y = let final self::C<core::num*>* #t3 = c in #t3.{self::C::x} = (#t3.{self::C::x}{self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(let final Never* #t4 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:21:62: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
+                                                     ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>*);
+  self::B<(core::num*) →* void>* y = let final self::C<core::num*>* #t3 = c in #t3.{self::C::x} = (#t3.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(let final Never* #t4 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:21:62: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   var y = c. /*@ checkReturn=B<(num*) ->* void>* */ x += new B<num>();
-                                                             ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>*){(self::B<(core::num*) →* void>*) →* self::B<(core::num*) →* void>*};
-  let final self::C<core::num*>* #t5 = c in #t5.{self::C::x}{self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* == null ?{self::B<core::Object*>*} #t5.{self::C::x} = let final Never* #t6 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:22:55: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
+                                                             ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>*);
+  let final self::C<core::num*>* #t5 = c in (#t5.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::==}(null) ?{self::B<core::Object*>*} #t5.{self::C::x} = let final Never* #t6 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:22:55: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   c. /*@ checkReturn=B<(num*) ->* void>* */ x ??= new B<num>();
                                                       ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>* : null;
-  self::B<core::Object*>* z = let final self::C<core::num*>* #t7 = c in let final self::B<(core::num*) →* void>* #t8 = #t7.{self::C::x}{self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t8 == null ?{self::B<core::Object*>*} #t7.{self::C::x} = let final Never* #t9 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:23:63: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
+  self::B<core::Object*>* z = let final self::C<core::num*>* #t7 = c in let final self::B<(core::num*) →* void>* #t8 = #t7.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t8.{self::B::==}(null) ?{self::B<core::Object*>*} #t7.{self::C::x} = let final Never* #t9 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:23:63: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   var z = c. /*@ checkReturn=B<(num*) ->* void>* */ x ??= new B<num>();
                                                               ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>* : #t8;
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.weak.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.weak.expect
index 5360289..890a09c 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.weak.expect
@@ -39,10 +39,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C<core::num*>* c) → void {
-  c.{self::C::[]=}(0, new self::B::•<(core::num*) →* void>()){(core::int*, self::B<(core::num*) →* void>*) →* void};
-  let final self::C<core::num*>* #t1 = c in let final core::int* #t2 = 0 in #t1.{self::C::[]=}(#t2, (#t1.{self::C::[]}(#t2){(core::int*) →* self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(new self::B::•<(core::num*) →* void>()){(self::B<(core::num*) →* void>*) →* self::B<(core::num*) →* void>*}){(core::int*, self::B<(core::num*) →* void>*) →* void};
-  self::B<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in let final core::int* #t4 = 0 in let final self::B<(core::num*) →* void>* #t5 = (#t3.{self::C::[]}(#t4){(core::int*) →* self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(new self::B::•<(core::num*) →* void>()){(self::B<(core::num*) →* void>*) →* self::B<(core::num*) →* void>*} in let final void #t6 = #t3.{self::C::[]=}(#t4, #t5){(core::int*, self::B<(core::num*) →* void>*) →* void} in #t5;
-  let final self::C<core::num*>* #t7 = c in let final core::int* #t8 = 0 in #t7.{self::C::[]}(#t8){(core::int*) →* self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* == null ?{self::B<(core::num*) →* void>*} #t7.{self::C::[]=}(#t8, new self::B::•<(core::num*) →* void>()){(core::int*, self::B<(core::num*) →* void>*) →* void} : null;
-  self::B<(core::num*) →* void>* y = let final self::C<core::num*>* #t9 = c in let final core::int* #t10 = 0 in let final self::B<(core::num*) →* void>* #t11 = #t9.{self::C::[]}(#t10){(core::int*) →* self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t11 == null ?{self::B<(core::num*) →* void>*} let final self::B<(core::num*) →* void>* #t12 = new self::B::•<(core::num*) →* void>() in let final void #t13 = #t9.{self::C::[]=}(#t10, #t12){(core::int*, self::B<(core::num*) →* void>*) →* void} in #t12 : #t11;
+  c.{self::C::[]=}(0, new self::B::•<(core::num*) →* void>());
+  let final self::C<core::num*>* #t1 = c in let final core::int* #t2 = 0 in #t1.{self::C::[]=}(#t2, (#t1.{self::C::[]}(#t2) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(new self::B::•<(core::num*) →* void>()));
+  self::B<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in let final core::int* #t4 = 0 in let final self::B<(core::num*) →* void>* #t5 = (#t3.{self::C::[]}(#t4) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(new self::B::•<(core::num*) →* void>()) in let final void #t6 = #t3.{self::C::[]=}(#t4, #t5) in #t5;
+  let final self::C<core::num*>* #t7 = c in let final core::int* #t8 = 0 in (#t7.{self::C::[]}(#t8) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::==}(null) ?{self::B<(core::num*) →* void>*} #t7.{self::C::[]=}(#t8, new self::B::•<(core::num*) →* void>()) : null;
+  self::B<(core::num*) →* void>* y = let final self::C<core::num*>* #t9 = c in let final core::int* #t10 = 0 in let final self::B<(core::num*) →* void>* #t11 = #t9.{self::C::[]}(#t10) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t11.{self::B::==}(null) ?{self::B<(core::num*) →* void>*} let final self::B<(core::num*) →* void>* #t12 = new self::B::•<(core::num*) →* void>() in let final void #t13 = #t9.{self::C::[]=}(#t10, #t12) in #t12 : #t11;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.weak.transformed.expect
index 88a3640..e094433 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.weak.transformed.expect
@@ -39,11 +39,11 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C<core::num*>* c) → void {
-  c.{self::C::[]=}(0, new self::B::•<(core::num*) →* void>()){(core::int*, self::B<(core::num*) →* void>*) →* void};
-  let final self::C<core::num*>* #t1 = c in let final core::int* #t2 = 0 in #t1.{self::C::[]=}(#t2, (#t1.{self::C::[]}(#t2){(core::int*) →* self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(new self::B::•<(core::num*) →* void>()){(self::B<(core::num*) →* void>*) →* self::B<(core::num*) →* void>*}){(core::int*, self::B<(core::num*) →* void>*) →* void};
-  self::B<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in let final core::int* #t4 = 0 in let final self::B<(core::num*) →* void>* #t5 = (#t3.{self::C::[]}(#t4){(core::int*) →* self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(new self::B::•<(core::num*) →* void>()){(self::B<(core::num*) →* void>*) →* self::B<(core::num*) →* void>*} in let final void #t6 = #t3.{self::C::[]=}(#t4, #t5){(core::int*, self::B<(core::num*) →* void>*) →* void} in #t5;
-  let final self::C<core::num*>* #t7 = c in let final core::int* #t8 = 0 in #t7.{self::C::[]}(#t8){(core::int*) →* self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* == null ?{self::B<(core::num*) →* void>*} #t7.{self::C::[]=}(#t8, new self::B::•<(core::num*) →* void>()){(core::int*, self::B<(core::num*) →* void>*) →* void} : null;
-  self::B<(core::num*) →* void>* y = let final self::C<core::num*>* #t9 = c in let final core::int* #t10 = 0 in let final self::B<(core::num*) →* void>* #t11 = #t9.{self::C::[]}(#t10){(core::int*) →* self::B<(core::num*) →* void>*} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t11 == null ?{self::B<(core::num*) →* void>*} let final self::B<(core::num*) →* void>* #t12 = new self::B::•<(core::num*) →* void>() in let final void #t13 = #t9.{self::C::[]=}(#t10, #t12){(core::int*, self::B<(core::num*) →* void>*) →* void} in #t12 : #t11;
+  c.{self::C::[]=}(0, new self::B::•<(core::num*) →* void>());
+  let final self::C<core::num*>* #t1 = c in let final core::int* #t2 = 0 in #t1.{self::C::[]=}(#t2, (#t1.{self::C::[]}(#t2) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(new self::B::•<(core::num*) →* void>()));
+  self::B<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in let final core::int* #t4 = 0 in let final self::B<(core::num*) →* void>* #t5 = (#t3.{self::C::[]}(#t4) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(new self::B::•<(core::num*) →* void>()) in let final void #t6 = #t3.{self::C::[]=}(#t4, #t5) in #t5;
+  let final self::C<core::num*>* #t7 = c in let final core::int* #t8 = 0 in (#t7.{self::C::[]}(#t8) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::==}(null) ?{self::B<(core::num*) →* void>*} #t7.{self::C::[]=}(#t8, new self::B::•<(core::num*) →* void>()) : null;
+  self::B<(core::num*) →* void>* y = let final self::C<core::num*>* #t9 = c in let final core::int* #t10 = 0 in let final self::B<(core::num*) →* void>* #t11 = #t9.{self::C::[]}(#t10) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t11.{self::B::==}(null) ?{self::B<(core::num*) →* void>*} let final self::B<(core::num*) →* void>* #t12 = new self::B::•<(core::num*) →* void>() in let final void #t13 = #t9.{self::C::[]=}(#t10, #t12) in #t12 : #t11;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.weak.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.weak.expect
index 906d2cb..05d9122 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.weak.expect
@@ -21,6 +21,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C<core::num*>* c) → (core::num*) →* void {
-  return c.{self::C::[]}(0){(core::int*) →* (core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  return c.{self::C::[]}(0) as{TypeError,CovarianceCheck} (core::num*) →* void;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.weak.transformed.expect
index 906d2cb..05d9122 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.weak.transformed.expect
@@ -21,6 +21,6 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method test(self::C<core::num*>* c) → (core::num*) →* void {
-  return c.{self::C::[]}(0){(core::int*) →* (core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  return c.{self::C::[]}(0) as{TypeError,CovarianceCheck} (core::num*) →* void;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.weak.expect b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.weak.expect
index bbbc3fe..eb1c927 100644
--- a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.weak.expect
@@ -26,10 +26,10 @@
     ;
 }
 static method g1(self::B<core::num*>* b) → void {
-  b.{self::B::f}(1.5){(core::num*) →* void};
+  b.{self::B::f}(1.5);
 }
 static method g2(self::C* c) → void {
-  c.{self::B::f}(1){(core::int*) →* void};
+  c.{self::B::f}(1);
 }
 static method test() → void {
   self::g1(new self::C::•());
diff --git a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.weak.transformed.expect
index bbbc3fe..eb1c927 100644
--- a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.weak.transformed.expect
@@ -26,10 +26,10 @@
     ;
 }
 static method g1(self::B<core::num*>* b) → void {
-  b.{self::B::f}(1.5){(core::num*) →* void};
+  b.{self::B::f}(1.5);
 }
 static method g2(self::C* c) → void {
-  c.{self::B::f}(1){(core::int*) →* void};
+  c.{self::B::f}(1);
 }
 static method test() → void {
   self::g1(new self::C::•());
diff --git a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.weak.expect b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.weak.expect
index df39d8e..2f222f6 100644
--- a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.weak.expect
@@ -94,14 +94,14 @@
 }
 static method expectTypeError(() →* void callback) → void {
   try {
-    callback(){() →* void};
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
   }
 }
 static method expect(core::Object* value, core::Object* expected) → void {
-  if(!(value =={core::Object::==}{(core::Object*) →* core::bool*} expected)) {
+  if(!value.{core::Object::==}(expected)) {
     throw "Expected ${expected}, got ${value}";
   }
 }
@@ -110,12 +110,12 @@
     i.{self::I::x} = "hello";
   });
   i.{self::I::x} = 1;
-  self::expect(i.{self::I::x}{core::Object*}, 1);
+  self::expect(i.{self::I::x}, 1);
   self::expectTypeError(() → Null {
     i.{self::I::y} = "hello";
   });
   i.{self::I::y} = 2;
-  self::expect(i.{self::I::y}{core::Object*}, 2);
+  self::expect(i.{self::I::y}, 2);
 }
 static method main() → void {
   self::test(new self::C::•());
diff --git a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.weak.transformed.expect
index a92205f..50defc9 100644
--- a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.weak.transformed.expect
@@ -88,14 +88,14 @@
 }
 static method expectTypeError(() →* void callback) → void {
   try {
-    callback(){() →* void};
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
   }
 }
 static method expect(core::Object* value, core::Object* expected) → void {
-  if(!(value =={core::Object::==}{(core::Object*) →* core::bool*} expected)) {
+  if(!value.{core::Object::==}(expected)) {
     throw "Expected ${expected}, got ${value}";
   }
 }
@@ -104,12 +104,12 @@
     i.{self::I::x} = "hello";
   });
   i.{self::I::x} = 1;
-  self::expect(i.{self::I::x}{core::Object*}, 1);
+  self::expect(i.{self::I::x}, 1);
   self::expectTypeError(() → Null {
     i.{self::I::y} = "hello";
   });
   i.{self::I::y} = 2;
-  self::expect(i.{self::I::y}{core::Object*}, 2);
+  self::expect(i.{self::I::y}, 2);
 }
 static method main() → void {
   self::test(new self::C::•());
diff --git a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.weak.expect b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.weak.expect
index a4f4dfe..743d696 100644
--- a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.weak.expect
@@ -103,14 +103,14 @@
 }
 static method expectTypeError(() →* void callback) → void {
   try {
-    callback(){() →* void};
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
   }
 }
 static method expect(core::Object* value, core::Object* expected) → void {
-  if(!(value =={core::Object::==}{(core::Object*) →* core::bool*} expected)) {
+  if(!value.{core::Object::==}(expected)) {
     throw "Expected ${expected}, got ${value}";
   }
 }
@@ -119,12 +119,12 @@
     i.{self::I::x} = "hello";
   });
   i.{self::I::x} = 2;
-  self::expect(i.{self::I::x}{core::Object*}, 1);
+  self::expect(i.{self::I::x}, 1);
   self::expectTypeError(() → Null {
     i.{self::I::y} = "hello";
   });
   i.{self::I::y} = 4;
-  self::expect(i.{self::I::y}{core::Object*}, 3);
+  self::expect(i.{self::I::y}, 3);
 }
 static method main() → void {
   self::test(new self::C::•());
diff --git a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.weak.transformed.expect
index e429a2c..7080348 100644
--- a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.weak.transformed.expect
@@ -105,14 +105,14 @@
 }
 static method expectTypeError(() →* void callback) → void {
   try {
-    callback(){() →* void};
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
   }
 }
 static method expect(core::Object* value, core::Object* expected) → void {
-  if(!(value =={core::Object::==}{(core::Object*) →* core::bool*} expected)) {
+  if(!value.{core::Object::==}(expected)) {
     throw "Expected ${expected}, got ${value}";
   }
 }
@@ -121,12 +121,12 @@
     i.{self::I::x} = "hello";
   });
   i.{self::I::x} = 2;
-  self::expect(i.{self::I::x}{core::Object*}, 1);
+  self::expect(i.{self::I::x}, 1);
   self::expectTypeError(() → Null {
     i.{self::I::y} = "hello";
   });
   i.{self::I::y} = 4;
-  self::expect(i.{self::I::y}{core::Object*}, 3);
+  self::expect(i.{self::I::y}, 3);
 }
 static method main() → void {
   self::test(new self::C::•());
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.weak.expect b/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.weak.expect
index 2dac682..ac79e6e 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.weak.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.weak.expect
@@ -46,29 +46,29 @@
 }
 static method expectTypeError(() →* void callback) → void {
   try {
-    callback(){() →* void};
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
   }
 }
 static method expect(core::Object* value, core::Object* expected) → void {
-  if(!(value =={core::Object::==}{(core::Object*) →* core::bool*} expected)) {
+  if(!value.{core::Object::==}(expected)) {
     throw "Expected ${expected}, got ${value}";
   }
 }
 static method g(self::C* c) → void {
-  c.{self::C::f}("hello"){(core::Object*) →* core::int*};
+  c.{self::C::f}("hello");
 }
 static method test(self::C* c, self::I* i) → void {
   self::expectTypeError(() → Null {
-    i.{self::I::f}("hello"){(core::Object*) →* core::int*};
+    i.{self::I::f}("hello");
   });
-  self::expect(i.{self::I::f}(1){(core::Object*) →* core::int*}, 2);
+  self::expect(i.{self::I::f}(1), 2);
   self::expectTypeError(() → Null {
-    c.{self::C::f}("hello"){(core::Object*) →* core::int*};
+    c.{self::C::f}("hello");
   });
-  self::expect(c.{self::C::f}(1){(core::Object*) →* core::int*}, 2);
+  self::expect(c.{self::C::f}(1), 2);
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.weak.transformed.expect
index 2dac682..ac79e6e 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.weak.transformed.expect
@@ -46,29 +46,29 @@
 }
 static method expectTypeError(() →* void callback) → void {
   try {
-    callback(){() →* void};
+    callback.call();
     throw "Expected TypeError, did not occur";
   }
   on core::TypeError* catch(no-exception-var) {
   }
 }
 static method expect(core::Object* value, core::Object* expected) → void {
-  if(!(value =={core::Object::==}{(core::Object*) →* core::bool*} expected)) {
+  if(!value.{core::Object::==}(expected)) {
     throw "Expected ${expected}, got ${value}";
   }
 }
 static method g(self::C* c) → void {
-  c.{self::C::f}("hello"){(core::Object*) →* core::int*};
+  c.{self::C::f}("hello");
 }
 static method test(self::C* c, self::I* i) → void {
   self::expectTypeError(() → Null {
-    i.{self::I::f}("hello"){(core::Object*) →* core::int*};
+    i.{self::I::f}("hello");
   });
-  self::expect(i.{self::I::f}(1){(core::Object*) →* core::int*}, 2);
+  self::expect(i.{self::I::f}(1), 2);
   self::expectTypeError(() → Null {
-    c.{self::C::f}("hello"){(core::Object*) →* core::int*};
+    c.{self::C::f}("hello");
   });
-  self::expect(c.{self::C::f}(1){(core::Object*) →* core::int*}, 2);
+  self::expect(c.{self::C::f}(1), 2);
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.strong.expect b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.strong.expect
index 84e910a..5a2a090 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.strong.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.strong.expect
@@ -26,7 +26,7 @@
     : super core::Object::•()
     ;
   static get nonNullableStaticFieldWithInitializer1() → core::int
-    return let final core::int? #t1 = self::Class::_#nonNullableStaticFieldWithInitializer1 in #t1 == null ?{core::int} self::Class::_#nonNullableStaticFieldWithInitializer1 = self::init<core::int>(55) : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#nonNullableStaticFieldWithInitializer1 in #t1.==(null) ?{core::int} self::Class::_#nonNullableStaticFieldWithInitializer1 = self::init<core::int>(55) : #t1{core::int};
   static set nonNullableStaticFieldWithInitializer1(core::int #t2) → void
     self::Class::_#nonNullableStaticFieldWithInitializer1 = #t2;
   static get nullableStaticFieldWithInitializer1() → core::int? {
@@ -41,7 +41,7 @@
     self::Class::_#nullableStaticFieldWithInitializer1 = #t3;
   }
   static get nonNullableStaticFieldWithInitializer2() → core::int
-    return let final core::int? #t4 = self::Class::_#nonNullableStaticFieldWithInitializer2 in #t4 == null ?{core::int} self::Class::_#nonNullableStaticFieldWithInitializer2 = self::init<core::int>(55) : #t4{core::int};
+    return let final core::int? #t4 = self::Class::_#nonNullableStaticFieldWithInitializer2 in #t4.==(null) ?{core::int} self::Class::_#nonNullableStaticFieldWithInitializer2 = self::init<core::int>(55) : #t4{core::int};
   static set nonNullableStaticFieldWithInitializer2(core::int #t5) → void
     self::Class::_#nonNullableStaticFieldWithInitializer2 = #t5;
   static get nullableStaticFieldWithInitializer2() → core::int? {
@@ -56,7 +56,7 @@
     self::Class::_#nullableStaticFieldWithInitializer2 = #t6;
   }
   static get nonNullableStaticFinalFieldWithInitializer1() → core::int
-    return let final core::int? #t7 = self::Class::_#nonNullableStaticFinalFieldWithInitializer1 in #t7 == null ?{core::int} let final core::int #t8 = self::init<core::int>(73) in self::Class::_#nonNullableStaticFinalFieldWithInitializer1 == null ?{core::int} self::Class::_#nonNullableStaticFinalFieldWithInitializer1 = #t8 : throw new _in::LateError::fieldADI("nonNullableStaticFinalFieldWithInitializer1") : #t7{core::int};
+    return let final core::int? #t7 = self::Class::_#nonNullableStaticFinalFieldWithInitializer1 in #t7.==(null) ?{core::int} let final core::int #t8 = self::init<core::int>(73) in self::Class::_#nonNullableStaticFinalFieldWithInitializer1.==(null) ?{core::int} self::Class::_#nonNullableStaticFinalFieldWithInitializer1 = #t8 : throw new _in::LateError::fieldADI("nonNullableStaticFinalFieldWithInitializer1") : #t7{core::int};
   static get nullableStaticFinalFieldWithInitializer1() → core::int? {
     if(!self::Class::_#nullableStaticFinalFieldWithInitializer1#isSet) {
       final core::int? #t9 = self::init<core::int?>(19);
@@ -68,18 +68,18 @@
     return self::Class::_#nullableStaticFinalFieldWithInitializer1;
   }
   static get nonNullableStaticFinalFieldWithInitializer2Init() → core::int
-    return let final core::int? #t10 = self::Class::_#nonNullableStaticFinalFieldWithInitializer2Init in #t10 == null ?{core::int} self::Class::_#nonNullableStaticFinalFieldWithInitializer2Init = 0 : #t10{core::int};
+    return let final core::int? #t10 = self::Class::_#nonNullableStaticFinalFieldWithInitializer2Init in #t10.==(null) ?{core::int} self::Class::_#nonNullableStaticFinalFieldWithInitializer2Init = 0 : #t10{core::int};
   static set nonNullableStaticFinalFieldWithInitializer2Init(core::int #t11) → void
     self::Class::_#nonNullableStaticFinalFieldWithInitializer2Init = #t11;
   static get nonNullableStaticFinalFieldWithInitializer2() → core::int
-    return let final core::int? #t12 = self::Class::_#nonNullableStaticFinalFieldWithInitializer2 in #t12 == null ?{core::int} let final core::int #t13 = (let final core::int #t14 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init in let final core::int #t15 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init = #t14.{core::num::+}(1){(core::num) → core::int} in #t14) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nonNullableStaticFinalFieldWithInitializer2.{core::num::+}(1){(core::num) → core::int} : 87 in self::Class::_#nonNullableStaticFinalFieldWithInitializer2 == null ?{core::int} self::Class::_#nonNullableStaticFinalFieldWithInitializer2 = #t13 : throw new _in::LateError::fieldADI("nonNullableStaticFinalFieldWithInitializer2") : #t12{core::int};
+    return let final core::int? #t12 = self::Class::_#nonNullableStaticFinalFieldWithInitializer2 in #t12.==(null) ?{core::int} let final core::int #t13 = (let final core::int #t14 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init in let final core::int #t15 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init = #t14.{core::num::+}(1) in #t14).{core::num::==}(0) ?{core::int} self::Class::nonNullableStaticFinalFieldWithInitializer2.{core::num::+}(1) : 87 in self::Class::_#nonNullableStaticFinalFieldWithInitializer2.==(null) ?{core::int} self::Class::_#nonNullableStaticFinalFieldWithInitializer2 = #t13 : throw new _in::LateError::fieldADI("nonNullableStaticFinalFieldWithInitializer2") : #t12{core::int};
   static get nullableStaticFinalFieldWithInitializer2Init() → core::int
-    return let final core::int? #t16 = self::Class::_#nullableStaticFinalFieldWithInitializer2Init in #t16 == null ?{core::int} self::Class::_#nullableStaticFinalFieldWithInitializer2Init = 0 : #t16{core::int};
+    return let final core::int? #t16 = self::Class::_#nullableStaticFinalFieldWithInitializer2Init in #t16.==(null) ?{core::int} self::Class::_#nullableStaticFinalFieldWithInitializer2Init = 0 : #t16{core::int};
   static set nullableStaticFinalFieldWithInitializer2Init(core::int #t17) → void
     self::Class::_#nullableStaticFinalFieldWithInitializer2Init = #t17;
   static get nullableStaticFinalFieldWithInitializer2() → core::int? {
     if(!self::Class::_#nullableStaticFinalFieldWithInitializer2#isSet) {
-      final core::int? #t18 = (let final core::int #t19 = self::Class::nullableStaticFinalFieldWithInitializer2Init in let final core::int #t20 = self::Class::nullableStaticFinalFieldWithInitializer2Init = #t19.{core::num::+}(1){(core::num) → core::int} in #t19) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nullableStaticFinalFieldWithInitializer2!.{core::num::+}(1){(core::num) → core::int} : 32;
+      final core::int? #t18 = (let final core::int #t19 = self::Class::nullableStaticFinalFieldWithInitializer2Init in let final core::int #t20 = self::Class::nullableStaticFinalFieldWithInitializer2Init = #t19.{core::num::+}(1) in #t19).{core::num::==}(0) ?{core::int} self::Class::nullableStaticFinalFieldWithInitializer2!.{core::num::+}(1) : 32;
       if(self::Class::_#nullableStaticFinalFieldWithInitializer2#isSet)
         throw new _in::LateError::fieldADI("nullableStaticFinalFieldWithInitializer2");
       self::Class::_#nullableStaticFinalFieldWithInitializer2 = #t18;
@@ -110,7 +110,7 @@
   return value;
 }
 static get nonNullableTopLevelFieldWithInitializer1() → core::int
-  return let final core::int? #t21 = self::_#nonNullableTopLevelFieldWithInitializer1 in #t21 == null ?{core::int} self::_#nonNullableTopLevelFieldWithInitializer1 = self::init<core::int>(42) : #t21{core::int};
+  return let final core::int? #t21 = self::_#nonNullableTopLevelFieldWithInitializer1 in #t21.==(null) ?{core::int} self::_#nonNullableTopLevelFieldWithInitializer1 = self::init<core::int>(42) : #t21{core::int};
 static set nonNullableTopLevelFieldWithInitializer1(core::int #t22) → void
   self::_#nonNullableTopLevelFieldWithInitializer1 = #t22;
 static get nullableTopLevelFieldWithInitializer() → core::int? {
@@ -125,7 +125,7 @@
   self::_#nullableTopLevelFieldWithInitializer = #t23;
 }
 static get nonNullableTopLevelFieldWithInitializer2() → core::int
-  return let final core::int? #t24 = self::_#nonNullableTopLevelFieldWithInitializer2 in #t24 == null ?{core::int} self::_#nonNullableTopLevelFieldWithInitializer2 = self::init<core::int>(42) : #t24{core::int};
+  return let final core::int? #t24 = self::_#nonNullableTopLevelFieldWithInitializer2 in #t24.==(null) ?{core::int} self::_#nonNullableTopLevelFieldWithInitializer2 = self::init<core::int>(42) : #t24{core::int};
 static set nonNullableTopLevelFieldWithInitializer2(core::int #t25) → void
   self::_#nonNullableTopLevelFieldWithInitializer2 = #t25;
 static get nullableTopLevelFieldWithInitializer2() → core::int? {
@@ -140,7 +140,7 @@
   self::_#nullableTopLevelFieldWithInitializer2 = #t26;
 }
 static get nonNullableFinalTopLevelFieldWithInitializer1() → core::int
-  return let final core::int? #t27 = self::_#nonNullableFinalTopLevelFieldWithInitializer1 in #t27 == null ?{core::int} let final core::int #t28 = self::init<core::int>(87) in self::_#nonNullableFinalTopLevelFieldWithInitializer1 == null ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer1 = #t28 : throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer1") : #t27{core::int};
+  return let final core::int? #t27 = self::_#nonNullableFinalTopLevelFieldWithInitializer1 in #t27.==(null) ?{core::int} let final core::int #t28 = self::init<core::int>(87) in self::_#nonNullableFinalTopLevelFieldWithInitializer1.==(null) ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer1 = #t28 : throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer1") : #t27{core::int};
 static get nullableFinalTopLevelFieldWithInitializer1() → core::int? {
   if(!self::_#nullableFinalTopLevelFieldWithInitializer1#isSet) {
     final core::int? #t29 = self::init<core::int?>(32);
@@ -152,18 +152,18 @@
   return self::_#nullableFinalTopLevelFieldWithInitializer1;
 }
 static get nonNullableFinalTopLevelFieldWithInitializer2Init() → core::int
-  return let final core::int? #t30 = self::_#nonNullableFinalTopLevelFieldWithInitializer2Init in #t30 == null ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer2Init = 0 : #t30{core::int};
+  return let final core::int? #t30 = self::_#nonNullableFinalTopLevelFieldWithInitializer2Init in #t30.==(null) ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer2Init = 0 : #t30{core::int};
 static set nonNullableFinalTopLevelFieldWithInitializer2Init(core::int #t31) → void
   self::_#nonNullableFinalTopLevelFieldWithInitializer2Init = #t31;
 static get nonNullableFinalTopLevelFieldWithInitializer2() → core::int
-  return let final core::int? #t32 = self::_#nonNullableFinalTopLevelFieldWithInitializer2 in #t32 == null ?{core::int} let final core::int #t33 = (let final core::int #t34 = self::nonNullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t35 = self::nonNullableFinalTopLevelFieldWithInitializer2Init = #t34.{core::num::+}(1){(core::num) → core::int} in #t34) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nonNullableFinalTopLevelFieldWithInitializer2.{core::num::+}(1){(core::num) → core::int} : 87 in self::_#nonNullableFinalTopLevelFieldWithInitializer2 == null ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer2 = #t33 : throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer2") : #t32{core::int};
+  return let final core::int? #t32 = self::_#nonNullableFinalTopLevelFieldWithInitializer2 in #t32.==(null) ?{core::int} let final core::int #t33 = (let final core::int #t34 = self::nonNullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t35 = self::nonNullableFinalTopLevelFieldWithInitializer2Init = #t34.{core::num::+}(1) in #t34).{core::num::==}(0) ?{core::int} self::nonNullableFinalTopLevelFieldWithInitializer2.{core::num::+}(1) : 87 in self::_#nonNullableFinalTopLevelFieldWithInitializer2.==(null) ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer2 = #t33 : throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer2") : #t32{core::int};
 static get nullableFinalTopLevelFieldWithInitializer2Init() → core::int
-  return let final core::int? #t36 = self::_#nullableFinalTopLevelFieldWithInitializer2Init in #t36 == null ?{core::int} self::_#nullableFinalTopLevelFieldWithInitializer2Init = 0 : #t36{core::int};
+  return let final core::int? #t36 = self::_#nullableFinalTopLevelFieldWithInitializer2Init in #t36.==(null) ?{core::int} self::_#nullableFinalTopLevelFieldWithInitializer2Init = 0 : #t36{core::int};
 static set nullableFinalTopLevelFieldWithInitializer2Init(core::int #t37) → void
   self::_#nullableFinalTopLevelFieldWithInitializer2Init = #t37;
 static get nullableFinalTopLevelFieldWithInitializer2() → core::int? {
   if(!self::_#nullableFinalTopLevelFieldWithInitializer2#isSet) {
-    final core::int? #t38 = (let final core::int #t39 = self::nullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t40 = self::nullableFinalTopLevelFieldWithInitializer2Init = #t39.{core::num::+}(1){(core::num) → core::int} in #t39) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nullableFinalTopLevelFieldWithInitializer2!.{core::num::+}(1){(core::num) → core::int} : 32;
+    final core::int? #t38 = (let final core::int #t39 = self::nullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t40 = self::nullableFinalTopLevelFieldWithInitializer2Init = #t39.{core::num::+}(1) in #t39).{core::num::==}(0) ?{core::int} self::nullableFinalTopLevelFieldWithInitializer2!.{core::num::+}(1) : 32;
     if(self::_#nullableFinalTopLevelFieldWithInitializer2#isSet)
       throw new _in::LateError::fieldADI("nullableFinalTopLevelFieldWithInitializer2");
     self::_#nullableFinalTopLevelFieldWithInitializer2 = #t38;
@@ -215,17 +215,17 @@
   self::throws(() → core::int? => self::Class::nullableStaticFinalFieldWithInitializer2, "Read nullableStaticFinalFieldWithInitializer2");
   self::Class c = new self::Class::•();
   self::expect(17, self::lastInit);
-  self::expect(55, c.{self::Class::nonNullableInstanceFieldWithInitializer}{core::int});
-  self::expect(17, c.{self::Class::nullableInstanceFieldWithInitializer}{core::int?});
+  self::expect(55, c.{self::Class::nonNullableInstanceFieldWithInitializer});
+  self::expect(17, c.{self::Class::nullableInstanceFieldWithInitializer});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.strong.transformed.expect
index 84e910a..5a2a090 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.strong.transformed.expect
@@ -26,7 +26,7 @@
     : super core::Object::•()
     ;
   static get nonNullableStaticFieldWithInitializer1() → core::int
-    return let final core::int? #t1 = self::Class::_#nonNullableStaticFieldWithInitializer1 in #t1 == null ?{core::int} self::Class::_#nonNullableStaticFieldWithInitializer1 = self::init<core::int>(55) : #t1{core::int};
+    return let final core::int? #t1 = self::Class::_#nonNullableStaticFieldWithInitializer1 in #t1.==(null) ?{core::int} self::Class::_#nonNullableStaticFieldWithInitializer1 = self::init<core::int>(55) : #t1{core::int};
   static set nonNullableStaticFieldWithInitializer1(core::int #t2) → void
     self::Class::_#nonNullableStaticFieldWithInitializer1 = #t2;
   static get nullableStaticFieldWithInitializer1() → core::int? {
@@ -41,7 +41,7 @@
     self::Class::_#nullableStaticFieldWithInitializer1 = #t3;
   }
   static get nonNullableStaticFieldWithInitializer2() → core::int
-    return let final core::int? #t4 = self::Class::_#nonNullableStaticFieldWithInitializer2 in #t4 == null ?{core::int} self::Class::_#nonNullableStaticFieldWithInitializer2 = self::init<core::int>(55) : #t4{core::int};
+    return let final core::int? #t4 = self::Class::_#nonNullableStaticFieldWithInitializer2 in #t4.==(null) ?{core::int} self::Class::_#nonNullableStaticFieldWithInitializer2 = self::init<core::int>(55) : #t4{core::int};
   static set nonNullableStaticFieldWithInitializer2(core::int #t5) → void
     self::Class::_#nonNullableStaticFieldWithInitializer2 = #t5;
   static get nullableStaticFieldWithInitializer2() → core::int? {
@@ -56,7 +56,7 @@
     self::Class::_#nullableStaticFieldWithInitializer2 = #t6;
   }
   static get nonNullableStaticFinalFieldWithInitializer1() → core::int
-    return let final core::int? #t7 = self::Class::_#nonNullableStaticFinalFieldWithInitializer1 in #t7 == null ?{core::int} let final core::int #t8 = self::init<core::int>(73) in self::Class::_#nonNullableStaticFinalFieldWithInitializer1 == null ?{core::int} self::Class::_#nonNullableStaticFinalFieldWithInitializer1 = #t8 : throw new _in::LateError::fieldADI("nonNullableStaticFinalFieldWithInitializer1") : #t7{core::int};
+    return let final core::int? #t7 = self::Class::_#nonNullableStaticFinalFieldWithInitializer1 in #t7.==(null) ?{core::int} let final core::int #t8 = self::init<core::int>(73) in self::Class::_#nonNullableStaticFinalFieldWithInitializer1.==(null) ?{core::int} self::Class::_#nonNullableStaticFinalFieldWithInitializer1 = #t8 : throw new _in::LateError::fieldADI("nonNullableStaticFinalFieldWithInitializer1") : #t7{core::int};
   static get nullableStaticFinalFieldWithInitializer1() → core::int? {
     if(!self::Class::_#nullableStaticFinalFieldWithInitializer1#isSet) {
       final core::int? #t9 = self::init<core::int?>(19);
@@ -68,18 +68,18 @@
     return self::Class::_#nullableStaticFinalFieldWithInitializer1;
   }
   static get nonNullableStaticFinalFieldWithInitializer2Init() → core::int
-    return let final core::int? #t10 = self::Class::_#nonNullableStaticFinalFieldWithInitializer2Init in #t10 == null ?{core::int} self::Class::_#nonNullableStaticFinalFieldWithInitializer2Init = 0 : #t10{core::int};
+    return let final core::int? #t10 = self::Class::_#nonNullableStaticFinalFieldWithInitializer2Init in #t10.==(null) ?{core::int} self::Class::_#nonNullableStaticFinalFieldWithInitializer2Init = 0 : #t10{core::int};
   static set nonNullableStaticFinalFieldWithInitializer2Init(core::int #t11) → void
     self::Class::_#nonNullableStaticFinalFieldWithInitializer2Init = #t11;
   static get nonNullableStaticFinalFieldWithInitializer2() → core::int
-    return let final core::int? #t12 = self::Class::_#nonNullableStaticFinalFieldWithInitializer2 in #t12 == null ?{core::int} let final core::int #t13 = (let final core::int #t14 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init in let final core::int #t15 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init = #t14.{core::num::+}(1){(core::num) → core::int} in #t14) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nonNullableStaticFinalFieldWithInitializer2.{core::num::+}(1){(core::num) → core::int} : 87 in self::Class::_#nonNullableStaticFinalFieldWithInitializer2 == null ?{core::int} self::Class::_#nonNullableStaticFinalFieldWithInitializer2 = #t13 : throw new _in::LateError::fieldADI("nonNullableStaticFinalFieldWithInitializer2") : #t12{core::int};
+    return let final core::int? #t12 = self::Class::_#nonNullableStaticFinalFieldWithInitializer2 in #t12.==(null) ?{core::int} let final core::int #t13 = (let final core::int #t14 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init in let final core::int #t15 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init = #t14.{core::num::+}(1) in #t14).{core::num::==}(0) ?{core::int} self::Class::nonNullableStaticFinalFieldWithInitializer2.{core::num::+}(1) : 87 in self::Class::_#nonNullableStaticFinalFieldWithInitializer2.==(null) ?{core::int} self::Class::_#nonNullableStaticFinalFieldWithInitializer2 = #t13 : throw new _in::LateError::fieldADI("nonNullableStaticFinalFieldWithInitializer2") : #t12{core::int};
   static get nullableStaticFinalFieldWithInitializer2Init() → core::int
-    return let final core::int? #t16 = self::Class::_#nullableStaticFinalFieldWithInitializer2Init in #t16 == null ?{core::int} self::Class::_#nullableStaticFinalFieldWithInitializer2Init = 0 : #t16{core::int};
+    return let final core::int? #t16 = self::Class::_#nullableStaticFinalFieldWithInitializer2Init in #t16.==(null) ?{core::int} self::Class::_#nullableStaticFinalFieldWithInitializer2Init = 0 : #t16{core::int};
   static set nullableStaticFinalFieldWithInitializer2Init(core::int #t17) → void
     self::Class::_#nullableStaticFinalFieldWithInitializer2Init = #t17;
   static get nullableStaticFinalFieldWithInitializer2() → core::int? {
     if(!self::Class::_#nullableStaticFinalFieldWithInitializer2#isSet) {
-      final core::int? #t18 = (let final core::int #t19 = self::Class::nullableStaticFinalFieldWithInitializer2Init in let final core::int #t20 = self::Class::nullableStaticFinalFieldWithInitializer2Init = #t19.{core::num::+}(1){(core::num) → core::int} in #t19) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nullableStaticFinalFieldWithInitializer2!.{core::num::+}(1){(core::num) → core::int} : 32;
+      final core::int? #t18 = (let final core::int #t19 = self::Class::nullableStaticFinalFieldWithInitializer2Init in let final core::int #t20 = self::Class::nullableStaticFinalFieldWithInitializer2Init = #t19.{core::num::+}(1) in #t19).{core::num::==}(0) ?{core::int} self::Class::nullableStaticFinalFieldWithInitializer2!.{core::num::+}(1) : 32;
       if(self::Class::_#nullableStaticFinalFieldWithInitializer2#isSet)
         throw new _in::LateError::fieldADI("nullableStaticFinalFieldWithInitializer2");
       self::Class::_#nullableStaticFinalFieldWithInitializer2 = #t18;
@@ -110,7 +110,7 @@
   return value;
 }
 static get nonNullableTopLevelFieldWithInitializer1() → core::int
-  return let final core::int? #t21 = self::_#nonNullableTopLevelFieldWithInitializer1 in #t21 == null ?{core::int} self::_#nonNullableTopLevelFieldWithInitializer1 = self::init<core::int>(42) : #t21{core::int};
+  return let final core::int? #t21 = self::_#nonNullableTopLevelFieldWithInitializer1 in #t21.==(null) ?{core::int} self::_#nonNullableTopLevelFieldWithInitializer1 = self::init<core::int>(42) : #t21{core::int};
 static set nonNullableTopLevelFieldWithInitializer1(core::int #t22) → void
   self::_#nonNullableTopLevelFieldWithInitializer1 = #t22;
 static get nullableTopLevelFieldWithInitializer() → core::int? {
@@ -125,7 +125,7 @@
   self::_#nullableTopLevelFieldWithInitializer = #t23;
 }
 static get nonNullableTopLevelFieldWithInitializer2() → core::int
-  return let final core::int? #t24 = self::_#nonNullableTopLevelFieldWithInitializer2 in #t24 == null ?{core::int} self::_#nonNullableTopLevelFieldWithInitializer2 = self::init<core::int>(42) : #t24{core::int};
+  return let final core::int? #t24 = self::_#nonNullableTopLevelFieldWithInitializer2 in #t24.==(null) ?{core::int} self::_#nonNullableTopLevelFieldWithInitializer2 = self::init<core::int>(42) : #t24{core::int};
 static set nonNullableTopLevelFieldWithInitializer2(core::int #t25) → void
   self::_#nonNullableTopLevelFieldWithInitializer2 = #t25;
 static get nullableTopLevelFieldWithInitializer2() → core::int? {
@@ -140,7 +140,7 @@
   self::_#nullableTopLevelFieldWithInitializer2 = #t26;
 }
 static get nonNullableFinalTopLevelFieldWithInitializer1() → core::int
-  return let final core::int? #t27 = self::_#nonNullableFinalTopLevelFieldWithInitializer1 in #t27 == null ?{core::int} let final core::int #t28 = self::init<core::int>(87) in self::_#nonNullableFinalTopLevelFieldWithInitializer1 == null ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer1 = #t28 : throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer1") : #t27{core::int};
+  return let final core::int? #t27 = self::_#nonNullableFinalTopLevelFieldWithInitializer1 in #t27.==(null) ?{core::int} let final core::int #t28 = self::init<core::int>(87) in self::_#nonNullableFinalTopLevelFieldWithInitializer1.==(null) ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer1 = #t28 : throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer1") : #t27{core::int};
 static get nullableFinalTopLevelFieldWithInitializer1() → core::int? {
   if(!self::_#nullableFinalTopLevelFieldWithInitializer1#isSet) {
     final core::int? #t29 = self::init<core::int?>(32);
@@ -152,18 +152,18 @@
   return self::_#nullableFinalTopLevelFieldWithInitializer1;
 }
 static get nonNullableFinalTopLevelFieldWithInitializer2Init() → core::int
-  return let final core::int? #t30 = self::_#nonNullableFinalTopLevelFieldWithInitializer2Init in #t30 == null ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer2Init = 0 : #t30{core::int};
+  return let final core::int? #t30 = self::_#nonNullableFinalTopLevelFieldWithInitializer2Init in #t30.==(null) ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer2Init = 0 : #t30{core::int};
 static set nonNullableFinalTopLevelFieldWithInitializer2Init(core::int #t31) → void
   self::_#nonNullableFinalTopLevelFieldWithInitializer2Init = #t31;
 static get nonNullableFinalTopLevelFieldWithInitializer2() → core::int
-  return let final core::int? #t32 = self::_#nonNullableFinalTopLevelFieldWithInitializer2 in #t32 == null ?{core::int} let final core::int #t33 = (let final core::int #t34 = self::nonNullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t35 = self::nonNullableFinalTopLevelFieldWithInitializer2Init = #t34.{core::num::+}(1){(core::num) → core::int} in #t34) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nonNullableFinalTopLevelFieldWithInitializer2.{core::num::+}(1){(core::num) → core::int} : 87 in self::_#nonNullableFinalTopLevelFieldWithInitializer2 == null ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer2 = #t33 : throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer2") : #t32{core::int};
+  return let final core::int? #t32 = self::_#nonNullableFinalTopLevelFieldWithInitializer2 in #t32.==(null) ?{core::int} let final core::int #t33 = (let final core::int #t34 = self::nonNullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t35 = self::nonNullableFinalTopLevelFieldWithInitializer2Init = #t34.{core::num::+}(1) in #t34).{core::num::==}(0) ?{core::int} self::nonNullableFinalTopLevelFieldWithInitializer2.{core::num::+}(1) : 87 in self::_#nonNullableFinalTopLevelFieldWithInitializer2.==(null) ?{core::int} self::_#nonNullableFinalTopLevelFieldWithInitializer2 = #t33 : throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer2") : #t32{core::int};
 static get nullableFinalTopLevelFieldWithInitializer2Init() → core::int
-  return let final core::int? #t36 = self::_#nullableFinalTopLevelFieldWithInitializer2Init in #t36 == null ?{core::int} self::_#nullableFinalTopLevelFieldWithInitializer2Init = 0 : #t36{core::int};
+  return let final core::int? #t36 = self::_#nullableFinalTopLevelFieldWithInitializer2Init in #t36.==(null) ?{core::int} self::_#nullableFinalTopLevelFieldWithInitializer2Init = 0 : #t36{core::int};
 static set nullableFinalTopLevelFieldWithInitializer2Init(core::int #t37) → void
   self::_#nullableFinalTopLevelFieldWithInitializer2Init = #t37;
 static get nullableFinalTopLevelFieldWithInitializer2() → core::int? {
   if(!self::_#nullableFinalTopLevelFieldWithInitializer2#isSet) {
-    final core::int? #t38 = (let final core::int #t39 = self::nullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t40 = self::nullableFinalTopLevelFieldWithInitializer2Init = #t39.{core::num::+}(1){(core::num) → core::int} in #t39) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nullableFinalTopLevelFieldWithInitializer2!.{core::num::+}(1){(core::num) → core::int} : 32;
+    final core::int? #t38 = (let final core::int #t39 = self::nullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t40 = self::nullableFinalTopLevelFieldWithInitializer2Init = #t39.{core::num::+}(1) in #t39).{core::num::==}(0) ?{core::int} self::nullableFinalTopLevelFieldWithInitializer2!.{core::num::+}(1) : 32;
     if(self::_#nullableFinalTopLevelFieldWithInitializer2#isSet)
       throw new _in::LateError::fieldADI("nullableFinalTopLevelFieldWithInitializer2");
     self::_#nullableFinalTopLevelFieldWithInitializer2 = #t38;
@@ -215,17 +215,17 @@
   self::throws(() → core::int? => self::Class::nullableStaticFinalFieldWithInitializer2, "Read nullableStaticFinalFieldWithInitializer2");
   self::Class c = new self::Class::•();
   self::expect(17, self::lastInit);
-  self::expect(55, c.{self::Class::nonNullableInstanceFieldWithInitializer}{core::int});
-  self::expect(17, c.{self::Class::nullableInstanceFieldWithInitializer}{core::int?});
+  self::expect(55, c.{self::Class::nonNullableInstanceFieldWithInitializer});
+  self::expect(17, c.{self::Class::nullableInstanceFieldWithInitializer});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.expect b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.expect
index 257eeac..b02a477 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.expect
@@ -108,7 +108,7 @@
   }
   static get nonNullableStaticFinalFieldWithInitializer2() → core::int {
     if(!self::Class::_#nonNullableStaticFinalFieldWithInitializer2#isSet) {
-      final core::int #t12 = (let final core::int #t13 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init in let final core::int #t14 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init = #t13.{core::num::+}(1){(core::num) → core::int} in #t13) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nonNullableStaticFinalFieldWithInitializer2.{core::num::+}(1){(core::num) → core::int} : 87;
+      final core::int #t12 = (let final core::int #t13 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init in let final core::int #t14 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int} self::Class::nonNullableStaticFinalFieldWithInitializer2.{core::num::+}(1) : 87;
       if(self::Class::_#nonNullableStaticFinalFieldWithInitializer2#isSet)
         throw new _in::LateError::fieldADI("nonNullableStaticFinalFieldWithInitializer2");
       self::Class::_#nonNullableStaticFinalFieldWithInitializer2 = #t12;
@@ -129,7 +129,7 @@
   }
   static get nullableStaticFinalFieldWithInitializer2() → core::int? {
     if(!self::Class::_#nullableStaticFinalFieldWithInitializer2#isSet) {
-      final core::int? #t18 = (let final core::int #t19 = self::Class::nullableStaticFinalFieldWithInitializer2Init in let final core::int #t20 = self::Class::nullableStaticFinalFieldWithInitializer2Init = #t19.{core::num::+}(1){(core::num) → core::int} in #t19) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nullableStaticFinalFieldWithInitializer2!.{core::num::+}(1){(core::num) → core::int} : 32;
+      final core::int? #t18 = (let final core::int #t19 = self::Class::nullableStaticFinalFieldWithInitializer2Init in let final core::int #t20 = self::Class::nullableStaticFinalFieldWithInitializer2Init = #t19.{core::num::+}(1) in #t19).{core::num::==}(0) ?{core::int} self::Class::nullableStaticFinalFieldWithInitializer2!.{core::num::+}(1) : 32;
       if(self::Class::_#nullableStaticFinalFieldWithInitializer2#isSet)
         throw new _in::LateError::fieldADI("nullableStaticFinalFieldWithInitializer2");
       self::Class::_#nullableStaticFinalFieldWithInitializer2 = #t18;
@@ -242,7 +242,7 @@
 }
 static get nonNullableFinalTopLevelFieldWithInitializer2() → core::int {
   if(!self::_#nonNullableFinalTopLevelFieldWithInitializer2#isSet) {
-    final core::int #t32 = (let final core::int #t33 = self::nonNullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t34 = self::nonNullableFinalTopLevelFieldWithInitializer2Init = #t33.{core::num::+}(1){(core::num) → core::int} in #t33) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nonNullableFinalTopLevelFieldWithInitializer2.{core::num::+}(1){(core::num) → core::int} : 87;
+    final core::int #t32 = (let final core::int #t33 = self::nonNullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t34 = self::nonNullableFinalTopLevelFieldWithInitializer2Init = #t33.{core::num::+}(1) in #t33).{core::num::==}(0) ?{core::int} self::nonNullableFinalTopLevelFieldWithInitializer2.{core::num::+}(1) : 87;
     if(self::_#nonNullableFinalTopLevelFieldWithInitializer2#isSet)
       throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer2");
     self::_#nonNullableFinalTopLevelFieldWithInitializer2 = #t32;
@@ -263,7 +263,7 @@
 }
 static get nullableFinalTopLevelFieldWithInitializer2() → core::int? {
   if(!self::_#nullableFinalTopLevelFieldWithInitializer2#isSet) {
-    final core::int? #t38 = (let final core::int #t39 = self::nullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t40 = self::nullableFinalTopLevelFieldWithInitializer2Init = #t39.{core::num::+}(1){(core::num) → core::int} in #t39) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nullableFinalTopLevelFieldWithInitializer2!.{core::num::+}(1){(core::num) → core::int} : 32;
+    final core::int? #t38 = (let final core::int #t39 = self::nullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t40 = self::nullableFinalTopLevelFieldWithInitializer2Init = #t39.{core::num::+}(1) in #t39).{core::num::==}(0) ?{core::int} self::nullableFinalTopLevelFieldWithInitializer2!.{core::num::+}(1) : 32;
     if(self::_#nullableFinalTopLevelFieldWithInitializer2#isSet)
       throw new _in::LateError::fieldADI("nullableFinalTopLevelFieldWithInitializer2");
     self::_#nullableFinalTopLevelFieldWithInitializer2 = #t38;
@@ -315,17 +315,17 @@
   self::throws(() → core::int? => self::Class::nullableStaticFinalFieldWithInitializer2, "Read nullableStaticFinalFieldWithInitializer2");
   self::Class c = new self::Class::•();
   self::expect(17, self::lastInit);
-  self::expect(55, c.{self::Class::nonNullableInstanceFieldWithInitializer}{core::int});
-  self::expect(17, c.{self::Class::nullableInstanceFieldWithInitializer}{core::int?});
+  self::expect(55, c.{self::Class::nonNullableInstanceFieldWithInitializer});
+  self::expect(17, c.{self::Class::nullableInstanceFieldWithInitializer});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.transformed.expect
index 257eeac..b02a477 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.transformed.expect
@@ -108,7 +108,7 @@
   }
   static get nonNullableStaticFinalFieldWithInitializer2() → core::int {
     if(!self::Class::_#nonNullableStaticFinalFieldWithInitializer2#isSet) {
-      final core::int #t12 = (let final core::int #t13 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init in let final core::int #t14 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init = #t13.{core::num::+}(1){(core::num) → core::int} in #t13) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nonNullableStaticFinalFieldWithInitializer2.{core::num::+}(1){(core::num) → core::int} : 87;
+      final core::int #t12 = (let final core::int #t13 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init in let final core::int #t14 = self::Class::nonNullableStaticFinalFieldWithInitializer2Init = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int} self::Class::nonNullableStaticFinalFieldWithInitializer2.{core::num::+}(1) : 87;
       if(self::Class::_#nonNullableStaticFinalFieldWithInitializer2#isSet)
         throw new _in::LateError::fieldADI("nonNullableStaticFinalFieldWithInitializer2");
       self::Class::_#nonNullableStaticFinalFieldWithInitializer2 = #t12;
@@ -129,7 +129,7 @@
   }
   static get nullableStaticFinalFieldWithInitializer2() → core::int? {
     if(!self::Class::_#nullableStaticFinalFieldWithInitializer2#isSet) {
-      final core::int? #t18 = (let final core::int #t19 = self::Class::nullableStaticFinalFieldWithInitializer2Init in let final core::int #t20 = self::Class::nullableStaticFinalFieldWithInitializer2Init = #t19.{core::num::+}(1){(core::num) → core::int} in #t19) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::Class::nullableStaticFinalFieldWithInitializer2!.{core::num::+}(1){(core::num) → core::int} : 32;
+      final core::int? #t18 = (let final core::int #t19 = self::Class::nullableStaticFinalFieldWithInitializer2Init in let final core::int #t20 = self::Class::nullableStaticFinalFieldWithInitializer2Init = #t19.{core::num::+}(1) in #t19).{core::num::==}(0) ?{core::int} self::Class::nullableStaticFinalFieldWithInitializer2!.{core::num::+}(1) : 32;
       if(self::Class::_#nullableStaticFinalFieldWithInitializer2#isSet)
         throw new _in::LateError::fieldADI("nullableStaticFinalFieldWithInitializer2");
       self::Class::_#nullableStaticFinalFieldWithInitializer2 = #t18;
@@ -242,7 +242,7 @@
 }
 static get nonNullableFinalTopLevelFieldWithInitializer2() → core::int {
   if(!self::_#nonNullableFinalTopLevelFieldWithInitializer2#isSet) {
-    final core::int #t32 = (let final core::int #t33 = self::nonNullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t34 = self::nonNullableFinalTopLevelFieldWithInitializer2Init = #t33.{core::num::+}(1){(core::num) → core::int} in #t33) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nonNullableFinalTopLevelFieldWithInitializer2.{core::num::+}(1){(core::num) → core::int} : 87;
+    final core::int #t32 = (let final core::int #t33 = self::nonNullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t34 = self::nonNullableFinalTopLevelFieldWithInitializer2Init = #t33.{core::num::+}(1) in #t33).{core::num::==}(0) ?{core::int} self::nonNullableFinalTopLevelFieldWithInitializer2.{core::num::+}(1) : 87;
     if(self::_#nonNullableFinalTopLevelFieldWithInitializer2#isSet)
       throw new _in::LateError::fieldADI("nonNullableFinalTopLevelFieldWithInitializer2");
     self::_#nonNullableFinalTopLevelFieldWithInitializer2 = #t32;
@@ -263,7 +263,7 @@
 }
 static get nullableFinalTopLevelFieldWithInitializer2() → core::int? {
   if(!self::_#nullableFinalTopLevelFieldWithInitializer2#isSet) {
-    final core::int? #t38 = (let final core::int #t39 = self::nullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t40 = self::nullableFinalTopLevelFieldWithInitializer2Init = #t39.{core::num::+}(1){(core::num) → core::int} in #t39) =={core::num::==}{(core::Object) → core::bool} 0 ?{core::int} self::nullableFinalTopLevelFieldWithInitializer2!.{core::num::+}(1){(core::num) → core::int} : 32;
+    final core::int? #t38 = (let final core::int #t39 = self::nullableFinalTopLevelFieldWithInitializer2Init in let final core::int #t40 = self::nullableFinalTopLevelFieldWithInitializer2Init = #t39.{core::num::+}(1) in #t39).{core::num::==}(0) ?{core::int} self::nullableFinalTopLevelFieldWithInitializer2!.{core::num::+}(1) : 32;
     if(self::_#nullableFinalTopLevelFieldWithInitializer2#isSet)
       throw new _in::LateError::fieldADI("nullableFinalTopLevelFieldWithInitializer2");
     self::_#nullableFinalTopLevelFieldWithInitializer2 = #t38;
@@ -315,17 +315,17 @@
   self::throws(() → core::int? => self::Class::nullableStaticFinalFieldWithInitializer2, "Read nullableStaticFinalFieldWithInitializer2");
   self::Class c = new self::Class::•();
   self::expect(17, self::lastInit);
-  self::expect(55, c.{self::Class::nonNullableInstanceFieldWithInitializer}{core::int});
-  self::expect(17, c.{self::Class::nullableInstanceFieldWithInitializer}{core::int?});
+  self::expect(55, c.{self::Class::nonNullableInstanceFieldWithInitializer});
+  self::expect(17, c.{self::Class::nullableInstanceFieldWithInitializer});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() → dynamic f, core::String message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on core::Error catch(final core::Error e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.strong.expect b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.strong.expect
index c8dcf3e..144aafa 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.strong.expect
@@ -17,7 +17,7 @@
   static field core::int* staticFieldWithInitializer2 = self::init<core::int*>(55);
   static final field core::int* staticFinalFieldWithInitializer1 = self::init<core::int*>(73);
   static field core::int* staticFinalFieldWithInitializer2Init = 0;
-  static final field core::int* staticFinalFieldWithInitializer2 = (let final core::int* #t1 = self::Class::staticFinalFieldWithInitializer2Init in let final core::int* #t2 = self::Class::staticFinalFieldWithInitializer2Init = #t1.{core::num::+}(1){(core::num*) →* core::int*} in #t1) =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{core::int*} self::Class::staticFinalFieldWithInitializer2.{core::num::+}(1){(core::num*) →* core::int*} : 87;
+  static final field core::int* staticFinalFieldWithInitializer2 = (let final core::int* #t1 = self::Class::staticFinalFieldWithInitializer2Init in let final core::int* #t2 = self::Class::staticFinalFieldWithInitializer2Init = #t1.{core::num::+}(1) in #t1).{core::num::==}(0) ?{core::int*} self::Class::staticFinalFieldWithInitializer2.{core::num::+}(1) : 87;
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
@@ -39,7 +39,7 @@
 static field core::int* topLevelFieldWithInitializer2 = self::init<core::int*>(42);
 static final field core::int* finalTopLevelFieldWithInitializer1 = self::init<core::int*>(87);
 static field core::int* finalTopLevelFieldWithInitializer2Init = 0;
-static final field core::int* finalTopLevelFieldWithInitializer2 = (let final core::int* #t3 = self::finalTopLevelFieldWithInitializer2Init in let final core::int* #t4 = self::finalTopLevelFieldWithInitializer2Init = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3) =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{core::int*} self::finalTopLevelFieldWithInitializer2.{core::num::+}(1){(core::num*) →* core::int*} : 87;
+static final field core::int* finalTopLevelFieldWithInitializer2 = (let final core::int* #t3 = self::finalTopLevelFieldWithInitializer2Init in let final core::int* #t4 = self::finalTopLevelFieldWithInitializer2Init = #t3.{core::num::+}(1) in #t3).{core::num::==}(0) ?{core::int*} self::finalTopLevelFieldWithInitializer2.{core::num::+}(1) : 87;
 static method init<T extends core::Object* = dynamic>(self::init::T* value) → self::init::T* {
   self::lastInit = value;
   return value;
@@ -70,16 +70,16 @@
   self::throws(() → core::int* => self::Class::staticFinalFieldWithInitializer2, "Read staticFinalFieldWithInitializer2");
   self::Class* c = new self::Class::•();
   self::expect(55, self::lastInit);
-  self::expect(55, c.{self::Class::instanceFieldWithInitializer}{core::int*});
+  self::expect(55, c.{self::Class::instanceFieldWithInitializer});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() →* dynamic f, core::String* message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on dynamic catch(final dynamic e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.strong.transformed.expect
index c8dcf3e..144aafa 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.strong.transformed.expect
@@ -17,7 +17,7 @@
   static field core::int* staticFieldWithInitializer2 = self::init<core::int*>(55);
   static final field core::int* staticFinalFieldWithInitializer1 = self::init<core::int*>(73);
   static field core::int* staticFinalFieldWithInitializer2Init = 0;
-  static final field core::int* staticFinalFieldWithInitializer2 = (let final core::int* #t1 = self::Class::staticFinalFieldWithInitializer2Init in let final core::int* #t2 = self::Class::staticFinalFieldWithInitializer2Init = #t1.{core::num::+}(1){(core::num*) →* core::int*} in #t1) =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{core::int*} self::Class::staticFinalFieldWithInitializer2.{core::num::+}(1){(core::num*) →* core::int*} : 87;
+  static final field core::int* staticFinalFieldWithInitializer2 = (let final core::int* #t1 = self::Class::staticFinalFieldWithInitializer2Init in let final core::int* #t2 = self::Class::staticFinalFieldWithInitializer2Init = #t1.{core::num::+}(1) in #t1).{core::num::==}(0) ?{core::int*} self::Class::staticFinalFieldWithInitializer2.{core::num::+}(1) : 87;
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
@@ -39,7 +39,7 @@
 static field core::int* topLevelFieldWithInitializer2 = self::init<core::int*>(42);
 static final field core::int* finalTopLevelFieldWithInitializer1 = self::init<core::int*>(87);
 static field core::int* finalTopLevelFieldWithInitializer2Init = 0;
-static final field core::int* finalTopLevelFieldWithInitializer2 = (let final core::int* #t3 = self::finalTopLevelFieldWithInitializer2Init in let final core::int* #t4 = self::finalTopLevelFieldWithInitializer2Init = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3) =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{core::int*} self::finalTopLevelFieldWithInitializer2.{core::num::+}(1){(core::num*) →* core::int*} : 87;
+static final field core::int* finalTopLevelFieldWithInitializer2 = (let final core::int* #t3 = self::finalTopLevelFieldWithInitializer2Init in let final core::int* #t4 = self::finalTopLevelFieldWithInitializer2Init = #t3.{core::num::+}(1) in #t3).{core::num::==}(0) ?{core::int*} self::finalTopLevelFieldWithInitializer2.{core::num::+}(1) : 87;
 static method init<T extends core::Object* = dynamic>(self::init::T* value) → self::init::T* {
   self::lastInit = value;
   return value;
@@ -70,16 +70,16 @@
   self::throws(() → core::int* => self::Class::staticFinalFieldWithInitializer2, "Read staticFinalFieldWithInitializer2");
   self::Class* c = new self::Class::•();
   self::expect(55, self::lastInit);
-  self::expect(55, c.{self::Class::instanceFieldWithInitializer}{core::int*});
+  self::expect(55, c.{self::Class::instanceFieldWithInitializer});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() →* dynamic f, core::String* message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on dynamic catch(final dynamic e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.expect b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.expect
index acecebc..fe00cf4 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.expect
@@ -10,7 +10,7 @@
   static field core::int* staticFieldWithInitializer2 = self::init<core::int*>(55);
   static final field core::int* staticFinalFieldWithInitializer1 = self::init<core::int*>(73);
   static field core::int* staticFinalFieldWithInitializer2Init = 0;
-  static final field core::int* staticFinalFieldWithInitializer2 = (let final core::int* #t1 = self::Class::staticFinalFieldWithInitializer2Init in let final core::int* #t2 = self::Class::staticFinalFieldWithInitializer2Init = #t1.{core::num::+}(1){(core::num*) →* core::int*} in #t1) =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{core::int*} self::Class::staticFinalFieldWithInitializer2.{core::num::+}(1){(core::num*) →* core::int*} : 87;
+  static final field core::int* staticFinalFieldWithInitializer2 = (let final core::int* #t1 = self::Class::staticFinalFieldWithInitializer2Init in let final core::int* #t2 = self::Class::staticFinalFieldWithInitializer2Init = #t1.{core::num::+}(1) in #t1).{core::num::==}(0) ?{core::int*} self::Class::staticFinalFieldWithInitializer2.{core::num::+}(1) : 87;
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
@@ -32,7 +32,7 @@
 static field core::int* topLevelFieldWithInitializer2 = self::init<core::int*>(42);
 static final field core::int* finalTopLevelFieldWithInitializer1 = self::init<core::int*>(87);
 static field core::int* finalTopLevelFieldWithInitializer2Init = 0;
-static final field core::int* finalTopLevelFieldWithInitializer2 = (let final core::int* #t3 = self::finalTopLevelFieldWithInitializer2Init in let final core::int* #t4 = self::finalTopLevelFieldWithInitializer2Init = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3) =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{core::int*} self::finalTopLevelFieldWithInitializer2.{core::num::+}(1){(core::num*) →* core::int*} : 87;
+static final field core::int* finalTopLevelFieldWithInitializer2 = (let final core::int* #t3 = self::finalTopLevelFieldWithInitializer2Init in let final core::int* #t4 = self::finalTopLevelFieldWithInitializer2Init = #t3.{core::num::+}(1) in #t3).{core::num::==}(0) ?{core::int*} self::finalTopLevelFieldWithInitializer2.{core::num::+}(1) : 87;
 static method init<T extends core::Object* = dynamic>(self::init::T* value) → self::init::T* {
   self::lastInit = value;
   return value;
@@ -63,16 +63,16 @@
   self::throws(() → core::int* => self::Class::staticFinalFieldWithInitializer2, "Read staticFinalFieldWithInitializer2");
   self::Class* c = new self::Class::•();
   self::expect(55, self::lastInit);
-  self::expect(55, c.{self::Class::instanceFieldWithInitializer}{core::int*});
+  self::expect(55, c.{self::Class::instanceFieldWithInitializer});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() →* dynamic f, core::String* message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on dynamic catch(final dynamic e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.transformed.expect
index acecebc..fe00cf4 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
   static field core::int* staticFieldWithInitializer2 = self::init<core::int*>(55);
   static final field core::int* staticFinalFieldWithInitializer1 = self::init<core::int*>(73);
   static field core::int* staticFinalFieldWithInitializer2Init = 0;
-  static final field core::int* staticFinalFieldWithInitializer2 = (let final core::int* #t1 = self::Class::staticFinalFieldWithInitializer2Init in let final core::int* #t2 = self::Class::staticFinalFieldWithInitializer2Init = #t1.{core::num::+}(1){(core::num*) →* core::int*} in #t1) =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{core::int*} self::Class::staticFinalFieldWithInitializer2.{core::num::+}(1){(core::num*) →* core::int*} : 87;
+  static final field core::int* staticFinalFieldWithInitializer2 = (let final core::int* #t1 = self::Class::staticFinalFieldWithInitializer2Init in let final core::int* #t2 = self::Class::staticFinalFieldWithInitializer2Init = #t1.{core::num::+}(1) in #t1).{core::num::==}(0) ?{core::int*} self::Class::staticFinalFieldWithInitializer2.{core::num::+}(1) : 87;
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
@@ -32,7 +32,7 @@
 static field core::int* topLevelFieldWithInitializer2 = self::init<core::int*>(42);
 static final field core::int* finalTopLevelFieldWithInitializer1 = self::init<core::int*>(87);
 static field core::int* finalTopLevelFieldWithInitializer2Init = 0;
-static final field core::int* finalTopLevelFieldWithInitializer2 = (let final core::int* #t3 = self::finalTopLevelFieldWithInitializer2Init in let final core::int* #t4 = self::finalTopLevelFieldWithInitializer2Init = #t3.{core::num::+}(1){(core::num*) →* core::int*} in #t3) =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{core::int*} self::finalTopLevelFieldWithInitializer2.{core::num::+}(1){(core::num*) →* core::int*} : 87;
+static final field core::int* finalTopLevelFieldWithInitializer2 = (let final core::int* #t3 = self::finalTopLevelFieldWithInitializer2Init in let final core::int* #t4 = self::finalTopLevelFieldWithInitializer2Init = #t3.{core::num::+}(1) in #t3).{core::num::==}(0) ?{core::int*} self::finalTopLevelFieldWithInitializer2.{core::num::+}(1) : 87;
 static method init<T extends core::Object* = dynamic>(self::init::T* value) → self::init::T* {
   self::lastInit = value;
   return value;
@@ -63,16 +63,16 @@
   self::throws(() → core::int* => self::Class::staticFinalFieldWithInitializer2, "Read staticFinalFieldWithInitializer2");
   self::Class* c = new self::Class::•();
   self::expect(55, self::lastInit);
-  self::expect(55, c.{self::Class::instanceFieldWithInitializer}{core::int*});
+  self::expect(55, c.{self::Class::instanceFieldWithInitializer});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 static method throws(() →* dynamic f, core::String* message) → dynamic {
   dynamic value;
   try {
-    value = f();
+    value = f.call();
   }
   on dynamic catch(final dynamic e) {
     core::print(e);
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index a31c85f..c8b4bc7 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -13,9 +13,11 @@
 extension_types/simple_method_resolution: ExpectationFileMismatchSerialized # Expected.
 extension_types/simple_operator_resolution: ExpectationFileMismatchSerialized # Expected.
 extension_types/simple_setter_resolution: ExpectationFileMismatchSerialized # Expected.
+extensions/call_methods: TypeCheckError
 extensions/extension_setter_error: TypeCheckError
 extensions/instance_access_of_static: RuntimeError
 extensions/invalid_explicit_access: RuntimeError
+extensions/issue40713: TypeCheckError
 extensions/static_access_of_instance: RuntimeError
 general/abstract_members: TypeCheckError
 general/accessors: RuntimeError
@@ -67,6 +69,7 @@
 general/error_recovery/yield_not_in_generator: RuntimeError
 general/expressions: RuntimeError
 general/external_import: RuntimeError
+general/function_invocation_bounds: TypeCheckError
 general/getter_vs_setter_type: TypeCheckError
 general/incomplete_field_formal_parameter: RuntimeError
 general/infer_field_from_multiple: TypeCheckError
diff --git a/pkg/front_end/testcases/unified_collections/fold_initial.dart.weak.expect b/pkg/front_end/testcases/unified_collections/fold_initial.dart.weak.expect
index 2e6cfa8..21d66e0 100644
--- a/pkg/front_end/testcases/unified_collections/fold_initial.dart.weak.expect
+++ b/pkg/front_end/testcases/unified_collections/fold_initial.dart.weak.expect
@@ -10,24 +10,24 @@
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t1 = <core::int*>[element0 as{TypeError,ForDynamic} core::int*, element1 as{TypeError} core::int*, element2];
     if(true)
-      #t1.{core::List::add}(3){(core::int*) →* void};
-    #t1.{core::List::add}(4){(core::int*) →* void};
-    #t1.{core::List::add}(5){(core::int*) →* void};
-    #t1.{core::List::add}(6){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(3);
+    #t1.{core::List::add}{Invariant}(4);
+    #t1.{core::List::add}{Invariant}(5);
+    #t1.{core::List::add}{Invariant}(6);
   } =>#t1;
   self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t2 = col::LinkedHashSet::•<core::int*>();
-    #t2.{core::Set::add}(element0 as{TypeError,ForDynamic} core::int*){(core::int*) →* core::bool*};
-    #t2.{core::Set::add}(element1 as{TypeError} core::int*){(core::int*) →* core::bool*};
-    #t2.{core::Set::add}(element2){(core::int*) →* core::bool*};
+    #t2.{core::Set::add}{Invariant}(element0 as{TypeError,ForDynamic} core::int*);
+    #t2.{core::Set::add}{Invariant}(element1 as{TypeError} core::int*);
+    #t2.{core::Set::add}{Invariant}(element2);
     if(true)
-      #t2.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t2.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t2.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t2.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t2.{core::Set::add}{Invariant}(3);
+    #t2.{core::Set::add}{Invariant}(4);
+    #t2.{core::Set::add}{Invariant}(5);
+    #t2.{core::Set::add}{Invariant}(6);
   } =>#t2;
-  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method foldInitialSpread1() → void {
   dynamic initial = <core::int*>[0, 1, 2];
@@ -35,28 +35,28 @@
     final core::List<core::int*>* #t3 = <core::int*>[];
     for (final dynamic #t4 in initial as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::int* #t5 = #t4 as{TypeError} core::int*;
-      #t3.{core::List::add}(#t5){(core::int*) →* void};
+      #t3.{core::List::add}{Invariant}(#t5);
     }
     if(true)
-      #t3.{core::List::add}(3){(core::int*) →* void};
-    #t3.{core::List::add}(4){(core::int*) →* void};
-    #t3.{core::List::add}(5){(core::int*) →* void};
-    #t3.{core::List::add}(6){(core::int*) →* void};
+      #t3.{core::List::add}{Invariant}(3);
+    #t3.{core::List::add}{Invariant}(4);
+    #t3.{core::List::add}{Invariant}(5);
+    #t3.{core::List::add}{Invariant}(6);
   } =>#t3;
   self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t6 = col::LinkedHashSet::•<core::int*>();
     for (final dynamic #t7 in initial as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::int* #t8 = #t7 as{TypeError} core::int*;
-      #t6.{core::Set::add}(#t8){(core::int*) →* core::bool*};
+      #t6.{core::Set::add}{Invariant}(#t8);
     }
     if(true)
-      #t6.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t6.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t6.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t6.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t6.{core::Set::add}{Invariant}(3);
+    #t6.{core::Set::add}{Invariant}(4);
+    #t6.{core::Set::add}{Invariant}(5);
+    #t6.{core::Set::add}{Invariant}(6);
   } =>#t6;
-  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method foldInitialSpread2() → void {
   core::Iterable<core::num*>* initial = <core::num*>[0, 1, 2];
@@ -64,28 +64,28 @@
     final core::List<core::int*>* #t9 = <core::int*>[];
     for (final dynamic #t10 in initial) {
       final core::int* #t11 = #t10 as{TypeError} core::int*;
-      #t9.{core::List::add}(#t11){(core::int*) →* void};
+      #t9.{core::List::add}{Invariant}(#t11);
     }
     if(true)
-      #t9.{core::List::add}(3){(core::int*) →* void};
-    #t9.{core::List::add}(4){(core::int*) →* void};
-    #t9.{core::List::add}(5){(core::int*) →* void};
-    #t9.{core::List::add}(6){(core::int*) →* void};
+      #t9.{core::List::add}{Invariant}(3);
+    #t9.{core::List::add}{Invariant}(4);
+    #t9.{core::List::add}{Invariant}(5);
+    #t9.{core::List::add}{Invariant}(6);
   } =>#t9;
   self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t12 = col::LinkedHashSet::•<core::int*>();
     for (final dynamic #t13 in initial) {
       final core::int* #t14 = #t13 as{TypeError} core::int*;
-      #t12.{core::Set::add}(#t14){(core::int*) →* core::bool*};
+      #t12.{core::Set::add}{Invariant}(#t14);
     }
     if(true)
-      #t12.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t12.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t12.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t12.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t12.{core::Set::add}{Invariant}(3);
+    #t12.{core::Set::add}{Invariant}(4);
+    #t12.{core::Set::add}{Invariant}(5);
+    #t12.{core::Set::add}{Invariant}(6);
   } =>#t12;
-  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method foldInitialSpread3() → void {
   core::List<core::num*>* initial = <core::num*>[0, 1, 2];
@@ -93,97 +93,97 @@
     final core::List<core::int*>* #t15 = <core::int*>[];
     for (final dynamic #t16 in initial) {
       final core::int* #t17 = #t16 as{TypeError} core::int*;
-      #t15.{core::List::add}(#t17){(core::int*) →* void};
+      #t15.{core::List::add}{Invariant}(#t17);
     }
     if(true)
-      #t15.{core::List::add}(3){(core::int*) →* void};
-    #t15.{core::List::add}(4){(core::int*) →* void};
-    #t15.{core::List::add}(5){(core::int*) →* void};
-    #t15.{core::List::add}(6){(core::int*) →* void};
+      #t15.{core::List::add}{Invariant}(3);
+    #t15.{core::List::add}{Invariant}(4);
+    #t15.{core::List::add}{Invariant}(5);
+    #t15.{core::List::add}{Invariant}(6);
   } =>#t15;
   self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t18 = col::LinkedHashSet::•<core::int*>();
     for (final dynamic #t19 in initial) {
       final core::int* #t20 = #t19 as{TypeError} core::int*;
-      #t18.{core::Set::add}(#t20){(core::int*) →* core::bool*};
+      #t18.{core::Set::add}{Invariant}(#t20);
     }
     if(true)
-      #t18.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t18.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t18.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t18.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t18.{core::Set::add}{Invariant}(3);
+    #t18.{core::Set::add}{Invariant}(4);
+    #t18.{core::Set::add}{Invariant}(5);
+    #t18.{core::Set::add}{Invariant}(6);
   } =>#t18;
-  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method foldInitialSpread4() → void {
   core::Iterable<core::int*>* initial = <core::int*>[0, 1, 2];
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t21 = core::List::of<core::int*>(initial);
     if(true)
-      #t21.{core::List::add}(3){(core::int*) →* void};
-    #t21.{core::List::add}(4){(core::int*) →* void};
-    #t21.{core::List::add}(5){(core::int*) →* void};
-    #t21.{core::List::add}(6){(core::int*) →* void};
+      #t21.{core::List::add}{Invariant}(3);
+    #t21.{core::List::add}{Invariant}(4);
+    #t21.{core::List::add}{Invariant}(5);
+    #t21.{core::List::add}{Invariant}(6);
   } =>#t21;
   self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t22 = col::LinkedHashSet::of<core::int*>(initial);
     if(true)
-      #t22.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t22.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t22.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t22.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t22.{core::Set::add}{Invariant}(3);
+    #t22.{core::Set::add}{Invariant}(4);
+    #t22.{core::Set::add}{Invariant}(5);
+    #t22.{core::Set::add}{Invariant}(6);
   } =>#t22;
-  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method foldInitialSpread5() → void {
   core::List<core::int*>* initial = <core::int*>[0, 1, 2];
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t23 = core::List::of<core::int*>(initial);
     if(true)
-      #t23.{core::List::add}(3){(core::int*) →* void};
-    #t23.{core::List::add}(4){(core::int*) →* void};
-    #t23.{core::List::add}(5){(core::int*) →* void};
-    #t23.{core::List::add}(6){(core::int*) →* void};
+      #t23.{core::List::add}{Invariant}(3);
+    #t23.{core::List::add}{Invariant}(4);
+    #t23.{core::List::add}{Invariant}(5);
+    #t23.{core::List::add}{Invariant}(6);
   } =>#t23;
   self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t24 = col::LinkedHashSet::of<core::int*>(initial);
     if(true)
-      #t24.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t24.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t24.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t24.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t24.{core::Set::add}{Invariant}(3);
+    #t24.{core::Set::add}{Invariant}(4);
+    #t24.{core::Set::add}{Invariant}(5);
+    #t24.{core::Set::add}{Invariant}(6);
   } =>#t24;
-  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method foldInitialSpread6() → void {
   core::List<core::int*>* initial = <core::int*>[0, 1, 2];
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t25 = <core::int*>[];
     final core::Iterable<core::int*>* #t26 = initial;
-    if(!(#t26 == null))
-      #t25.{core::List::addAll}(#t26){(core::Iterable<core::int*>*) →* void};
+    if(!#t26.{core::Object::==}(null))
+      #t25.{core::List::addAll}{Invariant}(#t26);
     if(true)
-      #t25.{core::List::add}(3){(core::int*) →* void};
-    #t25.{core::List::add}(4){(core::int*) →* void};
-    #t25.{core::List::add}(5){(core::int*) →* void};
-    #t25.{core::List::add}(6){(core::int*) →* void};
+      #t25.{core::List::add}{Invariant}(3);
+    #t25.{core::List::add}{Invariant}(4);
+    #t25.{core::List::add}{Invariant}(5);
+    #t25.{core::List::add}{Invariant}(6);
   } =>#t25;
   self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t27 = col::LinkedHashSet::•<core::int*>();
     final core::Iterable<core::int*>* #t28 = initial;
-    if(!(#t28 == null))
-      #t27.{core::Set::addAll}(#t28){(core::Iterable<core::int*>*) →* void};
+    if(!#t28.{core::Object::==}(null))
+      #t27.{core::Set::addAll}{Invariant}(#t28);
     if(true)
-      #t27.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t27.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t27.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t27.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t27.{core::Set::add}{Invariant}(3);
+    #t27.{core::Set::add}{Invariant}(4);
+    #t27.{core::Set::add}{Invariant}(5);
+    #t27.{core::Set::add}{Invariant}(6);
   } =>#t27;
-  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::List::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method main() → dynamic {
   self::foldInitialElements();
@@ -195,12 +195,12 @@
   self::foldInitialSpread6();
 }
 static method expect(core::List<dynamic>* list1, core::List<dynamic>* list2) → void {
-  if(!(list1.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} list2.{core::List::length}{core::int*})) {
-    throw "Unexpected length. Expected ${list1.{core::List::length}{core::int*}}, actual ${list2.{core::List::length}{core::int*}}.";
+  if(!list1.{core::List::length}.{core::num::==}(list2.{core::List::length})) {
+    throw "Unexpected length. Expected ${list1.{core::List::length}}, actual ${list2.{core::List::length}}.";
   }
-  for (core::int* i = 0; i.{core::num::<}(list1.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    if(!(list1.{core::List::[]}(i){(core::int*) →* dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} list2.{core::List::[]}(i){(core::int*) →* dynamic})) {
-      throw "Unexpected element at index ${i}. Expected ${list1.{core::List::[]}(i){(core::int*) →* dynamic}}, actual ${list2.{core::List::[]}(i){(core::int*) →* dynamic}}.";
+  for (core::int* i = 0; i.{core::num::<}(list1.{core::List::length}); i = i.{core::num::+}(1)) {
+    if(!list1.{core::List::[]}(i).{core::Object::==}(list2.{core::List::[]}(i))) {
+      throw "Unexpected element at index ${i}. Expected ${list1.{core::List::[]}(i)}, actual ${list2.{core::List::[]}(i)}.";
     }
   }
 }
diff --git a/pkg/front_end/testcases/unified_collections/fold_initial.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/fold_initial.dart.weak.transformed.expect
index 27a662d..09431d2 100644
--- a/pkg/front_end/testcases/unified_collections/fold_initial.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/fold_initial.dart.weak.transformed.expect
@@ -10,24 +10,24 @@
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t1 = core::_GrowableList::_literal3<core::int*>(element0 as{TypeError,ForDynamic} core::int*, element1 as{TypeError} core::int*, element2);
     if(true)
-      #t1.{core::List::add}(3){(core::int*) →* void};
-    #t1.{core::List::add}(4){(core::int*) →* void};
-    #t1.{core::List::add}(5){(core::int*) →* void};
-    #t1.{core::List::add}(6){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(3);
+    #t1.{core::List::add}{Invariant}(4);
+    #t1.{core::List::add}{Invariant}(5);
+    #t1.{core::List::add}{Invariant}(6);
   } =>#t1;
   self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t2 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t2.{core::Set::add}(element0 as{TypeError,ForDynamic} core::int*){(core::int*) →* core::bool*};
-    #t2.{core::Set::add}(element1 as{TypeError} core::int*){(core::int*) →* core::bool*};
-    #t2.{core::Set::add}(element2){(core::int*) →* core::bool*};
+    #t2.{core::Set::add}{Invariant}(element0 as{TypeError,ForDynamic} core::int*);
+    #t2.{core::Set::add}{Invariant}(element1 as{TypeError} core::int*);
+    #t2.{core::Set::add}{Invariant}(element2);
     if(true)
-      #t2.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t2.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t2.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t2.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t2.{core::Set::add}{Invariant}(3);
+    #t2.{core::Set::add}{Invariant}(4);
+    #t2.{core::Set::add}{Invariant}(5);
+    #t2.{core::Set::add}{Invariant}(6);
   } =>#t2;
-  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method foldInitialSpread1() → void {
   dynamic initial = core::_GrowableList::_literal3<core::int*>(0, 1, 2);
@@ -39,15 +39,15 @@
         final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t5 = #t4 as{TypeError} core::int*;
-          #t3.{core::List::add}(#t5){(core::int*) →* void};
+          #t3.{core::List::add}{Invariant}(#t5);
         }
       }
     }
     if(true)
-      #t3.{core::List::add}(3){(core::int*) →* void};
-    #t3.{core::List::add}(4){(core::int*) →* void};
-    #t3.{core::List::add}(5){(core::int*) →* void};
-    #t3.{core::List::add}(6){(core::int*) →* void};
+      #t3.{core::List::add}{Invariant}(3);
+    #t3.{core::List::add}{Invariant}(4);
+    #t3.{core::List::add}{Invariant}(5);
+    #t3.{core::List::add}{Invariant}(6);
   } =>#t3;
   self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
@@ -58,17 +58,17 @@
         final dynamic #t7 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t8 = #t7 as{TypeError} core::int*;
-          #t6.{core::Set::add}(#t8){(core::int*) →* core::bool*};
+          #t6.{core::Set::add}{Invariant}(#t8);
         }
       }
     }
     if(true)
-      #t6.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t6.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t6.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t6.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t6.{core::Set::add}{Invariant}(3);
+    #t6.{core::Set::add}{Invariant}(4);
+    #t6.{core::Set::add}{Invariant}(5);
+    #t6.{core::Set::add}{Invariant}(6);
   } =>#t6;
-  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method foldInitialSpread2() → void {
   core::Iterable<core::num*>* initial = core::_GrowableList::_literal3<core::num*>(0, 1, 2);
@@ -80,15 +80,15 @@
         final dynamic #t10 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t11 = #t10 as{TypeError} core::int*;
-          #t9.{core::List::add}(#t11){(core::int*) →* void};
+          #t9.{core::List::add}{Invariant}(#t11);
         }
       }
     }
     if(true)
-      #t9.{core::List::add}(3){(core::int*) →* void};
-    #t9.{core::List::add}(4){(core::int*) →* void};
-    #t9.{core::List::add}(5){(core::int*) →* void};
-    #t9.{core::List::add}(6){(core::int*) →* void};
+      #t9.{core::List::add}{Invariant}(3);
+    #t9.{core::List::add}{Invariant}(4);
+    #t9.{core::List::add}{Invariant}(5);
+    #t9.{core::List::add}{Invariant}(6);
   } =>#t9;
   self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
@@ -99,17 +99,17 @@
         final dynamic #t13 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t14 = #t13 as{TypeError} core::int*;
-          #t12.{core::Set::add}(#t14){(core::int*) →* core::bool*};
+          #t12.{core::Set::add}{Invariant}(#t14);
         }
       }
     }
     if(true)
-      #t12.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t12.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t12.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t12.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t12.{core::Set::add}{Invariant}(3);
+    #t12.{core::Set::add}{Invariant}(4);
+    #t12.{core::Set::add}{Invariant}(5);
+    #t12.{core::Set::add}{Invariant}(6);
   } =>#t12;
-  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method foldInitialSpread3() → void {
   core::List<core::num*>* initial = core::_GrowableList::_literal3<core::num*>(0, 1, 2);
@@ -121,15 +121,15 @@
         final dynamic #t16 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t17 = #t16 as{TypeError} core::int*;
-          #t15.{core::List::add}(#t17){(core::int*) →* void};
+          #t15.{core::List::add}{Invariant}(#t17);
         }
       }
     }
     if(true)
-      #t15.{core::List::add}(3){(core::int*) →* void};
-    #t15.{core::List::add}(4){(core::int*) →* void};
-    #t15.{core::List::add}(5){(core::int*) →* void};
-    #t15.{core::List::add}(6){(core::int*) →* void};
+      #t15.{core::List::add}{Invariant}(3);
+    #t15.{core::List::add}{Invariant}(4);
+    #t15.{core::List::add}{Invariant}(5);
+    #t15.{core::List::add}{Invariant}(6);
   } =>#t15;
   self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
@@ -140,86 +140,86 @@
         final dynamic #t19 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t20 = #t19 as{TypeError} core::int*;
-          #t18.{core::Set::add}(#t20){(core::int*) →* core::bool*};
+          #t18.{core::Set::add}{Invariant}(#t20);
         }
       }
     }
     if(true)
-      #t18.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t18.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t18.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t18.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t18.{core::Set::add}{Invariant}(3);
+    #t18.{core::Set::add}{Invariant}(4);
+    #t18.{core::Set::add}{Invariant}(5);
+    #t18.{core::Set::add}{Invariant}(6);
   } =>#t18;
-  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method foldInitialSpread4() → void {
   core::Iterable<core::int*>* initial = core::_GrowableList::_literal3<core::int*>(0, 1, 2);
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t21 = core::List::of<core::int*>(initial);
     if(true)
-      #t21.{core::List::add}(3){(core::int*) →* void};
-    #t21.{core::List::add}(4){(core::int*) →* void};
-    #t21.{core::List::add}(5){(core::int*) →* void};
-    #t21.{core::List::add}(6){(core::int*) →* void};
+      #t21.{core::List::add}{Invariant}(3);
+    #t21.{core::List::add}{Invariant}(4);
+    #t21.{core::List::add}{Invariant}(5);
+    #t21.{core::List::add}{Invariant}(6);
   } =>#t21;
   self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t22 = col::LinkedHashSet::of<core::int*>(initial);
     if(true)
-      #t22.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t22.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t22.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t22.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t22.{core::Set::add}{Invariant}(3);
+    #t22.{core::Set::add}{Invariant}(4);
+    #t22.{core::Set::add}{Invariant}(5);
+    #t22.{core::Set::add}{Invariant}(6);
   } =>#t22;
-  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method foldInitialSpread5() → void {
   core::List<core::int*>* initial = core::_GrowableList::_literal3<core::int*>(0, 1, 2);
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t23 = core::List::of<core::int*>(initial);
     if(true)
-      #t23.{core::List::add}(3){(core::int*) →* void};
-    #t23.{core::List::add}(4){(core::int*) →* void};
-    #t23.{core::List::add}(5){(core::int*) →* void};
-    #t23.{core::List::add}(6){(core::int*) →* void};
+      #t23.{core::List::add}{Invariant}(3);
+    #t23.{core::List::add}{Invariant}(4);
+    #t23.{core::List::add}{Invariant}(5);
+    #t23.{core::List::add}{Invariant}(6);
   } =>#t23;
   self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t24 = col::LinkedHashSet::of<core::int*>(initial);
     if(true)
-      #t24.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t24.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t24.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t24.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t24.{core::Set::add}{Invariant}(3);
+    #t24.{core::Set::add}{Invariant}(4);
+    #t24.{core::Set::add}{Invariant}(5);
+    #t24.{core::Set::add}{Invariant}(6);
   } =>#t24;
-  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method foldInitialSpread6() → void {
   core::List<core::int*>* initial = core::_GrowableList::_literal3<core::int*>(0, 1, 2);
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t25 = core::_GrowableList::•<core::int*>(0);
     final core::Iterable<core::int*>* #t26 = initial;
-    if(!(#t26 == null))
-      #t25.{core::List::addAll}(#t26){(core::Iterable<core::int*>*) →* void};
+    if(!#t26.{core::Object::==}(null))
+      #t25.{core::List::addAll}{Invariant}(#t26);
     if(true)
-      #t25.{core::List::add}(3){(core::int*) →* void};
-    #t25.{core::List::add}(4){(core::int*) →* void};
-    #t25.{core::List::add}(5){(core::int*) →* void};
-    #t25.{core::List::add}(6){(core::int*) →* void};
+      #t25.{core::List::add}{Invariant}(3);
+    #t25.{core::List::add}{Invariant}(4);
+    #t25.{core::List::add}{Invariant}(5);
+    #t25.{core::List::add}{Invariant}(6);
   } =>#t25;
   self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), list);
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t27 = new col::_CompactLinkedHashSet::•<core::int*>();
     final core::Iterable<core::int*>* #t28 = initial;
-    if(!(#t28 == null))
-      #t27.{core::Set::addAll}(#t28){(core::Iterable<core::int*>*) →* void};
+    if(!#t28.{core::Object::==}(null))
+      #t27.{core::Set::addAll}{Invariant}(#t28);
     if(true)
-      #t27.{core::Set::add}(3){(core::int*) →* core::bool*};
-    #t27.{core::Set::add}(4){(core::int*) →* core::bool*};
-    #t27.{core::Set::add}(5){(core::int*) →* core::bool*};
-    #t27.{core::Set::add}(6){(core::int*) →* core::bool*};
+      #t27.{core::Set::add}{Invariant}(3);
+    #t27.{core::Set::add}{Invariant}(4);
+    #t27.{core::Set::add}{Invariant}(5);
+    #t27.{core::Set::add}{Invariant}(6);
   } =>#t27;
-  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<core::int*>*});
+  self::expect(core::_GrowableList::generate<core::int*>(7, (core::int* i) → core::int* => i), set.{core::Iterable::toList}());
 }
 static method main() → dynamic {
   self::foldInitialElements();
@@ -231,12 +231,12 @@
   self::foldInitialSpread6();
 }
 static method expect(core::List<dynamic>* list1, core::List<dynamic>* list2) → void {
-  if(!(list1.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} list2.{core::List::length}{core::int*})) {
-    throw "Unexpected length. Expected ${list1.{core::List::length}{core::int*}}, actual ${list2.{core::List::length}{core::int*}}.";
+  if(!list1.{core::List::length}.{core::num::==}(list2.{core::List::length})) {
+    throw "Unexpected length. Expected ${list1.{core::List::length}}, actual ${list2.{core::List::length}}.";
   }
-  for (core::int* i = 0; i.{core::num::<}(list1.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    if(!(list1.{core::List::[]}(i){(core::int*) →* dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} list2.{core::List::[]}(i){(core::int*) →* dynamic})) {
-      throw "Unexpected element at index ${i}. Expected ${list1.{core::List::[]}(i){(core::int*) →* dynamic}}, actual ${list2.{core::List::[]}(i){(core::int*) →* dynamic}}.";
+  for (core::int* i = 0; i.{core::num::<}(list1.{core::List::length}); i = i.{core::num::+}(1)) {
+    if(!list1.{core::List::[]}(i).{core::Object::==}(list2.{core::List::[]}(i))) {
+      throw "Unexpected element at index ${i}. Expected ${list1.{core::List::[]}(i)}, actual ${list2.{core::List::[]}(i)}.";
     }
   }
 }
diff --git a/pkg/front_end/testcases/unified_collections/invariance.dart.weak.expect b/pkg/front_end/testcases/unified_collections/invariance.dart.weak.expect
index 8092f69..63b5ee2 100644
--- a/pkg/front_end/testcases/unified_collections/invariance.dart.weak.expect
+++ b/pkg/front_end/testcases/unified_collections/invariance.dart.weak.expect
@@ -9,64 +9,64 @@
   dynamic list3 = <core::int*>[0];
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t1 = <core::int*>[0];
-    #t1.{core::List::addAll}(list1){(core::Iterable<core::int*>*) →* void};
+    #t1.{core::List::addAll}{Invariant}(list1);
     for (final dynamic #t2 in list2) {
       final core::int* #t3 = #t2 as{TypeError} core::int*;
-      #t1.{core::List::add}(#t3){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(#t3);
     }
     for (final dynamic #t4 in list3 as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::int* #t5 = #t4 as{TypeError} core::int*;
-      #t1.{core::List::add}(#t5){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(#t5);
     }
     if(true)
-      #t1.{core::List::add}(2){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(2);
   } =>#t1;
   core::Set<core::int*>* set1 = block {
     final core::Set<core::int*>* #t6 = col::LinkedHashSet::•<core::int*>();
-    #t6.{core::Set::add}(0){(core::int*) →* core::bool*};
+    #t6.{core::Set::add}{Invariant}(0);
   } =>#t6;
   core::Set<core::num*>* set2 = block {
     final core::Set<core::num*>* #t7 = col::LinkedHashSet::•<core::num*>();
-    #t7.{core::Set::add}(0){(core::num*) →* core::bool*};
+    #t7.{core::Set::add}{Invariant}(0);
   } =>#t7;
   dynamic set3 = block {
     final core::Set<core::int*>* #t8 = col::LinkedHashSet::•<core::int*>();
-    #t8.{core::Set::add}(0){(core::int*) →* core::bool*};
+    #t8.{core::Set::add}{Invariant}(0);
   } =>#t8;
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t9 = col::LinkedHashSet::•<core::int*>();
-    #t9.{core::Set::add}(0){(core::int*) →* core::bool*};
-    #t9.{core::Set::addAll}(set1){(core::Iterable<core::int*>*) →* void};
+    #t9.{core::Set::add}{Invariant}(0);
+    #t9.{core::Set::addAll}{Invariant}(set1);
     for (final dynamic #t10 in set2) {
       final core::int* #t11 = #t10 as{TypeError} core::int*;
-      #t9.{core::Set::add}(#t11){(core::int*) →* core::bool*};
+      #t9.{core::Set::add}{Invariant}(#t11);
     }
     for (final dynamic #t12 in set3 as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::int* #t13 = #t12 as{TypeError} core::int*;
-      #t9.{core::Set::add}(#t13){(core::int*) →* core::bool*};
+      #t9.{core::Set::add}{Invariant}(#t13);
     }
     if(true)
-      #t9.{core::Set::add}(2){(core::int*) →* core::bool*};
+      #t9.{core::Set::add}{Invariant}(2);
   } =>#t9;
   core::Map<core::int*, core::String*>* map1 = <core::int*, core::String*>{0: "foo"};
   core::Map<core::num*, core::Object*>* map2 = <core::num*, core::Object*>{0: "bar"};
   dynamic map3 = <core::int*, core::String*>{0: "baz"};
   core::Map<core::int*, core::String*>* map = block {
     final core::Map<core::int*, core::String*>* #t14 = <core::int*, core::String*>{};
-    #t14.{core::Map::[]=}(0, "foo"){(core::int*, core::String*) →* void};
+    #t14.{core::Map::[]=}{Invariant}(0, "foo");
     for (final core::MapEntry<core::int*, core::String*>* #t15 in map1.{core::Map::entries})
-      #t14.{core::Map::[]=}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value}){(core::int*, core::String*) →* void};
+      #t14.{core::Map::[]=}{Invariant}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value});
     for (final core::MapEntry<dynamic, dynamic>* #t16 in map2.{core::Map::entries}) {
       final core::int* #t17 = #t16.{core::MapEntry::key} as{TypeError} core::int*;
       final core::String* #t18 = #t16.{core::MapEntry::value} as{TypeError} core::String*;
-      #t14.{core::Map::[]=}(#t17, #t18){(core::int*, core::String*) →* void};
+      #t14.{core::Map::[]=}{Invariant}(#t17, #t18);
     }
     for (final core::MapEntry<dynamic, dynamic>* #t19 in (map3 as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}) {
       final core::int* #t20 = #t19.{core::MapEntry::key} as{TypeError} core::int*;
       final core::String* #t21 = #t19.{core::MapEntry::value} as{TypeError} core::String*;
-      #t14.{core::Map::[]=}(#t20, #t21){(core::int*, core::String*) →* void};
+      #t14.{core::Map::[]=}{Invariant}(#t20, #t21);
     }
     if(true)
-      #t14.{core::Map::[]=}(2, "baz"){(core::int*, core::String*) →* void};
+      #t14.{core::Map::[]=}{Invariant}(2, "baz");
   } =>#t14;
 }
diff --git a/pkg/front_end/testcases/unified_collections/invariance.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/invariance.dart.weak.transformed.expect
index 8b72d74..5655ae8 100644
--- a/pkg/front_end/testcases/unified_collections/invariance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/invariance.dart.weak.transformed.expect
@@ -9,14 +9,14 @@
   dynamic list3 = core::_GrowableList::_literal1<core::int*>(0);
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t1 = core::_GrowableList::_literal1<core::int*>(0);
-    #t1.{core::List::addAll}(list1){(core::Iterable<core::int*>*) →* void};
+    #t1.{core::List::addAll}{Invariant}(list1);
     {
       core::Iterator<core::num*>* :sync-for-iterator = list2.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t3 = #t2 as{TypeError} core::int*;
-          #t1.{core::List::add}(#t3){(core::int*) →* void};
+          #t1.{core::List::add}{Invariant}(#t3);
         }
       }
     }
@@ -26,36 +26,36 @@
         final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t5 = #t4 as{TypeError} core::int*;
-          #t1.{core::List::add}(#t5){(core::int*) →* void};
+          #t1.{core::List::add}{Invariant}(#t5);
         }
       }
     }
     if(true)
-      #t1.{core::List::add}(2){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(2);
   } =>#t1;
   core::Set<core::int*>* set1 = block {
     final core::Set<core::int*>* #t6 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t6.{core::Set::add}(0){(core::int*) →* core::bool*};
+    #t6.{core::Set::add}{Invariant}(0);
   } =>#t6;
   core::Set<core::num*>* set2 = block {
     final core::Set<core::num*>* #t7 = new col::_CompactLinkedHashSet::•<core::num*>();
-    #t7.{core::Set::add}(0){(core::num*) →* core::bool*};
+    #t7.{core::Set::add}{Invariant}(0);
   } =>#t7;
   dynamic set3 = block {
     final core::Set<core::int*>* #t8 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t8.{core::Set::add}(0){(core::int*) →* core::bool*};
+    #t8.{core::Set::add}{Invariant}(0);
   } =>#t8;
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t9 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t9.{core::Set::add}(0){(core::int*) →* core::bool*};
-    #t9.{core::Set::addAll}(set1){(core::Iterable<core::int*>*) →* void};
+    #t9.{core::Set::add}{Invariant}(0);
+    #t9.{core::Set::addAll}{Invariant}(set1);
     {
       core::Iterator<core::num*>* :sync-for-iterator = set2.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t10 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t11 = #t10 as{TypeError} core::int*;
-          #t9.{core::Set::add}(#t11){(core::int*) →* core::bool*};
+          #t9.{core::Set::add}{Invariant}(#t11);
         }
       }
     }
@@ -65,24 +65,24 @@
         final dynamic #t12 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t13 = #t12 as{TypeError} core::int*;
-          #t9.{core::Set::add}(#t13){(core::int*) →* core::bool*};
+          #t9.{core::Set::add}{Invariant}(#t13);
         }
       }
     }
     if(true)
-      #t9.{core::Set::add}(2){(core::int*) →* core::bool*};
+      #t9.{core::Set::add}{Invariant}(2);
   } =>#t9;
   core::Map<core::int*, core::String*>* map1 = <core::int*, core::String*>{0: "foo"};
   core::Map<core::num*, core::Object*>* map2 = <core::num*, core::Object*>{0: "bar"};
   dynamic map3 = <core::int*, core::String*>{0: "baz"};
   core::Map<core::int*, core::String*>* map = block {
     final core::Map<core::int*, core::String*>* #t14 = <core::int*, core::String*>{};
-    #t14.{core::Map::[]=}(0, "foo"){(core::int*, core::String*) →* void};
+    #t14.{core::Map::[]=}{Invariant}(0, "foo");
     {
       core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = map1.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::String*>* #t15 = :sync-for-iterator.{core::Iterator::current};
-        #t14.{core::Map::[]=}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value}){(core::int*, core::String*) →* void};
+        #t14.{core::Map::[]=}{Invariant}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value});
       }
     }
     {
@@ -92,7 +92,7 @@
         {
           final core::int* #t17 = #t16.{core::MapEntry::key} as{TypeError} core::int*;
           final core::String* #t18 = #t16.{core::MapEntry::value} as{TypeError} core::String*;
-          #t14.{core::Map::[]=}(#t17, #t18){(core::int*, core::String*) →* void};
+          #t14.{core::Map::[]=}{Invariant}(#t17, #t18);
         }
       }
     }
@@ -103,11 +103,11 @@
         {
           final core::int* #t20 = #t19.{core::MapEntry::key} as{TypeError} core::int*;
           final core::String* #t21 = #t19.{core::MapEntry::value} as{TypeError} core::String*;
-          #t14.{core::Map::[]=}(#t20, #t21){(core::int*, core::String*) →* void};
+          #t14.{core::Map::[]=}{Invariant}(#t20, #t21);
         }
       }
     }
     if(true)
-      #t14.{core::Map::[]=}(2, "baz"){(core::int*, core::String*) →* void};
+      #t14.{core::Map::[]=}{Invariant}(2, "baz");
   } =>#t14;
 }
diff --git a/pkg/front_end/testcases/unified_collections/list_add_all.dart.weak.expect b/pkg/front_end/testcases/unified_collections/list_add_all.dart.weak.expect
index 3a1f942..fe00087 100644
--- a/pkg/front_end/testcases/unified_collections/list_add_all.dart.weak.expect
+++ b/pkg/front_end/testcases/unified_collections/list_add_all.dart.weak.expect
@@ -15,29 +15,29 @@
     final core::List<core::int*>* #t1 = <core::int*>[];
     for (final dynamic #t2 in dynamicList1 as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::int* #t3 = #t2 as{TypeError} core::int*;
-      #t1.{core::List::add}(#t3){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(#t3);
     }
     for (final dynamic #t4 in dynamicList2 as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::int* #t5 = #t4 as{TypeError} core::int*;
-      #t1.{core::List::add}(#t5){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(#t5);
     }
-    #t1.{core::List::addAll}(iterableIntList){(core::Iterable<core::int*>*) →* void};
+    #t1.{core::List::addAll}{Invariant}(iterableIntList);
     for (final dynamic #t6 in iterableNumList1) {
       final core::int* #t7 = #t6 as{TypeError} core::int*;
-      #t1.{core::List::add}(#t7){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(#t7);
     }
     for (final dynamic #t8 in iterableNumList2) {
       final core::int* #t9 = #t8 as{TypeError} core::int*;
-      #t1.{core::List::add}(#t9){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(#t9);
     }
-    #t1.{core::List::addAll}(intList){(core::Iterable<core::int*>*) →* void};
+    #t1.{core::List::addAll}{Invariant}(intList);
     for (final dynamic #t10 in numList1) {
       final core::int* #t11 = #t10 as{TypeError} core::int*;
-      #t1.{core::List::add}(#t11){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(#t11);
     }
     for (final dynamic #t12 in numList2) {
       final core::int* #t13 = #t12 as{TypeError} core::int*;
-      #t1.{core::List::add}(#t13){(core::int*) →* void};
+      #t1.{core::List::add}{Invariant}(#t13);
     }
   } =>#t1;
   self::expect(core::List::generate<core::int*>(24, (core::int* i) → core::int* => i), list1);
@@ -45,98 +45,98 @@
     final core::List<core::num*>* #t14 = <core::num*>[];
     for (final dynamic #t15 in dynamicList1 as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::num* #t16 = #t15 as{TypeError} core::num*;
-      #t14.{core::List::add}(#t16){(core::num*) →* void};
+      #t14.{core::List::add}{Invariant}(#t16);
     }
     for (final dynamic #t17 in dynamicList2 as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::num* #t18 = #t17 as{TypeError} core::num*;
-      #t14.{core::List::add}(#t18){(core::num*) →* void};
+      #t14.{core::List::add}{Invariant}(#t18);
     }
-    #t14.{core::List::addAll}(iterableIntList){(core::Iterable<core::num*>*) →* void};
-    #t14.{core::List::addAll}(iterableNumList1){(core::Iterable<core::num*>*) →* void};
-    #t14.{core::List::addAll}(iterableNumList2){(core::Iterable<core::num*>*) →* void};
-    #t14.{core::List::addAll}(intList){(core::Iterable<core::num*>*) →* void};
-    #t14.{core::List::addAll}(numList1){(core::Iterable<core::num*>*) →* void};
-    #t14.{core::List::addAll}(numList2){(core::Iterable<core::num*>*) →* void};
+    #t14.{core::List::addAll}{Invariant}(iterableIntList);
+    #t14.{core::List::addAll}{Invariant}(iterableNumList1);
+    #t14.{core::List::addAll}{Invariant}(iterableNumList2);
+    #t14.{core::List::addAll}{Invariant}(intList);
+    #t14.{core::List::addAll}{Invariant}(numList1);
+    #t14.{core::List::addAll}{Invariant}(numList2);
   } =>#t14;
   self::expect(core::List::generate<core::num*>(24, (core::int* i) → core::int* => i), list2);
   core::List<core::int*>* list3 = block {
     final core::List<core::int*>* #t19 = <core::int*>[];
     final core::Iterable<dynamic>* #t20 = dynamicList1 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t20 == null))
+    if(!#t20.{core::Object::==}(null))
       for (final dynamic #t21 in #t20) {
         final core::int* #t22 = #t21 as{TypeError} core::int*;
-        #t19.{core::List::add}(#t22){(core::int*) →* void};
+        #t19.{core::List::add}{Invariant}(#t22);
       }
     final core::Iterable<dynamic>* #t23 = dynamicList2 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t23 == null))
+    if(!#t23.{core::Object::==}(null))
       for (final dynamic #t24 in #t23) {
         final core::int* #t25 = #t24 as{TypeError} core::int*;
-        #t19.{core::List::add}(#t25){(core::int*) →* void};
+        #t19.{core::List::add}{Invariant}(#t25);
       }
     final core::Iterable<core::int*>* #t26 = iterableIntList;
-    if(!(#t26 == null))
-      #t19.{core::List::addAll}(#t26){(core::Iterable<core::int*>*) →* void};
+    if(!#t26.{core::Object::==}(null))
+      #t19.{core::List::addAll}{Invariant}(#t26);
     final core::Iterable<dynamic>* #t27 = iterableNumList1;
-    if(!(#t27 == null))
+    if(!#t27.{core::Object::==}(null))
       for (final dynamic #t28 in #t27) {
         final core::int* #t29 = #t28 as{TypeError} core::int*;
-        #t19.{core::List::add}(#t29){(core::int*) →* void};
+        #t19.{core::List::add}{Invariant}(#t29);
       }
     final core::Iterable<dynamic>* #t30 = iterableNumList2;
-    if(!(#t30 == null))
+    if(!#t30.{core::Object::==}(null))
       for (final dynamic #t31 in #t30) {
         final core::int* #t32 = #t31 as{TypeError} core::int*;
-        #t19.{core::List::add}(#t32){(core::int*) →* void};
+        #t19.{core::List::add}{Invariant}(#t32);
       }
     final core::Iterable<core::int*>* #t33 = intList;
-    if(!(#t33 == null))
-      #t19.{core::List::addAll}(#t33){(core::Iterable<core::int*>*) →* void};
+    if(!#t33.{core::Object::==}(null))
+      #t19.{core::List::addAll}{Invariant}(#t33);
     final core::Iterable<dynamic>* #t34 = numList1;
-    if(!(#t34 == null))
+    if(!#t34.{core::Object::==}(null))
       for (final dynamic #t35 in #t34) {
         final core::int* #t36 = #t35 as{TypeError} core::int*;
-        #t19.{core::List::add}(#t36){(core::int*) →* void};
+        #t19.{core::List::add}{Invariant}(#t36);
       }
     final core::Iterable<dynamic>* #t37 = numList2;
-    if(!(#t37 == null))
+    if(!#t37.{core::Object::==}(null))
       for (final dynamic #t38 in #t37) {
         final core::int* #t39 = #t38 as{TypeError} core::int*;
-        #t19.{core::List::add}(#t39){(core::int*) →* void};
+        #t19.{core::List::add}{Invariant}(#t39);
       }
   } =>#t19;
   self::expect(core::List::generate<core::int*>(24, (core::int* i) → core::int* => i), list3);
   core::List<core::num*>* list4 = block {
     final core::List<core::num*>* #t40 = <core::num*>[];
     final core::Iterable<dynamic>* #t41 = dynamicList1 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t41 == null))
+    if(!#t41.{core::Object::==}(null))
       for (final dynamic #t42 in #t41) {
         final core::num* #t43 = #t42 as{TypeError} core::num*;
-        #t40.{core::List::add}(#t43){(core::num*) →* void};
+        #t40.{core::List::add}{Invariant}(#t43);
       }
     final core::Iterable<dynamic>* #t44 = dynamicList2 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t44 == null))
+    if(!#t44.{core::Object::==}(null))
       for (final dynamic #t45 in #t44) {
         final core::num* #t46 = #t45 as{TypeError} core::num*;
-        #t40.{core::List::add}(#t46){(core::num*) →* void};
+        #t40.{core::List::add}{Invariant}(#t46);
       }
     final core::Iterable<core::num*>* #t47 = iterableIntList;
-    if(!(#t47 == null))
-      #t40.{core::List::addAll}(#t47){(core::Iterable<core::num*>*) →* void};
+    if(!#t47.{core::Object::==}(null))
+      #t40.{core::List::addAll}{Invariant}(#t47);
     final core::Iterable<core::num*>* #t48 = iterableNumList1;
-    if(!(#t48 == null))
-      #t40.{core::List::addAll}(#t48){(core::Iterable<core::num*>*) →* void};
+    if(!#t48.{core::Object::==}(null))
+      #t40.{core::List::addAll}{Invariant}(#t48);
     final core::Iterable<core::num*>* #t49 = iterableNumList2;
-    if(!(#t49 == null))
-      #t40.{core::List::addAll}(#t49){(core::Iterable<core::num*>*) →* void};
+    if(!#t49.{core::Object::==}(null))
+      #t40.{core::List::addAll}{Invariant}(#t49);
     final core::Iterable<core::num*>* #t50 = intList;
-    if(!(#t50 == null))
-      #t40.{core::List::addAll}(#t50){(core::Iterable<core::num*>*) →* void};
+    if(!#t50.{core::Object::==}(null))
+      #t40.{core::List::addAll}{Invariant}(#t50);
     final core::Iterable<core::num*>* #t51 = numList1;
-    if(!(#t51 == null))
-      #t40.{core::List::addAll}(#t51){(core::Iterable<core::num*>*) →* void};
+    if(!#t51.{core::Object::==}(null))
+      #t40.{core::List::addAll}{Invariant}(#t51);
     final core::Iterable<core::num*>* #t52 = numList2;
-    if(!(#t52 == null))
-      #t40.{core::List::addAll}(#t52){(core::Iterable<core::num*>*) →* void};
+    if(!#t52.{core::Object::==}(null))
+      #t40.{core::List::addAll}{Invariant}(#t52);
   } =>#t40;
   self::expect(core::List::generate<core::num*>(24, (core::int* i) → core::int* => i), list4);
 }
@@ -144,12 +144,12 @@
   self::useAddAll();
 }
 static method expect(core::List<dynamic>* list1, core::List<dynamic>* list2) → void {
-  if(!(list1.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} list2.{core::List::length}{core::int*})) {
-    throw "Unexpected length. Expected ${list1.{core::List::length}{core::int*}}, actual ${list2.{core::List::length}{core::int*}}.";
+  if(!list1.{core::List::length}.{core::num::==}(list2.{core::List::length})) {
+    throw "Unexpected length. Expected ${list1.{core::List::length}}, actual ${list2.{core::List::length}}.";
   }
-  for (core::int* i = 0; i.{core::num::<}(list1.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    if(!(list1.{core::List::[]}(i){(core::int*) →* dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} list2.{core::List::[]}(i){(core::int*) →* dynamic})) {
-      throw "Unexpected element at index ${i}. Expected ${list1.{core::List::[]}(i){(core::int*) →* dynamic}}, actual ${list2.{core::List::[]}(i){(core::int*) →* dynamic}}.";
+  for (core::int* i = 0; i.{core::num::<}(list1.{core::List::length}); i = i.{core::num::+}(1)) {
+    if(!list1.{core::List::[]}(i).{core::Object::==}(list2.{core::List::[]}(i))) {
+      throw "Unexpected element at index ${i}. Expected ${list1.{core::List::[]}(i)}, actual ${list2.{core::List::[]}(i)}.";
     }
   }
 }
diff --git a/pkg/front_end/testcases/unified_collections/list_add_all.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/list_add_all.dart.weak.transformed.expect
index 6c633ac..1f0299e 100644
--- a/pkg/front_end/testcases/unified_collections/list_add_all.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/list_add_all.dart.weak.transformed.expect
@@ -19,7 +19,7 @@
         final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t3 = #t2 as{TypeError} core::int*;
-          #t1.{core::List::add}(#t3){(core::int*) →* void};
+          #t1.{core::List::add}{Invariant}(#t3);
         }
       }
     }
@@ -29,18 +29,18 @@
         final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t5 = #t4 as{TypeError} core::int*;
-          #t1.{core::List::add}(#t5){(core::int*) →* void};
+          #t1.{core::List::add}{Invariant}(#t5);
         }
       }
     }
-    #t1.{core::List::addAll}(iterableIntList){(core::Iterable<core::int*>*) →* void};
+    #t1.{core::List::addAll}{Invariant}(iterableIntList);
     {
       core::Iterator<core::num*>* :sync-for-iterator = iterableNumList1.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t6 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t7 = #t6 as{TypeError} core::int*;
-          #t1.{core::List::add}(#t7){(core::int*) →* void};
+          #t1.{core::List::add}{Invariant}(#t7);
         }
       }
     }
@@ -50,18 +50,18 @@
         final dynamic #t8 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t9 = #t8 as{TypeError} core::int*;
-          #t1.{core::List::add}(#t9){(core::int*) →* void};
+          #t1.{core::List::add}{Invariant}(#t9);
         }
       }
     }
-    #t1.{core::List::addAll}(intList){(core::Iterable<core::int*>*) →* void};
+    #t1.{core::List::addAll}{Invariant}(intList);
     {
       core::Iterator<core::num*>* :sync-for-iterator = numList1.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t10 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t11 = #t10 as{TypeError} core::int*;
-          #t1.{core::List::add}(#t11){(core::int*) →* void};
+          #t1.{core::List::add}{Invariant}(#t11);
         }
       }
     }
@@ -71,7 +71,7 @@
         final dynamic #t12 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t13 = #t12 as{TypeError} core::int*;
-          #t1.{core::List::add}(#t13){(core::int*) →* void};
+          #t1.{core::List::add}{Invariant}(#t13);
         }
       }
     }
@@ -85,7 +85,7 @@
         final dynamic #t15 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num* #t16 = #t15 as{TypeError} core::num*;
-          #t14.{core::List::add}(#t16){(core::num*) →* void};
+          #t14.{core::List::add}{Invariant}(#t16);
         }
       }
     }
@@ -95,89 +95,89 @@
         final dynamic #t17 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num* #t18 = #t17 as{TypeError} core::num*;
-          #t14.{core::List::add}(#t18){(core::num*) →* void};
+          #t14.{core::List::add}{Invariant}(#t18);
         }
       }
     }
-    #t14.{core::List::addAll}(iterableIntList){(core::Iterable<core::num*>*) →* void};
-    #t14.{core::List::addAll}(iterableNumList1){(core::Iterable<core::num*>*) →* void};
-    #t14.{core::List::addAll}(iterableNumList2){(core::Iterable<core::num*>*) →* void};
-    #t14.{core::List::addAll}(intList){(core::Iterable<core::num*>*) →* void};
-    #t14.{core::List::addAll}(numList1){(core::Iterable<core::num*>*) →* void};
-    #t14.{core::List::addAll}(numList2){(core::Iterable<core::num*>*) →* void};
+    #t14.{core::List::addAll}{Invariant}(iterableIntList);
+    #t14.{core::List::addAll}{Invariant}(iterableNumList1);
+    #t14.{core::List::addAll}{Invariant}(iterableNumList2);
+    #t14.{core::List::addAll}{Invariant}(intList);
+    #t14.{core::List::addAll}{Invariant}(numList1);
+    #t14.{core::List::addAll}{Invariant}(numList2);
   } =>#t14;
   self::expect(core::_GrowableList::generate<core::num*>(24, (core::int* i) → core::int* => i), list2);
   core::List<core::int*>* list3 = block {
     final core::List<core::int*>* #t19 = core::_GrowableList::•<core::int*>(0);
     final core::Iterable<dynamic>* #t20 = dynamicList1 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t20 == null)) {
+    if(!#t20.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t20.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t21 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t22 = #t21 as{TypeError} core::int*;
-          #t19.{core::List::add}(#t22){(core::int*) →* void};
+          #t19.{core::List::add}{Invariant}(#t22);
         }
       }
     }
     final core::Iterable<dynamic>* #t23 = dynamicList2 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t23 == null)) {
+    if(!#t23.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t23.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t24 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t25 = #t24 as{TypeError} core::int*;
-          #t19.{core::List::add}(#t25){(core::int*) →* void};
+          #t19.{core::List::add}{Invariant}(#t25);
         }
       }
     }
     final core::Iterable<core::int*>* #t26 = iterableIntList;
-    if(!(#t26 == null))
-      #t19.{core::List::addAll}(#t26){(core::Iterable<core::int*>*) →* void};
+    if(!#t26.{core::Object::==}(null))
+      #t19.{core::List::addAll}{Invariant}(#t26);
     final core::Iterable<dynamic>* #t27 = iterableNumList1;
-    if(!(#t27 == null)) {
+    if(!#t27.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t27.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t28 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t29 = #t28 as{TypeError} core::int*;
-          #t19.{core::List::add}(#t29){(core::int*) →* void};
+          #t19.{core::List::add}{Invariant}(#t29);
         }
       }
     }
     final core::Iterable<dynamic>* #t30 = iterableNumList2;
-    if(!(#t30 == null)) {
+    if(!#t30.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t30.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t31 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t32 = #t31 as{TypeError} core::int*;
-          #t19.{core::List::add}(#t32){(core::int*) →* void};
+          #t19.{core::List::add}{Invariant}(#t32);
         }
       }
     }
     final core::Iterable<core::int*>* #t33 = intList;
-    if(!(#t33 == null))
-      #t19.{core::List::addAll}(#t33){(core::Iterable<core::int*>*) →* void};
+    if(!#t33.{core::Object::==}(null))
+      #t19.{core::List::addAll}{Invariant}(#t33);
     final core::Iterable<dynamic>* #t34 = numList1;
-    if(!(#t34 == null)) {
+    if(!#t34.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t34.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t35 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t36 = #t35 as{TypeError} core::int*;
-          #t19.{core::List::add}(#t36){(core::int*) →* void};
+          #t19.{core::List::add}{Invariant}(#t36);
         }
       }
     }
     final core::Iterable<dynamic>* #t37 = numList2;
-    if(!(#t37 == null)) {
+    if(!#t37.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t37.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t38 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t39 = #t38 as{TypeError} core::int*;
-          #t19.{core::List::add}(#t39){(core::int*) →* void};
+          #t19.{core::List::add}{Invariant}(#t39);
         }
       }
     }
@@ -186,45 +186,45 @@
   core::List<core::num*>* list4 = block {
     final core::List<core::num*>* #t40 = core::_GrowableList::•<core::num*>(0);
     final core::Iterable<dynamic>* #t41 = dynamicList1 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t41 == null)) {
+    if(!#t41.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t41.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t42 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num* #t43 = #t42 as{TypeError} core::num*;
-          #t40.{core::List::add}(#t43){(core::num*) →* void};
+          #t40.{core::List::add}{Invariant}(#t43);
         }
       }
     }
     final core::Iterable<dynamic>* #t44 = dynamicList2 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t44 == null)) {
+    if(!#t44.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t44.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t45 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num* #t46 = #t45 as{TypeError} core::num*;
-          #t40.{core::List::add}(#t46){(core::num*) →* void};
+          #t40.{core::List::add}{Invariant}(#t46);
         }
       }
     }
     final core::Iterable<core::num*>* #t47 = iterableIntList;
-    if(!(#t47 == null))
-      #t40.{core::List::addAll}(#t47){(core::Iterable<core::num*>*) →* void};
+    if(!#t47.{core::Object::==}(null))
+      #t40.{core::List::addAll}{Invariant}(#t47);
     final core::Iterable<core::num*>* #t48 = iterableNumList1;
-    if(!(#t48 == null))
-      #t40.{core::List::addAll}(#t48){(core::Iterable<core::num*>*) →* void};
+    if(!#t48.{core::Object::==}(null))
+      #t40.{core::List::addAll}{Invariant}(#t48);
     final core::Iterable<core::num*>* #t49 = iterableNumList2;
-    if(!(#t49 == null))
-      #t40.{core::List::addAll}(#t49){(core::Iterable<core::num*>*) →* void};
+    if(!#t49.{core::Object::==}(null))
+      #t40.{core::List::addAll}{Invariant}(#t49);
     final core::Iterable<core::num*>* #t50 = intList;
-    if(!(#t50 == null))
-      #t40.{core::List::addAll}(#t50){(core::Iterable<core::num*>*) →* void};
+    if(!#t50.{core::Object::==}(null))
+      #t40.{core::List::addAll}{Invariant}(#t50);
     final core::Iterable<core::num*>* #t51 = numList1;
-    if(!(#t51 == null))
-      #t40.{core::List::addAll}(#t51){(core::Iterable<core::num*>*) →* void};
+    if(!#t51.{core::Object::==}(null))
+      #t40.{core::List::addAll}{Invariant}(#t51);
     final core::Iterable<core::num*>* #t52 = numList2;
-    if(!(#t52 == null))
-      #t40.{core::List::addAll}(#t52){(core::Iterable<core::num*>*) →* void};
+    if(!#t52.{core::Object::==}(null))
+      #t40.{core::List::addAll}{Invariant}(#t52);
   } =>#t40;
   self::expect(core::_GrowableList::generate<core::num*>(24, (core::int* i) → core::int* => i), list4);
 }
@@ -232,12 +232,12 @@
   self::useAddAll();
 }
 static method expect(core::List<dynamic>* list1, core::List<dynamic>* list2) → void {
-  if(!(list1.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} list2.{core::List::length}{core::int*})) {
-    throw "Unexpected length. Expected ${list1.{core::List::length}{core::int*}}, actual ${list2.{core::List::length}{core::int*}}.";
+  if(!list1.{core::List::length}.{core::num::==}(list2.{core::List::length})) {
+    throw "Unexpected length. Expected ${list1.{core::List::length}}, actual ${list2.{core::List::length}}.";
   }
-  for (core::int* i = 0; i.{core::num::<}(list1.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    if(!(list1.{core::List::[]}(i){(core::int*) →* dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} list2.{core::List::[]}(i){(core::int*) →* dynamic})) {
-      throw "Unexpected element at index ${i}. Expected ${list1.{core::List::[]}(i){(core::int*) →* dynamic}}, actual ${list2.{core::List::[]}(i){(core::int*) →* dynamic}}.";
+  for (core::int* i = 0; i.{core::num::<}(list1.{core::List::length}); i = i.{core::num::+}(1)) {
+    if(!list1.{core::List::[]}(i).{core::Object::==}(list2.{core::List::[]}(i))) {
+      throw "Unexpected element at index ${i}. Expected ${list1.{core::List::[]}(i)}, actual ${list2.{core::List::[]}(i)}.";
     }
   }
 }
diff --git a/pkg/front_end/testcases/unified_collections/list_add_all_nnbd.dart.weak.expect b/pkg/front_end/testcases/unified_collections/list_add_all_nnbd.dart.weak.expect
index f5d6b5f..233316d 100644
--- a/pkg/front_end/testcases/unified_collections/list_add_all_nnbd.dart.weak.expect
+++ b/pkg/front_end/testcases/unified_collections/list_add_all_nnbd.dart.weak.expect
@@ -12,36 +12,36 @@
     final core::List<core::int> #t1 = <core::int>[];
     for (final dynamic #t2 in dynamicList1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
-      #t1.{core::List::add}(#t3){(core::int) → void};
+      #t1.{core::List::add}{Invariant}(#t3);
     }
     for (final dynamic #t4 in dynamicList2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       final core::int #t5 = #t4 as{TypeError,ForNonNullableByDefault} core::int;
-      #t1.{core::List::add}(#t5){(core::int) → void};
+      #t1.{core::List::add}{Invariant}(#t5);
     }
     for (final dynamic #t6 in dynamicList3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       final core::int #t7 = #t6 as{TypeError,ForNonNullableByDefault} core::int;
-      #t1.{core::List::add}(#t7){(core::int) → void};
+      #t1.{core::List::add}{Invariant}(#t7);
     }
-    #t1.{core::List::addAll}(iterableIntList){(core::Iterable<core::int>) → void};
-    #t1.{core::List::addAll}(intList){(core::Iterable<core::int>) → void};
+    #t1.{core::List::addAll}{Invariant}(iterableIntList);
+    #t1.{core::List::addAll}{Invariant}(intList);
   } =>#t1;
   self::expect(core::List::generate<core::int>(15, (core::int i) → core::int => i), list1);
   core::List<core::num> list2 = block {
     final core::List<core::num> #t8 = <core::num>[];
     for (final dynamic #t9 in dynamicList1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       final core::num #t10 = #t9 as{TypeError,ForNonNullableByDefault} core::num;
-      #t8.{core::List::add}(#t10){(core::num) → void};
+      #t8.{core::List::add}{Invariant}(#t10);
     }
     for (final dynamic #t11 in dynamicList2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       final core::num #t12 = #t11 as{TypeError,ForNonNullableByDefault} core::num;
-      #t8.{core::List::add}(#t12){(core::num) → void};
+      #t8.{core::List::add}{Invariant}(#t12);
     }
     for (final dynamic #t13 in dynamicList3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       final core::num #t14 = #t13 as{TypeError,ForNonNullableByDefault} core::num;
-      #t8.{core::List::add}(#t14){(core::num) → void};
+      #t8.{core::List::add}{Invariant}(#t14);
     }
-    #t8.{core::List::addAll}(iterableIntList){(core::Iterable<core::num>) → void};
-    #t8.{core::List::addAll}(intList){(core::Iterable<core::num>) → void};
+    #t8.{core::List::addAll}{Invariant}(iterableIntList);
+    #t8.{core::List::addAll}{Invariant}(intList);
   } =>#t8;
   self::expect(core::List::generate<core::num>(15, (core::int i) → core::int => i), list2);
 }
@@ -54,57 +54,57 @@
   core::List<core::int> list1 = block {
     final core::List<core::int> #t15 = <core::int>[];
     final core::Iterable<dynamic>? #t16 = dynamicList1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t16 == null))
+    if(!#t16.{core::Object::==}(null))
       for (final dynamic #t17 in #t16{core::Iterable<dynamic>}) {
         final core::int #t18 = #t17 as{TypeError,ForNonNullableByDefault} core::int;
-        #t15.{core::List::add}(#t18){(core::int) → void};
+        #t15.{core::List::add}{Invariant}(#t18);
       }
     final core::Iterable<dynamic>? #t19 = dynamicList2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t19 == null))
+    if(!#t19.{core::Object::==}(null))
       for (final dynamic #t20 in #t19{core::Iterable<dynamic>}) {
         final core::int #t21 = #t20 as{TypeError,ForNonNullableByDefault} core::int;
-        #t15.{core::List::add}(#t21){(core::int) → void};
+        #t15.{core::List::add}{Invariant}(#t21);
       }
     final core::Iterable<dynamic>? #t22 = dynamicList3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t22 == null))
+    if(!#t22.{core::Object::==}(null))
       for (final dynamic #t23 in #t22{core::Iterable<dynamic>}) {
         final core::int #t24 = #t23 as{TypeError,ForNonNullableByDefault} core::int;
-        #t15.{core::List::add}(#t24){(core::int) → void};
+        #t15.{core::List::add}{Invariant}(#t24);
       }
     final core::Iterable<core::int>? #t25 = iterableIntList;
-    if(!(#t25 == null))
-      #t15.{core::List::addAll}(#t25{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+    if(!#t25.{core::Object::==}(null))
+      #t15.{core::List::addAll}{Invariant}(#t25{core::Iterable<core::int>});
     final core::Iterable<core::int>? #t26 = intList;
-    if(!(#t26 == null))
-      #t15.{core::List::addAll}(#t26{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+    if(!#t26.{core::Object::==}(null))
+      #t15.{core::List::addAll}{Invariant}(#t26{core::Iterable<core::int>});
   } =>#t15;
   self::expect(core::List::generate<core::int>(15, (core::int i) → core::int => i), list1);
   core::List<core::num> list2 = block {
     final core::List<core::num> #t27 = <core::num>[];
     final core::Iterable<dynamic>? #t28 = dynamicList1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t28 == null))
+    if(!#t28.{core::Object::==}(null))
       for (final dynamic #t29 in #t28{core::Iterable<dynamic>}) {
         final core::num #t30 = #t29 as{TypeError,ForNonNullableByDefault} core::num;
-        #t27.{core::List::add}(#t30){(core::num) → void};
+        #t27.{core::List::add}{Invariant}(#t30);
       }
     final core::Iterable<dynamic>? #t31 = dynamicList2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t31 == null))
+    if(!#t31.{core::Object::==}(null))
       for (final dynamic #t32 in #t31{core::Iterable<dynamic>}) {
         final core::num #t33 = #t32 as{TypeError,ForNonNullableByDefault} core::num;
-        #t27.{core::List::add}(#t33){(core::num) → void};
+        #t27.{core::List::add}{Invariant}(#t33);
       }
     final core::Iterable<dynamic>? #t34 = dynamicList3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t34 == null))
+    if(!#t34.{core::Object::==}(null))
       for (final dynamic #t35 in #t34{core::Iterable<dynamic>}) {
         final core::num #t36 = #t35 as{TypeError,ForNonNullableByDefault} core::num;
-        #t27.{core::List::add}(#t36){(core::num) → void};
+        #t27.{core::List::add}{Invariant}(#t36);
       }
     final core::Iterable<core::num>? #t37 = iterableIntList;
-    if(!(#t37 == null))
-      #t27.{core::List::addAll}(#t37{core::Iterable<core::num>}){(core::Iterable<core::num>) → void};
+    if(!#t37.{core::Object::==}(null))
+      #t27.{core::List::addAll}{Invariant}(#t37{core::Iterable<core::num>});
     final core::Iterable<core::num>? #t38 = intList;
-    if(!(#t38 == null))
-      #t27.{core::List::addAll}(#t38{core::Iterable<core::num>}){(core::Iterable<core::num>) → void};
+    if(!#t38.{core::Object::==}(null))
+      #t27.{core::List::addAll}{Invariant}(#t38{core::Iterable<core::num>});
   } =>#t27;
   self::expect(core::List::generate<core::num>(15, (core::int i) → core::int => i), list2);
 }
@@ -113,12 +113,12 @@
   self::useAddAllNullable();
 }
 static method expect(core::List<dynamic> list1, core::List<dynamic> list2) → void {
-  if(!(list1.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} list2.{core::List::length}{core::int})) {
-    throw "Unexpected length. Expected ${list1.{core::List::length}{core::int}}, actual ${list2.{core::List::length}{core::int}}.";
+  if(!list1.{core::List::length}.{core::num::==}(list2.{core::List::length})) {
+    throw "Unexpected length. Expected ${list1.{core::List::length}}, actual ${list2.{core::List::length}}.";
   }
-  for (core::int i = 0; i.{core::num::<}(list1.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    if(!(list1.{core::List::[]}(i){(core::int) → dynamic} =={core::Object::==}{(core::Object) → core::bool} list2.{core::List::[]}(i){(core::int) → dynamic})) {
-      throw "Unexpected element at index ${i}. Expected ${list1.{core::List::[]}(i){(core::int) → dynamic}}, actual ${list2.{core::List::[]}(i){(core::int) → dynamic}}.";
+  for (core::int i = 0; i.{core::num::<}(list1.{core::List::length}); i = i.{core::num::+}(1)) {
+    if(!list1.{core::List::[]}(i).{core::Object::==}(list2.{core::List::[]}(i))) {
+      throw "Unexpected element at index ${i}. Expected ${list1.{core::List::[]}(i)}, actual ${list2.{core::List::[]}(i)}.";
     }
   }
 }
diff --git a/pkg/front_end/testcases/unified_collections/list_add_all_nnbd.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/list_add_all_nnbd.dart.weak.transformed.expect
index a21b866..e94bf35 100644
--- a/pkg/front_end/testcases/unified_collections/list_add_all_nnbd.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/list_add_all_nnbd.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
         final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
-          #t1.{core::List::add}(#t3){(core::int) → void};
+          #t1.{core::List::add}{Invariant}(#t3);
         }
       }
     }
@@ -26,7 +26,7 @@
         final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t5 = #t4 as{TypeError,ForNonNullableByDefault} core::int;
-          #t1.{core::List::add}(#t5){(core::int) → void};
+          #t1.{core::List::add}{Invariant}(#t5);
         }
       }
     }
@@ -36,12 +36,12 @@
         final dynamic #t6 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t7 = #t6 as{TypeError,ForNonNullableByDefault} core::int;
-          #t1.{core::List::add}(#t7){(core::int) → void};
+          #t1.{core::List::add}{Invariant}(#t7);
         }
       }
     }
-    #t1.{core::List::addAll}(iterableIntList){(core::Iterable<core::int>) → void};
-    #t1.{core::List::addAll}(intList){(core::Iterable<core::int>) → void};
+    #t1.{core::List::addAll}{Invariant}(iterableIntList);
+    #t1.{core::List::addAll}{Invariant}(intList);
   } =>#t1;
   self::expect(core::_GrowableList::generate<core::int>(15, (core::int i) → core::int => i), list1);
   core::List<core::num> list2 = block {
@@ -52,7 +52,7 @@
         final dynamic #t9 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num #t10 = #t9 as{TypeError,ForNonNullableByDefault} core::num;
-          #t8.{core::List::add}(#t10){(core::num) → void};
+          #t8.{core::List::add}{Invariant}(#t10);
         }
       }
     }
@@ -62,7 +62,7 @@
         final dynamic #t11 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num #t12 = #t11 as{TypeError,ForNonNullableByDefault} core::num;
-          #t8.{core::List::add}(#t12){(core::num) → void};
+          #t8.{core::List::add}{Invariant}(#t12);
         }
       }
     }
@@ -72,12 +72,12 @@
         final dynamic #t13 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num #t14 = #t13 as{TypeError,ForNonNullableByDefault} core::num;
-          #t8.{core::List::add}(#t14){(core::num) → void};
+          #t8.{core::List::add}{Invariant}(#t14);
         }
       }
     }
-    #t8.{core::List::addAll}(iterableIntList){(core::Iterable<core::num>) → void};
-    #t8.{core::List::addAll}(intList){(core::Iterable<core::num>) → void};
+    #t8.{core::List::addAll}{Invariant}(iterableIntList);
+    #t8.{core::List::addAll}{Invariant}(intList);
   } =>#t8;
   self::expect(core::_GrowableList::generate<core::num>(15, (core::int i) → core::int => i), list2);
 }
@@ -90,87 +90,87 @@
   core::List<core::int> list1 = block {
     final core::List<core::int> #t15 = core::_GrowableList::•<core::int>(0);
     final core::Iterable<dynamic>? #t16 = dynamicList1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t16 == null)) {
+    if(!#t16.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t16{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t17 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t18 = #t17 as{TypeError,ForNonNullableByDefault} core::int;
-          #t15.{core::List::add}(#t18){(core::int) → void};
+          #t15.{core::List::add}{Invariant}(#t18);
         }
       }
     }
     final core::Iterable<dynamic>? #t19 = dynamicList2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t19 == null)) {
+    if(!#t19.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t19{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t20 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t21 = #t20 as{TypeError,ForNonNullableByDefault} core::int;
-          #t15.{core::List::add}(#t21){(core::int) → void};
+          #t15.{core::List::add}{Invariant}(#t21);
         }
       }
     }
     final core::Iterable<dynamic>? #t22 = dynamicList3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t22 == null)) {
+    if(!#t22.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t22{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t23 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t24 = #t23 as{TypeError,ForNonNullableByDefault} core::int;
-          #t15.{core::List::add}(#t24){(core::int) → void};
+          #t15.{core::List::add}{Invariant}(#t24);
         }
       }
     }
     final core::Iterable<core::int>? #t25 = iterableIntList;
-    if(!(#t25 == null))
-      #t15.{core::List::addAll}(#t25{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+    if(!#t25.{core::Object::==}(null))
+      #t15.{core::List::addAll}{Invariant}(#t25{core::Iterable<core::int>});
     final core::Iterable<core::int>? #t26 = intList;
-    if(!(#t26 == null))
-      #t15.{core::List::addAll}(#t26{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+    if(!#t26.{core::Object::==}(null))
+      #t15.{core::List::addAll}{Invariant}(#t26{core::Iterable<core::int>});
   } =>#t15;
   self::expect(core::_GrowableList::generate<core::int>(15, (core::int i) → core::int => i), list1);
   core::List<core::num> list2 = block {
     final core::List<core::num> #t27 = core::_GrowableList::•<core::num>(0);
     final core::Iterable<dynamic>? #t28 = dynamicList1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t28 == null)) {
+    if(!#t28.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t28{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t29 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num #t30 = #t29 as{TypeError,ForNonNullableByDefault} core::num;
-          #t27.{core::List::add}(#t30){(core::num) → void};
+          #t27.{core::List::add}{Invariant}(#t30);
         }
       }
     }
     final core::Iterable<dynamic>? #t31 = dynamicList2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t31 == null)) {
+    if(!#t31.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t31{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t32 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num #t33 = #t32 as{TypeError,ForNonNullableByDefault} core::num;
-          #t27.{core::List::add}(#t33){(core::num) → void};
+          #t27.{core::List::add}{Invariant}(#t33);
         }
       }
     }
     final core::Iterable<dynamic>? #t34 = dynamicList3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t34 == null)) {
+    if(!#t34.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t34{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t35 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num #t36 = #t35 as{TypeError,ForNonNullableByDefault} core::num;
-          #t27.{core::List::add}(#t36){(core::num) → void};
+          #t27.{core::List::add}{Invariant}(#t36);
         }
       }
     }
     final core::Iterable<core::num>? #t37 = iterableIntList;
-    if(!(#t37 == null))
-      #t27.{core::List::addAll}(#t37{core::Iterable<core::num>}){(core::Iterable<core::num>) → void};
+    if(!#t37.{core::Object::==}(null))
+      #t27.{core::List::addAll}{Invariant}(#t37{core::Iterable<core::num>});
     final core::Iterable<core::num>? #t38 = intList;
-    if(!(#t38 == null))
-      #t27.{core::List::addAll}(#t38{core::Iterable<core::num>}){(core::Iterable<core::num>) → void};
+    if(!#t38.{core::Object::==}(null))
+      #t27.{core::List::addAll}{Invariant}(#t38{core::Iterable<core::num>});
   } =>#t27;
   self::expect(core::_GrowableList::generate<core::num>(15, (core::int i) → core::int => i), list2);
 }
@@ -179,12 +179,12 @@
   self::useAddAllNullable();
 }
 static method expect(core::List<dynamic> list1, core::List<dynamic> list2) → void {
-  if(!(list1.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} list2.{core::List::length}{core::int})) {
-    throw "Unexpected length. Expected ${list1.{core::List::length}{core::int}}, actual ${list2.{core::List::length}{core::int}}.";
+  if(!list1.{core::List::length}.{core::num::==}(list2.{core::List::length})) {
+    throw "Unexpected length. Expected ${list1.{core::List::length}}, actual ${list2.{core::List::length}}.";
   }
-  for (core::int i = 0; i.{core::num::<}(list1.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
-    if(!(list1.{core::List::[]}(i){(core::int) → dynamic} =={core::Object::==}{(core::Object) → core::bool} list2.{core::List::[]}(i){(core::int) → dynamic})) {
-      throw "Unexpected element at index ${i}. Expected ${list1.{core::List::[]}(i){(core::int) → dynamic}}, actual ${list2.{core::List::[]}(i){(core::int) → dynamic}}.";
+  for (core::int i = 0; i.{core::num::<}(list1.{core::List::length}); i = i.{core::num::+}(1)) {
+    if(!list1.{core::List::[]}(i).{core::Object::==}(list2.{core::List::[]}(i))) {
+      throw "Unexpected element at index ${i}. Expected ${list1.{core::List::[]}(i)}, actual ${list2.{core::List::[]}(i)}.";
     }
   }
 }
diff --git a/pkg/front_end/testcases/unified_collections/mixed_entries.dart.weak.expect b/pkg/front_end/testcases/unified_collections/mixed_entries.dart.weak.expect
index 9e1ff0e..be5a180 100644
--- a/pkg/front_end/testcases/unified_collections/mixed_entries.dart.weak.expect
+++ b/pkg/front_end/testcases/unified_collections/mixed_entries.dart.weak.expect
@@ -47,104 +47,104 @@
 static field core::Map<dynamic, dynamic>* map1 = block {
   final core::Map<dynamic, dynamic>* #t1 = <dynamic, dynamic>{};
   if(self::b)
-    #t1.{core::Map::[]=}(0, 1){(dynamic, dynamic) →* void};
+    #t1.{core::Map::[]=}{Invariant}(0, 1);
   else
     for (final core::MapEntry<dynamic, dynamic>* #t2 in self::map0.{core::Map::entries})
-      #t1.{core::Map::[]=}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+      #t1.{core::Map::[]=}{Invariant}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value});
 } =>#t1;
 static field core::Map<dynamic, dynamic>* map2 = block {
   final core::Map<dynamic, dynamic>* #t3 = <dynamic, dynamic>{};
   if(self::b)
     for (final core::MapEntry<dynamic, dynamic>* #t4 in self::map0.{core::Map::entries})
-      #t3.{core::Map::[]=}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+      #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value});
   else
-    #t3.{core::Map::[]=}(0, 1){(dynamic, dynamic) →* void};
+    #t3.{core::Map::[]=}{Invariant}(0, 1);
 } =>#t3;
 static field core::Map<dynamic, dynamic>* map3 = block {
   final core::Map<dynamic, dynamic>* #t5 = <dynamic, dynamic>{};
   if(self::b)
     for (final core::MapEntry<dynamic, dynamic>* #t6 in self::map0.{core::Map::entries})
-      #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+      #t5.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
   else
     for (final core::MapEntry<dynamic, dynamic>* #t7 in self::map0.{core::Map::entries})
-      #t5.{core::Map::[]=}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+      #t5.{core::Map::[]=}{Invariant}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value});
 } =>#t5;
 static field core::Map<dynamic, core::int*>* map4 = block {
   final core::Map<dynamic, core::int*>* #t8 = <dynamic, core::int*>{};
   if(self::b)
-    #t8.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t8.{core::Map::[]=}{Invariant}(0, 1);
   else
     for (dynamic a in self::list)
-      #t8.{core::Map::[]=}(a, 1){(dynamic, core::int*) →* void};
+      #t8.{core::Map::[]=}{Invariant}(a, 1);
 } =>#t8;
 static field core::Map<dynamic, core::int*>* map5 = block {
   final core::Map<dynamic, core::int*>* #t9 = <dynamic, core::int*>{};
   if(self::b)
     for (dynamic a in self::list)
-      #t9.{core::Map::[]=}(a, 1){(dynamic, core::int*) →* void};
+      #t9.{core::Map::[]=}{Invariant}(a, 1);
   else
-    #t9.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t9.{core::Map::[]=}{Invariant}(0, 1);
 } =>#t9;
 static field core::Map<dynamic, core::int*>* map6 = block {
   final core::Map<dynamic, core::int*>* #t10 = <dynamic, core::int*>{};
   if(self::b)
-    #t10.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t10.{core::Map::[]=}{Invariant}(0, 1);
   else
     for (dynamic a in self::list)
       for (final core::MapEntry<dynamic, core::int*>* #t11 in <dynamic, core::int*>{a: 1}.{core::Map::entries})
-        #t10.{core::Map::[]=}(#t11.{core::MapEntry::key}, #t11.{core::MapEntry::value}){(dynamic, core::int*) →* void};
+        #t10.{core::Map::[]=}{Invariant}(#t11.{core::MapEntry::key}, #t11.{core::MapEntry::value});
 } =>#t10;
 static field core::Map<dynamic, core::int*>* map7 = block {
   final core::Map<dynamic, core::int*>* #t12 = <dynamic, core::int*>{};
   if(self::b)
     for (dynamic a in self::list)
       for (final core::MapEntry<dynamic, core::int*>* #t13 in <dynamic, core::int*>{a: 1}.{core::Map::entries})
-        #t12.{core::Map::[]=}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value}){(dynamic, core::int*) →* void};
+        #t12.{core::Map::[]=}{Invariant}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value});
   else
-    #t12.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t12.{core::Map::[]=}{Invariant}(0, 1);
 } =>#t12;
 static field core::Map<dynamic, core::int*>* map8 = block {
   final core::Map<dynamic, core::int*>* #t14 = <dynamic, core::int*>{};
   if(self::b)
-    #t14.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t14.{core::Map::[]=}{Invariant}(0, 1);
   else
-    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t14.{core::Map::[]=}(self::list.{core::List::[]}(i){(core::int*) →* dynamic}, 1){(dynamic, core::int*) →* void};
+    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}); i = i.{core::num::+}(1))
+      #t14.{core::Map::[]=}{Invariant}(self::list.{core::List::[]}(i), 1);
 } =>#t14;
 static field core::Map<dynamic, core::int*>* map9 = block {
   final core::Map<dynamic, core::int*>* #t15 = <dynamic, core::int*>{};
   if(self::b)
-    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t15.{core::Map::[]=}(self::list.{core::List::[]}(i){(core::int*) →* dynamic}, 1){(dynamic, core::int*) →* void};
+    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}); i = i.{core::num::+}(1))
+      #t15.{core::Map::[]=}{Invariant}(self::list.{core::List::[]}(i), 1);
   else
-    #t15.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t15.{core::Map::[]=}{Invariant}(0, 1);
 } =>#t15;
 static field core::Map<dynamic, core::int*>* map10 = block {
   final core::Map<dynamic, core::int*>* #t16 = <dynamic, core::int*>{};
   if(self::b)
-    #t16.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t16.{core::Map::[]=}{Invariant}(0, 1);
   else
-    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      for (final core::MapEntry<dynamic, core::int*>* #t17 in <dynamic, core::int*>{self::list.{core::List::[]}(i){(core::int*) →* dynamic}: 1}.{core::Map::entries})
-        #t16.{core::Map::[]=}(#t17.{core::MapEntry::key}, #t17.{core::MapEntry::value}){(dynamic, core::int*) →* void};
+    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}); i = i.{core::num::+}(1))
+      for (final core::MapEntry<dynamic, core::int*>* #t17 in <dynamic, core::int*>{self::list.{core::List::[]}(i): 1}.{core::Map::entries})
+        #t16.{core::Map::[]=}{Invariant}(#t17.{core::MapEntry::key}, #t17.{core::MapEntry::value});
 } =>#t16;
 static field core::Map<dynamic, core::int*>* map11 = block {
   final core::Map<dynamic, core::int*>* #t18 = <dynamic, core::int*>{};
   if(self::b)
-    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      for (final core::MapEntry<dynamic, core::int*>* #t19 in <dynamic, core::int*>{self::list.{core::List::[]}(i){(core::int*) →* dynamic}: 1}.{core::Map::entries})
-        #t18.{core::Map::[]=}(#t19.{core::MapEntry::key}, #t19.{core::MapEntry::value}){(dynamic, core::int*) →* void};
+    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}); i = i.{core::num::+}(1))
+      for (final core::MapEntry<dynamic, core::int*>* #t19 in <dynamic, core::int*>{self::list.{core::List::[]}(i): 1}.{core::Map::entries})
+        #t18.{core::Map::[]=}{Invariant}(#t19.{core::MapEntry::key}, #t19.{core::MapEntry::value});
   else
-    #t18.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t18.{core::Map::[]=}{Invariant}(0, 1);
 } =>#t18;
 static field core::Map<core::int*, core::int*>* map12 = block {
   final core::Map<core::int*, core::int*>* #t20 = <core::int*, core::int*>{};
   if(self::b)
-    #t20.{core::Map::[]=}(0, 1){(core::int*, core::int*) →* void};
+    #t20.{core::Map::[]=}{Invariant}(0, 1);
   else
     if(self::b)
       for (final core::MapEntry<core::int*, core::int*>* #t21 in <core::int*, core::int*>{0: 1}.{core::Map::entries})
-        #t20.{core::Map::[]=}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value}){(core::int*, core::int*) →* void};
+        #t20.{core::Map::[]=}{Invariant}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value});
 } =>#t20;
 static field core::Map<dynamic, Null>* error4 = <dynamic, Null>{invalid-expression "pkg/front_end/testcases/unified_collections/mixed_entries.dart:35:32: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
 var error4 = {if (b) 0: 1 else for (var a in list) a};
diff --git a/pkg/front_end/testcases/unified_collections/mixed_entries.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/mixed_entries.dart.weak.transformed.expect
index 89c473c..83028c4 100644
--- a/pkg/front_end/testcases/unified_collections/mixed_entries.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/mixed_entries.dart.weak.transformed.expect
@@ -47,12 +47,12 @@
 static field core::Map<dynamic, dynamic>* map1 = block {
   final core::Map<dynamic, dynamic>* #t1 = <dynamic, dynamic>{};
   if(self::b)
-    #t1.{core::Map::[]=}(0, 1){(dynamic, dynamic) →* void};
+    #t1.{core::Map::[]=}{Invariant}(0, 1);
   else {
     core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       final core::MapEntry<dynamic, dynamic>* #t2 = :sync-for-iterator.{core::Iterator::current};
-      #t1.{core::Map::[]=}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+      #t1.{core::Map::[]=}{Invariant}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value});
     }
   }
 } =>#t1;
@@ -62,11 +62,11 @@
     core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       final core::MapEntry<dynamic, dynamic>* #t4 = :sync-for-iterator.{core::Iterator::current};
-      #t3.{core::Map::[]=}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+      #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value});
     }
   }
   else
-    #t3.{core::Map::[]=}(0, 1){(dynamic, dynamic) →* void};
+    #t3.{core::Map::[]=}{Invariant}(0, 1);
 } =>#t3;
 static field core::Map<dynamic, dynamic>* map3 = block {
   final core::Map<dynamic, dynamic>* #t5 = <dynamic, dynamic>{};
@@ -74,26 +74,26 @@
     core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       final core::MapEntry<dynamic, dynamic>* #t6 = :sync-for-iterator.{core::Iterator::current};
-      #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+      #t5.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
     }
   }
   else {
     core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       final core::MapEntry<dynamic, dynamic>* #t7 = :sync-for-iterator.{core::Iterator::current};
-      #t5.{core::Map::[]=}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value}){(dynamic, dynamic) →* void};
+      #t5.{core::Map::[]=}{Invariant}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value});
     }
   }
 } =>#t5;
 static field core::Map<dynamic, core::int*>* map4 = block {
   final core::Map<dynamic, core::int*>* #t8 = <dynamic, core::int*>{};
   if(self::b)
-    #t8.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t8.{core::Map::[]=}{Invariant}(0, 1);
   else {
     core::Iterator<dynamic>* :sync-for-iterator = self::list.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       dynamic a = :sync-for-iterator.{core::Iterator::current};
-      #t8.{core::Map::[]=}(a, 1){(dynamic, core::int*) →* void};
+      #t8.{core::Map::[]=}{Invariant}(a, 1);
     }
   }
 } =>#t8;
@@ -103,16 +103,16 @@
     core::Iterator<dynamic>* :sync-for-iterator = self::list.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       dynamic a = :sync-for-iterator.{core::Iterator::current};
-      #t9.{core::Map::[]=}(a, 1){(dynamic, core::int*) →* void};
+      #t9.{core::Map::[]=}{Invariant}(a, 1);
     }
   }
   else
-    #t9.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t9.{core::Map::[]=}{Invariant}(0, 1);
 } =>#t9;
 static field core::Map<dynamic, core::int*>* map6 = block {
   final core::Map<dynamic, core::int*>* #t10 = <dynamic, core::int*>{};
   if(self::b)
-    #t10.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t10.{core::Map::[]=}{Invariant}(0, 1);
   else {
     core::Iterator<dynamic>* :sync-for-iterator = self::list.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
@@ -121,7 +121,7 @@
         core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{a: 1}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<dynamic, core::int*>* #t11 = :sync-for-iterator.{core::Iterator::current};
-          #t10.{core::Map::[]=}(#t11.{core::MapEntry::key}, #t11.{core::MapEntry::value}){(dynamic, core::int*) →* void};
+          #t10.{core::Map::[]=}{Invariant}(#t11.{core::MapEntry::key}, #t11.{core::MapEntry::value});
         }
       }
     }
@@ -137,66 +137,66 @@
         core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{a: 1}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<dynamic, core::int*>* #t13 = :sync-for-iterator.{core::Iterator::current};
-          #t12.{core::Map::[]=}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value}){(dynamic, core::int*) →* void};
+          #t12.{core::Map::[]=}{Invariant}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value});
         }
       }
     }
   }
   else
-    #t12.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t12.{core::Map::[]=}{Invariant}(0, 1);
 } =>#t12;
 static field core::Map<dynamic, core::int*>* map8 = block {
   final core::Map<dynamic, core::int*>* #t14 = <dynamic, core::int*>{};
   if(self::b)
-    #t14.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t14.{core::Map::[]=}{Invariant}(0, 1);
   else
-    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t14.{core::Map::[]=}(self::list.{core::List::[]}(i){(core::int*) →* dynamic}, 1){(dynamic, core::int*) →* void};
+    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}); i = i.{core::num::+}(1))
+      #t14.{core::Map::[]=}{Invariant}(self::list.{core::List::[]}(i), 1);
 } =>#t14;
 static field core::Map<dynamic, core::int*>* map9 = block {
   final core::Map<dynamic, core::int*>* #t15 = <dynamic, core::int*>{};
   if(self::b)
-    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*})
-      #t15.{core::Map::[]=}(self::list.{core::List::[]}(i){(core::int*) →* dynamic}, 1){(dynamic, core::int*) →* void};
+    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}); i = i.{core::num::+}(1))
+      #t15.{core::Map::[]=}{Invariant}(self::list.{core::List::[]}(i), 1);
   else
-    #t15.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t15.{core::Map::[]=}{Invariant}(0, 1);
 } =>#t15;
 static field core::Map<dynamic, core::int*>* map10 = block {
   final core::Map<dynamic, core::int*>* #t16 = <dynamic, core::int*>{};
   if(self::b)
-    #t16.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t16.{core::Map::[]=}{Invariant}(0, 1);
   else
-    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{self::list.{core::List::[]}(i){(core::int*) →* dynamic}: 1}.{core::Map::entries}.{core::Iterable::iterator};
+    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}); i = i.{core::num::+}(1)) {
+      core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{self::list.{core::List::[]}(i): 1}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, core::int*>* #t17 = :sync-for-iterator.{core::Iterator::current};
-        #t16.{core::Map::[]=}(#t17.{core::MapEntry::key}, #t17.{core::MapEntry::value}){(dynamic, core::int*) →* void};
+        #t16.{core::Map::[]=}{Invariant}(#t17.{core::MapEntry::key}, #t17.{core::MapEntry::value});
       }
     }
 } =>#t16;
 static field core::Map<dynamic, core::int*>* map11 = block {
   final core::Map<dynamic, core::int*>* #t18 = <dynamic, core::int*>{};
   if(self::b)
-    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{self::list.{core::List::[]}(i){(core::int*) →* dynamic}: 1}.{core::Map::entries}.{core::Iterable::iterator};
+    for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}); i = i.{core::num::+}(1)) {
+      core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{self::list.{core::List::[]}(i): 1}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, core::int*>* #t19 = :sync-for-iterator.{core::Iterator::current};
-        #t18.{core::Map::[]=}(#t19.{core::MapEntry::key}, #t19.{core::MapEntry::value}){(dynamic, core::int*) →* void};
+        #t18.{core::Map::[]=}{Invariant}(#t19.{core::MapEntry::key}, #t19.{core::MapEntry::value});
       }
     }
   else
-    #t18.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
+    #t18.{core::Map::[]=}{Invariant}(0, 1);
 } =>#t18;
 static field core::Map<core::int*, core::int*>* map12 = block {
   final core::Map<core::int*, core::int*>* #t20 = <core::int*, core::int*>{};
   if(self::b)
-    #t20.{core::Map::[]=}(0, 1){(core::int*, core::int*) →* void};
+    #t20.{core::Map::[]=}{Invariant}(0, 1);
   else
     if(self::b) {
       core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{0: 1}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::int*>* #t21 = :sync-for-iterator.{core::Iterator::current};
-        #t20.{core::Map::[]=}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value}){(core::int*, core::int*) →* void};
+        #t20.{core::Map::[]=}{Invariant}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value});
       }
     }
 } =>#t20;
diff --git a/pkg/front_end/testcases/unified_collections/set_add_all.dart.weak.expect b/pkg/front_end/testcases/unified_collections/set_add_all.dart.weak.expect
index d99b951..f31828e 100644
--- a/pkg/front_end/testcases/unified_collections/set_add_all.dart.weak.expect
+++ b/pkg/front_end/testcases/unified_collections/set_add_all.dart.weak.expect
@@ -7,190 +7,190 @@
 static method useAddAll() → void {
   dynamic dynamicSet1 = block {
     final core::Set<core::int*>* #t1 = col::LinkedHashSet::•<core::int*>();
-    #t1.{core::Set::add}(0){(core::int*) →* core::bool*};
-    #t1.{core::Set::add}(1){(core::int*) →* core::bool*};
-    #t1.{core::Set::add}(2){(core::int*) →* core::bool*};
+    #t1.{core::Set::add}{Invariant}(0);
+    #t1.{core::Set::add}{Invariant}(1);
+    #t1.{core::Set::add}{Invariant}(2);
   } =>#t1;
   dynamic dynamicSet2 = block {
     final core::Set<core::num*>* #t2 = col::LinkedHashSet::•<core::num*>();
-    #t2.{core::Set::add}(3){(core::num*) →* core::bool*};
-    #t2.{core::Set::add}(4){(core::num*) →* core::bool*};
-    #t2.{core::Set::add}(5){(core::num*) →* core::bool*};
+    #t2.{core::Set::add}{Invariant}(3);
+    #t2.{core::Set::add}{Invariant}(4);
+    #t2.{core::Set::add}{Invariant}(5);
   } =>#t2;
   core::Iterable<core::int*>* iterableIntSet = block {
     final core::Set<core::int*>* #t3 = col::LinkedHashSet::•<core::int*>();
-    #t3.{core::Set::add}(6){(core::int*) →* core::bool*};
-    #t3.{core::Set::add}(7){(core::int*) →* core::bool*};
-    #t3.{core::Set::add}(8){(core::int*) →* core::bool*};
+    #t3.{core::Set::add}{Invariant}(6);
+    #t3.{core::Set::add}{Invariant}(7);
+    #t3.{core::Set::add}{Invariant}(8);
   } =>#t3;
   core::Iterable<core::num*>* iterableNumSet1 = block {
     final core::Set<core::int*>* #t4 = col::LinkedHashSet::•<core::int*>();
-    #t4.{core::Set::add}(9){(core::int*) →* core::bool*};
-    #t4.{core::Set::add}(10){(core::int*) →* core::bool*};
-    #t4.{core::Set::add}(11){(core::int*) →* core::bool*};
+    #t4.{core::Set::add}{Invariant}(9);
+    #t4.{core::Set::add}{Invariant}(10);
+    #t4.{core::Set::add}{Invariant}(11);
   } =>#t4;
   core::Iterable<core::num*>* iterableNumSet2 = block {
     final core::Set<core::num*>* #t5 = col::LinkedHashSet::•<core::num*>();
-    #t5.{core::Set::add}(12){(core::num*) →* core::bool*};
-    #t5.{core::Set::add}(13){(core::num*) →* core::bool*};
-    #t5.{core::Set::add}(14){(core::num*) →* core::bool*};
+    #t5.{core::Set::add}{Invariant}(12);
+    #t5.{core::Set::add}{Invariant}(13);
+    #t5.{core::Set::add}{Invariant}(14);
   } =>#t5;
   core::Set<core::int*>* intSet = block {
     final core::Set<core::int*>* #t6 = col::LinkedHashSet::•<core::int*>();
-    #t6.{core::Set::add}(15){(core::int*) →* core::bool*};
-    #t6.{core::Set::add}(16){(core::int*) →* core::bool*};
-    #t6.{core::Set::add}(17){(core::int*) →* core::bool*};
+    #t6.{core::Set::add}{Invariant}(15);
+    #t6.{core::Set::add}{Invariant}(16);
+    #t6.{core::Set::add}{Invariant}(17);
   } =>#t6;
   core::Set<core::num*>* numSet1 = block {
     final core::Set<core::int*>* #t7 = col::LinkedHashSet::•<core::int*>();
-    #t7.{core::Set::add}(18){(core::int*) →* core::bool*};
-    #t7.{core::Set::add}(19){(core::int*) →* core::bool*};
-    #t7.{core::Set::add}(20){(core::int*) →* core::bool*};
+    #t7.{core::Set::add}{Invariant}(18);
+    #t7.{core::Set::add}{Invariant}(19);
+    #t7.{core::Set::add}{Invariant}(20);
   } =>#t7;
   core::Set<core::num*>* numSet2 = block {
     final core::Set<core::num*>* #t8 = col::LinkedHashSet::•<core::num*>();
-    #t8.{core::Set::add}(21){(core::num*) →* core::bool*};
-    #t8.{core::Set::add}(22){(core::num*) →* core::bool*};
-    #t8.{core::Set::add}(23){(core::num*) →* core::bool*};
+    #t8.{core::Set::add}{Invariant}(21);
+    #t8.{core::Set::add}{Invariant}(22);
+    #t8.{core::Set::add}{Invariant}(23);
   } =>#t8;
   core::Set<core::int*>* set1 = block {
     final core::Set<core::int*>* #t9 = col::LinkedHashSet::•<core::int*>();
     for (final dynamic #t10 in dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::int* #t11 = #t10 as{TypeError} core::int*;
-      #t9.{core::Set::add}(#t11){(core::int*) →* core::bool*};
+      #t9.{core::Set::add}{Invariant}(#t11);
     }
     for (final dynamic #t12 in dynamicSet2 as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::int* #t13 = #t12 as{TypeError} core::int*;
-      #t9.{core::Set::add}(#t13){(core::int*) →* core::bool*};
+      #t9.{core::Set::add}{Invariant}(#t13);
     }
-    #t9.{core::Set::addAll}(iterableIntSet){(core::Iterable<core::int*>*) →* void};
+    #t9.{core::Set::addAll}{Invariant}(iterableIntSet);
     for (final dynamic #t14 in iterableNumSet1) {
       final core::int* #t15 = #t14 as{TypeError} core::int*;
-      #t9.{core::Set::add}(#t15){(core::int*) →* core::bool*};
+      #t9.{core::Set::add}{Invariant}(#t15);
     }
     for (final dynamic #t16 in iterableNumSet2) {
       final core::int* #t17 = #t16 as{TypeError} core::int*;
-      #t9.{core::Set::add}(#t17){(core::int*) →* core::bool*};
+      #t9.{core::Set::add}{Invariant}(#t17);
     }
-    #t9.{core::Set::addAll}(intSet){(core::Iterable<core::int*>*) →* void};
+    #t9.{core::Set::addAll}{Invariant}(intSet);
     for (final dynamic #t18 in numSet1) {
       final core::int* #t19 = #t18 as{TypeError} core::int*;
-      #t9.{core::Set::add}(#t19){(core::int*) →* core::bool*};
+      #t9.{core::Set::add}{Invariant}(#t19);
     }
     for (final dynamic #t20 in numSet2) {
       final core::int* #t21 = #t20 as{TypeError} core::int*;
-      #t9.{core::Set::add}(#t21){(core::int*) →* core::bool*};
+      #t9.{core::Set::add}{Invariant}(#t21);
     }
   } =>#t9;
-  self::expect(core::List::generate<core::int*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(){() →* core::Set<core::int*>*}, set1);
+  self::expect(core::List::generate<core::int*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(), set1);
   core::Set<core::num*>* set2 = block {
     final core::Set<core::num*>* #t22 = col::LinkedHashSet::•<core::num*>();
     for (final dynamic #t23 in dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::num* #t24 = #t23 as{TypeError} core::num*;
-      #t22.{core::Set::add}(#t24){(core::num*) →* core::bool*};
+      #t22.{core::Set::add}{Invariant}(#t24);
     }
     for (final dynamic #t25 in dynamicSet2 as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
       final core::num* #t26 = #t25 as{TypeError} core::num*;
-      #t22.{core::Set::add}(#t26){(core::num*) →* core::bool*};
+      #t22.{core::Set::add}{Invariant}(#t26);
     }
-    #t22.{core::Set::addAll}(iterableIntSet){(core::Iterable<core::num*>*) →* void};
-    #t22.{core::Set::addAll}(iterableNumSet1){(core::Iterable<core::num*>*) →* void};
-    #t22.{core::Set::addAll}(iterableNumSet2){(core::Iterable<core::num*>*) →* void};
-    #t22.{core::Set::addAll}(intSet){(core::Iterable<core::num*>*) →* void};
-    #t22.{core::Set::addAll}(numSet1){(core::Iterable<core::num*>*) →* void};
-    #t22.{core::Set::addAll}(numSet2){(core::Iterable<core::num*>*) →* void};
+    #t22.{core::Set::addAll}{Invariant}(iterableIntSet);
+    #t22.{core::Set::addAll}{Invariant}(iterableNumSet1);
+    #t22.{core::Set::addAll}{Invariant}(iterableNumSet2);
+    #t22.{core::Set::addAll}{Invariant}(intSet);
+    #t22.{core::Set::addAll}{Invariant}(numSet1);
+    #t22.{core::Set::addAll}{Invariant}(numSet2);
   } =>#t22;
-  self::expect(core::List::generate<core::num*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(){() →* core::Set<core::num*>*}, set2);
+  self::expect(core::List::generate<core::num*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(), set2);
   core::Set<core::int*>* set3 = block {
     final core::Set<core::int*>* #t27 = col::LinkedHashSet::•<core::int*>();
     final core::Iterable<dynamic>* #t28 = dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t28 == null))
+    if(!#t28.{core::Object::==}(null))
       for (final dynamic #t29 in #t28) {
         final core::int* #t30 = #t29 as{TypeError} core::int*;
-        #t27.{core::Set::add}(#t30){(core::int*) →* core::bool*};
+        #t27.{core::Set::add}{Invariant}(#t30);
       }
     final core::Iterable<dynamic>* #t31 = dynamicSet2 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t31 == null))
+    if(!#t31.{core::Object::==}(null))
       for (final dynamic #t32 in #t31) {
         final core::int* #t33 = #t32 as{TypeError} core::int*;
-        #t27.{core::Set::add}(#t33){(core::int*) →* core::bool*};
+        #t27.{core::Set::add}{Invariant}(#t33);
       }
     final core::Iterable<core::int*>* #t34 = iterableIntSet;
-    if(!(#t34 == null))
-      #t27.{core::Set::addAll}(#t34){(core::Iterable<core::int*>*) →* void};
+    if(!#t34.{core::Object::==}(null))
+      #t27.{core::Set::addAll}{Invariant}(#t34);
     final core::Iterable<dynamic>* #t35 = iterableNumSet1;
-    if(!(#t35 == null))
+    if(!#t35.{core::Object::==}(null))
       for (final dynamic #t36 in #t35) {
         final core::int* #t37 = #t36 as{TypeError} core::int*;
-        #t27.{core::Set::add}(#t37){(core::int*) →* core::bool*};
+        #t27.{core::Set::add}{Invariant}(#t37);
       }
     final core::Iterable<dynamic>* #t38 = iterableNumSet2;
-    if(!(#t38 == null))
+    if(!#t38.{core::Object::==}(null))
       for (final dynamic #t39 in #t38) {
         final core::int* #t40 = #t39 as{TypeError} core::int*;
-        #t27.{core::Set::add}(#t40){(core::int*) →* core::bool*};
+        #t27.{core::Set::add}{Invariant}(#t40);
       }
     final core::Iterable<core::int*>* #t41 = intSet;
-    if(!(#t41 == null))
-      #t27.{core::Set::addAll}(#t41){(core::Iterable<core::int*>*) →* void};
+    if(!#t41.{core::Object::==}(null))
+      #t27.{core::Set::addAll}{Invariant}(#t41);
     final core::Iterable<dynamic>* #t42 = numSet1;
-    if(!(#t42 == null))
+    if(!#t42.{core::Object::==}(null))
       for (final dynamic #t43 in #t42) {
         final core::int* #t44 = #t43 as{TypeError} core::int*;
-        #t27.{core::Set::add}(#t44){(core::int*) →* core::bool*};
+        #t27.{core::Set::add}{Invariant}(#t44);
       }
     final core::Iterable<dynamic>* #t45 = numSet2;
-    if(!(#t45 == null))
+    if(!#t45.{core::Object::==}(null))
       for (final dynamic #t46 in #t45) {
         final core::int* #t47 = #t46 as{TypeError} core::int*;
-        #t27.{core::Set::add}(#t47){(core::int*) →* core::bool*};
+        #t27.{core::Set::add}{Invariant}(#t47);
       }
   } =>#t27;
-  self::expect(core::List::generate<core::int*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(){() →* core::Set<core::int*>*}, set3);
+  self::expect(core::List::generate<core::int*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(), set3);
   core::Set<core::num*>* set4 = block {
     final core::Set<core::num*>* #t48 = col::LinkedHashSet::•<core::num*>();
     final core::Iterable<dynamic>* #t49 = dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t49 == null))
+    if(!#t49.{core::Object::==}(null))
       for (final dynamic #t50 in #t49) {
         final core::num* #t51 = #t50 as{TypeError} core::num*;
-        #t48.{core::Set::add}(#t51){(core::num*) →* core::bool*};
+        #t48.{core::Set::add}{Invariant}(#t51);
       }
     final core::Iterable<dynamic>* #t52 = dynamicSet2 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t52 == null))
+    if(!#t52.{core::Object::==}(null))
       for (final dynamic #t53 in #t52) {
         final core::num* #t54 = #t53 as{TypeError} core::num*;
-        #t48.{core::Set::add}(#t54){(core::num*) →* core::bool*};
+        #t48.{core::Set::add}{Invariant}(#t54);
       }
     final core::Iterable<core::num*>* #t55 = iterableIntSet;
-    if(!(#t55 == null))
-      #t48.{core::Set::addAll}(#t55){(core::Iterable<core::num*>*) →* void};
+    if(!#t55.{core::Object::==}(null))
+      #t48.{core::Set::addAll}{Invariant}(#t55);
     final core::Iterable<core::num*>* #t56 = iterableNumSet1;
-    if(!(#t56 == null))
-      #t48.{core::Set::addAll}(#t56){(core::Iterable<core::num*>*) →* void};
+    if(!#t56.{core::Object::==}(null))
+      #t48.{core::Set::addAll}{Invariant}(#t56);
     final core::Iterable<core::num*>* #t57 = iterableNumSet2;
-    if(!(#t57 == null))
-      #t48.{core::Set::addAll}(#t57){(core::Iterable<core::num*>*) →* void};
+    if(!#t57.{core::Object::==}(null))
+      #t48.{core::Set::addAll}{Invariant}(#t57);
     final core::Iterable<core::num*>* #t58 = intSet;
-    if(!(#t58 == null))
-      #t48.{core::Set::addAll}(#t58){(core::Iterable<core::num*>*) →* void};
+    if(!#t58.{core::Object::==}(null))
+      #t48.{core::Set::addAll}{Invariant}(#t58);
     final core::Iterable<core::num*>* #t59 = numSet1;
-    if(!(#t59 == null))
-      #t48.{core::Set::addAll}(#t59){(core::Iterable<core::num*>*) →* void};
+    if(!#t59.{core::Object::==}(null))
+      #t48.{core::Set::addAll}{Invariant}(#t59);
     final core::Iterable<core::num*>* #t60 = numSet2;
-    if(!(#t60 == null))
-      #t48.{core::Set::addAll}(#t60){(core::Iterable<core::num*>*) →* void};
+    if(!#t60.{core::Object::==}(null))
+      #t48.{core::Set::addAll}{Invariant}(#t60);
   } =>#t48;
-  self::expect(core::List::generate<core::num*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(){() →* core::Set<core::num*>*}, set4);
+  self::expect(core::List::generate<core::num*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(), set4);
 }
 static method main() → dynamic {
   self::useAddAll();
 }
 static method expect(core::Set<dynamic>* set1, core::Set<dynamic>* set2) → void {
-  if(!(set1.{_in::EfficientLengthIterable::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} set2.{_in::EfficientLengthIterable::length}{core::int*})) {
-    throw "Unexpected length. Expected ${set1.{_in::EfficientLengthIterable::length}{core::int*}}, actual ${set2.{_in::EfficientLengthIterable::length}{core::int*}}.";
+  if(!set1.{_in::EfficientLengthIterable::length}.{core::num::==}(set2.{_in::EfficientLengthIterable::length})) {
+    throw "Unexpected length. Expected ${set1.{_in::EfficientLengthIterable::length}}, actual ${set2.{_in::EfficientLengthIterable::length}}.";
   }
   for (dynamic element in set1) {
-    if(!set2.{core::Set::contains}(element){(core::Object*) →* core::bool*}) {
+    if(!set2.{core::Set::contains}(element)) {
       throw "Element ${element} not found. Expected ${set1}, actual ${set2}.";
     }
   }
diff --git a/pkg/front_end/testcases/unified_collections/set_add_all.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/set_add_all.dart.weak.transformed.expect
index 9049e14..b8b398a 100644
--- a/pkg/front_end/testcases/unified_collections/set_add_all.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/set_add_all.dart.weak.transformed.expect
@@ -7,51 +7,51 @@
 static method useAddAll() → void {
   dynamic dynamicSet1 = block {
     final core::Set<core::int*>* #t1 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t1.{core::Set::add}(0){(core::int*) →* core::bool*};
-    #t1.{core::Set::add}(1){(core::int*) →* core::bool*};
-    #t1.{core::Set::add}(2){(core::int*) →* core::bool*};
+    #t1.{core::Set::add}{Invariant}(0);
+    #t1.{core::Set::add}{Invariant}(1);
+    #t1.{core::Set::add}{Invariant}(2);
   } =>#t1;
   dynamic dynamicSet2 = block {
     final core::Set<core::num*>* #t2 = new col::_CompactLinkedHashSet::•<core::num*>();
-    #t2.{core::Set::add}(3){(core::num*) →* core::bool*};
-    #t2.{core::Set::add}(4){(core::num*) →* core::bool*};
-    #t2.{core::Set::add}(5){(core::num*) →* core::bool*};
+    #t2.{core::Set::add}{Invariant}(3);
+    #t2.{core::Set::add}{Invariant}(4);
+    #t2.{core::Set::add}{Invariant}(5);
   } =>#t2;
   core::Iterable<core::int*>* iterableIntSet = block {
     final core::Set<core::int*>* #t3 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t3.{core::Set::add}(6){(core::int*) →* core::bool*};
-    #t3.{core::Set::add}(7){(core::int*) →* core::bool*};
-    #t3.{core::Set::add}(8){(core::int*) →* core::bool*};
+    #t3.{core::Set::add}{Invariant}(6);
+    #t3.{core::Set::add}{Invariant}(7);
+    #t3.{core::Set::add}{Invariant}(8);
   } =>#t3;
   core::Iterable<core::num*>* iterableNumSet1 = block {
     final core::Set<core::int*>* #t4 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t4.{core::Set::add}(9){(core::int*) →* core::bool*};
-    #t4.{core::Set::add}(10){(core::int*) →* core::bool*};
-    #t4.{core::Set::add}(11){(core::int*) →* core::bool*};
+    #t4.{core::Set::add}{Invariant}(9);
+    #t4.{core::Set::add}{Invariant}(10);
+    #t4.{core::Set::add}{Invariant}(11);
   } =>#t4;
   core::Iterable<core::num*>* iterableNumSet2 = block {
     final core::Set<core::num*>* #t5 = new col::_CompactLinkedHashSet::•<core::num*>();
-    #t5.{core::Set::add}(12){(core::num*) →* core::bool*};
-    #t5.{core::Set::add}(13){(core::num*) →* core::bool*};
-    #t5.{core::Set::add}(14){(core::num*) →* core::bool*};
+    #t5.{core::Set::add}{Invariant}(12);
+    #t5.{core::Set::add}{Invariant}(13);
+    #t5.{core::Set::add}{Invariant}(14);
   } =>#t5;
   core::Set<core::int*>* intSet = block {
     final core::Set<core::int*>* #t6 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t6.{core::Set::add}(15){(core::int*) →* core::bool*};
-    #t6.{core::Set::add}(16){(core::int*) →* core::bool*};
-    #t6.{core::Set::add}(17){(core::int*) →* core::bool*};
+    #t6.{core::Set::add}{Invariant}(15);
+    #t6.{core::Set::add}{Invariant}(16);
+    #t6.{core::Set::add}{Invariant}(17);
   } =>#t6;
   core::Set<core::num*>* numSet1 = block {
     final core::Set<core::int*>* #t7 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t7.{core::Set::add}(18){(core::int*) →* core::bool*};
-    #t7.{core::Set::add}(19){(core::int*) →* core::bool*};
-    #t7.{core::Set::add}(20){(core::int*) →* core::bool*};
+    #t7.{core::Set::add}{Invariant}(18);
+    #t7.{core::Set::add}{Invariant}(19);
+    #t7.{core::Set::add}{Invariant}(20);
   } =>#t7;
   core::Set<core::num*>* numSet2 = block {
     final core::Set<core::num*>* #t8 = new col::_CompactLinkedHashSet::•<core::num*>();
-    #t8.{core::Set::add}(21){(core::num*) →* core::bool*};
-    #t8.{core::Set::add}(22){(core::num*) →* core::bool*};
-    #t8.{core::Set::add}(23){(core::num*) →* core::bool*};
+    #t8.{core::Set::add}{Invariant}(21);
+    #t8.{core::Set::add}{Invariant}(22);
+    #t8.{core::Set::add}{Invariant}(23);
   } =>#t8;
   core::Set<core::int*>* set1 = block {
     final core::Set<core::int*>* #t9 = new col::_CompactLinkedHashSet::•<core::int*>();
@@ -61,7 +61,7 @@
         final dynamic #t10 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t11 = #t10 as{TypeError} core::int*;
-          #t9.{core::Set::add}(#t11){(core::int*) →* core::bool*};
+          #t9.{core::Set::add}{Invariant}(#t11);
         }
       }
     }
@@ -71,18 +71,18 @@
         final dynamic #t12 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t13 = #t12 as{TypeError} core::int*;
-          #t9.{core::Set::add}(#t13){(core::int*) →* core::bool*};
+          #t9.{core::Set::add}{Invariant}(#t13);
         }
       }
     }
-    #t9.{core::Set::addAll}(iterableIntSet){(core::Iterable<core::int*>*) →* void};
+    #t9.{core::Set::addAll}{Invariant}(iterableIntSet);
     {
       core::Iterator<core::num*>* :sync-for-iterator = iterableNumSet1.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t14 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t15 = #t14 as{TypeError} core::int*;
-          #t9.{core::Set::add}(#t15){(core::int*) →* core::bool*};
+          #t9.{core::Set::add}{Invariant}(#t15);
         }
       }
     }
@@ -92,18 +92,18 @@
         final dynamic #t16 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t17 = #t16 as{TypeError} core::int*;
-          #t9.{core::Set::add}(#t17){(core::int*) →* core::bool*};
+          #t9.{core::Set::add}{Invariant}(#t17);
         }
       }
     }
-    #t9.{core::Set::addAll}(intSet){(core::Iterable<core::int*>*) →* void};
+    #t9.{core::Set::addAll}{Invariant}(intSet);
     {
       core::Iterator<core::num*>* :sync-for-iterator = numSet1.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t18 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t19 = #t18 as{TypeError} core::int*;
-          #t9.{core::Set::add}(#t19){(core::int*) →* core::bool*};
+          #t9.{core::Set::add}{Invariant}(#t19);
         }
       }
     }
@@ -113,12 +113,12 @@
         final dynamic #t20 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t21 = #t20 as{TypeError} core::int*;
-          #t9.{core::Set::add}(#t21){(core::int*) →* core::bool*};
+          #t9.{core::Set::add}{Invariant}(#t21);
         }
       }
     }
   } =>#t9;
-  self::expect(core::_GrowableList::generate<core::int*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(){() →* core::Set<core::int*>*}, set1);
+  self::expect(core::_GrowableList::generate<core::int*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(), set1);
   core::Set<core::num*>* set2 = block {
     final core::Set<core::num*>* #t22 = new col::_CompactLinkedHashSet::•<core::num*>();
     {
@@ -127,7 +127,7 @@
         final dynamic #t23 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num* #t24 = #t23 as{TypeError} core::num*;
-          #t22.{core::Set::add}(#t24){(core::num*) →* core::bool*};
+          #t22.{core::Set::add}{Invariant}(#t24);
         }
       }
     }
@@ -137,152 +137,152 @@
         final dynamic #t25 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num* #t26 = #t25 as{TypeError} core::num*;
-          #t22.{core::Set::add}(#t26){(core::num*) →* core::bool*};
+          #t22.{core::Set::add}{Invariant}(#t26);
         }
       }
     }
-    #t22.{core::Set::addAll}(iterableIntSet){(core::Iterable<core::num*>*) →* void};
-    #t22.{core::Set::addAll}(iterableNumSet1){(core::Iterable<core::num*>*) →* void};
-    #t22.{core::Set::addAll}(iterableNumSet2){(core::Iterable<core::num*>*) →* void};
-    #t22.{core::Set::addAll}(intSet){(core::Iterable<core::num*>*) →* void};
-    #t22.{core::Set::addAll}(numSet1){(core::Iterable<core::num*>*) →* void};
-    #t22.{core::Set::addAll}(numSet2){(core::Iterable<core::num*>*) →* void};
+    #t22.{core::Set::addAll}{Invariant}(iterableIntSet);
+    #t22.{core::Set::addAll}{Invariant}(iterableNumSet1);
+    #t22.{core::Set::addAll}{Invariant}(iterableNumSet2);
+    #t22.{core::Set::addAll}{Invariant}(intSet);
+    #t22.{core::Set::addAll}{Invariant}(numSet1);
+    #t22.{core::Set::addAll}{Invariant}(numSet2);
   } =>#t22;
-  self::expect(core::_GrowableList::generate<core::num*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(){() →* core::Set<core::num*>*}, set2);
+  self::expect(core::_GrowableList::generate<core::num*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(), set2);
   core::Set<core::int*>* set3 = block {
     final core::Set<core::int*>* #t27 = new col::_CompactLinkedHashSet::•<core::int*>();
     final core::Iterable<dynamic>* #t28 = dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t28 == null)) {
+    if(!#t28.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t28.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t29 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t30 = #t29 as{TypeError} core::int*;
-          #t27.{core::Set::add}(#t30){(core::int*) →* core::bool*};
+          #t27.{core::Set::add}{Invariant}(#t30);
         }
       }
     }
     final core::Iterable<dynamic>* #t31 = dynamicSet2 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t31 == null)) {
+    if(!#t31.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t31.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t32 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t33 = #t32 as{TypeError} core::int*;
-          #t27.{core::Set::add}(#t33){(core::int*) →* core::bool*};
+          #t27.{core::Set::add}{Invariant}(#t33);
         }
       }
     }
     final core::Iterable<core::int*>* #t34 = iterableIntSet;
-    if(!(#t34 == null))
-      #t27.{core::Set::addAll}(#t34){(core::Iterable<core::int*>*) →* void};
+    if(!#t34.{core::Object::==}(null))
+      #t27.{core::Set::addAll}{Invariant}(#t34);
     final core::Iterable<dynamic>* #t35 = iterableNumSet1;
-    if(!(#t35 == null)) {
+    if(!#t35.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t35.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t36 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t37 = #t36 as{TypeError} core::int*;
-          #t27.{core::Set::add}(#t37){(core::int*) →* core::bool*};
+          #t27.{core::Set::add}{Invariant}(#t37);
         }
       }
     }
     final core::Iterable<dynamic>* #t38 = iterableNumSet2;
-    if(!(#t38 == null)) {
+    if(!#t38.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t38.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t39 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t40 = #t39 as{TypeError} core::int*;
-          #t27.{core::Set::add}(#t40){(core::int*) →* core::bool*};
+          #t27.{core::Set::add}{Invariant}(#t40);
         }
       }
     }
     final core::Iterable<core::int*>* #t41 = intSet;
-    if(!(#t41 == null))
-      #t27.{core::Set::addAll}(#t41){(core::Iterable<core::int*>*) →* void};
+    if(!#t41.{core::Object::==}(null))
+      #t27.{core::Set::addAll}{Invariant}(#t41);
     final core::Iterable<dynamic>* #t42 = numSet1;
-    if(!(#t42 == null)) {
+    if(!#t42.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t42.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t43 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t44 = #t43 as{TypeError} core::int*;
-          #t27.{core::Set::add}(#t44){(core::int*) →* core::bool*};
+          #t27.{core::Set::add}{Invariant}(#t44);
         }
       }
     }
     final core::Iterable<dynamic>* #t45 = numSet2;
-    if(!(#t45 == null)) {
+    if(!#t45.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t45.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t46 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int* #t47 = #t46 as{TypeError} core::int*;
-          #t27.{core::Set::add}(#t47){(core::int*) →* core::bool*};
+          #t27.{core::Set::add}{Invariant}(#t47);
         }
       }
     }
   } =>#t27;
-  self::expect(core::_GrowableList::generate<core::int*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(){() →* core::Set<core::int*>*}, set3);
+  self::expect(core::_GrowableList::generate<core::int*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(), set3);
   core::Set<core::num*>* set4 = block {
     final core::Set<core::num*>* #t48 = new col::_CompactLinkedHashSet::•<core::num*>();
     final core::Iterable<dynamic>* #t49 = dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t49 == null)) {
+    if(!#t49.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t49.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t50 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num* #t51 = #t50 as{TypeError} core::num*;
-          #t48.{core::Set::add}(#t51){(core::num*) →* core::bool*};
+          #t48.{core::Set::add}{Invariant}(#t51);
         }
       }
     }
     final core::Iterable<dynamic>* #t52 = dynamicSet2 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-    if(!(#t52 == null)) {
+    if(!#t52.{core::Object::==}(null)) {
       core::Iterator<dynamic>* :sync-for-iterator = #t52.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t53 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num* #t54 = #t53 as{TypeError} core::num*;
-          #t48.{core::Set::add}(#t54){(core::num*) →* core::bool*};
+          #t48.{core::Set::add}{Invariant}(#t54);
         }
       }
     }
     final core::Iterable<core::num*>* #t55 = iterableIntSet;
-    if(!(#t55 == null))
-      #t48.{core::Set::addAll}(#t55){(core::Iterable<core::num*>*) →* void};
+    if(!#t55.{core::Object::==}(null))
+      #t48.{core::Set::addAll}{Invariant}(#t55);
     final core::Iterable<core::num*>* #t56 = iterableNumSet1;
-    if(!(#t56 == null))
-      #t48.{core::Set::addAll}(#t56){(core::Iterable<core::num*>*) →* void};
+    if(!#t56.{core::Object::==}(null))
+      #t48.{core::Set::addAll}{Invariant}(#t56);
     final core::Iterable<core::num*>* #t57 = iterableNumSet2;
-    if(!(#t57 == null))
-      #t48.{core::Set::addAll}(#t57){(core::Iterable<core::num*>*) →* void};
+    if(!#t57.{core::Object::==}(null))
+      #t48.{core::Set::addAll}{Invariant}(#t57);
     final core::Iterable<core::num*>* #t58 = intSet;
-    if(!(#t58 == null))
-      #t48.{core::Set::addAll}(#t58){(core::Iterable<core::num*>*) →* void};
+    if(!#t58.{core::Object::==}(null))
+      #t48.{core::Set::addAll}{Invariant}(#t58);
     final core::Iterable<core::num*>* #t59 = numSet1;
-    if(!(#t59 == null))
-      #t48.{core::Set::addAll}(#t59){(core::Iterable<core::num*>*) →* void};
+    if(!#t59.{core::Object::==}(null))
+      #t48.{core::Set::addAll}{Invariant}(#t59);
     final core::Iterable<core::num*>* #t60 = numSet2;
-    if(!(#t60 == null))
-      #t48.{core::Set::addAll}(#t60){(core::Iterable<core::num*>*) →* void};
+    if(!#t60.{core::Object::==}(null))
+      #t48.{core::Set::addAll}{Invariant}(#t60);
   } =>#t48;
-  self::expect(core::_GrowableList::generate<core::num*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(){() →* core::Set<core::num*>*}, set4);
+  self::expect(core::_GrowableList::generate<core::num*>(24, (core::int* i) → core::int* => i).{core::Iterable::toSet}(), set4);
 }
 static method main() → dynamic {
   self::useAddAll();
 }
 static method expect(core::Set<dynamic>* set1, core::Set<dynamic>* set2) → void {
-  if(!(set1.{_in::EfficientLengthIterable::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} set2.{_in::EfficientLengthIterable::length}{core::int*})) {
-    throw "Unexpected length. Expected ${set1.{_in::EfficientLengthIterable::length}{core::int*}}, actual ${set2.{_in::EfficientLengthIterable::length}{core::int*}}.";
+  if(!set1.{_in::EfficientLengthIterable::length}.{core::num::==}(set2.{_in::EfficientLengthIterable::length})) {
+    throw "Unexpected length. Expected ${set1.{_in::EfficientLengthIterable::length}}, actual ${set2.{_in::EfficientLengthIterable::length}}.";
   }
   {
     core::Iterator<dynamic>* :sync-for-iterator = set1.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       dynamic element = :sync-for-iterator.{core::Iterator::current};
       {
-        if(!set2.{core::Set::contains}(element){(core::Object*) →* core::bool*}) {
+        if(!set2.{core::Set::contains}(element)) {
           throw "Element ${element} not found. Expected ${set1}, actual ${set2}.";
         }
       }
diff --git a/pkg/front_end/testcases/unified_collections/set_add_all_nnbd.dart.weak.expect b/pkg/front_end/testcases/unified_collections/set_add_all_nnbd.dart.weak.expect
index 867c99e..2ade2ee 100644
--- a/pkg/front_end/testcases/unified_collections/set_add_all_nnbd.dart.weak.expect
+++ b/pkg/front_end/testcases/unified_collections/set_add_all_nnbd.dart.weak.expect
@@ -7,169 +7,169 @@
 static method useAddAll() → void {
   dynamic dynamicSet1 = block {
     final core::Set<core::int> #t1 = col::LinkedHashSet::•<core::int>();
-    #t1.{core::Set::add}(0){(core::int) → core::bool};
-    #t1.{core::Set::add}(1){(core::int) → core::bool};
-    #t1.{core::Set::add}(2){(core::int) → core::bool};
+    #t1.{core::Set::add}{Invariant}(0);
+    #t1.{core::Set::add}{Invariant}(1);
+    #t1.{core::Set::add}{Invariant}(2);
   } =>#t1;
   dynamic dynamicSet2 = block {
     final core::Set<core::num> #t2 = col::LinkedHashSet::•<core::num>();
-    #t2.{core::Set::add}(3){(core::num) → core::bool};
-    #t2.{core::Set::add}(4){(core::num) → core::bool};
-    #t2.{core::Set::add}(5){(core::num) → core::bool};
+    #t2.{core::Set::add}{Invariant}(3);
+    #t2.{core::Set::add}{Invariant}(4);
+    #t2.{core::Set::add}{Invariant}(5);
   } =>#t2;
   dynamic dynamicSet3 = block {
     final core::Set<core::int?> #t3 = col::LinkedHashSet::•<core::int?>();
-    #t3.{core::Set::add}(6){(core::int?) → core::bool};
-    #t3.{core::Set::add}(7){(core::int?) → core::bool};
-    #t3.{core::Set::add}(8){(core::int?) → core::bool};
+    #t3.{core::Set::add}{Invariant}(6);
+    #t3.{core::Set::add}{Invariant}(7);
+    #t3.{core::Set::add}{Invariant}(8);
   } =>#t3;
   core::Iterable<core::int> iterableIntSet = block {
     final core::Set<core::int> #t4 = col::LinkedHashSet::•<core::int>();
-    #t4.{core::Set::add}(9){(core::int) → core::bool};
-    #t4.{core::Set::add}(10){(core::int) → core::bool};
-    #t4.{core::Set::add}(11){(core::int) → core::bool};
+    #t4.{core::Set::add}{Invariant}(9);
+    #t4.{core::Set::add}{Invariant}(10);
+    #t4.{core::Set::add}{Invariant}(11);
   } =>#t4;
   core::Set<core::int> intSet = block {
     final core::Set<core::int> #t5 = col::LinkedHashSet::•<core::int>();
-    #t5.{core::Set::add}(12){(core::int) → core::bool};
-    #t5.{core::Set::add}(13){(core::int) → core::bool};
-    #t5.{core::Set::add}(14){(core::int) → core::bool};
+    #t5.{core::Set::add}{Invariant}(12);
+    #t5.{core::Set::add}{Invariant}(13);
+    #t5.{core::Set::add}{Invariant}(14);
   } =>#t5;
   core::Set<core::int> set1 = block {
     final core::Set<core::int> #t6 = col::LinkedHashSet::•<core::int>();
     for (final dynamic #t7 in dynamicSet1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       final core::int #t8 = #t7 as{TypeError,ForNonNullableByDefault} core::int;
-      #t6.{core::Set::add}(#t8){(core::int) → core::bool};
+      #t6.{core::Set::add}{Invariant}(#t8);
     }
     for (final dynamic #t9 in dynamicSet2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       final core::int #t10 = #t9 as{TypeError,ForNonNullableByDefault} core::int;
-      #t6.{core::Set::add}(#t10){(core::int) → core::bool};
+      #t6.{core::Set::add}{Invariant}(#t10);
     }
     for (final dynamic #t11 in dynamicSet3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       final core::int #t12 = #t11 as{TypeError,ForNonNullableByDefault} core::int;
-      #t6.{core::Set::add}(#t12){(core::int) → core::bool};
+      #t6.{core::Set::add}{Invariant}(#t12);
     }
-    #t6.{core::Set::addAll}(iterableIntSet){(core::Iterable<core::int>) → void};
-    #t6.{core::Set::addAll}(intSet){(core::Iterable<core::int>) → void};
+    #t6.{core::Set::addAll}{Invariant}(iterableIntSet);
+    #t6.{core::Set::addAll}{Invariant}(intSet);
   } =>#t6;
-  self::expect(core::List::generate<core::int>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::int>}, set1);
+  self::expect(core::List::generate<core::int>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(), set1);
   core::Set<core::num> set2 = block {
     final core::Set<core::num> #t13 = col::LinkedHashSet::•<core::num>();
     for (final dynamic #t14 in dynamicSet1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       final core::num #t15 = #t14 as{TypeError,ForNonNullableByDefault} core::num;
-      #t13.{core::Set::add}(#t15){(core::num) → core::bool};
+      #t13.{core::Set::add}{Invariant}(#t15);
     }
     for (final dynamic #t16 in dynamicSet2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       final core::num #t17 = #t16 as{TypeError,ForNonNullableByDefault} core::num;
-      #t13.{core::Set::add}(#t17){(core::num) → core::bool};
+      #t13.{core::Set::add}{Invariant}(#t17);
     }
     for (final dynamic #t18 in dynamicSet3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
       final core::num #t19 = #t18 as{TypeError,ForNonNullableByDefault} core::num;
-      #t13.{core::Set::add}(#t19){(core::num) → core::bool};
+      #t13.{core::Set::add}{Invariant}(#t19);
     }
-    #t13.{core::Set::addAll}(iterableIntSet){(core::Iterable<core::num>) → void};
-    #t13.{core::Set::addAll}(intSet){(core::Iterable<core::num>) → void};
+    #t13.{core::Set::addAll}{Invariant}(iterableIntSet);
+    #t13.{core::Set::addAll}{Invariant}(intSet);
   } =>#t13;
-  self::expect(core::List::generate<core::num>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::num>}, set2);
+  self::expect(core::List::generate<core::num>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(), set2);
 }
 static method useAddAllNullable() → void {
   dynamic dynamicSet1 = block {
     final core::Set<core::int> #t20 = col::LinkedHashSet::•<core::int>();
-    #t20.{core::Set::add}(0){(core::int) → core::bool};
-    #t20.{core::Set::add}(1){(core::int) → core::bool};
-    #t20.{core::Set::add}(2){(core::int) → core::bool};
+    #t20.{core::Set::add}{Invariant}(0);
+    #t20.{core::Set::add}{Invariant}(1);
+    #t20.{core::Set::add}{Invariant}(2);
   } =>#t20;
   dynamic dynamicSet2 = block {
     final core::Set<core::num> #t21 = col::LinkedHashSet::•<core::num>();
-    #t21.{core::Set::add}(3){(core::num) → core::bool};
-    #t21.{core::Set::add}(4){(core::num) → core::bool};
-    #t21.{core::Set::add}(5){(core::num) → core::bool};
+    #t21.{core::Set::add}{Invariant}(3);
+    #t21.{core::Set::add}{Invariant}(4);
+    #t21.{core::Set::add}{Invariant}(5);
   } =>#t21;
   dynamic dynamicSet3 = block {
     final core::Set<core::int?> #t22 = col::LinkedHashSet::•<core::int?>();
-    #t22.{core::Set::add}(6){(core::int?) → core::bool};
-    #t22.{core::Set::add}(7){(core::int?) → core::bool};
-    #t22.{core::Set::add}(8){(core::int?) → core::bool};
+    #t22.{core::Set::add}{Invariant}(6);
+    #t22.{core::Set::add}{Invariant}(7);
+    #t22.{core::Set::add}{Invariant}(8);
   } =>#t22;
   core::Iterable<core::int>? iterableIntSet = true ?{core::Set<core::int>?} block {
     final core::Set<core::int> #t23 = col::LinkedHashSet::•<core::int>();
-    #t23.{core::Set::add}(9){(core::int) → core::bool};
-    #t23.{core::Set::add}(10){(core::int) → core::bool};
-    #t23.{core::Set::add}(11){(core::int) → core::bool};
+    #t23.{core::Set::add}{Invariant}(9);
+    #t23.{core::Set::add}{Invariant}(10);
+    #t23.{core::Set::add}{Invariant}(11);
   } =>#t23 : null;
   core::Set<core::int>? intSet = true ?{core::Set<core::int>?} block {
     final core::Set<core::int> #t24 = col::LinkedHashSet::•<core::int>();
-    #t24.{core::Set::add}(12){(core::int) → core::bool};
-    #t24.{core::Set::add}(13){(core::int) → core::bool};
-    #t24.{core::Set::add}(14){(core::int) → core::bool};
+    #t24.{core::Set::add}{Invariant}(12);
+    #t24.{core::Set::add}{Invariant}(13);
+    #t24.{core::Set::add}{Invariant}(14);
   } =>#t24 : null;
   core::Set<core::int> set1 = block {
     final core::Set<core::int> #t25 = col::LinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t26 = dynamicSet1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t26 == null))
+    if(!#t26.{core::Object::==}(null))
       for (final dynamic #t27 in #t26{core::Iterable<dynamic>}) {
         final core::int #t28 = #t27 as{TypeError,ForNonNullableByDefault} core::int;
-        #t25.{core::Set::add}(#t28){(core::int) → core::bool};
+        #t25.{core::Set::add}{Invariant}(#t28);
       }
     final core::Iterable<dynamic>? #t29 = dynamicSet2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t29 == null))
+    if(!#t29.{core::Object::==}(null))
       for (final dynamic #t30 in #t29{core::Iterable<dynamic>}) {
         final core::int #t31 = #t30 as{TypeError,ForNonNullableByDefault} core::int;
-        #t25.{core::Set::add}(#t31){(core::int) → core::bool};
+        #t25.{core::Set::add}{Invariant}(#t31);
       }
     final core::Iterable<dynamic>? #t32 = dynamicSet3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t32 == null))
+    if(!#t32.{core::Object::==}(null))
       for (final dynamic #t33 in #t32{core::Iterable<dynamic>}) {
         final core::int #t34 = #t33 as{TypeError,ForNonNullableByDefault} core::int;
-        #t25.{core::Set::add}(#t34){(core::int) → core::bool};
+        #t25.{core::Set::add}{Invariant}(#t34);
       }
     final core::Iterable<core::int>? #t35 = iterableIntSet;
-    if(!(#t35 == null))
-      #t25.{core::Set::addAll}(#t35{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+    if(!#t35.{core::Object::==}(null))
+      #t25.{core::Set::addAll}{Invariant}(#t35{core::Iterable<core::int>});
     final core::Iterable<core::int>? #t36 = intSet;
-    if(!(#t36 == null))
-      #t25.{core::Set::addAll}(#t36{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+    if(!#t36.{core::Object::==}(null))
+      #t25.{core::Set::addAll}{Invariant}(#t36{core::Iterable<core::int>});
   } =>#t25;
-  self::expect(core::List::generate<core::int>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::int>}, set1);
+  self::expect(core::List::generate<core::int>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(), set1);
   core::Set<core::num> set2 = block {
     final core::Set<core::num> #t37 = col::LinkedHashSet::•<core::num>();
     final core::Iterable<dynamic>? #t38 = dynamicSet1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t38 == null))
+    if(!#t38.{core::Object::==}(null))
       for (final dynamic #t39 in #t38{core::Iterable<dynamic>}) {
         final core::num #t40 = #t39 as{TypeError,ForNonNullableByDefault} core::num;
-        #t37.{core::Set::add}(#t40){(core::num) → core::bool};
+        #t37.{core::Set::add}{Invariant}(#t40);
       }
     final core::Iterable<dynamic>? #t41 = dynamicSet2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t41 == null))
+    if(!#t41.{core::Object::==}(null))
       for (final dynamic #t42 in #t41{core::Iterable<dynamic>}) {
         final core::num #t43 = #t42 as{TypeError,ForNonNullableByDefault} core::num;
-        #t37.{core::Set::add}(#t43){(core::num) → core::bool};
+        #t37.{core::Set::add}{Invariant}(#t43);
       }
     final core::Iterable<dynamic>? #t44 = dynamicSet3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t44 == null))
+    if(!#t44.{core::Object::==}(null))
       for (final dynamic #t45 in #t44{core::Iterable<dynamic>}) {
         final core::num #t46 = #t45 as{TypeError,ForNonNullableByDefault} core::num;
-        #t37.{core::Set::add}(#t46){(core::num) → core::bool};
+        #t37.{core::Set::add}{Invariant}(#t46);
       }
     final core::Iterable<core::num>? #t47 = iterableIntSet;
-    if(!(#t47 == null))
-      #t37.{core::Set::addAll}(#t47{core::Iterable<core::num>}){(core::Iterable<core::num>) → void};
+    if(!#t47.{core::Object::==}(null))
+      #t37.{core::Set::addAll}{Invariant}(#t47{core::Iterable<core::num>});
     final core::Iterable<core::num>? #t48 = intSet;
-    if(!(#t48 == null))
-      #t37.{core::Set::addAll}(#t48{core::Iterable<core::num>}){(core::Iterable<core::num>) → void};
+    if(!#t48.{core::Object::==}(null))
+      #t37.{core::Set::addAll}{Invariant}(#t48{core::Iterable<core::num>});
   } =>#t37;
-  self::expect(core::List::generate<core::num>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::num>}, set2);
+  self::expect(core::List::generate<core::num>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(), set2);
 }
 static method main() → dynamic {
   self::useAddAll();
   self::useAddAllNullable();
 }
 static method expect(core::Set<dynamic> set1, core::Set<dynamic> set2) → void {
-  if(!(set1.{_in::EfficientLengthIterable::length}{core::int} =={core::num::==}{(core::Object) → core::bool} set2.{_in::EfficientLengthIterable::length}{core::int})) {
-    throw "Unexpected length. Expected ${set1.{_in::EfficientLengthIterable::length}{core::int}}, actual ${set2.{_in::EfficientLengthIterable::length}{core::int}}.";
+  if(!set1.{_in::EfficientLengthIterable::length}.{core::num::==}(set2.{_in::EfficientLengthIterable::length})) {
+    throw "Unexpected length. Expected ${set1.{_in::EfficientLengthIterable::length}}, actual ${set2.{_in::EfficientLengthIterable::length}}.";
   }
   for (dynamic element in set1) {
-    if(!set2.{core::Set::contains}(element){(core::Object?) → core::bool}) {
+    if(!set2.{core::Set::contains}(element)) {
       throw "Element ${element} not found. Expected ${set1}, actual ${set2}.";
     }
   }
diff --git a/pkg/front_end/testcases/unified_collections/set_add_all_nnbd.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/set_add_all_nnbd.dart.weak.transformed.expect
index 0a6d1df..c97ce48 100644
--- a/pkg/front_end/testcases/unified_collections/set_add_all_nnbd.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/set_add_all_nnbd.dart.weak.transformed.expect
@@ -7,33 +7,33 @@
 static method useAddAll() → void {
   dynamic dynamicSet1 = block {
     final core::Set<core::int> #t1 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t1.{core::Set::add}(0){(core::int) → core::bool};
-    #t1.{core::Set::add}(1){(core::int) → core::bool};
-    #t1.{core::Set::add}(2){(core::int) → core::bool};
+    #t1.{core::Set::add}{Invariant}(0);
+    #t1.{core::Set::add}{Invariant}(1);
+    #t1.{core::Set::add}{Invariant}(2);
   } =>#t1;
   dynamic dynamicSet2 = block {
     final core::Set<core::num> #t2 = new col::_CompactLinkedHashSet::•<core::num>();
-    #t2.{core::Set::add}(3){(core::num) → core::bool};
-    #t2.{core::Set::add}(4){(core::num) → core::bool};
-    #t2.{core::Set::add}(5){(core::num) → core::bool};
+    #t2.{core::Set::add}{Invariant}(3);
+    #t2.{core::Set::add}{Invariant}(4);
+    #t2.{core::Set::add}{Invariant}(5);
   } =>#t2;
   dynamic dynamicSet3 = block {
     final core::Set<core::int?> #t3 = new col::_CompactLinkedHashSet::•<core::int?>();
-    #t3.{core::Set::add}(6){(core::int?) → core::bool};
-    #t3.{core::Set::add}(7){(core::int?) → core::bool};
-    #t3.{core::Set::add}(8){(core::int?) → core::bool};
+    #t3.{core::Set::add}{Invariant}(6);
+    #t3.{core::Set::add}{Invariant}(7);
+    #t3.{core::Set::add}{Invariant}(8);
   } =>#t3;
   core::Iterable<core::int> iterableIntSet = block {
     final core::Set<core::int> #t4 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t4.{core::Set::add}(9){(core::int) → core::bool};
-    #t4.{core::Set::add}(10){(core::int) → core::bool};
-    #t4.{core::Set::add}(11){(core::int) → core::bool};
+    #t4.{core::Set::add}{Invariant}(9);
+    #t4.{core::Set::add}{Invariant}(10);
+    #t4.{core::Set::add}{Invariant}(11);
   } =>#t4;
   core::Set<core::int> intSet = block {
     final core::Set<core::int> #t5 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t5.{core::Set::add}(12){(core::int) → core::bool};
-    #t5.{core::Set::add}(13){(core::int) → core::bool};
-    #t5.{core::Set::add}(14){(core::int) → core::bool};
+    #t5.{core::Set::add}{Invariant}(12);
+    #t5.{core::Set::add}{Invariant}(13);
+    #t5.{core::Set::add}{Invariant}(14);
   } =>#t5;
   core::Set<core::int> set1 = block {
     final core::Set<core::int> #t6 = new col::_CompactLinkedHashSet::•<core::int>();
@@ -43,7 +43,7 @@
         final dynamic #t7 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t8 = #t7 as{TypeError,ForNonNullableByDefault} core::int;
-          #t6.{core::Set::add}(#t8){(core::int) → core::bool};
+          #t6.{core::Set::add}{Invariant}(#t8);
         }
       }
     }
@@ -53,7 +53,7 @@
         final dynamic #t9 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t10 = #t9 as{TypeError,ForNonNullableByDefault} core::int;
-          #t6.{core::Set::add}(#t10){(core::int) → core::bool};
+          #t6.{core::Set::add}{Invariant}(#t10);
         }
       }
     }
@@ -63,14 +63,14 @@
         final dynamic #t11 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t12 = #t11 as{TypeError,ForNonNullableByDefault} core::int;
-          #t6.{core::Set::add}(#t12){(core::int) → core::bool};
+          #t6.{core::Set::add}{Invariant}(#t12);
         }
       }
     }
-    #t6.{core::Set::addAll}(iterableIntSet){(core::Iterable<core::int>) → void};
-    #t6.{core::Set::addAll}(intSet){(core::Iterable<core::int>) → void};
+    #t6.{core::Set::addAll}{Invariant}(iterableIntSet);
+    #t6.{core::Set::addAll}{Invariant}(intSet);
   } =>#t6;
-  self::expect(core::_GrowableList::generate<core::int>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::int>}, set1);
+  self::expect(core::_GrowableList::generate<core::int>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(), set1);
   core::Set<core::num> set2 = block {
     final core::Set<core::num> #t13 = new col::_CompactLinkedHashSet::•<core::num>();
     {
@@ -79,7 +79,7 @@
         final dynamic #t14 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num #t15 = #t14 as{TypeError,ForNonNullableByDefault} core::num;
-          #t13.{core::Set::add}(#t15){(core::num) → core::bool};
+          #t13.{core::Set::add}{Invariant}(#t15);
         }
       }
     }
@@ -89,7 +89,7 @@
         final dynamic #t16 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num #t17 = #t16 as{TypeError,ForNonNullableByDefault} core::num;
-          #t13.{core::Set::add}(#t17){(core::num) → core::bool};
+          #t13.{core::Set::add}{Invariant}(#t17);
         }
       }
     }
@@ -99,147 +99,147 @@
         final dynamic #t18 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num #t19 = #t18 as{TypeError,ForNonNullableByDefault} core::num;
-          #t13.{core::Set::add}(#t19){(core::num) → core::bool};
+          #t13.{core::Set::add}{Invariant}(#t19);
         }
       }
     }
-    #t13.{core::Set::addAll}(iterableIntSet){(core::Iterable<core::num>) → void};
-    #t13.{core::Set::addAll}(intSet){(core::Iterable<core::num>) → void};
+    #t13.{core::Set::addAll}{Invariant}(iterableIntSet);
+    #t13.{core::Set::addAll}{Invariant}(intSet);
   } =>#t13;
-  self::expect(core::_GrowableList::generate<core::num>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::num>}, set2);
+  self::expect(core::_GrowableList::generate<core::num>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(), set2);
 }
 static method useAddAllNullable() → void {
   dynamic dynamicSet1 = block {
     final core::Set<core::int> #t20 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t20.{core::Set::add}(0){(core::int) → core::bool};
-    #t20.{core::Set::add}(1){(core::int) → core::bool};
-    #t20.{core::Set::add}(2){(core::int) → core::bool};
+    #t20.{core::Set::add}{Invariant}(0);
+    #t20.{core::Set::add}{Invariant}(1);
+    #t20.{core::Set::add}{Invariant}(2);
   } =>#t20;
   dynamic dynamicSet2 = block {
     final core::Set<core::num> #t21 = new col::_CompactLinkedHashSet::•<core::num>();
-    #t21.{core::Set::add}(3){(core::num) → core::bool};
-    #t21.{core::Set::add}(4){(core::num) → core::bool};
-    #t21.{core::Set::add}(5){(core::num) → core::bool};
+    #t21.{core::Set::add}{Invariant}(3);
+    #t21.{core::Set::add}{Invariant}(4);
+    #t21.{core::Set::add}{Invariant}(5);
   } =>#t21;
   dynamic dynamicSet3 = block {
     final core::Set<core::int?> #t22 = new col::_CompactLinkedHashSet::•<core::int?>();
-    #t22.{core::Set::add}(6){(core::int?) → core::bool};
-    #t22.{core::Set::add}(7){(core::int?) → core::bool};
-    #t22.{core::Set::add}(8){(core::int?) → core::bool};
+    #t22.{core::Set::add}{Invariant}(6);
+    #t22.{core::Set::add}{Invariant}(7);
+    #t22.{core::Set::add}{Invariant}(8);
   } =>#t22;
   core::Iterable<core::int>? iterableIntSet = true ?{core::Set<core::int>?} block {
     final core::Set<core::int> #t23 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t23.{core::Set::add}(9){(core::int) → core::bool};
-    #t23.{core::Set::add}(10){(core::int) → core::bool};
-    #t23.{core::Set::add}(11){(core::int) → core::bool};
+    #t23.{core::Set::add}{Invariant}(9);
+    #t23.{core::Set::add}{Invariant}(10);
+    #t23.{core::Set::add}{Invariant}(11);
   } =>#t23 : null;
   core::Set<core::int>? intSet = true ?{core::Set<core::int>?} block {
     final core::Set<core::int> #t24 = new col::_CompactLinkedHashSet::•<core::int>();
-    #t24.{core::Set::add}(12){(core::int) → core::bool};
-    #t24.{core::Set::add}(13){(core::int) → core::bool};
-    #t24.{core::Set::add}(14){(core::int) → core::bool};
+    #t24.{core::Set::add}{Invariant}(12);
+    #t24.{core::Set::add}{Invariant}(13);
+    #t24.{core::Set::add}{Invariant}(14);
   } =>#t24 : null;
   core::Set<core::int> set1 = block {
     final core::Set<core::int> #t25 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t26 = dynamicSet1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t26 == null)) {
+    if(!#t26.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t26{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t27 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t28 = #t27 as{TypeError,ForNonNullableByDefault} core::int;
-          #t25.{core::Set::add}(#t28){(core::int) → core::bool};
+          #t25.{core::Set::add}{Invariant}(#t28);
         }
       }
     }
     final core::Iterable<dynamic>? #t29 = dynamicSet2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t29 == null)) {
+    if(!#t29.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t29{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t30 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t31 = #t30 as{TypeError,ForNonNullableByDefault} core::int;
-          #t25.{core::Set::add}(#t31){(core::int) → core::bool};
+          #t25.{core::Set::add}{Invariant}(#t31);
         }
       }
     }
     final core::Iterable<dynamic>? #t32 = dynamicSet3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t32 == null)) {
+    if(!#t32.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t32{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t33 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::int #t34 = #t33 as{TypeError,ForNonNullableByDefault} core::int;
-          #t25.{core::Set::add}(#t34){(core::int) → core::bool};
+          #t25.{core::Set::add}{Invariant}(#t34);
         }
       }
     }
     final core::Iterable<core::int>? #t35 = iterableIntSet;
-    if(!(#t35 == null))
-      #t25.{core::Set::addAll}(#t35{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+    if(!#t35.{core::Object::==}(null))
+      #t25.{core::Set::addAll}{Invariant}(#t35{core::Iterable<core::int>});
     final core::Iterable<core::int>? #t36 = intSet;
-    if(!(#t36 == null))
-      #t25.{core::Set::addAll}(#t36{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+    if(!#t36.{core::Object::==}(null))
+      #t25.{core::Set::addAll}{Invariant}(#t36{core::Iterable<core::int>});
   } =>#t25;
-  self::expect(core::_GrowableList::generate<core::int>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::int>}, set1);
+  self::expect(core::_GrowableList::generate<core::int>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(), set1);
   core::Set<core::num> set2 = block {
     final core::Set<core::num> #t37 = new col::_CompactLinkedHashSet::•<core::num>();
     final core::Iterable<dynamic>? #t38 = dynamicSet1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t38 == null)) {
+    if(!#t38.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t38{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t39 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num #t40 = #t39 as{TypeError,ForNonNullableByDefault} core::num;
-          #t37.{core::Set::add}(#t40){(core::num) → core::bool};
+          #t37.{core::Set::add}{Invariant}(#t40);
         }
       }
     }
     final core::Iterable<dynamic>? #t41 = dynamicSet2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t41 == null)) {
+    if(!#t41.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t41{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t42 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num #t43 = #t42 as{TypeError,ForNonNullableByDefault} core::num;
-          #t37.{core::Set::add}(#t43){(core::num) → core::bool};
+          #t37.{core::Set::add}{Invariant}(#t43);
         }
       }
     }
     final core::Iterable<dynamic>? #t44 = dynamicSet3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
-    if(!(#t44 == null)) {
+    if(!#t44.{core::Object::==}(null)) {
       core::Iterator<dynamic> :sync-for-iterator = #t44{core::Iterable<dynamic>}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final dynamic #t45 = :sync-for-iterator.{core::Iterator::current};
         {
           final core::num #t46 = #t45 as{TypeError,ForNonNullableByDefault} core::num;
-          #t37.{core::Set::add}(#t46){(core::num) → core::bool};
+          #t37.{core::Set::add}{Invariant}(#t46);
         }
       }
     }
     final core::Iterable<core::num>? #t47 = iterableIntSet;
-    if(!(#t47 == null))
-      #t37.{core::Set::addAll}(#t47{core::Iterable<core::num>}){(core::Iterable<core::num>) → void};
+    if(!#t47.{core::Object::==}(null))
+      #t37.{core::Set::addAll}{Invariant}(#t47{core::Iterable<core::num>});
     final core::Iterable<core::num>? #t48 = intSet;
-    if(!(#t48 == null))
-      #t37.{core::Set::addAll}(#t48{core::Iterable<core::num>}){(core::Iterable<core::num>) → void};
+    if(!#t48.{core::Object::==}(null))
+      #t37.{core::Set::addAll}{Invariant}(#t48{core::Iterable<core::num>});
   } =>#t37;
-  self::expect(core::_GrowableList::generate<core::num>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::num>}, set2);
+  self::expect(core::_GrowableList::generate<core::num>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(), set2);
 }
 static method main() → dynamic {
   self::useAddAll();
   self::useAddAllNullable();
 }
 static method expect(core::Set<dynamic> set1, core::Set<dynamic> set2) → void {
-  if(!(set1.{_in::EfficientLengthIterable::length}{core::int} =={core::num::==}{(core::Object) → core::bool} set2.{_in::EfficientLengthIterable::length}{core::int})) {
-    throw "Unexpected length. Expected ${set1.{_in::EfficientLengthIterable::length}{core::int}}, actual ${set2.{_in::EfficientLengthIterable::length}{core::int}}.";
+  if(!set1.{_in::EfficientLengthIterable::length}.{core::num::==}(set2.{_in::EfficientLengthIterable::length})) {
+    throw "Unexpected length. Expected ${set1.{_in::EfficientLengthIterable::length}}, actual ${set2.{_in::EfficientLengthIterable::length}}.";
   }
   {
     core::Iterator<dynamic> :sync-for-iterator = set1.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       dynamic element = :sync-for-iterator.{core::Iterator::current};
       {
-        if(!set2.{core::Set::contains}(element){(core::Object?) → core::bool}) {
+        if(!set2.{core::Set::contains}(element)) {
           throw "Element ${element} not found. Expected ${set1}, actual ${set2}.";
         }
       }
diff --git a/pkg/front_end/testcases/unified_collections/string_concatenation.dart.weak.expect b/pkg/front_end/testcases/unified_collections/string_concatenation.dart.weak.expect
index 93346f1..0229f5c 100644
--- a/pkg/front_end/testcases/unified_collections/string_concatenation.dart.weak.expect
+++ b/pkg/front_end/testcases/unified_collections/string_concatenation.dart.weak.expect
@@ -7,6 +7,6 @@
   block {
     final core::List<core::String*>* #t1 = <core::String*>["ab"];
     if(b)
-      #t1.{core::List::add}("cd"){(core::String*) →* void};
+      #t1.{core::List::add}{Invariant}("cd");
   } =>#t1;
 }
diff --git a/pkg/front_end/testcases/unified_collections/string_concatenation.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/string_concatenation.dart.weak.transformed.expect
index 0a6d17a..33e84e4 100644
--- a/pkg/front_end/testcases/unified_collections/string_concatenation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/string_concatenation.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
   block {
     final core::List<core::String*>* #t1 = core::_GrowableList::_literal1<core::String*>("ab");
     if(b)
-      #t1.{core::List::add}("cd"){(core::String*) →* void};
+      #t1.{core::List::add}{Invariant}("cd");
   } =>#t1;
 }
 
diff --git a/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.strong.expect b/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.strong.expect
index ab48d3f..33b9aaa 100644
--- a/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.strong.expect
+++ b/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.strong.expect
@@ -98,21 +98,21 @@
   self::Cat cat = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:29:20: Error: No named parameter with the name 'numberOfWhiskers'.
  Cat cat = new Cat(numberOfWhiskers: 20, numberOfLegs: 4);
                    ^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Cat;
-  self::Cat cat2 = (cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfWhiskers: 4) as{ForNonNullableByDefault} self::Cat;
-  self::Cat cat3 = (((cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfWhiskers: 4) as{ForNonNullableByDefault} self::Cat) as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfLegs: 3) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat2 = (let final dynamic #t1 = cat as{ForNonNullableByDefault} dynamic in #t1.copyWith(numberOfWhiskers: 4, numberOfLegs: #t1.numberOfLegs)) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat3 = (let final dynamic #t2 = ((cat as{ForNonNullableByDefault} dynamic).copyWith(numberOfWhiskers: 4) as{ForNonNullableByDefault} self::Cat) as{ForNonNullableByDefault} dynamic in #t2.copyWith(numberOfWhiskers: #t2.numberOfWhiskers, numberOfLegs: 3)) as{ForNonNullableByDefault} self::Cat;
   self::Cat cat4 = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:35:29: Error: The method 'copyWith' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'copyWith'.
  Cat cat4 = (cat as Object).copyWith(numberOfWhiskers: 4);
                             ^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Cat;
-  self::Cat cat5 = (cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith() as{ForNonNullableByDefault} self::Cat;
-  self::Cat cat6 = (cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfWhiskers: 4, numberOfHorns: 5) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat5 = (let final dynamic #t3 = cat as{ForNonNullableByDefault} dynamic in #t3.copyWith(numberOfWhiskers: #t3.numberOfWhiskers, numberOfLegs: #t3.numberOfLegs)) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat6 = (let final dynamic #t4 = cat as{ForNonNullableByDefault} dynamic in #t4.copyWith(numberOfWhiskers: 4, numberOfLegs: #t4.numberOfLegs)) as{ForNonNullableByDefault} self::Cat;
   self::A a;
-  self::A a2 = ((let final Never #t1 = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:43:10: Error: Non-nullable variable 'a' must be assigned before it can be used.
+  self::A a2 = (let final dynamic #t5 = (let final Never #t6 = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:43:10: Error: Non-nullable variable 'a' must be assigned before it can be used.
  A a2 = (a as dynamic).copyWith(x: 42, y: 42) as A;
-         ^" in a) as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(x: 42, y: 42) as{ForNonNullableByDefault} self::A;
+         ^" in a) as{ForNonNullableByDefault} dynamic in #t5.copyWith()) as{ForNonNullableByDefault} self::A;
   self::Foo foo = new self::Foo::•(bar: 4, bar2: 5);
-  self::Foo foo2 = (foo as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(bar: 4) as{ForNonNullableByDefault} self::Foo;
+  self::Foo foo2 = (foo as{ForNonNullableByDefault} dynamic).copyWith(bar: 4) as{ForNonNullableByDefault} self::Foo;
 }
 
 library /*isNonNullableByDefault*/;
@@ -124,14 +124,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C2;
diff --git a/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.strong.transformed.expect b/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.strong.transformed.expect
index 7e11dd4..243684e 100644
--- a/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.strong.transformed.expect
@@ -98,21 +98,21 @@
   self::Cat cat = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:29:20: Error: No named parameter with the name 'numberOfWhiskers'.
  Cat cat = new Cat(numberOfWhiskers: 20, numberOfLegs: 4);
                    ^^^^^^^^^^^^^^^^";
-  self::Cat cat2 = (cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfWhiskers: 4) as{ForNonNullableByDefault} self::Cat;
-  self::Cat cat3 = (((cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfWhiskers: 4) as{ForNonNullableByDefault} self::Cat) as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfLegs: 3) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat2 = (let final dynamic #t1 = cat as{ForNonNullableByDefault} dynamic in #t1.copyWith(numberOfWhiskers: 4, numberOfLegs: #t1.numberOfLegs)) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat3 = (let final dynamic #t2 = ((cat as{ForNonNullableByDefault} dynamic).copyWith(numberOfWhiskers: 4) as{ForNonNullableByDefault} self::Cat) as{ForNonNullableByDefault} dynamic in #t2.copyWith(numberOfWhiskers: #t2.numberOfWhiskers, numberOfLegs: 3)) as{ForNonNullableByDefault} self::Cat;
   self::Cat cat4 = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:35:29: Error: The method 'copyWith' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'copyWith'.
  Cat cat4 = (cat as Object).copyWith(numberOfWhiskers: 4);
                             ^^^^^^^^";
-  self::Cat cat5 = (cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith() as{ForNonNullableByDefault} self::Cat;
-  self::Cat cat6 = (cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfWhiskers: 4, numberOfHorns: 5) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat5 = (let final dynamic #t3 = cat as{ForNonNullableByDefault} dynamic in #t3.copyWith(numberOfWhiskers: #t3.numberOfWhiskers, numberOfLegs: #t3.numberOfLegs)) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat6 = (let final dynamic #t4 = cat as{ForNonNullableByDefault} dynamic in #t4.copyWith(numberOfWhiskers: 4, numberOfLegs: #t4.numberOfLegs)) as{ForNonNullableByDefault} self::Cat;
   self::A a;
-  self::A a2 = ((let final Never #t1 = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:43:10: Error: Non-nullable variable 'a' must be assigned before it can be used.
+  self::A a2 = (let final dynamic #t5 = (let final Never #t6 = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:43:10: Error: Non-nullable variable 'a' must be assigned before it can be used.
  A a2 = (a as dynamic).copyWith(x: 42, y: 42) as A;
-         ^" in a) as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(x: 42, y: 42) as{ForNonNullableByDefault} self::A;
+         ^" in a) as{ForNonNullableByDefault} dynamic in #t5.copyWith()) as{ForNonNullableByDefault} self::A;
   self::Foo foo = new self::Foo::•(bar: 4, bar2: 5);
-  self::Foo foo2 = (foo as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(bar: 4) as{ForNonNullableByDefault} self::Foo;
+  self::Foo foo2 = (foo as{ForNonNullableByDefault} dynamic).copyWith(bar: 4) as{ForNonNullableByDefault} self::Foo;
 }
 
 library /*isNonNullableByDefault*/;
@@ -124,14 +124,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C2;
@@ -143,4 +143,4 @@
 
 Extra constant evaluation status:
 Evaluated: StringConcatenation @ org-dartlang-testcase:///copy_with_call_sites.dart:26:7 -> StringConstant("A()")
-Extra constant evaluation: evaluated: 108, effectively constant: 1
+Extra constant evaluation: evaluated: 128, effectively constant: 1
diff --git a/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.weak.expect b/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.weak.expect
index ab48d3f..33b9aaa 100644
--- a/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.weak.expect
+++ b/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.weak.expect
@@ -98,21 +98,21 @@
   self::Cat cat = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:29:20: Error: No named parameter with the name 'numberOfWhiskers'.
  Cat cat = new Cat(numberOfWhiskers: 20, numberOfLegs: 4);
                    ^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Cat;
-  self::Cat cat2 = (cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfWhiskers: 4) as{ForNonNullableByDefault} self::Cat;
-  self::Cat cat3 = (((cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfWhiskers: 4) as{ForNonNullableByDefault} self::Cat) as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfLegs: 3) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat2 = (let final dynamic #t1 = cat as{ForNonNullableByDefault} dynamic in #t1.copyWith(numberOfWhiskers: 4, numberOfLegs: #t1.numberOfLegs)) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat3 = (let final dynamic #t2 = ((cat as{ForNonNullableByDefault} dynamic).copyWith(numberOfWhiskers: 4) as{ForNonNullableByDefault} self::Cat) as{ForNonNullableByDefault} dynamic in #t2.copyWith(numberOfWhiskers: #t2.numberOfWhiskers, numberOfLegs: 3)) as{ForNonNullableByDefault} self::Cat;
   self::Cat cat4 = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:35:29: Error: The method 'copyWith' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'copyWith'.
  Cat cat4 = (cat as Object).copyWith(numberOfWhiskers: 4);
                             ^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Cat;
-  self::Cat cat5 = (cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith() as{ForNonNullableByDefault} self::Cat;
-  self::Cat cat6 = (cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfWhiskers: 4, numberOfHorns: 5) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat5 = (let final dynamic #t3 = cat as{ForNonNullableByDefault} dynamic in #t3.copyWith(numberOfWhiskers: #t3.numberOfWhiskers, numberOfLegs: #t3.numberOfLegs)) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat6 = (let final dynamic #t4 = cat as{ForNonNullableByDefault} dynamic in #t4.copyWith(numberOfWhiskers: 4, numberOfLegs: #t4.numberOfLegs)) as{ForNonNullableByDefault} self::Cat;
   self::A a;
-  self::A a2 = ((let final Never #t1 = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:43:10: Error: Non-nullable variable 'a' must be assigned before it can be used.
+  self::A a2 = (let final dynamic #t5 = (let final Never #t6 = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:43:10: Error: Non-nullable variable 'a' must be assigned before it can be used.
  A a2 = (a as dynamic).copyWith(x: 42, y: 42) as A;
-         ^" in a) as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(x: 42, y: 42) as{ForNonNullableByDefault} self::A;
+         ^" in a) as{ForNonNullableByDefault} dynamic in #t5.copyWith()) as{ForNonNullableByDefault} self::A;
   self::Foo foo = new self::Foo::•(bar: 4, bar2: 5);
-  self::Foo foo2 = (foo as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(bar: 4) as{ForNonNullableByDefault} self::Foo;
+  self::Foo foo2 = (foo as{ForNonNullableByDefault} dynamic).copyWith(bar: 4) as{ForNonNullableByDefault} self::Foo;
 }
 
 library /*isNonNullableByDefault*/;
@@ -124,14 +124,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C2;
diff --git a/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.weak.transformed.expect b/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.weak.transformed.expect
index 7e11dd4..243684e 100644
--- a/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.weak.transformed.expect
@@ -98,21 +98,21 @@
   self::Cat cat = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:29:20: Error: No named parameter with the name 'numberOfWhiskers'.
  Cat cat = new Cat(numberOfWhiskers: 20, numberOfLegs: 4);
                    ^^^^^^^^^^^^^^^^";
-  self::Cat cat2 = (cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfWhiskers: 4) as{ForNonNullableByDefault} self::Cat;
-  self::Cat cat3 = (((cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfWhiskers: 4) as{ForNonNullableByDefault} self::Cat) as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfLegs: 3) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat2 = (let final dynamic #t1 = cat as{ForNonNullableByDefault} dynamic in #t1.copyWith(numberOfWhiskers: 4, numberOfLegs: #t1.numberOfLegs)) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat3 = (let final dynamic #t2 = ((cat as{ForNonNullableByDefault} dynamic).copyWith(numberOfWhiskers: 4) as{ForNonNullableByDefault} self::Cat) as{ForNonNullableByDefault} dynamic in #t2.copyWith(numberOfWhiskers: #t2.numberOfWhiskers, numberOfLegs: 3)) as{ForNonNullableByDefault} self::Cat;
   self::Cat cat4 = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:35:29: Error: The method 'copyWith' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'copyWith'.
  Cat cat4 = (cat as Object).copyWith(numberOfWhiskers: 4);
                             ^^^^^^^^";
-  self::Cat cat5 = (cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith() as{ForNonNullableByDefault} self::Cat;
-  self::Cat cat6 = (cat as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(numberOfWhiskers: 4, numberOfHorns: 5) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat5 = (let final dynamic #t3 = cat as{ForNonNullableByDefault} dynamic in #t3.copyWith(numberOfWhiskers: #t3.numberOfWhiskers, numberOfLegs: #t3.numberOfLegs)) as{ForNonNullableByDefault} self::Cat;
+  self::Cat cat6 = (let final dynamic #t4 = cat as{ForNonNullableByDefault} dynamic in #t4.copyWith(numberOfWhiskers: 4, numberOfLegs: #t4.numberOfLegs)) as{ForNonNullableByDefault} self::Cat;
   self::A a;
-  self::A a2 = ((let final Never #t1 = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:43:10: Error: Non-nullable variable 'a' must be assigned before it can be used.
+  self::A a2 = (let final dynamic #t5 = (let final Never #t6 = invalid-expression "pkg/front_end/testcases/value_class/copy_with_call_sites.dart:43:10: Error: Non-nullable variable 'a' must be assigned before it can be used.
  A a2 = (a as dynamic).copyWith(x: 42, y: 42) as A;
-         ^" in a) as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(x: 42, y: 42) as{ForNonNullableByDefault} self::A;
+         ^" in a) as{ForNonNullableByDefault} dynamic in #t5.copyWith()) as{ForNonNullableByDefault} self::A;
   self::Foo foo = new self::Foo::•(bar: 4, bar2: 5);
-  self::Foo foo2 = (foo as{ForNonNullableByDefault} dynamic){dynamic}.copyWith(bar: 4) as{ForNonNullableByDefault} self::Foo;
+  self::Foo foo2 = (foo as{ForNonNullableByDefault} dynamic).copyWith(bar: 4) as{ForNonNullableByDefault} self::Foo;
 }
 
 library /*isNonNullableByDefault*/;
@@ -124,14 +124,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C2;
@@ -143,4 +143,4 @@
 
 Extra constant evaluation status:
 Evaluated: StringConcatenation @ org-dartlang-testcase:///copy_with_call_sites.dart:26:7 -> StringConstant("A()")
-Extra constant evaluation: evaluated: 108, effectively constant: 1
+Extra constant evaluation: evaluated: 128, effectively constant: 1
diff --git a/pkg/front_end/testcases/value_class/empty.dart.strong.expect b/pkg/front_end/testcases/value_class/empty.dart.strong.expect
index ee36638..ad09297 100644
--- a/pkg/front_end/testcases/value_class/empty.dart.strong.expect
+++ b/pkg/front_end/testcases/value_class/empty.dart.strong.expect
@@ -29,14 +29,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/empty.dart.strong.transformed.expect b/pkg/front_end/testcases/value_class/empty.dart.strong.transformed.expect
index dfd863f..ccb643b 100644
--- a/pkg/front_end/testcases/value_class/empty.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/value_class/empty.dart.strong.transformed.expect
@@ -29,14 +29,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/empty.dart.weak.expect b/pkg/front_end/testcases/value_class/empty.dart.weak.expect
index ee36638..ad09297 100644
--- a/pkg/front_end/testcases/value_class/empty.dart.weak.expect
+++ b/pkg/front_end/testcases/value_class/empty.dart.weak.expect
@@ -29,14 +29,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/empty.dart.weak.transformed.expect b/pkg/front_end/testcases/value_class/empty.dart.weak.transformed.expect
index dfd863f..ccb643b 100644
--- a/pkg/front_end/testcases/value_class/empty.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/value_class/empty.dart.weak.transformed.expect
@@ -29,14 +29,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/explicit_mixin.dart.strong.expect b/pkg/front_end/testcases/value_class/explicit_mixin.dart.strong.expect
index 874cf34..1dddd63 100644
--- a/pkg/front_end/testcases/value_class/explicit_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/value_class/explicit_mixin.dart.strong.expect
@@ -62,14 +62,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/explicit_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/value_class/explicit_mixin.dart.strong.transformed.expect
index 9c48f3b..3265e24 100644
--- a/pkg/front_end/testcases/value_class/explicit_mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/value_class/explicit_mixin.dart.strong.transformed.expect
@@ -70,14 +70,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/explicit_mixin.dart.weak.expect b/pkg/front_end/testcases/value_class/explicit_mixin.dart.weak.expect
index 874cf34..1dddd63 100644
--- a/pkg/front_end/testcases/value_class/explicit_mixin.dart.weak.expect
+++ b/pkg/front_end/testcases/value_class/explicit_mixin.dart.weak.expect
@@ -62,14 +62,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/explicit_mixin.dart.weak.transformed.expect b/pkg/front_end/testcases/value_class/explicit_mixin.dart.weak.transformed.expect
index 9c48f3b..3265e24 100644
--- a/pkg/front_end/testcases/value_class/explicit_mixin.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/value_class/explicit_mixin.dart.weak.transformed.expect
@@ -70,14 +70,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/non_final_field_error.dart.strong.expect b/pkg/front_end/testcases/value_class/non_final_field_error.dart.strong.expect
index ef4afe1..a306bf0 100644
--- a/pkg/front_end/testcases/value_class/non_final_field_error.dart.strong.expect
+++ b/pkg/front_end/testcases/value_class/non_final_field_error.dart.strong.expect
@@ -37,14 +37,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/non_final_field_error.dart.strong.transformed.expect b/pkg/front_end/testcases/value_class/non_final_field_error.dart.strong.transformed.expect
index ef4afe1..a306bf0 100644
--- a/pkg/front_end/testcases/value_class/non_final_field_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/value_class/non_final_field_error.dart.strong.transformed.expect
@@ -37,14 +37,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/non_final_field_error.dart.weak.expect b/pkg/front_end/testcases/value_class/non_final_field_error.dart.weak.expect
index ef4afe1..a306bf0 100644
--- a/pkg/front_end/testcases/value_class/non_final_field_error.dart.weak.expect
+++ b/pkg/front_end/testcases/value_class/non_final_field_error.dart.weak.expect
@@ -37,14 +37,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/non_final_field_error.dart.weak.transformed.expect b/pkg/front_end/testcases/value_class/non_final_field_error.dart.weak.transformed.expect
index ef4afe1..a306bf0 100644
--- a/pkg/front_end/testcases/value_class/non_final_field_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/value_class/non_final_field_error.dart.weak.transformed.expect
@@ -37,14 +37,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.strong.expect b/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.strong.expect
index 59a319e..d077f3e 100644
--- a/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.strong.expect
+++ b/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.strong.expect
@@ -43,14 +43,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.strong.transformed.expect b/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.strong.transformed.expect
index 59a319e..d077f3e 100644
--- a/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.strong.transformed.expect
@@ -43,14 +43,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.weak.expect b/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.weak.expect
index 59a319e..d077f3e 100644
--- a/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.weak.expect
+++ b/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.weak.expect
@@ -43,14 +43,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.weak.transformed.expect b/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.weak.transformed.expect
index 59a319e..d077f3e 100644
--- a/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/value_class/non_value_extends_value_error.dart.weak.transformed.expect
@@ -43,14 +43,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.strong.expect b/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.strong.expect
index b2a184a..21c901e 100644
--- a/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.strong.expect
+++ b/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.strong.expect
@@ -49,14 +49,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.strong.transformed.expect b/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.strong.transformed.expect
index b2a184a..21c901e 100644
--- a/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.strong.transformed.expect
@@ -49,14 +49,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.weak.expect b/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.weak.expect
index b2a184a..21c901e 100644
--- a/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.weak.expect
+++ b/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.weak.expect
@@ -49,14 +49,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.weak.transformed.expect b/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.weak.transformed.expect
index b2a184a..21c901e 100644
--- a/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/value_class/non_value_implements_value_error.dart.weak.transformed.expect
@@ -49,14 +49,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/simple.dart.strong.expect b/pkg/front_end/testcases/value_class/simple.dart.strong.expect
index f0a1c74..9c011f1 100644
--- a/pkg/front_end/testcases/value_class/simple.dart.strong.expect
+++ b/pkg/front_end/testcases/value_class/simple.dart.strong.expect
@@ -58,13 +58,13 @@
   self::Animal thirdAnimal = invalid-expression "pkg/front_end/testcases/value_class/simple.dart:15:31: Error: No named parameter with the name 'numberOfLegs'.
   Animal thirdAnimal = Animal(numberOfLegs: 3);
                               ^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Animal;
-  self::expect(true, firstAnimal =={core::Object::==}{(core::Object) → core::bool} secondAnimal);
-  self::expect(false, firstAnimal =={core::Object::==}{(core::Object) → core::bool} thirdAnimal);
-  self::expect(true, firstAnimal.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondAnimal.{core::Object::hashCode}{core::int});
-  self::expect(false, firstAnimal.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdAnimal.{core::Object::hashCode}{core::int});
+  self::expect(true, firstAnimal.{core::Object::==}(secondAnimal));
+  self::expect(false, firstAnimal.{core::Object::==}(thirdAnimal));
+  self::expect(true, firstAnimal.{core::Object::hashCode}.{core::num::==}(secondAnimal.{core::Object::hashCode}));
+  self::expect(false, firstAnimal.{core::Object::hashCode}.{core::num::==}(thirdAnimal.{core::Object::hashCode}));
 }
 static method expect(core::Object? expected, core::Object? actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected=${expected}, actual=${actual}";
 }
 
@@ -77,14 +77,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/simple.dart.strong.transformed.expect b/pkg/front_end/testcases/value_class/simple.dart.strong.transformed.expect
index 6c1ece6..f8dee0a 100644
--- a/pkg/front_end/testcases/value_class/simple.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/value_class/simple.dart.strong.transformed.expect
@@ -58,13 +58,13 @@
   self::Animal thirdAnimal = invalid-expression "pkg/front_end/testcases/value_class/simple.dart:15:31: Error: No named parameter with the name 'numberOfLegs'.
   Animal thirdAnimal = Animal(numberOfLegs: 3);
                               ^^^^^^^^^^^^";
-  self::expect(true, firstAnimal =={core::Object::==}{(core::Object) → core::bool} secondAnimal);
-  self::expect(false, firstAnimal =={core::Object::==}{(core::Object) → core::bool} thirdAnimal);
-  self::expect(true, firstAnimal.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondAnimal.{core::Object::hashCode}{core::int});
-  self::expect(false, firstAnimal.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdAnimal.{core::Object::hashCode}{core::int});
+  self::expect(true, firstAnimal.{core::Object::==}(secondAnimal));
+  self::expect(false, firstAnimal.{core::Object::==}(thirdAnimal));
+  self::expect(true, firstAnimal.{core::Object::hashCode}.{core::num::==}(secondAnimal.{core::Object::hashCode}));
+  self::expect(false, firstAnimal.{core::Object::hashCode}.{core::num::==}(thirdAnimal.{core::Object::hashCode}));
 }
 static method expect(core::Object? expected, core::Object? actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected=${expected}, actual=${actual}";
 }
 
@@ -77,14 +77,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/simple.dart.weak.expect b/pkg/front_end/testcases/value_class/simple.dart.weak.expect
index f0a1c74..9c011f1 100644
--- a/pkg/front_end/testcases/value_class/simple.dart.weak.expect
+++ b/pkg/front_end/testcases/value_class/simple.dart.weak.expect
@@ -58,13 +58,13 @@
   self::Animal thirdAnimal = invalid-expression "pkg/front_end/testcases/value_class/simple.dart:15:31: Error: No named parameter with the name 'numberOfLegs'.
   Animal thirdAnimal = Animal(numberOfLegs: 3);
                               ^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Animal;
-  self::expect(true, firstAnimal =={core::Object::==}{(core::Object) → core::bool} secondAnimal);
-  self::expect(false, firstAnimal =={core::Object::==}{(core::Object) → core::bool} thirdAnimal);
-  self::expect(true, firstAnimal.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondAnimal.{core::Object::hashCode}{core::int});
-  self::expect(false, firstAnimal.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdAnimal.{core::Object::hashCode}{core::int});
+  self::expect(true, firstAnimal.{core::Object::==}(secondAnimal));
+  self::expect(false, firstAnimal.{core::Object::==}(thirdAnimal));
+  self::expect(true, firstAnimal.{core::Object::hashCode}.{core::num::==}(secondAnimal.{core::Object::hashCode}));
+  self::expect(false, firstAnimal.{core::Object::hashCode}.{core::num::==}(thirdAnimal.{core::Object::hashCode}));
 }
 static method expect(core::Object? expected, core::Object? actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected=${expected}, actual=${actual}";
 }
 
@@ -77,14 +77,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/simple.dart.weak.transformed.expect b/pkg/front_end/testcases/value_class/simple.dart.weak.transformed.expect
index 6c1ece6..f8dee0a 100644
--- a/pkg/front_end/testcases/value_class/simple.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/value_class/simple.dart.weak.transformed.expect
@@ -58,13 +58,13 @@
   self::Animal thirdAnimal = invalid-expression "pkg/front_end/testcases/value_class/simple.dart:15:31: Error: No named parameter with the name 'numberOfLegs'.
   Animal thirdAnimal = Animal(numberOfLegs: 3);
                               ^^^^^^^^^^^^";
-  self::expect(true, firstAnimal =={core::Object::==}{(core::Object) → core::bool} secondAnimal);
-  self::expect(false, firstAnimal =={core::Object::==}{(core::Object) → core::bool} thirdAnimal);
-  self::expect(true, firstAnimal.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondAnimal.{core::Object::hashCode}{core::int});
-  self::expect(false, firstAnimal.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdAnimal.{core::Object::hashCode}{core::int});
+  self::expect(true, firstAnimal.{core::Object::==}(secondAnimal));
+  self::expect(false, firstAnimal.{core::Object::==}(thirdAnimal));
+  self::expect(true, firstAnimal.{core::Object::hashCode}.{core::num::==}(secondAnimal.{core::Object::hashCode}));
+  self::expect(false, firstAnimal.{core::Object::hashCode}.{core::num::==}(thirdAnimal.{core::Object::hashCode}));
 }
 static method expect(core::Object? expected, core::Object? actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected=${expected}, actual=${actual}";
 }
 
@@ -77,14 +77,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/value_extends_non_value.dart.strong.expect b/pkg/front_end/testcases/value_class/value_extends_non_value.dart.strong.expect
index 08b2269..9ba8a2f 100644
--- a/pkg/front_end/testcases/value_class/value_extends_non_value.dart.strong.expect
+++ b/pkg/front_end/testcases/value_class/value_extends_non_value.dart.strong.expect
@@ -64,13 +64,13 @@
   self::Cat thirdCat = invalid-expression "pkg/front_end/testcases/value_class/value_extends_non_value.dart:20:22: Error: No named parameter with the name 'numberOfLegs'.
   Cat thirdCat = Cat(numberOfLegs: 4, numberOfWhiskers: 0);
                      ^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Cat;
-  self::expect(true, firstCat =={core::Object::==}{(core::Object) → core::bool} secondCat);
-  self::expect(false, firstCat =={core::Object::==}{(core::Object) → core::bool} thirdCat);
-  self::expect(true, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondCat.{core::Object::hashCode}{core::int});
-  self::expect(false, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdCat.{core::Object::hashCode}{core::int});
+  self::expect(true, firstCat.{core::Object::==}(secondCat));
+  self::expect(false, firstCat.{core::Object::==}(thirdCat));
+  self::expect(true, firstCat.{core::Object::hashCode}.{core::num::==}(secondCat.{core::Object::hashCode}));
+  self::expect(false, firstCat.{core::Object::hashCode}.{core::num::==}(thirdCat.{core::Object::hashCode}));
 }
 static method expect(core::Object? expected, core::Object? actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected=${expected}, actual=${actual}";
 }
 
@@ -83,14 +83,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C2;
diff --git a/pkg/front_end/testcases/value_class/value_extends_non_value.dart.strong.transformed.expect b/pkg/front_end/testcases/value_class/value_extends_non_value.dart.strong.transformed.expect
index 3954e85..cac374d 100644
--- a/pkg/front_end/testcases/value_class/value_extends_non_value.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/value_class/value_extends_non_value.dart.strong.transformed.expect
@@ -64,13 +64,13 @@
   self::Cat thirdCat = invalid-expression "pkg/front_end/testcases/value_class/value_extends_non_value.dart:20:22: Error: No named parameter with the name 'numberOfLegs'.
   Cat thirdCat = Cat(numberOfLegs: 4, numberOfWhiskers: 0);
                      ^^^^^^^^^^^^";
-  self::expect(true, firstCat =={core::Object::==}{(core::Object) → core::bool} secondCat);
-  self::expect(false, firstCat =={core::Object::==}{(core::Object) → core::bool} thirdCat);
-  self::expect(true, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondCat.{core::Object::hashCode}{core::int});
-  self::expect(false, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdCat.{core::Object::hashCode}{core::int});
+  self::expect(true, firstCat.{core::Object::==}(secondCat));
+  self::expect(false, firstCat.{core::Object::==}(thirdCat));
+  self::expect(true, firstCat.{core::Object::hashCode}.{core::num::==}(secondCat.{core::Object::hashCode}));
+  self::expect(false, firstCat.{core::Object::hashCode}.{core::num::==}(thirdCat.{core::Object::hashCode}));
 }
 static method expect(core::Object? expected, core::Object? actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected=${expected}, actual=${actual}";
 }
 
@@ -83,14 +83,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C2;
diff --git a/pkg/front_end/testcases/value_class/value_extends_non_value.dart.weak.expect b/pkg/front_end/testcases/value_class/value_extends_non_value.dart.weak.expect
index 08b2269..9ba8a2f 100644
--- a/pkg/front_end/testcases/value_class/value_extends_non_value.dart.weak.expect
+++ b/pkg/front_end/testcases/value_class/value_extends_non_value.dart.weak.expect
@@ -64,13 +64,13 @@
   self::Cat thirdCat = invalid-expression "pkg/front_end/testcases/value_class/value_extends_non_value.dart:20:22: Error: No named parameter with the name 'numberOfLegs'.
   Cat thirdCat = Cat(numberOfLegs: 4, numberOfWhiskers: 0);
                      ^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Cat;
-  self::expect(true, firstCat =={core::Object::==}{(core::Object) → core::bool} secondCat);
-  self::expect(false, firstCat =={core::Object::==}{(core::Object) → core::bool} thirdCat);
-  self::expect(true, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondCat.{core::Object::hashCode}{core::int});
-  self::expect(false, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdCat.{core::Object::hashCode}{core::int});
+  self::expect(true, firstCat.{core::Object::==}(secondCat));
+  self::expect(false, firstCat.{core::Object::==}(thirdCat));
+  self::expect(true, firstCat.{core::Object::hashCode}.{core::num::==}(secondCat.{core::Object::hashCode}));
+  self::expect(false, firstCat.{core::Object::hashCode}.{core::num::==}(thirdCat.{core::Object::hashCode}));
 }
 static method expect(core::Object? expected, core::Object? actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected=${expected}, actual=${actual}";
 }
 
@@ -83,14 +83,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C2;
diff --git a/pkg/front_end/testcases/value_class/value_extends_non_value.dart.weak.transformed.expect b/pkg/front_end/testcases/value_class/value_extends_non_value.dart.weak.transformed.expect
index 3954e85..cac374d 100644
--- a/pkg/front_end/testcases/value_class/value_extends_non_value.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/value_class/value_extends_non_value.dart.weak.transformed.expect
@@ -64,13 +64,13 @@
   self::Cat thirdCat = invalid-expression "pkg/front_end/testcases/value_class/value_extends_non_value.dart:20:22: Error: No named parameter with the name 'numberOfLegs'.
   Cat thirdCat = Cat(numberOfLegs: 4, numberOfWhiskers: 0);
                      ^^^^^^^^^^^^";
-  self::expect(true, firstCat =={core::Object::==}{(core::Object) → core::bool} secondCat);
-  self::expect(false, firstCat =={core::Object::==}{(core::Object) → core::bool} thirdCat);
-  self::expect(true, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondCat.{core::Object::hashCode}{core::int});
-  self::expect(false, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdCat.{core::Object::hashCode}{core::int});
+  self::expect(true, firstCat.{core::Object::==}(secondCat));
+  self::expect(false, firstCat.{core::Object::==}(thirdCat));
+  self::expect(true, firstCat.{core::Object::hashCode}.{core::num::==}(secondCat.{core::Object::hashCode}));
+  self::expect(false, firstCat.{core::Object::hashCode}.{core::num::==}(thirdCat.{core::Object::hashCode}));
 }
 static method expect(core::Object? expected, core::Object? actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected=${expected}, actual=${actual}";
 }
 
@@ -83,14 +83,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C2;
diff --git a/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.strong.expect b/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.strong.expect
index 263682d..e039566 100644
--- a/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.strong.expect
+++ b/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.strong.expect
@@ -66,14 +66,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.strong.transformed.expect b/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.strong.transformed.expect
index 523dee1f..d80dd8f 100644
--- a/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.strong.transformed.expect
@@ -66,14 +66,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.weak.expect b/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.weak.expect
index 263682d..e039566 100644
--- a/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.weak.expect
+++ b/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.weak.expect
@@ -66,14 +66,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.weak.transformed.expect b/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.weak.transformed.expect
index 523dee1f..d80dd8f 100644
--- a/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/value_class/value_extends_non_value_error.dart.weak.transformed.expect
@@ -66,14 +66,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/value_implements_non_value.dart.strong.expect b/pkg/front_end/testcases/value_class/value_implements_non_value.dart.strong.expect
index 0f84494..e8f803a 100644
--- a/pkg/front_end/testcases/value_class/value_implements_non_value.dart.strong.expect
+++ b/pkg/front_end/testcases/value_class/value_implements_non_value.dart.strong.expect
@@ -127,10 +127,10 @@
   self::Cat thirdCat = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:31:22: Error: No named parameter with the name 'numberOfLegs'.
   Cat thirdCat = Cat(numberOfLegs: 4, numberOfWhiskers: 0);
                      ^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Cat;
-  self::expect(true, firstCat =={core::Object::==}{(core::Object) → core::bool} secondCat);
-  self::expect(false, firstCat =={core::Object::==}{(core::Object) → core::bool} thirdCat);
-  self::expect(true, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondCat.{core::Object::hashCode}{core::int});
-  self::expect(false, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdCat.{core::Object::hashCode}{core::int});
+  self::expect(true, firstCat.{core::Object::==}(secondCat));
+  self::expect(false, firstCat.{core::Object::==}(thirdCat));
+  self::expect(true, firstCat.{core::Object::hashCode}.{core::num::==}(secondCat.{core::Object::hashCode}));
+  self::expect(false, firstCat.{core::Object::hashCode}.{core::num::==}(thirdCat.{core::Object::hashCode}));
   self::Cat2 firstCat2 = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:39:25: Error: No named parameter with the name 'numberOfLegs'.
   Cat2 firstCat2 = Cat2(numberOfLegs: 4, numberOfWhiskers: 10);
                         ^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Cat2;
@@ -140,13 +140,13 @@
   self::Cat2 thirdCat2 = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:41:25: Error: No named parameter with the name 'numberOfLegs'.
   Cat2 thirdCat2 = Cat2(numberOfLegs: 4, numberOfWhiskers: 0);
                         ^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Cat2;
-  self::expect(true, firstCat2 =={core::Object::==}{(core::Object) → core::bool} secondCat2);
-  self::expect(false, firstCat2 =={core::Object::==}{(core::Object) → core::bool} thirdCat2);
-  self::expect(true, firstCat2.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondCat2.{core::Object::hashCode}{core::int});
-  self::expect(false, firstCat2.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdCat2.{core::Object::hashCode}{core::int});
+  self::expect(true, firstCat2.{core::Object::==}(secondCat2));
+  self::expect(false, firstCat2.{core::Object::==}(thirdCat2));
+  self::expect(true, firstCat2.{core::Object::hashCode}.{core::num::==}(secondCat2.{core::Object::hashCode}));
+  self::expect(false, firstCat2.{core::Object::hashCode}.{core::num::==}(thirdCat2.{core::Object::hashCode}));
 }
 static method expect(core::Object? expected, core::Object? actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected=${expected}, actual=${actual}";
 }
 
@@ -159,14 +159,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/value_implements_non_value.dart.strong.transformed.expect b/pkg/front_end/testcases/value_class/value_implements_non_value.dart.strong.transformed.expect
index b0fba59..bb58694 100644
--- a/pkg/front_end/testcases/value_class/value_implements_non_value.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/value_class/value_implements_non_value.dart.strong.transformed.expect
@@ -127,10 +127,10 @@
   self::Cat thirdCat = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:31:22: Error: No named parameter with the name 'numberOfLegs'.
   Cat thirdCat = Cat(numberOfLegs: 4, numberOfWhiskers: 0);
                      ^^^^^^^^^^^^";
-  self::expect(true, firstCat =={core::Object::==}{(core::Object) → core::bool} secondCat);
-  self::expect(false, firstCat =={core::Object::==}{(core::Object) → core::bool} thirdCat);
-  self::expect(true, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondCat.{core::Object::hashCode}{core::int});
-  self::expect(false, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdCat.{core::Object::hashCode}{core::int});
+  self::expect(true, firstCat.{core::Object::==}(secondCat));
+  self::expect(false, firstCat.{core::Object::==}(thirdCat));
+  self::expect(true, firstCat.{core::Object::hashCode}.{core::num::==}(secondCat.{core::Object::hashCode}));
+  self::expect(false, firstCat.{core::Object::hashCode}.{core::num::==}(thirdCat.{core::Object::hashCode}));
   self::Cat2 firstCat2 = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:39:25: Error: No named parameter with the name 'numberOfLegs'.
   Cat2 firstCat2 = Cat2(numberOfLegs: 4, numberOfWhiskers: 10);
                         ^^^^^^^^^^^^";
@@ -140,13 +140,13 @@
   self::Cat2 thirdCat2 = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:41:25: Error: No named parameter with the name 'numberOfLegs'.
   Cat2 thirdCat2 = Cat2(numberOfLegs: 4, numberOfWhiskers: 0);
                         ^^^^^^^^^^^^";
-  self::expect(true, firstCat2 =={core::Object::==}{(core::Object) → core::bool} secondCat2);
-  self::expect(false, firstCat2 =={core::Object::==}{(core::Object) → core::bool} thirdCat2);
-  self::expect(true, firstCat2.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondCat2.{core::Object::hashCode}{core::int});
-  self::expect(false, firstCat2.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdCat2.{core::Object::hashCode}{core::int});
+  self::expect(true, firstCat2.{core::Object::==}(secondCat2));
+  self::expect(false, firstCat2.{core::Object::==}(thirdCat2));
+  self::expect(true, firstCat2.{core::Object::hashCode}.{core::num::==}(secondCat2.{core::Object::hashCode}));
+  self::expect(false, firstCat2.{core::Object::hashCode}.{core::num::==}(thirdCat2.{core::Object::hashCode}));
 }
 static method expect(core::Object? expected, core::Object? actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected=${expected}, actual=${actual}";
 }
 
@@ -159,14 +159,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/value_implements_non_value.dart.weak.expect b/pkg/front_end/testcases/value_class/value_implements_non_value.dart.weak.expect
index 0f84494..e8f803a 100644
--- a/pkg/front_end/testcases/value_class/value_implements_non_value.dart.weak.expect
+++ b/pkg/front_end/testcases/value_class/value_implements_non_value.dart.weak.expect
@@ -127,10 +127,10 @@
   self::Cat thirdCat = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:31:22: Error: No named parameter with the name 'numberOfLegs'.
   Cat thirdCat = Cat(numberOfLegs: 4, numberOfWhiskers: 0);
                      ^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Cat;
-  self::expect(true, firstCat =={core::Object::==}{(core::Object) → core::bool} secondCat);
-  self::expect(false, firstCat =={core::Object::==}{(core::Object) → core::bool} thirdCat);
-  self::expect(true, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondCat.{core::Object::hashCode}{core::int});
-  self::expect(false, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdCat.{core::Object::hashCode}{core::int});
+  self::expect(true, firstCat.{core::Object::==}(secondCat));
+  self::expect(false, firstCat.{core::Object::==}(thirdCat));
+  self::expect(true, firstCat.{core::Object::hashCode}.{core::num::==}(secondCat.{core::Object::hashCode}));
+  self::expect(false, firstCat.{core::Object::hashCode}.{core::num::==}(thirdCat.{core::Object::hashCode}));
   self::Cat2 firstCat2 = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:39:25: Error: No named parameter with the name 'numberOfLegs'.
   Cat2 firstCat2 = Cat2(numberOfLegs: 4, numberOfWhiskers: 10);
                         ^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Cat2;
@@ -140,13 +140,13 @@
   self::Cat2 thirdCat2 = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:41:25: Error: No named parameter with the name 'numberOfLegs'.
   Cat2 thirdCat2 = Cat2(numberOfLegs: 4, numberOfWhiskers: 0);
                         ^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} self::Cat2;
-  self::expect(true, firstCat2 =={core::Object::==}{(core::Object) → core::bool} secondCat2);
-  self::expect(false, firstCat2 =={core::Object::==}{(core::Object) → core::bool} thirdCat2);
-  self::expect(true, firstCat2.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondCat2.{core::Object::hashCode}{core::int});
-  self::expect(false, firstCat2.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdCat2.{core::Object::hashCode}{core::int});
+  self::expect(true, firstCat2.{core::Object::==}(secondCat2));
+  self::expect(false, firstCat2.{core::Object::==}(thirdCat2));
+  self::expect(true, firstCat2.{core::Object::hashCode}.{core::num::==}(secondCat2.{core::Object::hashCode}));
+  self::expect(false, firstCat2.{core::Object::hashCode}.{core::num::==}(thirdCat2.{core::Object::hashCode}));
 }
 static method expect(core::Object? expected, core::Object? actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected=${expected}, actual=${actual}";
 }
 
@@ -159,14 +159,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/value_implements_non_value.dart.weak.transformed.expect b/pkg/front_end/testcases/value_class/value_implements_non_value.dart.weak.transformed.expect
index b0fba59..bb58694 100644
--- a/pkg/front_end/testcases/value_class/value_implements_non_value.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/value_class/value_implements_non_value.dart.weak.transformed.expect
@@ -127,10 +127,10 @@
   self::Cat thirdCat = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:31:22: Error: No named parameter with the name 'numberOfLegs'.
   Cat thirdCat = Cat(numberOfLegs: 4, numberOfWhiskers: 0);
                      ^^^^^^^^^^^^";
-  self::expect(true, firstCat =={core::Object::==}{(core::Object) → core::bool} secondCat);
-  self::expect(false, firstCat =={core::Object::==}{(core::Object) → core::bool} thirdCat);
-  self::expect(true, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondCat.{core::Object::hashCode}{core::int});
-  self::expect(false, firstCat.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdCat.{core::Object::hashCode}{core::int});
+  self::expect(true, firstCat.{core::Object::==}(secondCat));
+  self::expect(false, firstCat.{core::Object::==}(thirdCat));
+  self::expect(true, firstCat.{core::Object::hashCode}.{core::num::==}(secondCat.{core::Object::hashCode}));
+  self::expect(false, firstCat.{core::Object::hashCode}.{core::num::==}(thirdCat.{core::Object::hashCode}));
   self::Cat2 firstCat2 = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:39:25: Error: No named parameter with the name 'numberOfLegs'.
   Cat2 firstCat2 = Cat2(numberOfLegs: 4, numberOfWhiskers: 10);
                         ^^^^^^^^^^^^";
@@ -140,13 +140,13 @@
   self::Cat2 thirdCat2 = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:41:25: Error: No named parameter with the name 'numberOfLegs'.
   Cat2 thirdCat2 = Cat2(numberOfLegs: 4, numberOfWhiskers: 0);
                         ^^^^^^^^^^^^";
-  self::expect(true, firstCat2 =={core::Object::==}{(core::Object) → core::bool} secondCat2);
-  self::expect(false, firstCat2 =={core::Object::==}{(core::Object) → core::bool} thirdCat2);
-  self::expect(true, firstCat2.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} secondCat2.{core::Object::hashCode}{core::int});
-  self::expect(false, firstCat2.{core::Object::hashCode}{core::int} =={core::num::==}{(core::Object) → core::bool} thirdCat2.{core::Object::hashCode}{core::int});
+  self::expect(true, firstCat2.{core::Object::==}(secondCat2));
+  self::expect(false, firstCat2.{core::Object::==}(thirdCat2));
+  self::expect(true, firstCat2.{core::Object::hashCode}.{core::num::==}(secondCat2.{core::Object::hashCode}));
+  self::expect(false, firstCat2.{core::Object::hashCode}.{core::num::==}(thirdCat2.{core::Object::hashCode}));
 }
 static method expect(core::Object? expected, core::Object? actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+  if(!expected.{core::Object::==}(actual))
     throw "Expected=${expected}, actual=${actual}";
 }
 
@@ -159,14 +159,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/value_mixin_error.dart.strong.expect b/pkg/front_end/testcases/value_class/value_mixin_error.dart.strong.expect
index fa9583c..5391b61 100644
--- a/pkg/front_end/testcases/value_class/value_mixin_error.dart.strong.expect
+++ b/pkg/front_end/testcases/value_class/value_mixin_error.dart.strong.expect
@@ -54,14 +54,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/value_mixin_error.dart.strong.transformed.expect b/pkg/front_end/testcases/value_class/value_mixin_error.dart.strong.transformed.expect
index 9904420..4bf6fa3 100644
--- a/pkg/front_end/testcases/value_class/value_mixin_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/value_class/value_mixin_error.dart.strong.transformed.expect
@@ -62,14 +62,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/value_mixin_error.dart.weak.expect b/pkg/front_end/testcases/value_class/value_mixin_error.dart.weak.expect
index fa9583c..5391b61 100644
--- a/pkg/front_end/testcases/value_class/value_mixin_error.dart.weak.expect
+++ b/pkg/front_end/testcases/value_class/value_mixin_error.dart.weak.expect
@@ -54,14 +54,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/value_class/value_mixin_error.dart.weak.transformed.expect b/pkg/front_end/testcases/value_class/value_mixin_error.dart.weak.transformed.expect
index 9904420..4bf6fa3 100644
--- a/pkg/front_end/testcases/value_class/value_mixin_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/value_class/value_mixin_error.dart.weak.transformed.expect
@@ -62,14 +62,14 @@
     : super core::Object::•()
     ;
   static method combine(core::int hash, core::int value) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(value){(core::num) → core::int}){(core::int) → core::int};
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(10){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    return hash.{core::int::^}(hash.{core::int::>>}(6){(core::int) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(value));
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(524287.{core::int::&}(hash).{core::int::<<}(10)));
+    return hash.{core::int::^}(hash.{core::int::>>}(6));
   }
   static method finish(core::int hash) → core::int {
-    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(3){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
-    hash = hash.{core::int::^}(hash.{core::int::>>}(11){(core::int) → core::int}){(core::int) → core::int};
-    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash){(core::int) → core::int}.{core::int::<<}(15){(core::int) → core::int}){(core::num) → core::int}){(core::int) → core::int};
+    hash = 536870911.{core::int::&}(hash.{core::num::+}(67108863.{core::int::&}(hash).{core::int::<<}(3)));
+    hash = hash.{core::int::^}(hash.{core::int::>>}(11));
+    return 536870911.{core::int::&}(hash.{core::num::+}(16383.{core::int::&}(hash).{core::int::<<}(15)));
   }
 }
 static const field core::String valueClass = #C1;
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.expect
index e7ce2ad..fbf4052 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.expect
@@ -60,7 +60,7 @@
     : self::E::f = f, super core::Object::•()
     ;
   method method(self::E::T% x) → core::int {
-    let final self::E::T% #t1 = x in this.{self::E::f}{(self::E::T%) → void}(#t1){(self::E::T%) → void};
+    let final self::E::T% #t1 = x in this.{self::E::f}.call(#t1);
     return 0;
   }
 }
@@ -78,40 +78,40 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return 3;
   no-such-method-forwarder get x() → self::NoSuchMethod::T?
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::NoSuchMethod::T?;
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} self::NoSuchMethod::T?;
   no-such-method-forwarder method method(self::NoSuchMethod::T% x) → self::NoSuchMethod::T%
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::NoSuchMethod::T%;
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} self::NoSuchMethod::T%;
   no-such-method-forwarder set y(self::NoSuchMethod::T% x) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set x(self::NoSuchMethod::T? value) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 static method main() → dynamic {
   self::A<core::int, core::num, core::String> a = new self::A::•<core::int, core::num, core::String>();
-  self::expect(null, a.{self::A::field}{(core::int) →? void});
-  a.{self::A::method}(3, (core::num num) → void {}, "test"){(core::int, (core::num) → void, core::String) → void};
-  a.{self::A::method2}(3){(core::int, [core::int?]) → void};
+  self::expect(null, a.{self::A::field});
+  a.{self::A::method}(3, (core::num num) → void {}, "test");
+  a.{self::A::method2}(3);
   a.{self::A::x} = 3;
-  core::Map<core::num, self::Contravariant<core::String>> mapContra = a.{self::A::mapContra}{core::Map<core::num, self::Contravariant<core::String>>} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, self::Contravariant<core::String>>;
-  core::Map<core::num, (core::String) → void> mapContraFn = a.{self::A::mapContraFn}{core::Map<core::num, (core::String) → void>} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, (core::String) → void>;
-  core::Map<core::num, self::Invariant<core::String>> mapInv = a.{self::A::mapInv}{core::Map<core::num, self::Invariant<core::String>>} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, self::Invariant<core::String>>;
-  core::Map<core::num, (core::String) → core::String> mapInvFn = a.{self::A::mapInvFn}{core::Map<core::num, (core::String) → core::String>} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, (core::String) → core::String>;
+  core::Map<core::num, self::Contravariant<core::String>> mapContra = a.{self::A::mapContra} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, self::Contravariant<core::String>>;
+  core::Map<core::num, (core::String) → void> mapContraFn = a.{self::A::mapContraFn} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, (core::String) → void>;
+  core::Map<core::num, self::Invariant<core::String>> mapInv = a.{self::A::mapInv} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, self::Invariant<core::String>>;
+  core::Map<core::num, (core::String) → core::String> mapInvFn = a.{self::A::mapInvFn} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, (core::String) → core::String>;
   self::B<core::int> b = new self::B::•<core::int>();
   b.{self::B::x} = 3;
-  self::expect(3, b.{self::B::x}{core::int?});
-  self::expect(3, b.{self::B::method}(3){(core::int) → core::int});
+  self::expect(3, b.{self::B::x});
+  self::expect(3, b.{self::B::method}(3));
   b.{self::B::y} = 3;
   self::C<core::int> c = new self::C::•<core::int>();
-  self::expect(null, c.{self::C::field}{(core::int) →? void});
-  c.{self::C::method}(3, 2){(core::int, [core::int?]) → void};
+  self::expect(null, c.{self::C::field});
+  c.{self::C::method}(3, 2);
   c.{self::C::x} = 3;
   self::D<core::Object> d = new self::F::•<core::String>((core::String s) → void {});
-  d.{self::D::method}("test"){(core::Object) → core::int};
+  d.{self::D::method}("test");
   self::NoSuchMethod<core::num> nsm = new self::NoSuchMethod::•<core::num>();
-  self::expect(3, nsm.{self::B::method}(3){(core::num) → core::num});
+  self::expect(3, nsm.{self::B::method}(3));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.outline.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.outline.expect
index ae0d389..1ce38f4 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.outline.expect
@@ -73,13 +73,13 @@
   method noSuchMethod(core::Invocation _) → dynamic
     ;
   no-such-method-forwarder get x() → self::NoSuchMethod::T?
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::NoSuchMethod::T?;
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} self::NoSuchMethod::T?;
   no-such-method-forwarder method method(self::NoSuchMethod::T% x) → self::NoSuchMethod::T%
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::NoSuchMethod::T%;
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic,ForNonNullableByDefault} self::NoSuchMethod::T%;
   no-such-method-forwarder set y(self::NoSuchMethod::T% x) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#y=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#y=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder set x(self::NoSuchMethod::T? value) → void
-    return this.{self::NoSuchMethod::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>{}))){(core::Invocation) → dynamic};
+    return this.{self::NoSuchMethod::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
   ;
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.transformed.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.transformed.expect
index 5346fee6..3719b77 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.transformed.expect
@@ -60,7 +60,7 @@
     : self::E::f = f, super core::Object::•()
     ;
   method method(self::E::T% x) → core::int {
-    let final self::E::T% #t1 = x in this.{self::E::f}{(self::E::T%) → void}(#t1){(self::E::T%) → void};
+    let final self::E::T% #t1 = x in this.{self::E::f}.call(#t1);
     return 0;
   }
 }
@@ -78,40 +78,40 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return 3;
   no-such-method-forwarder get x() → self::NoSuchMethod::T?
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::NoSuchMethod::T?;
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} self::NoSuchMethod::T?;
   no-such-method-forwarder method method(self::NoSuchMethod::T% x) → self::NoSuchMethod::T%
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::NoSuchMethod::T%;
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic,ForNonNullableByDefault} self::NoSuchMethod::T%;
   no-such-method-forwarder set y(self::NoSuchMethod::T% x) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set x(self::NoSuchMethod::T? value) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 static method main() → dynamic {
   self::A<core::int, core::num, core::String> a = new self::A::•<core::int, core::num, core::String>();
-  self::expect(null, a.{self::A::field}{(core::int) →? void});
-  a.{self::A::method}(3, (core::num num) → void {}, "test"){(core::int, (core::num) → void, core::String) → void};
-  a.{self::A::method2}(3){(core::int, [core::int?]) → void};
+  self::expect(null, a.{self::A::field});
+  a.{self::A::method}(3, (core::num num) → void {}, "test");
+  a.{self::A::method2}(3);
   a.{self::A::x} = 3;
-  core::Map<core::num, self::Contravariant<core::String>> mapContra = a.{self::A::mapContra}{core::Map<core::num, self::Contravariant<core::String>>} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, self::Contravariant<core::String>>;
-  core::Map<core::num, (core::String) → void> mapContraFn = a.{self::A::mapContraFn}{core::Map<core::num, (core::String) → void>} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, (core::String) → void>;
-  core::Map<core::num, self::Invariant<core::String>> mapInv = a.{self::A::mapInv}{core::Map<core::num, self::Invariant<core::String>>} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, self::Invariant<core::String>>;
-  core::Map<core::num, (core::String) → core::String> mapInvFn = a.{self::A::mapInvFn}{core::Map<core::num, (core::String) → core::String>} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, (core::String) → core::String>;
+  core::Map<core::num, self::Contravariant<core::String>> mapContra = a.{self::A::mapContra} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, self::Contravariant<core::String>>;
+  core::Map<core::num, (core::String) → void> mapContraFn = a.{self::A::mapContraFn} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, (core::String) → void>;
+  core::Map<core::num, self::Invariant<core::String>> mapInv = a.{self::A::mapInv} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, self::Invariant<core::String>>;
+  core::Map<core::num, (core::String) → core::String> mapInvFn = a.{self::A::mapInvFn} as{TypeError,CovarianceCheck,ForNonNullableByDefault} core::Map<core::num, (core::String) → core::String>;
   self::B<core::int> b = new self::B::•<core::int>();
   b.{self::B::x} = 3;
-  self::expect(3, b.{self::B::x}{core::int?});
-  self::expect(3, b.{self::B::method}(3){(core::int) → core::int});
+  self::expect(3, b.{self::B::x});
+  self::expect(3, b.{self::B::method}(3));
   b.{self::B::y} = 3;
   self::C<core::int> c = new self::C::•<core::int>();
-  self::expect(null, c.{self::C::field}{(core::int) →? void});
-  c.{self::C::method}(3, 2){(core::int, [core::int?]) → void};
+  self::expect(null, c.{self::C::field});
+  c.{self::C::method}(3, 2);
   c.{self::C::x} = 3;
   self::D<core::Object> d = new self::F::•<core::String>((core::String s) → void {});
-  d.{self::D::method}("test"){(core::Object) → core::int};
+  d.{self::D::method}("test");
   self::NoSuchMethod<core::num> nsm = new self::NoSuchMethod::•<core::num>();
-  self::expect(3, nsm.{self::B::method}(3){(core::num) → core::num});
+  self::expect(3, nsm.{self::B::method}(3));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+  if(!expected.{core::Object::==}(actual)) {
     throw "Mismatch: expected=${expected}, actual=${actual}";
   }
 }
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index cf57e3c..5d39cc6 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -18,9 +18,11 @@
 extension_types/simple_method_resolution: ExpectationFileMismatchSerialized # Expected.
 extension_types/simple_operator_resolution: ExpectationFileMismatchSerialized # Expected.
 extension_types/simple_setter_resolution: ExpectationFileMismatchSerialized # Expected.
+extensions/call_methods: TypeCheckError
 extensions/extension_setter_error: TypeCheckError
 extensions/instance_access_of_static: RuntimeError
 extensions/invalid_explicit_access: RuntimeError
+extensions/issue40713: TypeCheckError
 extensions/static_access_of_instance: RuntimeError
 general/abstract_members: TypeCheckError
 general/accessors: RuntimeError
@@ -72,6 +74,7 @@
 general/error_recovery/yield_not_in_generator: RuntimeError
 general/expressions: RuntimeError
 general/external_import: RuntimeError # The native extension to import doesn't exist. This is ok.
+general/function_invocation_bounds: TypeCheckError
 general/getter_vs_setter_type: TypeCheckError
 general/incomplete_field_formal_parameter: RuntimeError
 general/infer_field_from_multiple: TypeCheckError
diff --git a/pkg/vm/lib/target/vm.dart b/pkg/vm/lib/target/vm.dart
index 5d93861..1b8f1de 100644
--- a/pkg/vm/lib/target/vm.dart
+++ b/pkg/vm/lib/target/vm.dart
@@ -63,7 +63,7 @@
       !flags.forceNoExplicitGetterCallsForTesting;
 
   @override
-  bool get supportsNewMethodInvocationEncoding => true;
+  bool get supportsNewMethodInvocationEncoding => false;
 
   @override
   String get name => 'vm';
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/annotation.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/annotation.dart.expect
index 3c40e12..28378be 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/annotation.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/annotation.dart.expect
@@ -30,11 +30,11 @@
 }
 [@vm.unboxing-info.metadata=()->i]static method foo() → core::int* {
   @#C9 core::int* x = 2;
-  return [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] x.{core::num::+}(2){(core::num*) →* core::int*};
+  return [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] x.{core::num::+}(2);
 }
 @#C11
 static method main(core::List<core::String*>* args) → dynamic {
   self::A::staticMethod();
-  [@vm.direct-call.metadata=#lib::B.instanceMethod] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•().{self::B::instanceMethod}(){() →* void};
+  [@vm.direct-call.metadata=#lib::B.instanceMethod] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•().{self::B::instanceMethod}();
   self::foo();
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect
index 51ff150..ee9f237 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect
@@ -86,7 +86,7 @@
       {
         :async_temporary_0 = [@vm.inferred-type.metadata=#lib::A] self::foo();
         [yield] let dynamic #t1 = asy::_awaitHelper([@vm.inferred-type.metadata=dart.async::_Future<dynamic>] self::baz(), :async_op_then, :async_op_error, :async_op) in null;
-        [yield] let dynamic #t2 = asy::_awaitHelper([@vm.direct-call.metadata=#lib::A.bar??] [@vm.inferred-type.metadata=dart.async::_Future<dynamic> (receiver not int)] _in::unsafeCast<dynamic>(:async_temporary_0){dynamic}.bar(:result), :async_op_then, :async_op_error, :async_op) in null;
+        [yield] let dynamic #t2 = asy::_awaitHelper([@vm.direct-call.metadata=#lib::A.bar??] [@vm.inferred-type.metadata=dart.async::_Future<dynamic> (receiver not int)] _in::unsafeCast<dynamic>(:async_temporary_0).bar(:result), :async_op_then, :async_op_error, :async_op) in null;
         :result;
       }
       asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect
index 60f22a5..5f90ab8 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect
@@ -4,20 +4,20 @@
 import "dart:_internal" as _in;
 
 [@vm.unboxing-info.metadata=(i)->b]static method isPrime([@vm.inferred-type.metadata=int] dynamic n) → core::bool* {
-  if(_in::unsafeCast<core::bool*>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool] n{dynamic}.<(2)))
+  if(_in::unsafeCast<core::bool*>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool] n.<(2)))
     return false;
-  for (core::int* i = 2; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<=] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::_IntegerImplementation.*] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::*}(i){(core::num*) →* core::int*}.{core::num::<=}(_in::unsafeCast<core::num*>(n)){(core::num*) →* core::bool*}; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::_IntegerImplementation.%] [@vm.inferred-type.metadata=int] n{dynamic}.%(i) =={core::Object::==}{(core::Object*) →* core::bool*} 0)
+  for (core::int* i = 2; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<=] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::_IntegerImplementation.*] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::*}(i).{core::num::<=}(_in::unsafeCast<core::num*>(n)); i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1)) {
+    if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::_IntegerImplementation.%] [@vm.inferred-type.metadata=int] n.%(i).{core::Object::==}(0))
       return false;
   }
   return true;
 }
 static method nThPrimeNumber() → core::int* {
   core::int* counter = 0;
-  for (core::int* i = 1; ; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+??] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (core::int* i = 1; ; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+??] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1)) {
     if([@vm.inferred-type.metadata=dart.core::bool] self::isPrime(i))
-      counter = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+??] [@vm.inferred-type.metadata=int (skip check)] counter.{core::num::+}(1){(core::num*) →* core::int*};
-    if([@vm.inferred-type.metadata=dart.core::bool] counter =={core::num::==}{(core::Object*) →* core::bool*} (#C1)) {
+      counter = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+??] [@vm.inferred-type.metadata=int (skip check)] counter.{core::num::+}(1);
+    if([@vm.inferred-type.metadata=dart.core::bool] counter.{core::num::==}(#C1)) {
       return i;
     }
   }
@@ -25,17 +25,17 @@
 static method run() → void {
   core::int* e = 611953;
   core::int* p = [@vm.inferred-type.metadata=int?] self::nThPrimeNumber();
-  if(!([@vm.inferred-type.metadata=dart.core::bool] p =={core::num::==}{(core::Object*) →* core::bool*} e)) {
+  if(![@vm.inferred-type.metadata=dart.core::bool] p.{core::num::==}(e)) {
     throw core::Exception::•("Unexpected result: ${p} != ${e}");
   }
 }
 static method main(core::List<core::String*>* args) → dynamic {
   core::Stopwatch* timer = let final core::Stopwatch* #t1 = new core::Stopwatch::•() in block {
-    [@vm.direct-call.metadata=dart.core::Stopwatch.start] [@vm.inferred-type.metadata=!? (skip check)] #t1.{core::Stopwatch::start}(){() →* void};
+    [@vm.direct-call.metadata=dart.core::Stopwatch.start] [@vm.inferred-type.metadata=!? (skip check)] #t1.{core::Stopwatch::start}();
   } =>#t1;
-  for (core::int* i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}(100){(core::num*) →* core::bool*}; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1){(core::num*) →* core::int*}) {
+  for (core::int* i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}(100); i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1)) {
     self::run();
   }
-  [@vm.direct-call.metadata=dart.core::Stopwatch.stop] [@vm.inferred-type.metadata=!? (skip check)] timer.{core::Stopwatch::stop}(){() →* void};
-  core::print("Elapsed ${[@vm.direct-call.metadata=dart.core::Stopwatch.elapsedMilliseconds] timer.{core::Stopwatch::elapsedMilliseconds}{core::int*}}ms");
+  [@vm.direct-call.metadata=dart.core::Stopwatch.stop] [@vm.inferred-type.metadata=!? (skip check)] timer.{core::Stopwatch::stop}();
+  core::print("Elapsed ${[@vm.direct-call.metadata=dart.core::Stopwatch.elapsedMilliseconds] timer.{core::Stopwatch::elapsedMilliseconds}}ms");
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect
index 3fc832d..71bb393 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect
@@ -13,14 +13,14 @@
     : self::_Vector::_offset = 0, self::_Vector::_length = #C1, self::_Vector::_elements = [@vm.inferred-type.metadata=dart.typed_data::_Float64List] typ::Float64List::•(#C1), super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:4] [@vm.unboxing-info.metadata=(b)->d]  operator []([@vm.inferred-type.metadata=!] core::int* i) → core::double*
-    return [@vm.direct-call.metadata=dart.typed_data::_Float64List.[]] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.direct-call.metadata=#lib::_Vector._elements] [@vm.inferred-type.metadata=dart.typed_data::_Float64List] this.{self::_Vector::_elements}{core::List<core::double*>*}.{core::List::[]}([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}([@vm.direct-call.metadata=#lib::_Vector._offset] [@vm.inferred-type.metadata=dart.core::_Smi (value: 0)] this.{self::_Vector::_offset}{core::int*}){(core::num*) →* core::int*}){(core::int*) →* core::double*};
+    return [@vm.direct-call.metadata=dart.typed_data::_Float64List.[]] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.direct-call.metadata=#lib::_Vector._elements] [@vm.inferred-type.metadata=dart.typed_data::_Float64List] this.{self::_Vector::_elements}.{core::List::[]}([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}([@vm.direct-call.metadata=#lib::_Vector._offset] [@vm.inferred-type.metadata=dart.core::_Smi (value: 0)] this.{self::_Vector::_offset}));
 [@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5]  operator []=([@vm.inferred-type.metadata=dart.core::_OneByteString] core::int* i, core::double* value) → void {
-    let dynamic #t1 = [@vm.direct-call.metadata=#lib::_Vector._elements] [@vm.inferred-type.metadata=dart.typed_data::_Float64List] this.{self::_Vector::_elements}{core::List<core::double*>*} in let dynamic #t2 = [@vm.direct-call.metadata=#lib::_Vector._offset] [@vm.inferred-type.metadata=dart.core::_Smi (value: 0)] this.{self::_Vector::_offset}{core::int*} in throw "Attempt to execute code removed by Dart AOT compiler (TFA)";
+    let dynamic #t1 = [@vm.direct-call.metadata=#lib::_Vector._elements] [@vm.inferred-type.metadata=dart.typed_data::_Float64List] this.{self::_Vector::_elements} in let dynamic #t2 = [@vm.direct-call.metadata=#lib::_Vector._offset] [@vm.inferred-type.metadata=dart.core::_Smi (value: 0)] this.{self::_Vector::_offset} in throw "Attempt to execute code removed by Dart AOT compiler (TFA)";
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6] [@vm.unboxing-info.metadata=(b)->d]  operator *([@vm.inferred-type.metadata=#lib::_Vector?] self::_Vector* a) → core::double* {
     core::double* result = 0.0;
-    for (core::int* i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}([@vm.direct-call.metadata=#lib::_Vector._length] [@vm.inferred-type.metadata=dart.core::_Smi (value: 10)] this.{self::_Vector::_length}{core::int*}){(core::num*) →* core::bool*}; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1){(core::num*) →* core::int*})
-      result = [@vm.direct-call.metadata=dart.core::_Double.+??] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] result.{core::double::+}([@vm.direct-call.metadata=dart.core::_Double.*] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.direct-call.metadata=#lib::_Vector.[]] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] this.{self::_Vector::[]}(i){(core::int*) →* core::double*}.{core::double::*}([@vm.direct-call.metadata=#lib::_Vector.[]??] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] a.{self::_Vector::[]}(i){(core::int*) →* core::double*}){(core::num*) →* core::double*}){(core::num*) →* core::double*};
+    for (core::int* i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}([@vm.direct-call.metadata=#lib::_Vector._length] [@vm.inferred-type.metadata=dart.core::_Smi (value: 10)] this.{self::_Vector::_length}); i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1))
+      result = [@vm.direct-call.metadata=dart.core::_Double.+??] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] result.{core::double::+}([@vm.direct-call.metadata=dart.core::_Double.*] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.direct-call.metadata=#lib::_Vector.[]] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] this.{self::_Vector::[]}(i).{core::double::*}([@vm.direct-call.metadata=#lib::_Vector.[]??] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] a.{self::_Vector::[]}(i)));
     return result;
   }
 }
@@ -28,11 +28,11 @@
 [@vm.inferred-type.metadata=dart.core::_Double?]static field core::double* x = 0.0;
 static method main(core::List<core::String*>* args) → dynamic {
   core::Stopwatch* timer = let final core::Stopwatch* #t3 = new core::Stopwatch::•() in block {
-    [@vm.direct-call.metadata=dart.core::Stopwatch.start] [@vm.inferred-type.metadata=!? (skip check)] #t3.{core::Stopwatch::start}(){() →* void};
+    [@vm.direct-call.metadata=dart.core::Stopwatch.start] [@vm.inferred-type.metadata=!? (skip check)] #t3.{core::Stopwatch::start}();
   } =>#t3;
-  for (core::int* i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}(100000000){(core::num*) →* core::bool*}; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1){(core::num*) →* core::int*}) {
-    self::x = [@vm.direct-call.metadata=dart.core::_Double.+??] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.inferred-type.metadata=dart.core::_Double?] self::x.{core::double::+}([@vm.direct-call.metadata=#lib::_Vector.*??] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.inferred-type.metadata=#lib::_Vector?] self::v.{self::_Vector::*}([@vm.inferred-type.metadata=#lib::_Vector?] self::v){(self::_Vector*) →* core::double*}){(core::num*) →* core::double*};
+  for (core::int* i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}(100000000); i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1)) {
+    self::x = [@vm.direct-call.metadata=dart.core::_Double.+??] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.inferred-type.metadata=dart.core::_Double?] self::x.{core::double::+}([@vm.direct-call.metadata=#lib::_Vector.*??] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.inferred-type.metadata=#lib::_Vector?] self::v.{self::_Vector::*}([@vm.inferred-type.metadata=#lib::_Vector?] self::v));
   }
-  [@vm.direct-call.metadata=dart.core::Stopwatch.stop] [@vm.inferred-type.metadata=!? (skip check)] timer.{core::Stopwatch::stop}(){() →* void};
-  core::print("Elapsed ${[@vm.direct-call.metadata=dart.core::Stopwatch.elapsedMilliseconds] timer.{core::Stopwatch::elapsedMilliseconds}{core::int*}}ms, result ${self::x}");
+  [@vm.direct-call.metadata=dart.core::Stopwatch.stop] [@vm.inferred-type.metadata=!? (skip check)] timer.{core::Stopwatch::stop}();
+  core::print("Elapsed ${[@vm.direct-call.metadata=dart.core::Stopwatch.elapsedMilliseconds] timer.{core::Stopwatch::elapsedMilliseconds}}ms, result ${self::x}");
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart.expect
index 00cfa5c..25ef2d6 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart.expect
@@ -63,14 +63,14 @@
     return x;
 }
 static method main() → dynamic {
-  core::print([@vm.direct-call.metadata=#lib::C.foo] [@vm.inferred-type.metadata=#lib::D<dart.core::int*> (skip check)] new self::C::•<core::int*>().{self::C::foo}(){() →* dynamic});
-  core::print([@vm.direct-call.metadata=#lib::E.foo] [@vm.inferred-type.metadata=#lib::D<dart.core::String*> (skip check)] new self::E::•<core::int*, core::String*>().{self::E::foo}(){() →* dynamic});
-  core::print([@vm.direct-call.metadata=#lib::E.bar] [@vm.inferred-type.metadata=#lib::D<dart.core::int*> (skip check)] new self::E::•<core::int*, core::String*>().{self::E::bar}(){() →* dynamic});
-  core::print([@vm.direct-call.metadata=#lib::E.baz] [@vm.inferred-type.metadata=#lib::D<dart.core::String*> (skip check)] new self::E::•<core::int*, core::String*>().{self::E::baz}(){() →* dynamic});
+  core::print([@vm.direct-call.metadata=#lib::C.foo] [@vm.inferred-type.metadata=#lib::D<dart.core::int*> (skip check)] new self::C::•<core::int*>().{self::C::foo}());
+  core::print([@vm.direct-call.metadata=#lib::E.foo] [@vm.inferred-type.metadata=#lib::D<dart.core::String*> (skip check)] new self::E::•<core::int*, core::String*>().{self::E::foo}());
+  core::print([@vm.direct-call.metadata=#lib::E.bar] [@vm.inferred-type.metadata=#lib::D<dart.core::int*> (skip check)] new self::E::•<core::int*, core::String*>().{self::E::bar}());
+  core::print([@vm.direct-call.metadata=#lib::E.baz] [@vm.inferred-type.metadata=#lib::D<dart.core::String*> (skip check)] new self::E::•<core::int*, core::String*>().{self::E::baz}());
   self::C<self::X*>* c = new self::C::•<self::Y*>();
-  [@vm.call-site-attributes.metadata=receiverType:#lib::C<#lib::X*>*] [@vm.direct-call.metadata=#lib::C.id1] [@vm.inferred-type.metadata=!? (skip check)] c.{self::C::id1}(new self::Y::•()){(self::X*) →* dynamic};
-  [@vm.call-site-attributes.metadata=receiverType:#lib::C<#lib::X*>*] [@vm.direct-call.metadata=#lib::C.id2] c.{self::C::id2}(new self::Z::•()){(self::X*) →* dynamic};
+  [@vm.call-site-attributes.metadata=receiverType:#lib::C<#lib::X*>*] [@vm.direct-call.metadata=#lib::C.id1] [@vm.inferred-type.metadata=!? (skip check)] c.{self::C::id1}(new self::Y::•());
+  [@vm.call-site-attributes.metadata=receiverType:#lib::C<#lib::X*>*] [@vm.direct-call.metadata=#lib::C.id2] c.{self::C::id2}(new self::Z::•());
   self::C2<core::num*>* c2 = new self::C2::•<core::num*>();
-  [@vm.call-site-attributes.metadata=receiverType:#lib::C2<dart.core::num*>*] [@vm.direct-call.metadata=#lib::C2.id3] [@vm.inferred-type.metadata=!? (skip check)] c2.{self::C2::id3}(3.0){(core::Comparable<core::num*>*) →* dynamic};
-  [@vm.call-site-attributes.metadata=receiverType:#lib::C2<dart.core::num*>*] [@vm.direct-call.metadata=#lib::C2.id4] [@vm.inferred-type.metadata=!? (skip check)] c2.{self::C2::id4}(new self::K::•<self::J*>()){(self::K<self::I<core::num*>*>*) →* dynamic};
+  [@vm.call-site-attributes.metadata=receiverType:#lib::C2<dart.core::num*>*] [@vm.direct-call.metadata=#lib::C2.id3] [@vm.inferred-type.metadata=!? (skip check)] c2.{self::C2::id3}(3.0);
+  [@vm.call-site-attributes.metadata=receiverType:#lib::C2<dart.core::num*>*] [@vm.direct-call.metadata=#lib::C2.id4] [@vm.inferred-type.metadata=!? (skip check)] c2.{self::C2::id4}(new self::K::•<self::J*>());
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart.expect
index e0e9ca7..ffb7ff5 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart.expect
@@ -15,11 +15,11 @@
     : super self::Element::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3]  method setDependencies([@vm.inferred-type.metadata=!] self::Element* dependent, [@vm.inferred-type.metadata=dart.core::_Smi?] core::Object* value) → void {
-    [@vm.call-site-attributes.metadata=receiverType:dart.core::Map<#lib::Element*, dart.core::Object*>*] [@vm.direct-call.metadata=dart.collection::__InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.[]=] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=#lib::InheritedElement._dependents] [@vm.inferred-type.metadata=dart.collection::_InternalLinkedHashMap<#lib::Element*, dart.core::Object*>] this.{self::InheritedElement::_dependents}{core::Map<self::Element*, core::Object*>*}.{core::Map::[]=}(dependent, value){(self::Element*, core::Object*) →* void};
+    [@vm.call-site-attributes.metadata=receiverType:dart.core::Map<#lib::Element*, dart.core::Object*>*] [@vm.direct-call.metadata=dart.collection::__InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.[]=] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=#lib::InheritedElement._dependents] [@vm.inferred-type.metadata=dart.collection::_InternalLinkedHashMap<#lib::Element*, dart.core::Object*>] this.{self::InheritedElement::_dependents}.{core::Map::[]=}(dependent, value);
   }
 }
 static method main() → dynamic {
   self::InheritedElement* ie = new self::InheritedElement::•();
-  [@vm.direct-call.metadata=#lib::InheritedElement.setDependencies] [@vm.inferred-type.metadata=!? (skip check)] ie.{self::InheritedElement::setDependencies}(ie, 0){(self::Element*, core::Object*) →* void};
-  [@vm.direct-call.metadata=#lib::InheritedElement.setDependencies] [@vm.inferred-type.metadata=!? (skip check)] ie.{self::InheritedElement::setDependencies}(new self::Element::•(), null){(self::Element*, core::Object*) →* void};
+  [@vm.direct-call.metadata=#lib::InheritedElement.setDependencies] [@vm.inferred-type.metadata=!? (skip check)] ie.{self::InheritedElement::setDependencies}(ie, 0);
+  [@vm.direct-call.metadata=#lib::InheritedElement.setDependencies] [@vm.inferred-type.metadata=!? (skip check)] ie.{self::InheritedElement::setDependencies}(new self::Element::•(), null);
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect
index f058396..29abf49 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect
@@ -33,8 +33,8 @@
   core::print([@vm.inferred-type.metadata=dart.core::_Double (value: 100.0)] self::getD);
 }
 static method testStrings([@vm.inferred-type.metadata=#lib::A] self::A* a0) → void {
-  core::print([@vm.direct-call.metadata=#lib::A.foo] [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "foo")] a0.{self::A::foo}{core::String*});
-  core::print([@vm.direct-call.metadata=#lib::A.getBar] [@vm.inferred-type.metadata=dart.core::_OneByteString (skip check) (value: "bar")] a0.{self::A::getBar}(){() →* core::String*});
+  core::print([@vm.direct-call.metadata=#lib::A.foo] [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "foo")] a0.{self::A::foo});
+  core::print([@vm.direct-call.metadata=#lib::A.getBar] [@vm.inferred-type.metadata=dart.core::_OneByteString (skip check) (value: "bar")] a0.{self::A::getBar}());
   core::print(#C5);
 }
 static method testPassEnum() → void {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect
index 8dc37d7..cb18067 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect
@@ -37,22 +37,22 @@
 [@vm.inferred-type.metadata=#lib::D?]static field self::A* dd;
 [@vm.inferred-type.metadata=#lib::E?]static field self::E* ee = new self::E::•();
 static method callerA1([@vm.inferred-type.metadata=!] self::A* aa) → void {
-  [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}(){() →* core::int*};
+  [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}();
 }
 static method callerA2([@vm.inferred-type.metadata=#lib::B] self::A* aa) → void {
-  [@vm.direct-call.metadata=#lib::B.foo] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}(){() →* core::int*};
+  [@vm.direct-call.metadata=#lib::B.foo] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}();
 }
 static method callerA3([@vm.inferred-type.metadata=#lib::C] self::A* aa) → void {
-  [@vm.direct-call.metadata=#lib::C.foo] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}(){() →* core::int*};
+  [@vm.direct-call.metadata=#lib::C.foo] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}();
 }
 static method callerA4([@vm.inferred-type.metadata=#lib::D?] self::A* aa) → void {
-  [@vm.direct-call.metadata=#lib::C.foo??] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}(){() →* core::int*};
+  [@vm.direct-call.metadata=#lib::C.foo??] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}();
 }
 static method callerE1() → void {
-  [@vm.direct-call.metadata=dart.core::_StringBase.toString] [@vm.inferred-type.metadata=!? (skip check) (receiver not int)](#C1).{core::Object::toString}(){() →* core::String*};
+  [@vm.direct-call.metadata=dart.core::_StringBase.toString] [@vm.inferred-type.metadata=!? (skip check) (receiver not int)](#C1).{core::Object::toString}();
 }
 static method callerE2([@vm.inferred-type.metadata=#lib::E?] dynamic x) → void {
-  [@vm.inferred-type.metadata=!? (receiver not int)] x.{core::Object::toString}(){() →* core::String*};
+  [@vm.inferred-type.metadata=!? (receiver not int)] x.{core::Object::toString}();
 }
 static method main(core::List<core::String*>* args) → dynamic {
   self::callerA1(new self::B::•());
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/dynamic_list_access.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/dynamic_list_access.dart.expect
index 17a558f..350004d 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/dynamic_list_access.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/dynamic_list_access.dart.expect
@@ -4,5 +4,5 @@
 
 static method main() → dynamic {
   dynamic x = [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] core::_List::•<core::int*>(10);
-  [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+??] [@vm.direct-call.metadata=dart.core::_List.[]] [@vm.inferred-type.metadata=int? (receiver not int)] x{dynamic}.[](0){dynamic}.+(10);
+  [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+??] [@vm.direct-call.metadata=dart.core::_List.[]] [@vm.inferred-type.metadata=int? (receiver not int)] x.[](0).+(10);
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/enum_used_as_type.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/enum_used_as_type.dart.expect
index 692c39e..89d9a31 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/enum_used_as_type.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/enum_used_as_type.dart.expect
@@ -11,11 +11,11 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3]  method method() → core::int*
-    return [@vm.inferred-type.metadata=!](#C1).{self::Enum::index}{core::int*};
+    return [@vm.inferred-type.metadata=!](#C1).{self::Enum::index};
 }
 static method main() → dynamic {
   core::List<dynamic>* list = [@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::•<dynamic>(0);
-  if([@vm.direct-call.metadata=dart.core::_GrowableList.isNotEmpty] [@vm.inferred-type.metadata=dart.core::bool] list.{core::Iterable::isNotEmpty}{core::bool*}) {
-    let final self::Class* #t1 = new self::Class::•() in let final self::Enum* #t2 = _in::unsafeCast<self::Enum*>(_in::unsafeCast<dynamic>(null)) in [@vm.direct-call.metadata=#lib::Class.method] [@vm.inferred-type.metadata=!? (skip check)] #t1.{self::Class::method}(){(self::Enum*) →* core::int*};
+  if([@vm.direct-call.metadata=dart.core::_GrowableList.isNotEmpty] [@vm.inferred-type.metadata=dart.core::bool] list.{core::Iterable::isNotEmpty}) {
+    let final self::Class* #t1 = new self::Class::•() in let final self::Enum* #t2 = _in::unsafeCast<self::Enum*>(_in::unsafeCast<dynamic>(null)) in [@vm.direct-call.metadata=#lib::Class.method] [@vm.inferred-type.metadata=!? (skip check)] #t1.{self::Class::method}();
   }
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/ffi_struct_constructors.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/ffi_struct_constructors.dart.expect
index 31b941c..367f663 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/ffi_struct_constructors.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/ffi_struct_constructors.dart.expect
@@ -68,7 +68,7 @@
   final () →* self::Struct1* function1 = block {
     _in::_nativeEffect(new self::Struct1::#fromTypedDataBase([@vm.inferred-type.metadata=dart.typed_data::_Uint8List] typ::Uint8List::•(#C18)));
   } =>ffi::_asFunctionInternal<() →* self::Struct1*, () →* self::Struct1*>([@vm.direct-call.metadata=dart.ffi::DynamicLibrary.lookup??] [@vm.inferred-type.metadata=dart.ffi::Pointer? (skip check)] dylib.{ffi::DynamicLibrary::lookup}<ffi::NativeFunction<() →* self::Struct1*>*>("function1"));
-  final self::Struct1* struct1 = [@vm.call-site-attributes.metadata=receiverType:#lib::Struct1* Function()*] function1(){() →* self::Struct1*};
+  final self::Struct1* struct1 = [@vm.call-site-attributes.metadata=receiverType:#lib::Struct1* Function()*] function1.call();
   core::print(struct1);
 }
 static method testAsFunctionReturn() → void {
@@ -76,7 +76,7 @@
   final () →* self::Struct2* function2 = block {
     _in::_nativeEffect(new self::Struct2::#fromTypedDataBase([@vm.inferred-type.metadata=dart.typed_data::_Uint8List] typ::Uint8List::•(#C18)));
   } =>ffi::_asFunctionInternal<() →* self::Struct2*, () →* self::Struct2*>(pointer);
-  final self::Struct2* struct2 = [@vm.call-site-attributes.metadata=receiverType:#lib::Struct2* Function()*] function2(){() →* self::Struct2*};
+  final self::Struct2* struct2 = [@vm.call-site-attributes.metadata=receiverType:#lib::Struct2* Function()*] function2.call();
   core::print(struct2);
 }
 [@vm.unboxing-info.metadata=(b)->i]static method useStruct3(self::Struct3* struct3) → core::int* {
@@ -113,6 +113,6 @@
 static method testNestedLoad() → void {
   final ffi::Pointer<self::Struct11*>* pointer = [@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::Pointer::fromAddress<self::Struct11*>(3735928559);
   final self::Struct11* struct11 = new self::Struct11::#fromTypedDataBase(pointer!);
-  final self::Struct12* struct12 = [@vm.direct-call.metadata=#lib::Struct11.nested] [@vm.inferred-type.metadata=#lib::Struct12] struct11.{self::Struct11::nested}{self::Struct12*};
+  final self::Struct12* struct12 = [@vm.direct-call.metadata=#lib::Struct11.nested] [@vm.inferred-type.metadata=#lib::Struct12] struct11.{self::Struct11::nested};
   core::print(struct12);
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/future.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/future.dart.expect
index 8a43ab1..432f7fc 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/future.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/future.dart.expect
@@ -22,14 +22,14 @@
 }
 static method main() → dynamic {
   dynamic c = new self::C::•<core::int*>();
-  [@vm.direct-call.metadata=#lib::C.test2c] [@vm.inferred-type.metadata=!? (receiver not int)] c{dynamic}.test2c(3);
-  [@vm.direct-call.metadata=#lib::C.test3c] [@vm.inferred-type.metadata=!? (receiver not int)] c{dynamic}.test3c([@vm.inferred-type.metadata=dart.async::_Future<dart.core::int*>] asy::Future::value<core::int*>(3));
-  [@vm.direct-call.metadata=#lib::C.test4c] [@vm.inferred-type.metadata=!? (receiver not int)] c{dynamic}.test4c([@vm.inferred-type.metadata=dart.async::_Future<dart.core::int*>] asy::Future::value<core::int*>(3));
-  [@vm.direct-call.metadata=#lib::C.test2r] [@vm.inferred-type.metadata=!? (receiver not int)] c{dynamic}.test2r(new self::C::•<core::int*>());
-  [@vm.direct-call.metadata=#lib::C.test3r] [@vm.inferred-type.metadata=!? (receiver not int)] c{dynamic}.test3r(new self::C::•<asy::Future<core::int*>*>());
-  [@vm.direct-call.metadata=#lib::C.test4r] [@vm.inferred-type.metadata=!? (receiver not int)] c{dynamic}.test4r(new self::C::•<asy::Future<core::int*>*>());
-  [@vm.direct-call.metadata=#lib::C.test5r] [@vm.inferred-type.metadata=!? (receiver not int)] c{dynamic}.test5r(new self::C::•<FutureOr<core::int*>*>());
-  [@vm.direct-call.metadata=#lib::C.test6r] [@vm.inferred-type.metadata=!? (receiver not int)] c{dynamic}.test6r(new self::C::•<FutureOr<core::int*>*>());
-  [@vm.direct-call.metadata=#lib::C.test7r] [@vm.inferred-type.metadata=!? (receiver not int)] c{dynamic}.test7r(new self::C::•<FutureOr<core::int*>*>());
-  [@vm.direct-call.metadata=#lib::C.test8r] [@vm.inferred-type.metadata=!? (receiver not int)] c{dynamic}.test8r(new self::C::•<asy::Future<core::int*>*>());
+  [@vm.direct-call.metadata=#lib::C.test2c] [@vm.inferred-type.metadata=!? (receiver not int)] c.test2c(3);
+  [@vm.direct-call.metadata=#lib::C.test3c] [@vm.inferred-type.metadata=!? (receiver not int)] c.test3c([@vm.inferred-type.metadata=dart.async::_Future<dart.core::int*>] asy::Future::value<core::int*>(3));
+  [@vm.direct-call.metadata=#lib::C.test4c] [@vm.inferred-type.metadata=!? (receiver not int)] c.test4c([@vm.inferred-type.metadata=dart.async::_Future<dart.core::int*>] asy::Future::value<core::int*>(3));
+  [@vm.direct-call.metadata=#lib::C.test2r] [@vm.inferred-type.metadata=!? (receiver not int)] c.test2r(new self::C::•<core::int*>());
+  [@vm.direct-call.metadata=#lib::C.test3r] [@vm.inferred-type.metadata=!? (receiver not int)] c.test3r(new self::C::•<asy::Future<core::int*>*>());
+  [@vm.direct-call.metadata=#lib::C.test4r] [@vm.inferred-type.metadata=!? (receiver not int)] c.test4r(new self::C::•<asy::Future<core::int*>*>());
+  [@vm.direct-call.metadata=#lib::C.test5r] [@vm.inferred-type.metadata=!? (receiver not int)] c.test5r(new self::C::•<FutureOr<core::int*>*>());
+  [@vm.direct-call.metadata=#lib::C.test6r] [@vm.inferred-type.metadata=!? (receiver not int)] c.test6r(new self::C::•<FutureOr<core::int*>*>());
+  [@vm.direct-call.metadata=#lib::C.test7r] [@vm.inferred-type.metadata=!? (receiver not int)] c.test7r(new self::C::•<FutureOr<core::int*>*>());
+  [@vm.direct-call.metadata=#lib::C.test8r] [@vm.inferred-type.metadata=!? (receiver not int)] c.test8r(new self::C::•<asy::Future<core::int*>*>());
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/future_or.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/future_or.dart.expect
index 4a850d3..32c6fb4 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/future_or.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/future_or.dart.expect
@@ -18,7 +18,7 @@
 static field dynamic usedObject;
 [@vm.inferred-type.metadata=dart.core::Null? (value: null)]static field core::Function* unknown;
 static method use(dynamic object) → void {
-  self::usedObject == null ?{dynamic} self::usedObject = object : null;
+  [@vm.inferred-type.metadata=!? (receiver not int)] self::usedObject.{core::Object::==}(null) ?{dynamic} self::usedObject = object : null;
 }
 static method foo1_a1([@vm.inferred-type.metadata=dart.async::_Future<#lib::B*>] dynamic x) → void {
   self::use(x);
@@ -57,7 +57,7 @@
   self::foo2_a4(a4);
 }
 static method getDynamic() → dynamic
-  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown();
+  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown.call();
 static method main(core::List<core::String*>* args) → dynamic {
   self::foo1([@vm.inferred-type.metadata=dart.async::_Future<#lib::B*>] asy::Future::value<self::B*>(new self::B::•()), new self::B::•(), [@vm.inferred-type.metadata=dart.async::_Future<#lib::B*>] asy::Future::value<self::B*>(new self::B::•()), new self::B::•());
   self::foo2(self::getDynamic() as{TypeError,ForDynamic} asy::Future<self::A*>*, self::getDynamic() as{TypeError,ForDynamic} self::A*, self::getDynamic() as{TypeError,ForDynamic} FutureOr<self::A*>*, self::getDynamic() as{TypeError,ForDynamic} FutureOr<self::A*>*);
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect
index 4b18c73..6fce119 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect
@@ -29,7 +29,7 @@
     : super self::Stream::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  method foobar() → self::StreamSubscription* {
-    return [@vm.inferred-type.metadata=! (skip check)] this.{self::_StreamImpl::_createSubscription}(){() →* self::StreamSubscription*};
+    return [@vm.inferred-type.metadata=! (skip check)] this.{self::_StreamImpl::_createSubscription}();
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5]  method _createSubscription() → self::StreamSubscription* {
     return new self::_BufferingStreamSubscription::•();
@@ -54,7 +54,7 @@
     : self::StreamView::_stream = stream, super self::Stream::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  method foobar() → self::StreamSubscription* {
-    return [@vm.direct-call.metadata=#lib::StreamView._stream] [@vm.inferred-type.metadata=!] this.{self::StreamView::_stream}{self::Stream*}.{self::Stream::foobar}(){((dynamic) →* void, {onError: core::Function*}) →* self::StreamSubscription*};
+    return [@vm.direct-call.metadata=#lib::StreamView._stream] [@vm.inferred-type.metadata=!] this.{self::StreamView::_stream}.{self::Stream::foobar}();
   }
 }
 class ByteStream extends self::StreamView {
@@ -83,32 +83,32 @@
 }
 static method round1() → void {
   self::ByteStream* x = new self::ByteStream::•(new self::ByteStream::•(new self::_GeneratedStreamImpl::•()));
-  [@vm.direct-call.metadata=#lib::ByteStream.super_foobar1] [@vm.inferred-type.metadata=!? (skip check)] x.{self::ByteStream::super_foobar1}(){((dynamic) →* void) →* dynamic};
+  [@vm.direct-call.metadata=#lib::ByteStream.super_foobar1] [@vm.inferred-type.metadata=!? (skip check)] x.{self::ByteStream::super_foobar1}();
 }
 static method round2() → void {
   new self::_ControllerStream::•();
   self::Stream* x = new self::_GeneratedStreamImpl::•();
   x = new self::ByteStream::•(x);
-  [@vm.direct-call.metadata=#lib::StreamView.foobar] [@vm.inferred-type.metadata=!? (skip check)] x.{self::Stream::foobar}(){((dynamic) →* void, {onError: core::Function*}) →* self::StreamSubscription*};
+  [@vm.direct-call.metadata=#lib::StreamView.foobar] [@vm.inferred-type.metadata=!? (skip check)] x.{self::Stream::foobar}();
 }
 static method round3() → void {
   self::Stream* x = new self::_GeneratedStreamImpl::•();
   x = new self::ByteStream::•(x);
   x = new self::_ControllerStream::•();
-  [@vm.direct-call.metadata=#lib::_StreamImpl.foobar] [@vm.inferred-type.metadata=!? (skip check)] x.{self::Stream::foobar}(){((dynamic) →* void, {onError: core::Function*}) →* self::StreamSubscription*};
+  [@vm.direct-call.metadata=#lib::_StreamImpl.foobar] [@vm.inferred-type.metadata=!? (skip check)] x.{self::Stream::foobar}();
 }
 static method round4() → void {
   self::ByteStream* x = new self::ByteStream::•(new self::_ControllerStream::•());
-  self::Stream* y = [@vm.direct-call.metadata=#lib::ByteStream.super_stream] [@vm.inferred-type.metadata=!] x.{self::ByteStream::super_stream}{self::Stream*};
-  self::Stream* z = [@vm.direct-call.metadata=#lib::StreamView._stream] [@vm.inferred-type.metadata=!] x.{self::StreamView::_stream}{self::Stream*};
-  if([@vm.direct-call.metadata=dart.core::Object.==] [@vm.inferred-type.metadata=dart.core::bool (skip check) (receiver not int)] y =={self::Stream::==}{(dynamic) →* core::bool*} z) {
-    [@vm.direct-call.metadata=#lib::ByteStream.super_foobar2] [@vm.inferred-type.metadata=!? (skip check)] x.{self::ByteStream::super_foobar2}(){((dynamic) →* void) →* dynamic};
+  self::Stream* y = [@vm.direct-call.metadata=#lib::ByteStream.super_stream] [@vm.inferred-type.metadata=!] x.{self::ByteStream::super_stream};
+  self::Stream* z = [@vm.direct-call.metadata=#lib::StreamView._stream] [@vm.inferred-type.metadata=!] x.{self::StreamView::_stream};
+  if([@vm.direct-call.metadata=dart.core::Object.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] y.{self::Stream::==}(z)) {
+    [@vm.direct-call.metadata=#lib::ByteStream.super_foobar2] [@vm.inferred-type.metadata=!? (skip check)] x.{self::ByteStream::super_foobar2}();
   }
 }
 static method round5() → void {
   self::ByteStream* x = new self::ByteStream::•(new self::_GeneratedStreamImpl::•());
   new self::_HandleErrorStream::•();
-  [@vm.direct-call.metadata=#lib::ByteStream.super_foobar3] [@vm.inferred-type.metadata=!? (skip check)] x.{self::ByteStream::super_foobar3}(){({onData: (dynamic) →* void, onError: core::Function*}) →* dynamic};
+  [@vm.direct-call.metadata=#lib::ByteStream.super_foobar3] [@vm.inferred-type.metadata=!? (skip check)] x.{self::ByteStream::super_foobar3}();
 }
 static method main(core::List<core::String*>* args) → dynamic {
   new self::_GeneratedStreamImpl::•();
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_field_initializer.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_field_initializer.dart.expect
index 09df5d9..2739a4d 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_field_initializer.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_field_initializer.dart.expect
@@ -34,11 +34,11 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method barL1() → dynamic
-    return [@vm.direct-call.metadata=#lib::DeepCaller1.barL2] [@vm.inferred-type.metadata=!? (skip check)] this.{self::DeepCaller1::barL2}(){() →* dynamic};
+    return [@vm.direct-call.metadata=#lib::DeepCaller1.barL2] [@vm.inferred-type.metadata=!? (skip check)] this.{self::DeepCaller1::barL2}();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6]  method barL2() → dynamic
-    return [@vm.direct-call.metadata=#lib::DeepCaller1.barL3] [@vm.inferred-type.metadata=!? (skip check)] this.{self::DeepCaller1::barL3}(){() →* dynamic};
+    return [@vm.direct-call.metadata=#lib::DeepCaller1.barL3] [@vm.inferred-type.metadata=!? (skip check)] this.{self::DeepCaller1::barL3}();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8]  method barL3() → dynamic
-    return [@vm.direct-call.metadata=#lib::DeepCaller1.barL4] [@vm.inferred-type.metadata=!? (skip check)] this.{self::DeepCaller1::barL4}(){() →* dynamic};
+    return [@vm.direct-call.metadata=#lib::DeepCaller1.barL4] [@vm.inferred-type.metadata=!? (skip check)] this.{self::DeepCaller1::barL4}();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10]  method barL4() → dynamic
     return self::field1;
 }
@@ -53,26 +53,26 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14]  method barL1([@vm.inferred-type.metadata=#lib::D] self::D* dd) → dynamic
-    return [@vm.direct-call.metadata=#lib::DeepCaller2.barL2] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL2}(dd){(self::D*) →* dynamic};
+    return [@vm.direct-call.metadata=#lib::DeepCaller2.barL2] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL2}(dd);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16]  method barL2([@vm.inferred-type.metadata=#lib::D] self::D* dd) → dynamic
-    return [@vm.direct-call.metadata=#lib::DeepCaller2.barL3] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL3}(dd){(self::D*) →* dynamic};
+    return [@vm.direct-call.metadata=#lib::DeepCaller2.barL3] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL3}(dd);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:17,getterSelectorId:18]  method barL3([@vm.inferred-type.metadata=#lib::D] self::D* dd) → dynamic
-    return [@vm.direct-call.metadata=#lib::DeepCaller2.barL4] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL4}(dd){(self::D*) →* dynamic};
+    return [@vm.direct-call.metadata=#lib::DeepCaller2.barL4] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL4}(dd);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:19,getterSelectorId:20]  method barL4([@vm.inferred-type.metadata=#lib::D] self::D* dd) → dynamic
-    return [@vm.direct-call.metadata=#lib::D.field2] [@vm.inferred-type.metadata=!] dd.{self::D::field2}{core::Object*};
+    return [@vm.direct-call.metadata=#lib::D.field2] [@vm.inferred-type.metadata=!] dd.{self::D::field2};
 }
 [@vm.inferred-type.metadata=dart.core::Null? (value: null)]static field core::Function* unknown;
 static field core::Object* field1 = [@vm.inferred-type.metadata=!] self::getValue();
 static method getDynamic() → dynamic
-  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown();
+  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown.call();
 static method getValue() → core::Object* {
   self::A* aa = self::getDynamic() as{TypeError,ForDynamic} self::A*;
-  return [@vm.inferred-type.metadata=!] aa.{self::A::foo}(){() →* core::Object*};
+  return [@vm.inferred-type.metadata=!] aa.{self::A::foo}();
 }
 static method use1([@vm.inferred-type.metadata=#lib::DeepCaller1] self::DeepCaller1* x) → dynamic
-  return [@vm.direct-call.metadata=#lib::DeepCaller1.barL1] [@vm.inferred-type.metadata=!? (skip check)] x.{self::DeepCaller1::barL1}(){() →* dynamic};
+  return [@vm.direct-call.metadata=#lib::DeepCaller1.barL1] [@vm.inferred-type.metadata=!? (skip check)] x.{self::DeepCaller1::barL1}();
 static method use2([@vm.inferred-type.metadata=#lib::DeepCaller2] self::DeepCaller2* x) → dynamic
-  return [@vm.direct-call.metadata=#lib::DeepCaller2.barL1] [@vm.inferred-type.metadata=! (skip check)] x.{self::DeepCaller2::barL1}(new self::D::•()){(self::D*) →* dynamic};
+  return [@vm.direct-call.metadata=#lib::DeepCaller2.barL1] [@vm.inferred-type.metadata=! (skip check)] x.{self::DeepCaller2::barL1}(new self::D::•());
 static method createC() → dynamic {
   new self::C::•();
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class1.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class1.dart.expect
index 6f62466..8432b7e 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class1.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class1.dart.expect
@@ -25,15 +25,15 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method bar([@vm.inferred-type.metadata=#lib::B?] self::A* aa) → dynamic
-    return [@vm.direct-call.metadata=#lib::B.foo??] [@vm.inferred-type.metadata=#lib::T1 (skip check)] aa.{self::A::foo}(){() →* dynamic};
+    return [@vm.direct-call.metadata=#lib::B.foo??] [@vm.inferred-type.metadata=#lib::T1 (skip check)] aa.{self::A::foo}();
 }
 [@vm.inferred-type.metadata=dart.core::Null? (value: null)]static field core::Function* unknown;
 static method use1([@vm.inferred-type.metadata=#lib::Intermediate] self::Intermediate* i, [@vm.inferred-type.metadata=#lib::B?] self::A* aa) → dynamic
-  return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=#lib::T1 (skip check)] i.{self::Intermediate::bar}(aa){(self::A*) →* dynamic};
+  return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=#lib::T1 (skip check)] i.{self::Intermediate::bar}(aa);
 static method use2([@vm.inferred-type.metadata=#lib::Intermediate] self::Intermediate* i, [@vm.inferred-type.metadata=#lib::B?] self::A* aa) → dynamic
-  return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=#lib::T1 (skip check)] i.{self::Intermediate::bar}(aa){(self::A*) →* dynamic};
+  return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=#lib::T1 (skip check)] i.{self::Intermediate::bar}(aa);
 static method getDynamic() → dynamic
-  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown();
+  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown.call();
 static method allocateB() → dynamic {
   new self::B::•();
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart.expect
index a9156b1..78761af 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart.expect
@@ -49,17 +49,17 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method bar(self::A* aa) → dynamic
-    return [@vm.inferred-type.metadata=!] aa.{self::A::foo}(){() →* dynamic};
+    return [@vm.inferred-type.metadata=!] aa.{self::A::foo}();
 }
 [@vm.inferred-type.metadata=dart.core::Null? (value: null)]static field core::Function* unknown;
 static method use1([@vm.inferred-type.metadata=#lib::Intermediate] self::Intermediate* i, self::A* aa) → dynamic
-  return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=! (skip check)] i.{self::Intermediate::bar}(aa){(self::A*) →* dynamic};
+  return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=! (skip check)] i.{self::Intermediate::bar}(aa);
 static method use2([@vm.inferred-type.metadata=#lib::Intermediate] self::Intermediate* i, self::A* aa) → dynamic
-  return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=! (skip check)] i.{self::Intermediate::bar}(aa){(self::A*) →* dynamic};
+  return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=! (skip check)] i.{self::Intermediate::bar}(aa);
 static method use3([@vm.inferred-type.metadata=#lib::Intermediate] self::Intermediate* i, self::A* aa) → dynamic
-  return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=! (skip check)] i.{self::Intermediate::bar}(aa){(self::A*) →* dynamic};
+  return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=! (skip check)] i.{self::Intermediate::bar}(aa);
 static method getDynamic() → dynamic
-  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown();
+  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown.call();
 static method allocateB() → dynamic {
   new self::B::•();
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_dynamic_target.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_dynamic_target.dart.expect
index bc21869..9db28b3 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_dynamic_target.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_dynamic_target.dart.expect
@@ -41,15 +41,15 @@
 }
 [@vm.inferred-type.metadata=dart.core::Null? (value: null)]static field core::Function* unknown;
 static method use_foo1(dynamic x) → dynamic
-  return [@vm.inferred-type.metadata=#lib::T1] x{dynamic}.foo();
+  return [@vm.inferred-type.metadata=#lib::T1] x.foo();
 static method use_foo2(dynamic x) → dynamic
-  return [@vm.inferred-type.metadata=#lib::T1] x{dynamic}.foo();
+  return [@vm.inferred-type.metadata=#lib::T1] x.foo();
 static method use_bar(dynamic x) → dynamic
-  return [@vm.inferred-type.metadata=#lib::T2] x{dynamic}.bar();
+  return [@vm.inferred-type.metadata=#lib::T2] x.bar();
 static method use_bazz(dynamic x) → dynamic
-  return [@vm.inferred-type.metadata=#lib::T3] x{dynamic}.bazz();
+  return [@vm.inferred-type.metadata=#lib::T3] x.bazz();
 static method getDynamic() → dynamic
-  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown();
+  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown.call();
 static method allocateA() → dynamic {
   new self::A::•();
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field.dart.expect
index f07cc2b..64655ae 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field.dart.expect
@@ -24,34 +24,34 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6]  method barL1([@vm.inferred-type.metadata=#lib::A?] self::A* aa) → dynamic
-    return [@vm.direct-call.metadata=#lib::DeepCaller1.barL2] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::DeepCaller1::barL2}(aa){(self::A*) →* dynamic};
+    return [@vm.direct-call.metadata=#lib::DeepCaller1.barL2] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::DeepCaller1::barL2}(aa);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8]  method barL2([@vm.inferred-type.metadata=#lib::A?] self::A* aa) → dynamic
-    return [@vm.direct-call.metadata=#lib::DeepCaller1.barL3] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::DeepCaller1::barL3}(aa){(self::A*) →* dynamic};
+    return [@vm.direct-call.metadata=#lib::DeepCaller1.barL3] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::DeepCaller1::barL3}(aa);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10]  method barL3([@vm.inferred-type.metadata=#lib::A?] self::A* aa) → dynamic
-    return [@vm.direct-call.metadata=#lib::DeepCaller1.barL4] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::DeepCaller1::barL4}(aa){(self::A*) →* dynamic};
+    return [@vm.direct-call.metadata=#lib::DeepCaller1.barL4] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::DeepCaller1::barL4}(aa);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12]  method barL4([@vm.inferred-type.metadata=#lib::A?] self::A* aa) → dynamic
-    return [@vm.direct-call.metadata=#lib::A.field1??] [@vm.inferred-type.metadata=#lib::T1] aa.{self::A::field1}{dynamic};
+    return [@vm.direct-call.metadata=#lib::A.field1??] [@vm.inferred-type.metadata=#lib::T1] aa.{self::A::field1};
 }
 class DeepCaller2 extends core::Object {
   synthetic constructor •() → self::DeepCaller2*
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14]  method barL1([@vm.inferred-type.metadata=#lib::A?] self::A* aa) → dynamic
-    return [@vm.direct-call.metadata=#lib::DeepCaller2.barL2] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL2}(aa){(self::A*) →* dynamic};
+    return [@vm.direct-call.metadata=#lib::DeepCaller2.barL2] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL2}(aa);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16]  method barL2([@vm.inferred-type.metadata=#lib::A?] self::A* aa) → dynamic
-    return [@vm.direct-call.metadata=#lib::DeepCaller2.barL3] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL3}(aa){(self::A*) →* dynamic};
+    return [@vm.direct-call.metadata=#lib::DeepCaller2.barL3] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL3}(aa);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:17,getterSelectorId:18]  method barL3([@vm.inferred-type.metadata=#lib::A?] self::A* aa) → dynamic
-    return [@vm.direct-call.metadata=#lib::DeepCaller2.barL4] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL4}(aa){(self::A*) →* dynamic};
+    return [@vm.direct-call.metadata=#lib::DeepCaller2.barL4] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL4}(aa);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:19,getterSelectorId:20]  method barL4([@vm.inferred-type.metadata=#lib::A?] self::A* aa) → dynamic
-    return [@vm.direct-call.metadata=#lib::A.field2??] [@vm.inferred-type.metadata=!] aa.{self::A::field2}{dynamic};
+    return [@vm.direct-call.metadata=#lib::A.field2??] [@vm.inferred-type.metadata=!] aa.{self::A::field2};
 }
 [@vm.inferred-type.metadata=dart.core::Null? (value: null)]static field core::Function* unknown;
 static method use1([@vm.inferred-type.metadata=#lib::DeepCaller1] self::DeepCaller1* x, [@vm.inferred-type.metadata=#lib::A?] self::A* aa) → dynamic
-  return [@vm.direct-call.metadata=#lib::DeepCaller1.barL1] [@vm.inferred-type.metadata=#lib::T1 (skip check)] x.{self::DeepCaller1::barL1}(aa){(self::A*) →* dynamic};
+  return [@vm.direct-call.metadata=#lib::DeepCaller1.barL1] [@vm.inferred-type.metadata=#lib::T1 (skip check)] x.{self::DeepCaller1::barL1}(aa);
 static method use2([@vm.inferred-type.metadata=#lib::DeepCaller2] self::DeepCaller2* x, [@vm.inferred-type.metadata=#lib::A?] self::A* aa) → dynamic
-  return [@vm.direct-call.metadata=#lib::DeepCaller2.barL1] [@vm.inferred-type.metadata=! (skip check)] x.{self::DeepCaller2::barL1}(aa){(self::A*) →* dynamic};
+  return [@vm.direct-call.metadata=#lib::DeepCaller2.barL1] [@vm.inferred-type.metadata=! (skip check)] x.{self::DeepCaller2::barL1}(aa);
 static method getDynamic() → dynamic
-  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown();
+  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown.call();
 static method setField2([@vm.inferred-type.metadata=#lib::A] self::A* aa, [@vm.inferred-type.metadata=#lib::T2] dynamic value) → void {
   [@vm.direct-call.metadata=#lib::A.field2] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::field2} = value;
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field2.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field2.dart.expect
index ffc08fe..63fc423 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field2.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field2.dart.expect
@@ -29,7 +29,7 @@
     ;
 }
 static method foo1([@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::T1*>] core::List<self::T1*>* list) → dynamic {
-  [@vm.direct-call.metadata=#lib::T3.run] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=#lib::T1.go??] [@vm.inferred-type.metadata=#lib::T3 (skip check)] [@vm.direct-call.metadata=#lib::Q.result??] [@vm.direct-call.metadata=dart._internal::ListIterable.first] [@vm.inferred-type.metadata=#lib::Q?] [@vm.direct-call.metadata=dart.collection::_ListBase&Object&ListMixin.map] [@vm.inferred-type.metadata=dart._internal::MappedListIterable<#lib::T1*, ?> (skip check)] list.{core::Iterable::map}<self::Q<self::T1*>*>((self::T1* t1) → self::Q<self::T1*>* => new self::Q::•<self::T1*>(t1)){((self::T1*) →* self::Q<self::T1*>*) →* core::Iterable<self::Q<self::T1*>*>*}.{core::Iterable::first}{self::Q<self::T1*>*}.{self::Q::result}{self::T1*}.{self::T1::go}(){() →* self::T3*}.{self::T3::run}(){() →* dynamic};
+  [@vm.direct-call.metadata=#lib::T3.run] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=#lib::T1.go??] [@vm.inferred-type.metadata=#lib::T3 (skip check)] [@vm.direct-call.metadata=#lib::Q.result??] [@vm.direct-call.metadata=dart._internal::ListIterable.first] [@vm.inferred-type.metadata=#lib::Q?] [@vm.direct-call.metadata=dart.collection::_ListBase&Object&ListMixin.map] [@vm.inferred-type.metadata=dart._internal::MappedListIterable<#lib::T1*, ?> (skip check)] list.{core::Iterable::map}<self::Q<self::T1*>*>((self::T1* t1) → self::Q<self::T1*>* => new self::Q::•<self::T1*>(t1)).{core::Iterable::first}.{self::Q::result}.{self::T1::go}().{self::T3::run}();
 }
 static method foo2NewValue() → self::Q<dynamic>*
   return new self::Q::•<self::T2*>(new self::T2::•());
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_while_processing.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_while_processing.dart.expect
index 74df479..674fdd4 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_while_processing.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_while_processing.dart.expect
@@ -23,18 +23,18 @@
     : self::Point::x = x, super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5]  method newPoint1() → self::Point*
-    return new self::Point::•([@vm.direct-call.metadata=#lib::Point.x] [@vm.inferred-type.metadata=!] this.{self::Point::x}{self::I*});
+    return new self::Point::•([@vm.direct-call.metadata=#lib::Point.x] [@vm.inferred-type.metadata=!] this.{self::Point::x});
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7]  method newPoint2() → self::Point*
-    return new self::Point::•([@vm.direct-call.metadata=#lib::Point.x] [@vm.inferred-type.metadata=!] this.{self::Point::x}{self::I*});
+    return new self::Point::•([@vm.direct-call.metadata=#lib::Point.x] [@vm.inferred-type.metadata=!] this.{self::Point::x});
 }
 static method getX([@vm.inferred-type.metadata=#lib::Point] dynamic point) → dynamic {
-  [@vm.direct-call.metadata=#lib::Point.x] [@vm.inferred-type.metadata=!? (receiver not int)] point{dynamic}.x;
+  [@vm.direct-call.metadata=#lib::Point.x] [@vm.inferred-type.metadata=!? (receiver not int)] point.x;
 }
 static method main() → dynamic {
   self::Point* a = new self::Point::•(new self::T1::•());
-  core::print([@vm.direct-call.metadata=#lib::Point.x] [@vm.inferred-type.metadata=!] a.{self::Point::x}{self::I*});
+  core::print([@vm.direct-call.metadata=#lib::Point.x] [@vm.inferred-type.metadata=!] a.{self::Point::x});
   self::Point* c = new self::Point::•(new self::T2::•());
-  [@vm.direct-call.metadata=#lib::Point.x] [@vm.inferred-type.metadata=!] c.{self::Point::x}{self::I*}.{self::I::foo}(){() →* void};
-  self::getX([@vm.direct-call.metadata=#lib::Point.newPoint1] [@vm.inferred-type.metadata=#lib::Point (skip check)] a.{self::Point::newPoint1}(){() →* self::Point*});
-  self::getX([@vm.direct-call.metadata=#lib::Point.newPoint2] [@vm.inferred-type.metadata=#lib::Point (skip check)] a.{self::Point::newPoint2}(){() →* self::Point*});
+  [@vm.direct-call.metadata=#lib::Point.x] [@vm.inferred-type.metadata=!] c.{self::Point::x}.{self::I::foo}();
+  self::getX([@vm.direct-call.metadata=#lib::Point.newPoint1] [@vm.inferred-type.metadata=#lib::Point (skip check)] a.{self::Point::newPoint1}());
+  self::getX([@vm.direct-call.metadata=#lib::Point.newPoint2] [@vm.inferred-type.metadata=#lib::Point (skip check)] a.{self::Point::newPoint2}());
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/lists.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/lists.dart.expect
index 8a9005d..a4f084e 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/lists.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/lists.dart.expect
@@ -28,26 +28,26 @@
     ;
 }
 static method nonConstant() → dynamic
-  return [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object*) →* core::bool*} 1;
+  return [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1").{core::num::==}(1);
 static method main() → dynamic {
   self::A* x = new self::A::•();
-  core::print([@vm.direct-call.metadata=#lib::A.literal1] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::literal1}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.literal2] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::literal2}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.constLiteral1] [@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[])] x.{self::A::constLiteral1}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.constLiteral2] [@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[1, 2])] x.{self::A::constLiteral2}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.defaultConstructor1] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::defaultConstructor1}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.defaultConstructor2] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] x.{self::A::defaultConstructor2}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory1] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] x.{self::A::filledFactory1}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory2] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::filledFactory2}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory3] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] x.{self::A::filledFactory3}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory4] [@vm.inferred-type.metadata=!] x.{self::A::filledFactory4}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory5] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] x.{self::A::filledFactory5}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory6] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::filledFactory6}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory7] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] x.{self::A::filledFactory7}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory8] [@vm.inferred-type.metadata=!] x.{self::A::filledFactory8}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.generateFactory1] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::generateFactory1}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.generateFactory2] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::generateFactory2}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.generateFactory3] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] x.{self::A::generateFactory3}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.generateFactory4] [@vm.inferred-type.metadata=!] x.{self::A::generateFactory4}{core::List<core::int*>*});
-  core::print([@vm.direct-call.metadata=#lib::A.generateFactory5] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::List<dart.core::int*>*>] x.{self::A::generateFactory5}{core::List<core::List<core::int*>*>*});
+  core::print([@vm.direct-call.metadata=#lib::A.literal1] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::literal1});
+  core::print([@vm.direct-call.metadata=#lib::A.literal2] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::literal2});
+  core::print([@vm.direct-call.metadata=#lib::A.constLiteral1] [@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[])] x.{self::A::constLiteral1});
+  core::print([@vm.direct-call.metadata=#lib::A.constLiteral2] [@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[1, 2])] x.{self::A::constLiteral2});
+  core::print([@vm.direct-call.metadata=#lib::A.defaultConstructor1] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::defaultConstructor1});
+  core::print([@vm.direct-call.metadata=#lib::A.defaultConstructor2] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] x.{self::A::defaultConstructor2});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory1] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] x.{self::A::filledFactory1});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory2] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::filledFactory2});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory3] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] x.{self::A::filledFactory3});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory4] [@vm.inferred-type.metadata=!] x.{self::A::filledFactory4});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory5] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] x.{self::A::filledFactory5});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory6] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::filledFactory6});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory7] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] x.{self::A::filledFactory7});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory8] [@vm.inferred-type.metadata=!] x.{self::A::filledFactory8});
+  core::print([@vm.direct-call.metadata=#lib::A.generateFactory1] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::generateFactory1});
+  core::print([@vm.direct-call.metadata=#lib::A.generateFactory2] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] x.{self::A::generateFactory2});
+  core::print([@vm.direct-call.metadata=#lib::A.generateFactory3] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] x.{self::A::generateFactory3});
+  core::print([@vm.direct-call.metadata=#lib::A.generateFactory4] [@vm.inferred-type.metadata=!] x.{self::A::generateFactory4});
+  core::print([@vm.direct-call.metadata=#lib::A.generateFactory5] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::List<dart.core::int*>*>] x.{self::A::generateFactory5});
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/lists_nnbd.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/lists_nnbd.dart.expect
index 33283c2..3d22ad3 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/lists_nnbd.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/lists_nnbd.dart.expect
@@ -26,24 +26,24 @@
     ;
 }
 static method nonConstant() → dynamic
-  return [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object) → core::bool} 1;
+  return [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1").{core::num::==}(1);
 static method main() → dynamic {
   self::A x = new self::A::•();
-  core::print([@vm.direct-call.metadata=#lib::A.literal1] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] x.{self::A::literal1}{core::List<core::int>});
-  core::print([@vm.direct-call.metadata=#lib::A.literal2] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] x.{self::A::literal2}{core::List<core::int>});
-  core::print([@vm.direct-call.metadata=#lib::A.constLiteral1] [@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[])] x.{self::A::constLiteral1}{core::List<core::int>});
-  core::print([@vm.direct-call.metadata=#lib::A.constLiteral2] [@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[1, 2])] x.{self::A::constLiteral2}{core::List<core::int>});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory1] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] x.{self::A::filledFactory1}{core::List<core::int>});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory2] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] x.{self::A::filledFactory2}{core::List<core::int>});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory3] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] x.{self::A::filledFactory3}{core::List<core::int>});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory4] [@vm.inferred-type.metadata=!] x.{self::A::filledFactory4}{core::List<core::int>});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory5] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int?>] x.{self::A::filledFactory5}{core::List<core::int?>});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory6] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int?>] x.{self::A::filledFactory6}{core::List<core::int?>});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory7] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int?>] x.{self::A::filledFactory7}{core::List<core::int?>});
-  core::print([@vm.direct-call.metadata=#lib::A.filledFactory8] [@vm.inferred-type.metadata=!] x.{self::A::filledFactory8}{core::List<core::int?>});
-  core::print([@vm.direct-call.metadata=#lib::A.generateFactory1] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] x.{self::A::generateFactory1}{core::List<core::int>});
-  core::print([@vm.direct-call.metadata=#lib::A.generateFactory2] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] x.{self::A::generateFactory2}{core::List<core::int>});
-  core::print([@vm.direct-call.metadata=#lib::A.generateFactory3] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] x.{self::A::generateFactory3}{core::List<core::int>});
-  core::print([@vm.direct-call.metadata=#lib::A.generateFactory4] [@vm.inferred-type.metadata=!] x.{self::A::generateFactory4}{core::List<core::int>});
-  core::print([@vm.direct-call.metadata=#lib::A.generateFactory5] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::List<dart.core::int>>] x.{self::A::generateFactory5}{core::List<core::List<core::int>>});
+  core::print([@vm.direct-call.metadata=#lib::A.literal1] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] x.{self::A::literal1});
+  core::print([@vm.direct-call.metadata=#lib::A.literal2] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] x.{self::A::literal2});
+  core::print([@vm.direct-call.metadata=#lib::A.constLiteral1] [@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[])] x.{self::A::constLiteral1});
+  core::print([@vm.direct-call.metadata=#lib::A.constLiteral2] [@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[1, 2])] x.{self::A::constLiteral2});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory1] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] x.{self::A::filledFactory1});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory2] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] x.{self::A::filledFactory2});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory3] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] x.{self::A::filledFactory3});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory4] [@vm.inferred-type.metadata=!] x.{self::A::filledFactory4});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory5] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int?>] x.{self::A::filledFactory5});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory6] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int?>] x.{self::A::filledFactory6});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory7] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int?>] x.{self::A::filledFactory7});
+  core::print([@vm.direct-call.metadata=#lib::A.filledFactory8] [@vm.inferred-type.metadata=!] x.{self::A::filledFactory8});
+  core::print([@vm.direct-call.metadata=#lib::A.generateFactory1] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] x.{self::A::generateFactory1});
+  core::print([@vm.direct-call.metadata=#lib::A.generateFactory2] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] x.{self::A::generateFactory2});
+  core::print([@vm.direct-call.metadata=#lib::A.generateFactory3] [@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] x.{self::A::generateFactory3});
+  core::print([@vm.direct-call.metadata=#lib::A.generateFactory4] [@vm.inferred-type.metadata=!] x.{self::A::generateFactory4});
+  core::print([@vm.direct-call.metadata=#lib::A.generateFactory5] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::List<dart.core::int>>] x.{self::A::generateFactory5});
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/named_params_shaking_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/named_params_shaking_test.dart.expect
index fda4bf2..4aff357 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/named_params_shaking_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/named_params_shaking_test.dart.expect
@@ -18,14 +18,14 @@
 [@vm.inferred-type.metadata=int] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->i]  field core::int* x;
   constructor •() → self::TestNamedOrderSub*
     : self::TestNamedOrderSub::x = [@vm.inferred-type.metadata=int] self::dec(), final core::int* #t1 = [@vm.inferred-type.metadata=int] self::inc(), final core::int* #t2 = [@vm.inferred-type.metadata=int] self::inc(), final core::int* #t3 = [@vm.inferred-type.metadata=int] self::inc(), final core::int* #t4 = [@vm.inferred-type.metadata=int] self::dec(), super self::TestNamedOrderBase::•(#t1, #t4, #t3, #t2) {
-    exp::Expect::equals([@vm.direct-call.metadata=#lib::TestNamedOrderSub.x] [@vm.inferred-type.metadata=int] this.{self::TestNamedOrderSub::x}{core::int*}, 0);
+    exp::Expect::equals([@vm.direct-call.metadata=#lib::TestNamedOrderSub.x] [@vm.inferred-type.metadata=int] this.{self::TestNamedOrderSub::x}, 0);
   }
 }
 [@vm.inferred-type.metadata=int?]static field core::int* global = 0;
 [@vm.unboxing-info.metadata=()->i]static method inc() → core::int*
-  return self::global = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+??] [@vm.inferred-type.metadata=int (skip check)] [@vm.inferred-type.metadata=int?] self::global.{core::num::+}(1){(core::num*) →* core::int*};
+  return self::global = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+??] [@vm.inferred-type.metadata=int (skip check)] [@vm.inferred-type.metadata=int?] self::global.{core::num::+}(1);
 [@vm.unboxing-info.metadata=()->i]static method dec() → core::int*
-  return self::global = [@vm.inferred-type.metadata=int] math::max<core::int*>(0, self::global = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.-??] [@vm.inferred-type.metadata=int (skip check)] [@vm.inferred-type.metadata=int?] self::global.{core::num::-}(1){(core::num*) →* core::int*});
+  return self::global = [@vm.inferred-type.metadata=int] math::max<core::int*>(0, self::global = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.-??] [@vm.inferred-type.metadata=int (skip check)] [@vm.inferred-type.metadata=int?] self::global.{core::num::-}(1));
 [@vm.unboxing-info.metadata=(i,i,i,i)->b]static method testNamedOrder([@vm.inferred-type.metadata=int] core::int* w, [@vm.inferred-type.metadata=int] core::int* x, [@vm.inferred-type.metadata=int] core::int* y, [@vm.inferred-type.metadata=int] core::int* z) → void {
   exp::Expect::equals(w, 1);
   exp::Expect::equals(z, 2);
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
index d20ec74..6aeb4eb 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
@@ -49,11 +49,11 @@
     return new self::T1::•();
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3]  no-such-method-forwarder get bar() → dynamic
-    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic});
+    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))));
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  no-such-method-forwarder method foo() → dynamic
-    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic});
+    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))));
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] [@vm.unboxing-info.metadata=(i,i,i,i)->b]  no-such-method-forwarder method bazz([@vm.inferred-type.metadata=dart.core::_Smi (value: 1)] dynamic a1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic a2, [@vm.inferred-type.metadata=dart.core::_Smi (value: 3)] dynamic a3, [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] dynamic a4) → dynamic
-    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal5<dynamic>()), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic});
+    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal5<dynamic>()), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))));
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -68,11 +68,11 @@
     : super self::C::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3]  no-such-method-forwarder get bar() → dynamic
-    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::C.noSuchMethod] [@vm.inferred-type.metadata=#lib::T2 (skip check)] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic});
+    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::C.noSuchMethod] [@vm.inferred-type.metadata=#lib::T2 (skip check)] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))));
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  no-such-method-forwarder method foo() → dynamic
-    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::C.noSuchMethod] [@vm.inferred-type.metadata=#lib::T2 (skip check)] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic});
+    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::C.noSuchMethod] [@vm.inferred-type.metadata=#lib::T2 (skip check)] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))));
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] [@vm.unboxing-info.metadata=(i,i,i,i)->b]  no-such-method-forwarder method bazz([@vm.inferred-type.metadata=dart.core::_Smi (value: 1)] dynamic a1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic a2, [@vm.inferred-type.metadata=dart.core::_Smi (value: 3)] dynamic a3, [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] dynamic a4) → dynamic
-    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::C.noSuchMethod] [@vm.inferred-type.metadata=#lib::T2 (skip check)] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal5<dynamic>()), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic});
+    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::C.noSuchMethod] [@vm.inferred-type.metadata=#lib::T2 (skip check)] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal5<dynamic>()), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))));
 }
 class E extends core::Object implements self::A {
   synthetic constructor •() → self::E*
@@ -82,7 +82,7 @@
     return new self::T4::•();
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3]  no-such-method-forwarder get bar() → dynamic
-    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::E.noSuchMethod] [@vm.inferred-type.metadata=#lib::T4 (skip check)] this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic});
+    return _in::unsafeCast<dynamic>([@vm.direct-call.metadata=#lib::E.noSuchMethod] [@vm.inferred-type.metadata=#lib::T4 (skip check)] this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))));
 }
 class F extends core::Object {
   synthetic constructor •() → self::F*
@@ -114,23 +114,23 @@
 [@vm.inferred-type.metadata=#lib::D?]static field self::A* dd = new self::D::•();
 [@vm.inferred-type.metadata=dart.core::Null? (value: null)]static field core::Function* unknown;
 static method getDynamic() → dynamic
-  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown();
+  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown.call();
 static method main(core::List<core::String*>* args) → dynamic {
-  core::print([@vm.direct-call.metadata=#lib::B.foo??] [@vm.inferred-type.metadata=#lib::T1 (skip check)] [@vm.inferred-type.metadata=#lib::B?] self::bb.{self::A::foo}(){() →* dynamic});
-  core::print([@vm.direct-call.metadata=#lib::B.bar??] [@vm.inferred-type.metadata=#lib::T1] [@vm.inferred-type.metadata=#lib::B?] self::bb.{self::A::bar}{dynamic});
-  core::print([@vm.direct-call.metadata=#lib::B.bazz??] [@vm.inferred-type.metadata=#lib::T1 (skip check)] [@vm.inferred-type.metadata=#lib::B?] self::bb.{self::A::bazz}(1, 2, 3, 4){(dynamic, dynamic, dynamic, [dynamic, dynamic]) →* dynamic});
-  core::print([@vm.direct-call.metadata=#lib::D.foo??] [@vm.inferred-type.metadata=#lib::T2 (skip check)] [@vm.inferred-type.metadata=#lib::D?] self::dd.{self::A::foo}(){() →* dynamic});
-  core::print([@vm.direct-call.metadata=#lib::D.bar??] [@vm.inferred-type.metadata=#lib::T2] [@vm.inferred-type.metadata=#lib::D?] self::dd.{self::A::bar}{dynamic});
-  core::print([@vm.direct-call.metadata=#lib::D.bazz??] [@vm.inferred-type.metadata=#lib::T2 (skip check)] [@vm.inferred-type.metadata=#lib::D?] self::dd.{self::A::bazz}(1, 2, 3, 4){(dynamic, dynamic, dynamic, [dynamic, dynamic]) →* dynamic});
+  core::print([@vm.direct-call.metadata=#lib::B.foo??] [@vm.inferred-type.metadata=#lib::T1 (skip check)] [@vm.inferred-type.metadata=#lib::B?] self::bb.{self::A::foo}());
+  core::print([@vm.direct-call.metadata=#lib::B.bar??] [@vm.inferred-type.metadata=#lib::T1] [@vm.inferred-type.metadata=#lib::B?] self::bb.{self::A::bar});
+  core::print([@vm.direct-call.metadata=#lib::B.bazz??] [@vm.inferred-type.metadata=#lib::T1 (skip check)] [@vm.inferred-type.metadata=#lib::B?] self::bb.{self::A::bazz}(1, 2, 3, 4));
+  core::print([@vm.direct-call.metadata=#lib::D.foo??] [@vm.inferred-type.metadata=#lib::T2 (skip check)] [@vm.inferred-type.metadata=#lib::D?] self::dd.{self::A::foo}());
+  core::print([@vm.direct-call.metadata=#lib::D.bar??] [@vm.inferred-type.metadata=#lib::T2] [@vm.inferred-type.metadata=#lib::D?] self::dd.{self::A::bar});
+  core::print([@vm.direct-call.metadata=#lib::D.bazz??] [@vm.inferred-type.metadata=#lib::T2 (skip check)] [@vm.inferred-type.metadata=#lib::D?] self::dd.{self::A::bazz}(1, 2, 3, 4));
   new self::E::•();
   self::A* xx = self::getDynamic() as{TypeError,ForDynamic} self::A*;
-  core::print([@vm.inferred-type.metadata=!] xx.{self::A::bar}{dynamic});
+  core::print([@vm.inferred-type.metadata=!] xx.{self::A::bar});
   dynamic yy = self::getDynamic();
-  core::print([@vm.inferred-type.metadata=!] yy{dynamic}.twoArg(1, 2, 3));
+  core::print([@vm.inferred-type.metadata=!] yy.twoArg(1, 2, 3));
   new self::F::•();
   dynamic gg = new self::G::•();
-  core::print([@vm.inferred-type.metadata=#lib::T5 (receiver not int)] gg{dynamic}.noSuchMethod(null, null));
+  core::print([@vm.inferred-type.metadata=#lib::T5 (receiver not int)] gg.noSuchMethod(null, null));
   dynamic hh = new self::H::•();
-  core::print([@vm.direct-call.metadata=#lib::H.foo] [@vm.inferred-type.metadata=#lib::T6 (receiver not int)] hh{dynamic}.foo(right: 2, left: 1));
-  core::print([@vm.inferred-type.metadata=#lib::T7 (receiver not int)] hh{dynamic}.foo(left: 1, top: 2));
+  core::print([@vm.direct-call.metadata=#lib::H.foo] [@vm.inferred-type.metadata=#lib::T6 (receiver not int)] hh.foo(right: 2, left: 1));
+  core::print([@vm.inferred-type.metadata=#lib::T7 (receiver not int)] hh.foo(left: 1, top: 2));
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
index 2ee4f92..90d79cb 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
@@ -13,11 +13,11 @@
 }
 [@vm.inferred-type.metadata=#lib::A?]static field self::A staticField = new self::A::•("hi", "bye");
 static method testNonNullable([@vm.inferred-type.metadata=#lib::A?] self::A a) → dynamic
-  return _in::unsafeCast<core::String>([@vm.direct-call.metadata=#lib::A.nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable}{core::String?});
+  return _in::unsafeCast<core::String>([@vm.direct-call.metadata=#lib::A.nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable});
 static method testNullable([@vm.inferred-type.metadata=#lib::A?] self::A a) → dynamic
-  return [@vm.direct-call.metadata=#lib::A.nullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}{core::String?}!;
+  return [@vm.direct-call.metadata=#lib::A.nullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}!;
 static method testAlwaysNull([@vm.inferred-type.metadata=#lib::A?] self::A a) → dynamic
-  return [@vm.direct-call.metadata=#lib::A.alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull}{core::String?}!;
+  return [@vm.direct-call.metadata=#lib::A.alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull}!;
 static method main() → void {
   final core::List<self::A> list = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::A>] core::_GrowableList::_literal2<self::A>(new self::A::•("foo", null), [@vm.inferred-type.metadata=#lib::A?] self::staticField);
   {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect
index bca0947..be0cb67 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect
@@ -13,43 +13,43 @@
 }
 [@vm.inferred-type.metadata=#lib::A?]static field self::A* staticField = new self::A::•("hi", "bye");
 static method testNonNullableIf1([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic {
-  if(let dynamic #t1 = [@vm.direct-call.metadata=#lib::A.nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable}{core::String*} in false) {
+  if(let dynamic #t1 = [@vm.direct-call.metadata=#lib::A.nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable} in false) {
     core::print("null");
   }
 }
 static method testNullableIf1([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic {
-  if([@vm.direct-call.metadata=#lib::A.nullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}{core::String*} == null) {
+  if([@vm.direct-call.metadata=#lib::A.nullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}.{core::String::==}(null)) {
     core::print("null");
   }
 }
 static method testAlwaysNullIf1([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic {
-  if(let dynamic #t2 = [@vm.direct-call.metadata=#lib::A.alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull}{core::String*} in true) {
+  if(let dynamic #t2 = [@vm.direct-call.metadata=#lib::A.alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull} in true) {
     core::print("null");
   }
 }
 static method testNonNullableIf2([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic {
-  if(!(let dynamic #t3 = [@vm.direct-call.metadata=#lib::A.nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable}{core::String*} in false) && _in::unsafeCast<core::bool*>([@vm.inferred-type.metadata=dart.core::bool] self::someCondition())) {
+  if(!(let dynamic #t3 = [@vm.direct-call.metadata=#lib::A.nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable} in false) && _in::unsafeCast<core::bool*>([@vm.inferred-type.metadata=dart.core::bool] self::someCondition())) {
     core::print("not null");
   }
 }
 static method testNullableIf2([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic {
-  if(!([@vm.direct-call.metadata=#lib::A.nullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}{core::String*} == null) && _in::unsafeCast<core::bool*>([@vm.inferred-type.metadata=dart.core::bool] self::someCondition())) {
+  if(![@vm.direct-call.metadata=#lib::A.nullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}.{core::String::==}(null) && _in::unsafeCast<core::bool*>([@vm.inferred-type.metadata=dart.core::bool] self::someCondition())) {
     core::print("not null");
   }
 }
 static method testAlwaysNullIf2([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic {
-  if(!(let dynamic #t4 = [@vm.direct-call.metadata=#lib::A.alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull}{core::String*} in true) && _in::unsafeCast<core::bool*>([@vm.inferred-type.metadata=dart.core::bool] self::someCondition())) {
+  if(!(let dynamic #t4 = [@vm.direct-call.metadata=#lib::A.alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull} in true) && _in::unsafeCast<core::bool*>([@vm.inferred-type.metadata=dart.core::bool] self::someCondition())) {
     core::print("not null");
   }
 }
 static method testNonNullableCondExpr([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic
-  return !(let dynamic #t5 = [@vm.direct-call.metadata=#lib::A.nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable}{core::String*} in false) ?{core::String*} "not null" : "null";
+  return !(let dynamic #t5 = [@vm.direct-call.metadata=#lib::A.nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable} in false) ?{core::String*} "not null" : "null";
 static method testNullableCondExpr([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic
-  return !([@vm.direct-call.metadata=#lib::A.nullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}{core::String*} == null) ?{core::String*} "not null" : "null";
+  return ![@vm.direct-call.metadata=#lib::A.nullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}.{core::String::==}(null) ?{core::String*} "not null" : "null";
 static method testAlwaysNullCondExpr([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic
-  return !(let dynamic #t6 = [@vm.direct-call.metadata=#lib::A.alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull}{core::String*} in true) ?{core::String*} "not null" : "null";
+  return !(let dynamic #t6 = [@vm.direct-call.metadata=#lib::A.alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull} in true) ?{core::String*} "not null" : "null";
 static method someCondition() → dynamic
-  return [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object*) →* core::bool*} 1;
+  return [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1").{core::num::==}(1);
 static method main() → void {
   final core::List<self::A*>* list = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::A*>] core::_GrowableList::_literal2<self::A*>(new self::A::•("foo", null), [@vm.inferred-type.metadata=#lib::A?] self::staticField);
   {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/param_types_before_strong_mode_checks.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/param_types_before_strong_mode_checks.dart.expect
index 5deb640..6e22591 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/param_types_before_strong_mode_checks.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/param_types_before_strong_mode_checks.dart.expect
@@ -19,7 +19,7 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method method1(self::T0* t0) → void {
-    [@vm.direct-call.metadata=#lib::T2.foo??] [@vm.inferred-type.metadata=!? (skip check)] t0.{self::T0::foo}(){() →* void};
+    [@vm.direct-call.metadata=#lib::T2.foo??] [@vm.inferred-type.metadata=!? (skip check)] t0.{self::T0::foo}();
   }
 }
 abstract class B extends core::Object {
@@ -30,7 +30,7 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6]  method method2(covariant self::T0* t0) → void {
-    [@vm.direct-call.metadata=#lib::T2.foo??] [@vm.inferred-type.metadata=!? (skip check)] t0.{self::T0::foo}(){() →* void};
+    [@vm.direct-call.metadata=#lib::T2.foo??] [@vm.inferred-type.metadata=!? (skip check)] t0.{self::T0::foo}();
   }
 }
 class D extends core::Object {
@@ -38,27 +38,27 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8]  method method3(self::T0* t0) → void {
-    [@vm.direct-call.metadata=#lib::T2.foo??] [@vm.inferred-type.metadata=!? (skip check)] t0.{self::T0::foo}(){() →* void};
+    [@vm.direct-call.metadata=#lib::T2.foo??] [@vm.inferred-type.metadata=!? (skip check)] t0.{self::T0::foo}();
   }
 }
 [@vm.inferred-type.metadata=dart.core::Null? (value: null)]static field core::Function* unknown;
 static method func1([@vm.inferred-type.metadata=#lib::T2?] self::T0* t0) → void {
-  [@vm.direct-call.metadata=#lib::T2.foo??] [@vm.inferred-type.metadata=!? (skip check)] t0.{self::T0::foo}(){() →* void};
+  [@vm.direct-call.metadata=#lib::T2.foo??] [@vm.inferred-type.metadata=!? (skip check)] t0.{self::T0::foo}();
 }
 static method func2(self::T0* t0) → void {
-  [@vm.direct-call.metadata=#lib::T2.foo??] [@vm.inferred-type.metadata=!? (skip check)] t0.{self::T0::foo}(){() →* void};
+  [@vm.direct-call.metadata=#lib::T2.foo??] [@vm.inferred-type.metadata=!? (skip check)] t0.{self::T0::foo}();
 }
 static method getDynamic() → dynamic
-  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown();
+  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown.call();
 static method use(dynamic x) → dynamic
-  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown(x);
+  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown.call(x);
 static method main(core::List<core::String*>* args) → dynamic {
   self::func1(self::getDynamic() as{TypeError,ForDynamic} self::T0*);
   self::use(#C1);
-  self::use(new self::A::•().{self::A::method1}{(self::T0*) →* void});
+  self::use(new self::A::•().{self::A::method1});
   self::B* bb = self::getDynamic() as{TypeError,ForDynamic} self::B*;
-  [@vm.direct-call.metadata=#lib::C.method2??] [@vm.inferred-type.metadata=!? (skip check)] bb.{self::B::method2}(self::getDynamic()){(dynamic) →* void};
-  self::getDynamic(){dynamic}.method3(self::getDynamic());
+  [@vm.direct-call.metadata=#lib::C.method2??] [@vm.inferred-type.metadata=!? (skip check)] bb.{self::B::method2}(self::getDynamic());
+  self::getDynamic().method3(self::getDynamic());
   new self::T2::•();
   new self::A::•();
   new self::C::•();
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect
index 4e8704e..d0ad288d 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect
@@ -13,17 +13,17 @@
     [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.barKeep] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pb::FooKeep::barKeep} = let final pb::BarKeep* #t2 = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep] pb::BarKeep::•() in block {
       [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pb::BarKeep::aKeep} = 5;
     } =>#t2;
-    [@vm.call-site-attributes.metadata=receiverType:dart.core::Map<dart.core::String*, library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep*>*] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] #t1.{pb::FooKeep::mapKeep}{core::Map<core::String*, pb::BarKeep*>*}.{core::Map::[]=}("foo", let final pb::BarKeep* #t3 = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep] pb::BarKeep::•() in block {
+    [@vm.call-site-attributes.metadata=receiverType:dart.core::Map<dart.core::String, library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep>] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] #t1.{pb::FooKeep::mapKeep}.{core::Map::[]=}("foo", let final pb::BarKeep* #t3 = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep] pb::BarKeep::•() in block {
       [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pb::BarKeep::aKeep} = 2;
-    } =>#t3){(core::String*, pb::BarKeep*) →* void};
+    } =>#t3);
     [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pb::FooKeep::aKeep} = 43;
   } =>#t1;
   sca::test(() → Null {
-    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.barKeep] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] foo.{pb::FooKeep::barKeep}{pb::BarKeep*}.{pb::BarKeep::aKeep}{core::int*}, 5);
-    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] foo.{pb::FooKeep::mapKeep}{core::Map<core::String*, pb::BarKeep*>*}.{core::Map::[]}("foo"){(core::Object*) →* pb::BarKeep*}.{pb::BarKeep::aKeep}{core::int*}, 2);
-    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.hasHasKeep] [@vm.inferred-type.metadata=dart.core::bool (skip check)] foo.{pb::FooKeep::hasHasKeep}(){() →* core::bool*}, false);
-    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=int] foo.{pb::FooKeep::aKeep}{core::int*}, 43);
-    [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.clearClearKeep] [@vm.inferred-type.metadata=!? (skip check)] foo.{pb::FooKeep::clearClearKeep}(){() →* void};
+    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.barKeep] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] foo.{pb::FooKeep::barKeep}.{pb::BarKeep::aKeep}, 5);
+    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] foo.{pb::FooKeep::mapKeep}.{core::Map::[]}("foo").{pb::BarKeep::aKeep}, 2);
+    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.hasHasKeep] [@vm.inferred-type.metadata=dart.core::bool (skip check)] foo.{pb::FooKeep::hasHasKeep}(), false);
+    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=int] foo.{pb::FooKeep::aKeep}, 43);
+    [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.clearClearKeep] [@vm.inferred-type.metadata=!? (skip check)] foo.{pb::FooKeep::clearClearKeep}();
   });
 }
 library foo.pb.dart /*isNonNullableByDefault*/;
@@ -36,13 +36,13 @@
 
 class FooKeep extends pro::GeneratedMessage {
 [@vm.inferred-type.metadata=protobuf::BuilderInfo?]  static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "FooKeep") in block {
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, (#C1) ?{core::String} "" : "barKeep", "barKeep", #C2){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::BarKeep}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, (#C1) ?{core::String} "" : "barKeep", "barKeep", #C2);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>((#C1) ?{core::String} "" : "mapKeep", #C2){(core::int, core::String, {entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>((#C1) ?{core::String} "" : "mapKeep", #C2);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C3){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::HasKeep}) → void};
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C4){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::ClearKeep}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep");
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C3);
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C4);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::hasRequiredFields} = false;
   } =>#t1;
   constructor _() → self::FooKeep
@@ -57,31 +57,31 @@
     return new self::FooKeep::_();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3]  @#C9
   get barKeep() → self::BarKeep
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep? (skip check)] this.{pro::GeneratedMessage::$_getN}<self::BarKeep>(){(core::int) → self::BarKeep};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep? (skip check)] this.{pro::GeneratedMessage::$_getN}<self::BarKeep>();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3]  @#C9
   set barKeep([@vm.inferred-type.metadata=foo.pb.dart::BarKeep] self::BarKeep v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(v){(core::int, core::Object) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(v);
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4]  @#C11
   get mapKeep() → core::Map<core::String, self::BarKeep>
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>(){(core::int) → core::Map<core::String, self::BarKeep>};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=()->i]  @#C13
   get aKeep() → core::int
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(4){(core::int) → core::int};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(4);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=(i)->b]  @#C13
   set aKeep([@vm.inferred-type.metadata=dart.core::_Smi (value: 43)] core::int v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(4, v){(core::int, core::int) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(4, v);
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8]  @#C15
   method hasHasKeep() → core::bool
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}(){(core::int) → core::bool};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10]  @#C17
   method clearClearKeep() → void
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.clearField] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] this.{pro::GeneratedMessage::clearField}(){(core::int) → void};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.clearField] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] this.{pro::GeneratedMessage::clearField}();
 }
 class BarKeep extends pro::GeneratedMessage {
 [@vm.inferred-type.metadata=protobuf::BuilderInfo?]  static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t2 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "BarKeep") in block {
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep");
     [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::hasRequiredFields} = false;
   } =>#t2;
@@ -97,10 +97,10 @@
     return new self::BarKeep::_();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=()->i]  @#C9
   get aKeep() → core::int
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(0){(core::int) → core::int};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(0);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=(i)->b]  @#C9
   set aKeep([@vm.inferred-type.metadata=dart.core::_Smi] core::int v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v){(core::int, core::int) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v);
   }
 }
 class HasKeep extends pro::GeneratedMessage {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect
index 9c518ba..8a6a03a 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect
@@ -12,11 +12,11 @@
 static method main() → dynamic {
   pb::FooKeep* foo = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep] pb::FooKeep::fromBuffer([@vm.inferred-type.metadata=dart.core::_GrowableList?<dart.core::int*>] self::buffer);
   sca::test(() → Null {
-    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] foo.{pb::FooKeep::mapKeep}{core::Map<core::String*, pb::BarKeep*>*}.{core::Map::[]}("foo"){(core::Object*) →* pb::BarKeep*}.{pb::BarKeep::aKeep}{core::int*}, 42);
-    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.barKeep] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] foo.{pb::FooKeep::barKeep}{pb::BarKeep*}.{pb::BarKeep::aKeep}{core::int*}, 5);
-    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=int] foo.{pb::FooKeep::aKeep}{core::int*}, 43);
-    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.hasHasKeep] [@vm.inferred-type.metadata=dart.core::bool (skip check)] foo.{pb::FooKeep::hasHasKeep}(){() →* core::bool*}, true);
-    [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.clearClearKeep] [@vm.inferred-type.metadata=!? (skip check)] foo.{pb::FooKeep::clearClearKeep}(){() →* void};
+    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] foo.{pb::FooKeep::mapKeep}.{core::Map::[]}("foo").{pb::BarKeep::aKeep}, 42);
+    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.barKeep] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] foo.{pb::FooKeep::barKeep}.{pb::BarKeep::aKeep}, 5);
+    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=int] foo.{pb::FooKeep::aKeep}, 43);
+    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.hasHasKeep] [@vm.inferred-type.metadata=dart.core::bool (skip check)] foo.{pb::FooKeep::hasHasKeep}(), true);
+    [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.clearClearKeep] [@vm.inferred-type.metadata=!? (skip check)] foo.{pb::FooKeep::clearClearKeep}();
   });
 }
 library foo.pb.dart /*isNonNullableByDefault*/;
@@ -29,13 +29,13 @@
 
 class FooKeep extends pro::GeneratedMessage {
 [@vm.inferred-type.metadata=protobuf::BuilderInfo?]  static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "FooKeep", createEmptyInstance: #C2) in block {
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, (#C1) ?{core::String} "" : "barKeep", "barKeep", #C3){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::BarKeep}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, (#C1) ?{core::String} "" : "barKeep", "barKeep", #C3);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>((#C1) ?{core::String} "" : "mapKeep", #C3){(core::int, core::String, {entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>((#C1) ?{core::String} "" : "mapKeep", #C3);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C4){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::HasKeep}) → void};
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C5){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::ClearKeep}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep");
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C4);
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C5);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::hasRequiredFields} = false;
   } =>#t1;
   constructor _() → self::FooKeep
@@ -43,7 +43,7 @@
     ;
   static factory fromBuffer([@vm.inferred-type.metadata=dart.core::_GrowableList?<dart.core::int*>] core::List<core::int> i) → self::FooKeep
     return let final self::FooKeep #t2 = [@vm.inferred-type.metadata=foo.pb.dart::FooKeep] self::FooKeep::create() in block {
-      [@vm.direct-call.metadata=protobuf::GeneratedMessage.mergeFromBuffer] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::GeneratedMessage::mergeFromBuffer}(i){(core::List<core::int>, [pro::ExtensionRegistry]) → void};
+      [@vm.direct-call.metadata=protobuf::GeneratedMessage.mergeFromBuffer] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::GeneratedMessage::mergeFromBuffer}(i);
     } =>#t2;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1]  get info_() → pro::BuilderInfo
     return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::FooKeep::_i;
@@ -52,23 +52,23 @@
     return new self::FooKeep::_();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:2]  @#C10
   get barKeep() → self::BarKeep
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep? (skip check)] this.{pro::GeneratedMessage::$_getN}<self::BarKeep>(){(core::int) → self::BarKeep};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep? (skip check)] this.{pro::GeneratedMessage::$_getN}<self::BarKeep>();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3]  @#C12
   get mapKeep() → core::Map<core::String, self::BarKeep>
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>(){(core::int) → core::Map<core::String, self::BarKeep>};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] [@vm.unboxing-info.metadata=()->i]  @#C14
   get aKeep() → core::int
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(4){(core::int) → core::int};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(4);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6]  @#C16
   method hasHasKeep() → core::bool
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}(){(core::int) → core::bool};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8]  @#C18
   method clearClearKeep() → void
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.clearField] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] this.{pro::GeneratedMessage::clearField}(){(core::int) → void};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.clearField] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] this.{pro::GeneratedMessage::clearField}();
 }
 class BarKeep extends pro::GeneratedMessage {
 [@vm.inferred-type.metadata=protobuf::BuilderInfo?]  static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t3 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "BarKeep", createEmptyInstance: #C3) in block {
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep");
     [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::hasRequiredFields} = false;
   } =>#t3;
@@ -82,7 +82,7 @@
     return new self::BarKeep::_();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:9] [@vm.unboxing-info.metadata=()->i]  @#C10
   get aKeep() → core::int
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(0){(core::int) → core::int};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(0);
 }
 class HasKeep extends pro::GeneratedMessage {
 [@vm.inferred-type.metadata=protobuf::BuilderInfo?]  static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t4 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "HasKeep", createEmptyInstance: #C4) in block {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect
index ff7fab1..e99a0c0 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect
@@ -15,21 +15,21 @@
       [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pb::BarKeep::aKeep} = 5;
       [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.bDrop] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pb::BarKeep::bDrop} = 4;
     } =>#t2;
-    [@vm.call-site-attributes.metadata=receiverType:dart.core::Map<dart.core::String*, library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep*>*] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] #t1.{pb::FooKeep::mapKeep}{core::Map<core::String*, pb::BarKeep*>*}.{core::Map::[]=}("foo", let final pb::BarKeep* #t3 = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep] pb::BarKeep::•() in block {
+    [@vm.call-site-attributes.metadata=receiverType:dart.core::Map<dart.core::String, library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep>] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] #t1.{pb::FooKeep::mapKeep}.{core::Map::[]=}("foo", let final pb::BarKeep* #t3 = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep] pb::BarKeep::•() in block {
       [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pb::BarKeep::aKeep} = 42;
-    } =>#t3){(core::String*, pb::BarKeep*) →* void};
-    [@vm.call-site-attributes.metadata=receiverType:dart.core::Map<dart.core::String*, library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::ZopDrop*>*] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapDrop] [@vm.inferred-type.metadata=!] #t1.{pb::FooKeep::mapDrop}{core::Map<core::String*, pb::ZopDrop*>*}.{core::Map::[]=}("zop", let final pb::ZopDrop* #t4 = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::ZopDrop] pb::ZopDrop::•() in block {
+    } =>#t3);
+    [@vm.call-site-attributes.metadata=receiverType:dart.core::Map<dart.core::String, library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::ZopDrop>] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapDrop] [@vm.inferred-type.metadata=!] #t1.{pb::FooKeep::mapDrop}.{core::Map::[]=}("zop", let final pb::ZopDrop* #t4 = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::ZopDrop] pb::ZopDrop::•() in block {
       [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::ZopDrop.aDrop] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pb::ZopDrop::aDrop} = 3;
-    } =>#t4){(core::String*, pb::ZopDrop*) →* void};
+    } =>#t4);
     [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pb::FooKeep::aKeep} = 43;
     [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.hasKeep] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pb::FooKeep::hasKeep} = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::HasKeep] pb::HasKeep::•();
     [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.clearKeep] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pb::FooKeep::clearKeep} = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::ClearKeep] pb::ClearKeep::•();
   } =>#t1;
-  final typ::Uint8List* buffer = [@vm.direct-call.metadata=protobuf::GeneratedMessage.writeToBuffer] [@vm.inferred-type.metadata=dart.typed_data::_Uint8List (skip check)] foo.{pro::GeneratedMessage::writeToBuffer}(){() →* typ::Uint8List*};
+  final typ::Uint8List* buffer = [@vm.direct-call.metadata=protobuf::GeneratedMessage.writeToBuffer] [@vm.inferred-type.metadata=dart.typed_data::_Uint8List (skip check)] foo.{pro::GeneratedMessage::writeToBuffer}();
   core::print("List<int> buffer = <int>[");
-  for (core::int* i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}([@vm.direct-call.metadata=dart.typed_data::_TypedList.length] [@vm.inferred-type.metadata=dart.core::_Smi] buffer.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(5){(core::num*) →* core::int*}) {
-    final core::String* numbers = [@vm.direct-call.metadata=dart.typed_data::_TypedListBase.join] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=dart.typed_data::__Uint8List&_TypedList&_IntListMixin&_TypedIntListMixin.sublist] [@vm.inferred-type.metadata=dart.typed_data::_Uint8List (skip check)] buffer.{typ::Uint8List::sublist}(i, [@vm.inferred-type.metadata=int] math::min<core::int*>([@vm.direct-call.metadata=dart.typed_data::_TypedList.length] [@vm.inferred-type.metadata=dart.core::_Smi] buffer.{core::List::length}{core::int*}, [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(5){(core::num*) →* core::int*})){(core::int*, [core::int*]) →* typ::Uint8List*}.{core::Iterable::join}(", "){([core::String*]) →* core::String*};
-    core::print("  ${numbers},${[@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{core::String*} " //" : ""}");
+  for (core::int* i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}([@vm.direct-call.metadata=dart.typed_data::_TypedList.length] [@vm.inferred-type.metadata=dart.core::_Smi] buffer.{core::List::length}); i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(5)) {
+    final core::String* numbers = [@vm.direct-call.metadata=dart.typed_data::_TypedListBase.join] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=dart.typed_data::__Uint8List&_TypedList&_IntListMixin&_TypedIntListMixin.sublist] [@vm.inferred-type.metadata=dart.typed_data::_Uint8List (skip check)] buffer.{typ::Uint8List::sublist}(i, [@vm.inferred-type.metadata=int] math::min<core::int*>([@vm.direct-call.metadata=dart.typed_data::_TypedList.length] [@vm.inferred-type.metadata=dart.core::_Smi] buffer.{core::List::length}, [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(5))).{core::Iterable::join}(", ");
+    core::print("  ${numbers},${[@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::==}(0) ?{core::String*} " //" : ""}");
   }
   core::print("];");
 }
@@ -43,13 +43,13 @@
 
 class FooKeep extends pro::GeneratedMessage {
 [@vm.inferred-type.metadata=protobuf::BuilderInfo?]  static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "FooKeep") in block {
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, (#C1) ?{core::String} "" : "barKeep", "barKeep", #C2){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::BarKeep}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, (#C1) ?{core::String} "" : "barKeep", "barKeep", #C2);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(3, (#C1) ?{core::String} "" : "mapKeep", "FooKeep.MapKeepEntry", "mapKeep", #C2){(core::int, core::String, {entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::ZopDrop>(4, (#C1) ?{core::String} "" : "mapDrop", "FooKeep.MapDropEntry", "mapDrop", #C3){(core::int, core::String, {entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep", "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C4){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::HasKeep}) → void};
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C5){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::ClearKeep}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(3, (#C1) ?{core::String} "" : "mapKeep", "FooKeep.MapKeepEntry", "mapKeep", #C2);
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::ZopDrop>(4, (#C1) ?{core::String} "" : "mapDrop", "FooKeep.MapDropEntry", "mapDrop", #C3);
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep", "aKeep");
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C4);
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C5);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::hasRequiredFields} = false;
   } =>#t1;
   constructor _() → self::FooKeep
@@ -64,31 +64,31 @@
     return new self::FooKeep::_();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2]  @#C10
   set barKeep([@vm.inferred-type.metadata=foo.pb.dart::BarKeep] self::BarKeep v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(1, v){(core::int, core::Object) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(1, v);
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3]  @#C12
   get mapKeep() → core::Map<core::String, self::BarKeep>
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>(2){(core::int) → core::Map<core::String, self::BarKeep>};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>(2);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4]  @#C14
   get mapDrop() → core::Map<core::String, self::ZopDrop>
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::ZopDrop>(3){(core::int) → core::Map<core::String, self::ZopDrop>};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::ZopDrop>(3);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5] [@vm.unboxing-info.metadata=(i)->b]  @#C16
   set aKeep([@vm.inferred-type.metadata=dart.core::_Smi (value: 43)] core::int v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(4, v){(core::int, core::int) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(4, v);
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6]  @#C18
   set hasKeep([@vm.inferred-type.metadata=foo.pb.dart::HasKeep] self::HasKeep v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(6, v){(core::int, core::Object) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(6, v);
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7]  @#C20
   set clearKeep([@vm.inferred-type.metadata=foo.pb.dart::ClearKeep] self::ClearKeep v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(7, v){(core::int, core::Object) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(7, v);
   }
 }
 class BarKeep extends pro::GeneratedMessage {
 [@vm.inferred-type.metadata=protobuf::BuilderInfo?]  static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t2 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "BarKeep") in block {
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep", "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(2, (#C1) ?{core::String} "" : "bDrop", "bDrop"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep", "aKeep");
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(2, (#C1) ?{core::String} "" : "bDrop", "bDrop");
     [@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::hasRequiredFields} = false;
   } =>#t2;
   constructor _() → self::BarKeep
@@ -103,11 +103,11 @@
     return new self::BarKeep::_();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:8] [@vm.unboxing-info.metadata=(i)->b]  @#C10
   set aKeep([@vm.inferred-type.metadata=dart.core::_Smi] core::int v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v){(core::int, core::int) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v);
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9] [@vm.unboxing-info.metadata=(i)->b]  @#C22
   set bDrop([@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] core::int v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(1, v){(core::int, core::int) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(1, v);
   }
 }
 class HasKeep extends pro::GeneratedMessage {
@@ -144,7 +144,7 @@
 }
 class ZopDrop extends pro::GeneratedMessage {
 [@vm.inferred-type.metadata=protobuf::BuilderInfo?]  static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t5 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "ZopDrop") in block {
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aDrop", "aDrop"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aDrop", "aDrop");
     [@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::hasRequiredFields} = false;
   } =>#t5;
   constructor _() → self::ZopDrop
@@ -159,6 +159,6 @@
     return new self::ZopDrop::_();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:10] [@vm.unboxing-info.metadata=(i)->b]  @#C10
   set aDrop([@vm.inferred-type.metadata=dart.core::_Smi (value: 3)] core::int v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v){(core::int, core::int) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v);
   }
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect
index ed8f69f..df6916b 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect
@@ -15,18 +15,18 @@
     [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.barKeep] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pb::FooKeep::barKeep} = let final pb::BarKeep* #t2 = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep] pb::BarKeep::•() in block {
       [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pb::BarKeep::aKeep} = 5;
     } =>#t2;
-    [@vm.call-site-attributes.metadata=receiverType:dart.core::Map<dart.core::String*, library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep*>*] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] #t1.{pb::FooKeep::mapKeep}{core::Map<core::String*, pb::BarKeep*>*}.{core::Map::[]=}("foo", let final pb::BarKeep* #t3 = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep] pb::BarKeep::•() in block {
+    [@vm.call-site-attributes.metadata=receiverType:dart.core::Map<dart.core::String, library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep>] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] #t1.{pb::FooKeep::mapKeep}.{core::Map::[]=}("foo", let final pb::BarKeep* #t3 = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep] pb::BarKeep::•() in block {
       [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pb::BarKeep::aKeep} = 2;
-    } =>#t3){(core::String*, pb::BarKeep*) →* void};
+    } =>#t3);
     [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pb::FooKeep::aKeep} = 43;
   } =>#t1;
   sca::test(() → Null {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.freeze] [@vm.inferred-type.metadata=!? (skip check)] foo.{pro::GeneratedMessage::freeze}(){() →* pro::GeneratedMessage*};
-    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.barKeep] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] foo.{pb::FooKeep::barKeep}{pb::BarKeep*}.{pb::BarKeep::aKeep}{core::int*}, 5);
-    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] foo.{pb::FooKeep::mapKeep}{core::Map<core::String*, pb::BarKeep*>*}.{core::Map::[]}("foo"){(core::Object*) →* pb::BarKeep*}.{pb::BarKeep::aKeep}{core::int*}, 2);
-    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.hasHasKeep] [@vm.inferred-type.metadata=dart.core::bool (skip check)] foo.{pb::FooKeep::hasHasKeep}(){() →* core::bool*}, false);
-    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=int] foo.{pb::FooKeep::aKeep}{core::int*}, 43);
-    exp::expect(() → void => [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.clearClearKeep] [@vm.inferred-type.metadata=!? (skip check)] foo.{pb::FooKeep::clearClearKeep}(){() →* void}, [@vm.inferred-type.metadata=library package:test_api/src/expect/throws_matcher.dart::Throws] thr::throwsA());
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.freeze] [@vm.inferred-type.metadata=!? (skip check)] foo.{pro::GeneratedMessage::freeze}();
+    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.barKeep] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] foo.{pb::FooKeep::barKeep}.{pb::BarKeep::aKeep}, 5);
+    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] foo.{pb::FooKeep::mapKeep}.{core::Map::[]}("foo").{pb::BarKeep::aKeep}, 2);
+    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.hasHasKeep] [@vm.inferred-type.metadata=dart.core::bool (skip check)] foo.{pb::FooKeep::hasHasKeep}(), false);
+    exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=int] foo.{pb::FooKeep::aKeep}, 43);
+    exp::expect(() → void => [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.clearClearKeep] [@vm.inferred-type.metadata=!? (skip check)] foo.{pb::FooKeep::clearClearKeep}(), [@vm.inferred-type.metadata=library package:test_api/src/expect/throws_matcher.dart::Throws] thr::throwsA());
   });
 }
 library foo.pb.dart /*isNonNullableByDefault*/;
@@ -39,13 +39,13 @@
 
 class FooKeep extends pro::GeneratedMessage {
 [@vm.inferred-type.metadata=protobuf::BuilderInfo?]  static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "FooKeep") in block {
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, (#C1) ?{core::String} "" : "barKeep", "barKeep", #C2){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::BarKeep}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, (#C1) ?{core::String} "" : "barKeep", "barKeep", #C2);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>((#C1) ?{core::String} "" : "mapKeep", #C2){(core::int, core::String, {entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>((#C1) ?{core::String} "" : "mapKeep", #C2);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C3){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::HasKeep}) → void};
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C4){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::ClearKeep}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep");
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C3);
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C4);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::hasRequiredFields} = false;
   } =>#t1;
   constructor _() → self::FooKeep
@@ -60,31 +60,31 @@
     return new self::FooKeep::_();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3]  @#C9
   get barKeep() → self::BarKeep
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep? (skip check)] this.{pro::GeneratedMessage::$_getN}<self::BarKeep>(){(core::int) → self::BarKeep};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep? (skip check)] this.{pro::GeneratedMessage::$_getN}<self::BarKeep>();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3]  @#C9
   set barKeep([@vm.inferred-type.metadata=foo.pb.dart::BarKeep] self::BarKeep v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(v){(core::int, core::Object) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(v);
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4]  @#C11
   get mapKeep() → core::Map<core::String, self::BarKeep>
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>(){(core::int) → core::Map<core::String, self::BarKeep>};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=()->i]  @#C13
   get aKeep() → core::int
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(4){(core::int) → core::int};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(4);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=(i)->b]  @#C13
   set aKeep([@vm.inferred-type.metadata=dart.core::_Smi (value: 43)] core::int v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(4, v){(core::int, core::int) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(4, v);
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8]  @#C15
   method hasHasKeep() → core::bool
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}(){(core::int) → core::bool};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10]  @#C17
   method clearClearKeep() → void
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.clearField] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] this.{pro::GeneratedMessage::clearField}(){(core::int) → void};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.clearField] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] this.{pro::GeneratedMessage::clearField}();
 }
 class BarKeep extends pro::GeneratedMessage {
 [@vm.inferred-type.metadata=protobuf::BuilderInfo?]  static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t2 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "BarKeep") in block {
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep");
     [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::hasRequiredFields} = false;
   } =>#t2;
@@ -100,10 +100,10 @@
     return new self::BarKeep::_();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=()->i]  @#C9
   get aKeep() → core::int
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(0){(core::int) → core::int};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(0);
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=(i)->b]  @#C9
   set aKeep([@vm.inferred-type.metadata=dart.core::_Smi] core::int v) → void {
-    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v){(core::int, core::int) → void};
+    [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v);
   }
 }
 class HasKeep extends pro::GeneratedMessage {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/name_mangling_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/name_mangling_test.dart.expect
index 8f14ca9..f3b8f42 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/name_mangling_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/name_mangling_test.dart.expect
@@ -8,7 +8,7 @@
 
 static method main() → dynamic {
   pb::NameManglingKeep* n = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/name_mangling.pb.dart::NameManglingKeep] pb::NameManglingKeep::fromBuffer([@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] core::_GrowableList::•<core::int*>(0));
-  if([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/name_mangling.pb.dart::NameManglingKeep.hasClone_10] [@vm.inferred-type.metadata=dart.core::bool (skip check)] n.{pb::NameManglingKeep::hasClone_10}(){() →* core::bool*}) {
+  if([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/name_mangling.pb.dart::NameManglingKeep.hasClone_10] [@vm.inferred-type.metadata=dart.core::bool (skip check)] n.{pb::NameManglingKeep::hasClone_10}()) {
     core::print("Has clone field");
   }
 }
@@ -35,7 +35,7 @@
 }
 class NameManglingKeep extends pro::GeneratedMessage {
 [@vm.inferred-type.metadata=protobuf::BuilderInfo?]  static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t2 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "NameManglingKeep", #C6) in block {
-    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::aOM}<self::AKeep>((#C1) ?{core::String} "" : "clone", #C2){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::AKeep}) → void};
+    [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::aOM}<self::AKeep>((#C1) ?{core::String} "" : "clone", #C2);
     [@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::hasRequiredFields} = false;
   } =>#t2;
   constructor _() → self::NameManglingKeep
@@ -43,7 +43,7 @@
     ;
   static factory fromBuffer([@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] core::List<core::int> i) → self::NameManglingKeep
     return let final self::NameManglingKeep #t3 = [@vm.inferred-type.metadata=name_mangling.pb.dart::NameManglingKeep] self::NameManglingKeep::create() in block {
-      [@vm.direct-call.metadata=protobuf::GeneratedMessage.mergeFromBuffer] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::GeneratedMessage::mergeFromBuffer}(i){(core::List<core::int>, [pro::ExtensionRegistry]) → void};
+      [@vm.direct-call.metadata=protobuf::GeneratedMessage.mergeFromBuffer] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::GeneratedMessage::mergeFromBuffer}(i);
     } =>#t3;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1]  get info_() → pro::BuilderInfo
     return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::NameManglingKeep::_i;
@@ -52,5 +52,5 @@
     return new self::NameManglingKeep::_();
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3]  @#C8
   method hasClone_10() → core::bool
-    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}(){(core::int) → core::bool};
+    return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}();
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_37455.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_37455.dart.expect
index 2d0f29f..b142142 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_37455.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_37455.dart.expect
@@ -8,7 +8,7 @@
     : self::A::afield = afield, super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3]  method toString() → core::String*
-    return [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.direct-call.metadata=#lib::A.afield] this.{self::A::afield}{core::List<dynamic>*}.{core::Object::toString}(){() →* core::String*};
+    return [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.direct-call.metadata=#lib::A.afield] this.{self::A::afield}.{core::Object::toString}();
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -16,16 +16,16 @@
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5]  method _foo([@vm.inferred-type.metadata=dart._internal::ListIterator<dart.core::int*>] core::Iterator<core::int*>* iter) → core::List<dynamic>* {
     core::List<dynamic>* result = [@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::•<dynamic>(0);
-    while ([@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] iter.{core::Iterator::moveNext}(){() →* core::bool*}) {
-      if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.<??] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart._internal::ListIterator.current] [@vm.inferred-type.metadata=int?] iter.{core::Iterator::current}{core::int*}.{core::num::<}(0){(core::num*) →* core::bool*}) {
+    while ([@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] iter.{core::Iterator::moveNext}()) {
+      if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.<??] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart._internal::ListIterator.current] [@vm.inferred-type.metadata=int?] iter.{core::Iterator::current}.{core::num::<}(0)) {
         return result;
       }
-      [@vm.call-site-attributes.metadata=receiverType:dart.core::List<dynamic>*] [@vm.direct-call.metadata=dart.core::_GrowableList.add] [@vm.inferred-type.metadata=!? (skip check)] result.{core::List::add}(new self::A::•([@vm.direct-call.metadata=#lib::B._foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::B::_foo}(iter){(core::Iterator<core::int*>*) →* core::List<dynamic>*})){(dynamic) →* void};
+      [@vm.call-site-attributes.metadata=receiverType:dart.core::List<dynamic>*] [@vm.direct-call.metadata=dart.core::_GrowableList.add] [@vm.inferred-type.metadata=!? (skip check)] result.{core::List::add}(new self::A::•([@vm.direct-call.metadata=#lib::B._foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::B::_foo}(iter)));
     }
     return result;
   }
 }
 static method main() → void {
-  core::List<dynamic>* list = [@vm.direct-call.metadata=#lib::B._foo] [@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic> (skip check)] new self::B::•().{self::B::_foo}([@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<dart.core::int*>] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::int*>*}){(core::Iterator<core::int*>*) →* core::List<dynamic>*};
+  core::List<dynamic>* list = [@vm.direct-call.metadata=#lib::B._foo] [@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic> (skip check)] new self::B::•().{self::B::_foo}([@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<dart.core::int*>] [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator});
   core::print(list);
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_37719.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_37719.dart.expect
index 577315f..3798fa8 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_37719.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_37719.dart.expect
@@ -3,6 +3,6 @@
 import "dart:core" as core;
 
 [@vm.unboxing-info.metadata=(b)->i]static method foo([@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] core::List<core::int*>* x) → dynamic
-  return [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] 1.{core::num::+}([@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=int? (skip check)] x.{core::List::[]}(0){(core::int*) →* core::int*}){(core::num*) →* core::int*};
+  return [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] 1.{core::num::+}([@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=int? (skip check)] x.{core::List::[]}(0));
 static method main() → dynamic
   return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] core::print([@vm.inferred-type.metadata=int] self::foo([@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] core::_GrowableList::_literal1<core::int*>(1)));
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452_nnbd_strong.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452_nnbd_strong.dart.expect
index 5baaf9c..61cf1bbd 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452_nnbd_strong.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452_nnbd_strong.dart.expect
@@ -18,10 +18,10 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method add(generic-covariant-impl self::_SplayTree::Node n) → dynamic {
-    self::_SplayTree::Node? root = [@vm.direct-call.metadata=#lib::SplayTreeMap._root] [@vm.inferred-type.metadata=#lib::_SplayTreeMapNode] this.{self::_SplayTree::_root}{self::_SplayTree::Node?};
+    self::_SplayTree::Node? root = [@vm.direct-call.metadata=#lib::SplayTreeMap._root] [@vm.inferred-type.metadata=#lib::_SplayTreeMapNode] this.{self::_SplayTree::_root};
     if(false)
       return;
-    core::print([@vm.direct-call.metadata=#lib::_SplayTreeNode.left] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] root{self::_SplayTree::Node}.{self::_SplayTreeNode::left}{self::_SplayTree::Node?});
+    core::print([@vm.direct-call.metadata=#lib::_SplayTreeNode.left] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] root{self::_SplayTree::Node}.{self::_SplayTreeNode::left});
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:5]  abstract get /*isLegacy*/ _root() → self::_SplayTree::Node?;
 }
@@ -32,5 +32,5 @@
     ;
 }
 static method main() → void {
-  [@vm.call-site-attributes.metadata=receiverType:#lib::SplayTreeMap<dynamic>] [@vm.direct-call.metadata=#lib::_SplayTree.add] new self::SplayTreeMap::•<dynamic>().{self::_SplayTree::add}(new self::_SplayTreeMapNode::•<dynamic>()){(self::_SplayTreeMapNode<dynamic>) → dynamic};
+  [@vm.call-site-attributes.metadata=receiverType:#lib::SplayTreeMap<dynamic>] [@vm.direct-call.metadata=#lib::_SplayTree.add] new self::SplayTreeMap::•<dynamic>().{self::_SplayTree::add}(new self::_SplayTreeMapNode::•<dynamic>());
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42413.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42413.dart.expect
index 42821bd..187070f 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42413.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42413.dart.expect
@@ -19,22 +19,22 @@
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5]  @#C3
   method forIn() → void {
     {
-      core::Iterator<dynamic>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator??] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::B*>] _in::unsafeCast<core::Iterable<dynamic>*>([@vm.direct-call.metadata=#lib::A.list] [@vm.inferred-type.metadata=dart.core::_GrowableList?<#lib::B*>] this.{self::A::list}{dynamic}).{core::Iterable::iterator};
+      core::Iterator<dynamic>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator??] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::B*>] _in::unsafeCast<core::Iterable<dynamic>*>([@vm.direct-call.metadata=#lib::A.list] [@vm.inferred-type.metadata=dart.core::_GrowableList?<#lib::B*>] this.{self::A::list}).{core::Iterable::iterator};
       for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         dynamic e = [@vm.direct-call.metadata=dart._internal::ListIterator.current] [@vm.inferred-type.metadata=#lib::B?] :sync-for-iterator.{core::Iterator::current};
-        core::print([@vm.direct-call.metadata=#lib::B.x??] [@vm.inferred-type.metadata=dart.core::_Smi (value: 0) (receiver not int)] e{dynamic}.x);
+        core::print([@vm.direct-call.metadata=#lib::B.x??] [@vm.inferred-type.metadata=dart.core::_Smi (value: 0) (receiver not int)] e.x);
       }
     }
   }
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7]  @#C3
   method cLoop() → void {
-    for (core::int* i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}(_in::unsafeCast<core::num*>([@vm.direct-call.metadata=dart.core::_GrowableList.length??] [@vm.inferred-type.metadata=dart.core::_Smi (receiver not int)] [@vm.direct-call.metadata=#lib::A.list] [@vm.inferred-type.metadata=dart.core::_GrowableList?<#lib::B*>] this.{self::A::list}{dynamic}{dynamic}.length)){(core::num*) →* core::bool*}; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      final dynamic e = [@vm.direct-call.metadata=dart.core::_GrowableList.[]??] [@vm.inferred-type.metadata=#lib::B? (receiver not int)] [@vm.direct-call.metadata=#lib::A.list] [@vm.inferred-type.metadata=dart.core::_GrowableList?<#lib::B*>] this.{self::A::list}{dynamic}{dynamic}.[](i);
-      core::print([@vm.direct-call.metadata=#lib::B.x??] [@vm.inferred-type.metadata=dart.core::_Smi (value: 0) (receiver not int)] e{dynamic}.x);
+    for (core::int* i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}(_in::unsafeCast<core::num*>([@vm.direct-call.metadata=dart.core::_GrowableList.length??] [@vm.inferred-type.metadata=dart.core::_Smi (receiver not int)] [@vm.direct-call.metadata=#lib::A.list] [@vm.inferred-type.metadata=dart.core::_GrowableList?<#lib::B*>] this.{self::A::list}.length)); i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1)) {
+      final dynamic e = [@vm.direct-call.metadata=dart.core::_GrowableList.[]??] [@vm.inferred-type.metadata=#lib::B? (receiver not int)] [@vm.direct-call.metadata=#lib::A.list] [@vm.inferred-type.metadata=dart.core::_GrowableList?<#lib::B*>] this.{self::A::list}.[](i);
+      core::print([@vm.direct-call.metadata=#lib::B.x??] [@vm.inferred-type.metadata=dart.core::_Smi (value: 0) (receiver not int)] e.x);
     }
   }
 }
 static method main() → void {
-  [@vm.direct-call.metadata=#lib::A.forIn] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::forIn}(){() →* void};
-  [@vm.direct-call.metadata=#lib::A.cLoop] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::cLoop}(){() →* void};
+  [@vm.direct-call.metadata=#lib::A.forIn] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::forIn}();
+  [@vm.direct-call.metadata=#lib::A.cLoop] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::cLoop}();
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_1_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_1_test.dart.expect
index 5a04ba7..679a60c 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_1_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_1_test.dart.expect
@@ -13,7 +13,7 @@
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  @#C3
   method foo([@vm.inferred-type.metadata=int?] core::int* x) → void
-    return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] exp::Expect::isTrue([@vm.direct-call.metadata=dart.core::_IntegerImplementation.isOdd??] [@vm.inferred-type.metadata=dart.core::bool] x.{core::int::isOdd}{core::bool*});
+    return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] exp::Expect::isTrue([@vm.direct-call.metadata=dart.core::_IntegerImplementation.isOdd??] [@vm.inferred-type.metadata=dart.core::bool] x.{core::int::isOdd});
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -21,20 +21,20 @@
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  @#C3
   method foo([@vm.inferred-type.metadata=int] core::int* x) → void
-    return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] exp::Expect::isTrue([@vm.direct-call.metadata=dart.core::_IntegerImplementation.isOdd] [@vm.inferred-type.metadata=dart.core::bool] x.{core::int::isOdd}{core::bool*});
+    return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] exp::Expect::isTrue([@vm.direct-call.metadata=dart.core::_IntegerImplementation.isOdd] [@vm.inferred-type.metadata=dart.core::bool] x.{core::int::isOdd});
 }
 class C extends self::A implements self::B {
   synthetic constructor •() → self::C*
     : super self::A::•()
     ;
 }
-[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* alwaysFalse = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object*) →* core::bool*} 2;
+[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* alwaysFalse = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1").{core::num::==}(2);
 static method main() → dynamic {
   final math::Random* r = [@vm.inferred-type.metadata=dart.math::_Random] math::Random::•();
   if([@vm.inferred-type.metadata=dart.core::bool?] self::alwaysFalse) {
-    [@vm.direct-call.metadata=#lib::A.foo] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::foo}([@vm.direct-call.metadata=dart.math::_Random.nextInt] [@vm.inferred-type.metadata=int (skip check)] r.{math::Random::nextInt}(10){(core::int*) →* core::int*}){(core::int*) →* void};
-    [@vm.direct-call.metadata=#lib::B.foo] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•().{self::B::foo}([@vm.direct-call.metadata=dart.math::_Random.nextInt] [@vm.inferred-type.metadata=int (skip check)] r.{math::Random::nextInt}(10){(core::int*) →* core::int*}){(core::int*) →* void};
-    [@vm.direct-call.metadata=#lib::A.foo] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::foo}(null){(core::int*) →* void};
+    [@vm.direct-call.metadata=#lib::A.foo] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::foo}([@vm.direct-call.metadata=dart.math::_Random.nextInt] [@vm.inferred-type.metadata=int (skip check)] r.{math::Random::nextInt}(10));
+    [@vm.direct-call.metadata=#lib::B.foo] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•().{self::B::foo}([@vm.direct-call.metadata=dart.math::_Random.nextInt] [@vm.inferred-type.metadata=int (skip check)] r.{math::Random::nextInt}(10));
+    [@vm.direct-call.metadata=#lib::A.foo] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::foo}(null);
   }
   final core::List<self::B*>* l = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::B*>] core::_GrowableList::_literal2<self::B*>(new self::B::•(), new self::C::•());
   {
@@ -42,7 +42,7 @@
     for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       self::B* b = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
       {
-        b.{self::B::foo}(13){(core::int*) →* void};
+        b.{self::B::foo}(13);
       }
     }
   }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_2_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_2_test.dart.expect
index 3921a37..1eb4ccc 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_2_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_2_test.dart.expect
@@ -13,7 +13,7 @@
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  @#C3
   method bar([@vm.inferred-type.metadata=int] core::int* x) → void
-    return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] exp::Expect::isTrue([@vm.direct-call.metadata=dart.core::_IntegerImplementation.isOdd] [@vm.inferred-type.metadata=dart.core::bool] x.{core::int::isOdd}{core::bool*});
+    return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] exp::Expect::isTrue([@vm.direct-call.metadata=dart.core::_IntegerImplementation.isOdd] [@vm.inferred-type.metadata=dart.core::bool] x.{core::int::isOdd});
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -21,20 +21,20 @@
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  @#C3
   method bar([@vm.inferred-type.metadata=int?] core::int* x) → void
-    return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] exp::Expect::isTrue([@vm.direct-call.metadata=dart.core::_IntegerImplementation.isOdd??] [@vm.inferred-type.metadata=dart.core::bool] x.{core::int::isOdd}{core::bool*});
+    return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] exp::Expect::isTrue([@vm.direct-call.metadata=dart.core::_IntegerImplementation.isOdd??] [@vm.inferred-type.metadata=dart.core::bool] x.{core::int::isOdd});
 }
 class C extends self::A implements self::B {
   synthetic constructor •() → self::C*
     : super self::A::•()
     ;
 }
-[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* alwaysFalse = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object*) →* core::bool*} 2;
+[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* alwaysFalse = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1").{core::num::==}(2);
 static method main() → dynamic {
   final math::Random* r = [@vm.inferred-type.metadata=dart.math::_Random] math::Random::•();
   if([@vm.inferred-type.metadata=dart.core::bool?] self::alwaysFalse) {
-    [@vm.direct-call.metadata=#lib::A.bar] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::bar}([@vm.direct-call.metadata=dart.math::_Random.nextInt] [@vm.inferred-type.metadata=int (skip check)] r.{math::Random::nextInt}(10){(core::int*) →* core::int*}){(core::int*) →* void};
-    [@vm.direct-call.metadata=#lib::B.bar] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•().{self::B::bar}([@vm.direct-call.metadata=dart.math::_Random.nextInt] [@vm.inferred-type.metadata=int (skip check)] r.{math::Random::nextInt}(10){(core::int*) →* core::int*}){(core::int*) →* void};
-    [@vm.direct-call.metadata=#lib::B.bar] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•().{self::B::bar}(null){(core::int*) →* void};
+    [@vm.direct-call.metadata=#lib::A.bar] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::bar}([@vm.direct-call.metadata=dart.math::_Random.nextInt] [@vm.inferred-type.metadata=int (skip check)] r.{math::Random::nextInt}(10));
+    [@vm.direct-call.metadata=#lib::B.bar] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•().{self::B::bar}([@vm.direct-call.metadata=dart.math::_Random.nextInt] [@vm.inferred-type.metadata=int (skip check)] r.{math::Random::nextInt}(10));
+    [@vm.direct-call.metadata=#lib::B.bar] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•().{self::B::bar}(null);
   }
   final core::List<self::B*>* l = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::B*>] core::_GrowableList::_literal2<self::B*>(new self::B::•(), new self::C::•());
   {
@@ -42,7 +42,7 @@
     for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       self::B* b = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
       {
-        b.{self::B::bar}(13){(core::int*) →* void};
+        b.{self::B::bar}(13);
       }
     }
   }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_45324.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_45324.dart.expect
index 346c25d..ad855f7 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_45324.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_45324.dart.expect
@@ -14,6 +14,6 @@
 }
 [@vm.inferred-type.metadata=#lib::X?]static field self::A* a = new self::X::•();
 static method main() → void {
-  core::print([@vm.direct-call.metadata=#lib::X.targetPlatform??] [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] [@vm.inferred-type.metadata=#lib::X?] self::a.{self::A::targetPlatform}{core::int*});
+  core::print([@vm.direct-call.metadata=#lib::X.targetPlatform??] [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] [@vm.inferred-type.metadata=#lib::X?] self::a.{self::A::targetPlatform});
   core::print(#C2);
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_45324_2.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_45324_2.dart.expect
index 2fe2be5..2ef7c98 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_45324_2.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_45324_2.dart.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  method doTest([@vm.inferred-type.metadata=#lib::X] self::Z a) → void {
-    core::print([@vm.direct-call.metadata=#lib::Base.appName] [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "x")] a.{self::Z::appName}{core::String?});
+    core::print([@vm.direct-call.metadata=#lib::Base.appName] [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "x")] a.{self::Z::appName});
   }
 }
 class Z extends core::Object {
@@ -30,5 +30,5 @@
 }
 static method main() → void {
   new self::Z::•();
-  [@vm.direct-call.metadata=#lib::A.doTest] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::doTest}(new self::X::•()){(self::Z) → void};
+  [@vm.direct-call.metadata=#lib::A.doTest] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::doTest}(new self::X::•());
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
index e1ae174..4f14da8 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
@@ -52,14 +52,14 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:17]  get aa2() → dynamic
-    return [@vm.direct-call.metadata=#lib::B2Base._aa] [@vm.inferred-type.metadata=#lib::A2] this.{self::B2Base::_aa}{dynamic};
+    return [@vm.direct-call.metadata=#lib::B2Base._aa] [@vm.inferred-type.metadata=#lib::A2] this.{self::B2Base::_aa};
 }
 class B2 extends self::B2Base {
   synthetic constructor •() → self::B2*
     : super self::B2Base::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:18,getterSelectorId:19]  method doSuperCall() → void {
-    [@vm.direct-call.metadata=#lib::A2.call] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.inferred-type.metadata=#lib::A2] super.{self::B2Base::aa2}{dynamic}.call(1, 2, 3, 4, 5, new self::T2::•());
+    [@vm.call-site-attributes.metadata=receiverType:dynamic] [@vm.direct-call.metadata=#lib::A2.call] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.inferred-type.metadata=#lib::A2] super.{self::B2Base::aa2}.call(1, 2, 3, 4, 5, new self::T2::•());
   }
 }
 class T3 extends core::Object {
@@ -108,7 +108,7 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=hasThisUses:false,hasTearOffUses:false,getterSelectorId:36]  get aa4() → dynamic
-    return [@vm.direct-call.metadata=#lib::B4._aa] [@vm.inferred-type.metadata=#lib::A4] this.{self::B4::_aa}{dynamic};
+    return [@vm.direct-call.metadata=#lib::B4._aa] [@vm.inferred-type.metadata=#lib::A4] this.{self::B4::_aa};
 }
 [@vm.inferred-type.metadata=dart.core::bool?]static field core::bool* ok;
 [@vm.inferred-type.metadata=#lib::B3?]static field dynamic bb3 = new self::B3::•();
@@ -117,32 +117,32 @@
 [@vm.inferred-type.metadata=dart.core::_Closure?]static field core::Function* unknown4 = () → dynamic => self::bb4;
 static method test1() → void {
   self::B1* bb = new self::B1::•();
-  let final self::B1* #t1 = bb in let final core::int* #t2 = 1 in let final core::int* #t3 = 2 in let final core::int* #t4 = 3 in let final core::int* #t5 = 4 in let final self::T1* #t6 = new self::T1::•() in [@vm.direct-call.metadata=#lib::A1.call] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=#lib::B1.aa1] [@vm.inferred-type.metadata=#lib::A1] #t1.{self::B1::aa1}{self::A1*}.{self::A1::call}(#t2, #t3, #t4, #t5, #t6){([dynamic, dynamic, dynamic, dynamic, dynamic]) →* void};
+  let final self::B1* #t1 = bb in let final core::int* #t2 = 1 in let final core::int* #t3 = 2 in let final core::int* #t4 = 3 in let final core::int* #t5 = 4 in let final self::T1* #t6 = new self::T1::•() in [@vm.call-site-attributes.metadata=receiverType:#lib::A1*] [@vm.direct-call.metadata=#lib::A1.call] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=#lib::B1.aa1] [@vm.inferred-type.metadata=#lib::A1] #t1.{self::B1::aa1}.{self::A1::call}(#t2, #t3, #t4, #t5, #t6);
   self::ok = false;
-  [@vm.direct-call.metadata=#lib::T1.doTest1??] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=#lib::A1.foo] [@vm.inferred-type.metadata=#lib::T1?] [@vm.direct-call.metadata=#lib::B1.aa1] [@vm.inferred-type.metadata=#lib::A1] bb.{self::B1::aa1}{self::A1*}.{self::A1::foo}{self::T1*}.{self::T1::doTest1}(){() →* void};
+  [@vm.direct-call.metadata=#lib::T1.doTest1??] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=#lib::A1.foo] [@vm.inferred-type.metadata=#lib::T1?] [@vm.direct-call.metadata=#lib::B1.aa1] [@vm.inferred-type.metadata=#lib::A1] bb.{self::B1::aa1}.{self::A1::foo}.{self::T1::doTest1}();
   exp::Expect::isTrue([@vm.inferred-type.metadata=dart.core::bool?] self::ok);
 }
 static method test2() → void {
   self::B2* bb = new self::B2::•();
-  [@vm.direct-call.metadata=#lib::B2.doSuperCall] [@vm.inferred-type.metadata=!? (skip check)] bb.{self::B2::doSuperCall}(){() →* void};
+  [@vm.direct-call.metadata=#lib::B2.doSuperCall] [@vm.inferred-type.metadata=!? (skip check)] bb.{self::B2::doSuperCall}();
   self::ok = false;
-  [@vm.direct-call.metadata=#lib::T2.doTest2??] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.direct-call.metadata=#lib::A2.foo] [@vm.inferred-type.metadata=#lib::T2? (receiver not int)] [@vm.direct-call.metadata=#lib::B2Base.aa2] [@vm.inferred-type.metadata=#lib::A2] bb.{self::B2Base::aa2}{dynamic}{dynamic}.foo{dynamic}.doTest2();
+  [@vm.direct-call.metadata=#lib::T2.doTest2??] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.direct-call.metadata=#lib::A2.foo] [@vm.inferred-type.metadata=#lib::T2? (receiver not int)] [@vm.direct-call.metadata=#lib::B2Base.aa2] [@vm.inferred-type.metadata=#lib::A2] bb.{self::B2Base::aa2}.foo.doTest2();
   exp::Expect::isTrue([@vm.inferred-type.metadata=dart.core::bool?] self::ok);
 }
 static method getDynamic3() → dynamic
-  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown3();
+  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown3.call();
 static method test3() → void {
-  self::getDynamic3(){dynamic}.aa3(1, 2, 3, 4, 5, 6, new self::T3::•());
+  self::getDynamic3().aa3(1, 2, 3, 4, 5, 6, new self::T3::•());
   self::ok = false;
-  [@vm.direct-call.metadata=#lib::T3.doTest3??] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.direct-call.metadata=#lib::A3.foo] [@vm.inferred-type.metadata=#lib::T3? (receiver not int)] [@vm.direct-call.metadata=#lib::B3.aa3??] [@vm.inferred-type.metadata=#lib::A3 (receiver not int)] [@vm.inferred-type.metadata=#lib::B3?] self::bb3{dynamic}.aa3{dynamic}.foo{dynamic}.doTest3();
+  [@vm.direct-call.metadata=#lib::T3.doTest3??] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.direct-call.metadata=#lib::A3.foo] [@vm.inferred-type.metadata=#lib::T3? (receiver not int)] [@vm.direct-call.metadata=#lib::B3.aa3??] [@vm.inferred-type.metadata=#lib::A3 (receiver not int)] [@vm.inferred-type.metadata=#lib::B3?] self::bb3.aa3.foo.doTest3();
   exp::Expect::isTrue([@vm.inferred-type.metadata=dart.core::bool?] self::ok);
 }
 static method getDynamic4() → dynamic
-  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown4();
+  return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] self::unknown4.call();
 static method test4() → void {
-  self::getDynamic4(){dynamic}.aa4(1, 2, 3, 4, 5, 6, 7, new self::T4::•());
+  self::getDynamic4().aa4(1, 2, 3, 4, 5, 6, 7, new self::T4::•());
   self::ok = false;
-  [@vm.direct-call.metadata=#lib::T4.doTest4??] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.direct-call.metadata=#lib::A4.foo] [@vm.inferred-type.metadata=#lib::T4? (receiver not int)] [@vm.inferred-type.metadata=#lib::A4] self::getDynamic4(){dynamic}.aa4{dynamic}.foo{dynamic}.doTest4();
+  [@vm.direct-call.metadata=#lib::T4.doTest4??] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.direct-call.metadata=#lib::A4.foo] [@vm.inferred-type.metadata=#lib::T4? (receiver not int)] [@vm.inferred-type.metadata=#lib::A4] self::getDynamic4().aa4.foo.doTest4();
   exp::Expect::isTrue([@vm.inferred-type.metadata=dart.core::bool?] self::ok);
 }
 static method main() → void {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter81068.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter81068.dart.expect
index 2c65d79..41a1a34 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter81068.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter81068.dart.expect
@@ -17,11 +17,11 @@
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  method noSuchMethod(core::Invocation* i) → dynamic
     return throw "Not implemented";
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  no-such-method-forwarder method then<R extends core::Object* = dynamic>((self::B::T*) →* FutureOr<self::B::then::R*>* onValue, {core::Function* onError = #C1}) → asy::Future<self::B::then::R*>*
-    return [@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, core::List::unmodifiable<core::Type*>([@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::Type*>] core::_GrowableList::_literal1<core::Type*>(self::B::then::R*)), core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal1<dynamic>(onValue)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C3: onError}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::B::then::R*>*;
+    return [@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, core::List::unmodifiable<core::Type*>([@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::Type*>] core::_GrowableList::_literal1<core::Type*>(self::B::then::R*)), core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal1<dynamic>(onValue)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C3: onError}))) as{TypeError,ForDynamic} asy::Future<self::B::then::R*>*;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6]  no-such-method-forwarder method catchError(core::Function* onError, {[@vm.inferred-type.metadata=dart.core::Null? (value: null)] (core::Object*) →* core::bool* test = #C1}) → asy::Future<self::B::T*>*
-    return [@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C5, core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal1<dynamic>(onError)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::B::T*>*;
+    return [@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C5, core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal1<dynamic>(onError)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: test}))) as{TypeError,ForDynamic} asy::Future<self::B::T*>*;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8]  no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::B::T*>*
-    return [@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal1<dynamic>(action)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C9))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::B::T*>*;
+    return [@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal1<dynamic>(action)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C9))) as{TypeError,ForDynamic} asy::Future<self::B::T*>*;
 }
 static method createB<T extends core::Object* = dynamic>() → self::B<dynamic>*
   return new self::B::•<self::createB::T*>();
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/selector_id_assignments.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/selector_id_assignments.dart.expect
index 6528201..53f54b7 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/selector_id_assignments.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/selector_id_assignments.dart.expect
@@ -106,7 +106,7 @@
     core::Iterator<self::A1*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A1*>] x1.{core::Iterable::iterator};
     for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       self::A1* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
-      o.{self::A1::foo}(){() →* void};
+      o.{self::A1::foo}();
     }
   }
   core::List<self::A2*>* x2 = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::A2*>] core::_GrowableList::_literal2<self::A2*>(new self::A2::•(), new self::B2::•());
@@ -114,7 +114,7 @@
     core::Iterator<self::A2*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A2*>] x2.{core::Iterable::iterator};
     for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       self::A2* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
-      o.{self::A2::foo}(){() →* void};
+      o.{self::A2::foo}();
     }
   }
   core::List<self::A3*>* x3 = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::A3*>] core::_GrowableList::_literal2<self::A3*>(new self::B3::•(), new self::C3::•());
@@ -122,7 +122,7 @@
     core::Iterator<self::A3*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A3*>] x3.{core::Iterable::iterator};
     for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       self::A3* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
-      o.{self::A3::foo}(){() →* void};
+      o.{self::A3::foo}();
     }
   }
   core::List<self::A4*>* x4 = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::A4*>] core::_GrowableList::_literal2<self::A4*>(new self::A4::•(), new self::D4::•());
@@ -130,7 +130,7 @@
     core::Iterator<self::A4*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A4*>] x4.{core::Iterable::iterator};
     for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       self::A4* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
-      o.{self::A4::foo}(){() →* void};
+      o.{self::A4::foo}();
     }
   }
   core::List<self::B4*>* y4 = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::B4*>] core::_GrowableList::_literal3<self::B4*>(new self::B4::•(), new self::D4::•(), new self::E4::•());
@@ -138,7 +138,7 @@
     core::Iterator<self::B4*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::B4*>] y4.{core::Iterable::iterator};
     for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       self::B4* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
-      o.{self::B4::foo}(){() →* void};
+      o.{self::B4::foo}();
     }
   }
   core::List<self::C4*>* z4 = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::C4*>] core::_GrowableList::_literal2<self::C4*>(new self::C4::•(), new self::E4::•());
@@ -146,7 +146,7 @@
     core::Iterator<self::C4*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::C4*>] z4.{core::Iterable::iterator};
     for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       self::C4* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
-      [@vm.direct-call.metadata=#lib::C4.foo??] [@vm.inferred-type.metadata=!? (skip check)] o.{self::C4::foo}(){() →* void};
+      [@vm.direct-call.metadata=#lib::C4.foo??] [@vm.inferred-type.metadata=!? (skip check)] o.{self::C4::foo}();
     }
   }
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/set_map_constructor_concrete.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/set_map_constructor_concrete.dart.expect
index 278b3db..413720d 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/set_map_constructor_concrete.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/set_map_constructor_concrete.dart.expect
@@ -10,14 +10,14 @@
 [@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashSet?<dynamic>]static field core::Set<dynamic>* identitySet = [@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashSet<dynamic>] col::LinkedHashSet::identity<dynamic>();
 [@vm.inferred-type.metadata=dart.collection::_CompactLinkedHashSet?<dart.core::String*>]static field core::Set<core::String*>* linkedSet = new col::_CompactLinkedHashSet::•<core::String*>();
 static field core::Set<core::String*>* linkedIdentitySet = [@vm.inferred-type.metadata=!] col::LinkedHashSet::•<core::String*>(#C1, #C2);
-static field core::Set<core::String*>* linkedCustomSet = let final (core::String*, core::String*) →* core::bool* #t1 = (core::String* a, core::String* b) → core::bool* => [@vm.inferred-type.metadata=!? (receiver not int)] a =={core::String::==}{(core::Object*) →* core::bool*} b in let final (core::String*) →* core::int* #t2 = (core::String* o) → core::int* => o.{core::String::hashCode}{core::int*} in let final (dynamic) →* core::bool* #t3 = (dynamic o) → core::bool* => true in [@vm.inferred-type.metadata=!] col::LinkedHashSet::•<core::String*>(#t1, #t2, isValidKey: #t3);
+static field core::Set<core::String*>* linkedCustomSet = let final (core::String*, core::String*) →* core::bool* #t1 = (core::String* a, core::String* b) → core::bool* => a.{core::String::==}(b) in let final (core::String*) →* core::int* #t2 = (core::String* o) → core::int* => o.{core::String::hashCode} in let final (dynamic) →* core::bool* #t3 = (dynamic o) → core::bool* => true in [@vm.inferred-type.metadata=!] col::LinkedHashSet::•<core::String*>(#t1, #t2, isValidKey: #t3);
 [@vm.inferred-type.metadata=dart.collection::_InternalLinkedHashMap?<dynamic, dynamic>]static field core::Map<dynamic, dynamic>* globalMap = [@vm.inferred-type.metadata=dart.collection::_InternalLinkedHashMap<dynamic, dynamic>] core::Map::•<dynamic, dynamic>();
 [@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashMap?<dynamic, dynamic>]static field core::Map<dynamic, dynamic>* identityMap = [@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashMap<dynamic, dynamic>] col::LinkedHashMap::identity<dynamic, dynamic>();
 [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView?<dynamic, dynamic>]static field core::Map<dynamic, dynamic>* unmodifiableMap = [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dynamic, dynamic>] core::Map::unmodifiable<dynamic, dynamic>([@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashMap?<dynamic, dynamic>] self::identityMap);
 [@vm.inferred-type.metadata=dart.collection::_InternalLinkedHashMap?<dynamic, dynamic>]static field core::Map<dynamic, dynamic>* globalMapLiteral = <dynamic, dynamic>{};
 [@vm.inferred-type.metadata=dart.collection::_InternalLinkedHashMap?<dart.core::String*, dart.core::String*>]static field core::Map<core::String*, core::String*>* linkedMap = new col::_InternalLinkedHashMap::•<core::String*, core::String*>();
 static field core::Map<core::String*, core::String*>* linkedIdentityMap = [@vm.inferred-type.metadata=!] col::LinkedHashMap::•<core::String*, core::String*>(#C1, #C2);
-static field core::Map<core::String*, core::String*>* linkedCustomMap = let final (core::String*, core::String*) →* core::bool* #t4 = (core::String* a, core::String* b) → core::bool* => [@vm.inferred-type.metadata=!? (receiver not int)] a =={core::String::==}{(core::Object*) →* core::bool*} b in let final (core::String*) →* core::int* #t5 = (core::String* o) → core::int* => o.{core::String::hashCode}{core::int*} in let final (dynamic) →* core::bool* #t6 = (dynamic o) → core::bool* => true in [@vm.inferred-type.metadata=!] col::LinkedHashMap::•<core::String*, core::String*>(#t4, #t5, isValidKey: #t6);
+static field core::Map<core::String*, core::String*>* linkedCustomMap = let final (core::String*, core::String*) →* core::bool* #t4 = (core::String* a, core::String* b) → core::bool* => a.{core::String::==}(b) in let final (core::String*) →* core::int* #t5 = (core::String* o) → core::int* => o.{core::String::hashCode} in let final (dynamic) →* core::bool* #t6 = (dynamic o) → core::bool* => true in [@vm.inferred-type.metadata=!] col::LinkedHashMap::•<core::String*, core::String*>(#t4, #t5, isValidKey: #t6);
 static method main() → dynamic {
   core::print([@vm.inferred-type.metadata=dart.collection::_CompactLinkedHashSet?<dynamic>] self::globalSet);
   core::print([@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashSet?<dynamic>] self::identitySet);
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_dynamic_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_dynamic_method.dart.expect
index a3f1c3a..b9d738c 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_dynamic_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_dynamic_method.dart.expect
@@ -12,18 +12,18 @@
     : super self::A::•()
     ;
 [@vm.procedure-attributes.metadata=hasThisUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=()->i]  method foo() → core::int*
-    return [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=! (skip check)] 1.{core::num::+}([@vm.direct-call.metadata=#lib::B.foo] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult(){dynamic}.foo() as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*} as{TypeError} core::int*;
+    return [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=! (skip check)] 1.{core::num::+}([@vm.direct-call.metadata=#lib::B.foo] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo() as{TypeError,ForDynamic} core::num*) as{TypeError} core::int*;
 }
 class TearOffDynamicMethod extends core::Object {
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  field dynamic bazz;
   constructor •(dynamic arg) → self::TearOffDynamicMethod*
-    : self::TearOffDynamicMethod::bazz = arg{dynamic}.foo, super core::Object::•() {
-    [@vm.direct-call.metadata=#lib::TearOffDynamicMethod.bazz] this.{self::TearOffDynamicMethod::bazz}{dynamic}{dynamic}.call();
+    : self::TearOffDynamicMethod::bazz = arg.foo, super core::Object::•() {
+    [@vm.call-site-attributes.metadata=receiverType:dynamic] [@vm.direct-call.metadata=#lib::TearOffDynamicMethod.bazz] this.{self::TearOffDynamicMethod::bazz}.call();
   }
 }
 static method knownResult() → dynamic
   return new self::B::•();
 static method main(core::List<core::String*>* args) → dynamic {
   core::Function* closure = () → self::B* => new self::B::•();
-  new self::TearOffDynamicMethod::•([@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] closure());
+  new self::TearOffDynamicMethod::•([@vm.call-site-attributes.metadata=receiverType:dart.core::Function*] closure.call());
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect
index 578e8fb..8558915 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect
@@ -14,18 +14,18 @@
     : super self::A::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=()->i]  method foo() → core::int*
-    return _in::unsafeCast<core::int*>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] 1.{core::num::+}(_in::unsafeCast<core::num*>([@vm.direct-call.metadata=#lib::B.bar] [@vm.inferred-type.metadata=dart.core::_Smi (value: 3) (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult(){dynamic}.bar())){(core::num*) →* core::num*});
+    return _in::unsafeCast<core::int*>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] 1.{core::num::+}(_in::unsafeCast<core::num*>([@vm.direct-call.metadata=#lib::B.bar] [@vm.inferred-type.metadata=dart.core::_Smi (value: 3) (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult().bar())));
 [@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] [@vm.unboxing-info.metadata=()->i]  method bar() → core::int*
     return 3;
 }
 class TearOffInterfaceMethod extends core::Object {
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6]  field dynamic bazz;
   constructor •([@vm.inferred-type.metadata=#lib::B] self::A* arg) → self::TearOffInterfaceMethod*
-    : self::TearOffInterfaceMethod::bazz = arg.{self::A::foo}{() →* core::int*}, super core::Object::•()
+    : self::TearOffInterfaceMethod::bazz = arg.{self::A::foo}, super core::Object::•()
     ;
 }
 static method knownResult() → dynamic
   return new self::B::•();
 static method main(core::List<core::String*>* args) → dynamic {
-  [@vm.direct-call.metadata=#lib::TearOffInterfaceMethod.bazz] new self::TearOffInterfaceMethod::•(new self::B::•()).{self::TearOffInterfaceMethod::bazz}{dynamic}{dynamic}.call();
+  [@vm.call-site-attributes.metadata=receiverType:dynamic] [@vm.direct-call.metadata=#lib::TearOffInterfaceMethod.bazz] new self::TearOffInterfaceMethod::•(new self::B::•()).{self::TearOffInterfaceMethod::bazz}.call();
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_super_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_super_method.dart.expect
index bc69294..2b87ac1 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_super_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_super_method.dart.expect
@@ -14,28 +14,28 @@
     : super self::A::•()
     ;
 [@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=()->i]  method foo() → core::int*
-    return _in::unsafeCast<core::int*>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] 1.{core::num::+}(_in::unsafeCast<core::num*>([@vm.direct-call.metadata=#lib::B.foo] [@vm.inferred-type.metadata=int? (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult(){dynamic}.foo())){(core::num*) →* core::num*});
+    return _in::unsafeCast<core::int*>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] 1.{core::num::+}(_in::unsafeCast<core::num*>([@vm.direct-call.metadata=#lib::B.foo] [@vm.inferred-type.metadata=int? (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo())));
 }
 abstract class Base extends core::Object {
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] [@vm.unboxing-info.metadata=()->i]  method foo() → core::int*
-    return _in::unsafeCast<core::int*>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] 3.{core::num::+}(_in::unsafeCast<core::num*>([@vm.direct-call.metadata=#lib::B.foo] [@vm.inferred-type.metadata=int? (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult(){dynamic}.foo())){(core::num*) →* core::num*});
+    return _in::unsafeCast<core::int*>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] 3.{core::num::+}(_in::unsafeCast<core::num*>([@vm.direct-call.metadata=#lib::B.foo] [@vm.inferred-type.metadata=int? (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo())));
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6]  method doCall(dynamic x) → core::int*
-    return x{dynamic}.call() as{TypeError,ForDynamic} core::int*;
+    return [@vm.call-site-attributes.metadata=receiverType:dynamic] x.call() as{TypeError,ForDynamic} core::int*;
 }
 class TearOffSuperMethod extends self::Base {
   synthetic constructor •() → self::TearOffSuperMethod*
     : super self::Base::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8]  method bar() → core::int*
-    return [@vm.direct-call.metadata=#lib::Base.doCall] [@vm.inferred-type.metadata=int? (skip check)] this.{self::Base::doCall}(super.{self::Base::foo}){(dynamic) →* core::int*};
+    return [@vm.direct-call.metadata=#lib::Base.doCall] [@vm.inferred-type.metadata=int? (skip check)] this.{self::Base::doCall}(super.{self::Base::foo});
 }
 [@vm.inferred-type.metadata=#lib::B?]static field self::A* aa = new self::B::•();
 static method knownResult() → dynamic
   return new self::B::•();
 static method main(core::List<core::String*>* args) → dynamic {
-  [@vm.direct-call.metadata=#lib::TearOffSuperMethod.bar] [@vm.inferred-type.metadata=!? (skip check)] new self::TearOffSuperMethod::•().{self::TearOffSuperMethod::bar}(){() →* core::int*};
-  [@vm.direct-call.metadata=#lib::B.foo??] [@vm.inferred-type.metadata=!? (skip check)] [@vm.inferred-type.metadata=#lib::B?] self::aa.{self::A::foo}(){() →* core::int*};
+  [@vm.direct-call.metadata=#lib::TearOffSuperMethod.bar] [@vm.inferred-type.metadata=!? (skip check)] new self::TearOffSuperMethod::•().{self::TearOffSuperMethod::bar}();
+  [@vm.direct-call.metadata=#lib::B.foo??] [@vm.inferred-type.metadata=!? (skip check)] [@vm.inferred-type.metadata=#lib::B?] self::aa.{self::A::foo}();
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination.dart.expect
index 1ddb1b0..72a2ae0 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination.dart.expect
@@ -49,8 +49,8 @@
   self::testAOfNum(new self::B::•<core::int*>());
   self::testAOfAOfB1(new self::A::•<self::A<self::B<dynamic>*>*>());
   self::testAOfAOfB2negative(new self::A::•<self::A<self::A<dynamic>*>*>());
-  [@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int*>().{self::B::testT1}(){(dynamic) →* dynamic};
-  [@vm.direct-call.metadata=#lib::B.testT2negative] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<self::A<core::int*>*>().{self::B::testT2negative}(new self::A::•<core::String*>()){(dynamic) →* dynamic};
-  [@vm.direct-call.metadata=#lib::B.testAOfT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<self::A<core::int*>*>().{self::B::testAOfT1}(new self::A::•<self::A<core::int*>*>()){(dynamic) →* dynamic};
-  [@vm.direct-call.metadata=#lib::B.testAOfT2negative] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<self::A<core::int*>*>().{self::B::testAOfT2negative}(new self::A::•<self::A<core::num*>*>()){(dynamic) →* dynamic};
+  [@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int*>().{self::B::testT1}();
+  [@vm.direct-call.metadata=#lib::B.testT2negative] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<self::A<core::int*>*>().{self::B::testT2negative}(new self::A::•<core::String*>());
+  [@vm.direct-call.metadata=#lib::B.testAOfT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<self::A<core::int*>*>().{self::B::testAOfT1}(new self::A::•<self::A<core::int*>*>());
+  [@vm.direct-call.metadata=#lib::B.testAOfT2negative] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<self::A<core::int*>*>().{self::B::testAOfT2negative}(new self::A::•<self::A<core::num*>*>());
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd.dart.expect
index 4ffe51c..95e736c 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd.dart.expect
@@ -63,9 +63,9 @@
   self::testAOfNullableNum(new self::B::•<core::int?>());
   self::testNullableAOfNum();
   self::testNullableAOfNullableNum(new self::B::•<core::int?>());
-  [@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT1}(){(dynamic) → dynamic};
-  [@vm.direct-call.metadata=#lib::B.testT2] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT2}(){(dynamic) → dynamic};
-  [@vm.direct-call.metadata=#lib::B.testT3] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int?>().{self::B::testT3}(){(dynamic) → dynamic};
-  [@vm.direct-call.metadata=#lib::B.testNullableT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT1}(){(dynamic) → dynamic};
-  [@vm.direct-call.metadata=#lib::B.testNullableT2] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT2}(){(dynamic) → dynamic};
+  [@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT1}();
+  [@vm.direct-call.metadata=#lib::B.testT2] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT2}();
+  [@vm.direct-call.metadata=#lib::B.testT3] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int?>().{self::B::testT3}();
+  [@vm.direct-call.metadata=#lib::B.testNullableT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT1}();
+  [@vm.direct-call.metadata=#lib::B.testNullableT2] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT2}();
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd_strong.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd_strong.dart.expect
index 3acd93a..8ad5b44 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd_strong.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd_strong.dart.expect
@@ -66,9 +66,9 @@
   self::testNullableAOfNum();
   self::testNullableAOfNumNegative(new self::B::•<core::int?>());
   self::testNullableAOfNullableNum(new self::B::•<core::int?>());
-  [@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT1}(){(dynamic) → dynamic};
-  [@vm.direct-call.metadata=#lib::B.testT2negative] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT2negative}(){(dynamic) → dynamic};
-  [@vm.direct-call.metadata=#lib::B.testT3] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int?>().{self::B::testT3}(){(dynamic) → dynamic};
-  [@vm.direct-call.metadata=#lib::B.testNullableT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT1}(){(dynamic) → dynamic};
-  [@vm.direct-call.metadata=#lib::B.testNullableT2] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT2}(){(dynamic) → dynamic};
+  [@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT1}();
+  [@vm.direct-call.metadata=#lib::B.testT2negative] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT2negative}();
+  [@vm.direct-call.metadata=#lib::B.testT3] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int?>().{self::B::testT3}();
+  [@vm.direct-call.metadata=#lib::B.testNullableT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT1}();
+  [@vm.direct-call.metadata=#lib::B.testNullableT2] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT2}();
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_getters.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_getters.dart.expect
index 268be9b..6302a7c 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_getters.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_getters.dart.expect
@@ -68,27 +68,27 @@
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:5] [@vm.unboxing-info.metadata=()->i]  get value() → core::int*
     return [@vm.inferred-type.metadata=int] self::smiOrMint;
 }
-[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kTrue = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object*) →* core::bool*} 1 ?{core::bool*} true : false;
+[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kTrue = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1").{core::num::==}(1) ?{core::bool*} true : false;
 [@vm.inferred-type.metadata=int?]static field dynamic usedObject;
 [@vm.unboxing-info.metadata=()->i]static get mint() → core::int*
   return -6144092014192636707;
 [@vm.unboxing-info.metadata=()->i]static get smiOrMint() → core::int*
   return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : [@vm.inferred-type.metadata=int] self::mint;
 static method use([@vm.inferred-type.metadata=int?] dynamic object) → void {
-  [@vm.inferred-type.metadata=int?] self::usedObject == null ?{dynamic} self::usedObject = object : null;
+  [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.inferred-type.metadata=int?] self::usedObject.{core::Object::==}(null) ?{dynamic} self::usedObject = object : null;
 }
 static method main() → dynamic {
   final self::BI1A* bi1a = new self::BI1A::•([@vm.inferred-type.metadata=int] self::smiOrMint);
   final self::BI1B* bi1b = new self::BI1B::•();
-  self::use([@vm.inferred-type.metadata=int?]([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::BI1*} bi1a : bi1b).{self::BI1::value}{core::int*});
+  self::use([@vm.inferred-type.metadata=int?]([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::BI1*} bi1a : bi1b).{self::BI1::value});
   final self::BI2A* bi2a = new self::BI2A::•();
   final self::BI2B* bi2b = new self::BI2B::•();
-  self::use([@vm.inferred-type.metadata=int?]([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::BI2*} bi2a : bi2b).{self::BI2::value}{core::int*});
+  self::use([@vm.inferred-type.metadata=int?]([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::BI2*} bi2a : bi2b).{self::BI2::value});
   final self::BI3A* bi3a = new self::BI3A::•([@vm.inferred-type.metadata=int] self::smiOrMint);
   final self::BI3B* bi3b = new self::BI3B::•();
   ([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::BI3*} bi3a : bi3b).{self::BI3::value} = null;
-  self::use([@vm.inferred-type.metadata=int?]([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::BI3*} bi3a : bi3b).{self::BI3::value}{core::int*});
+  self::use([@vm.inferred-type.metadata=int?]([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::BI3*} bi3a : bi3b).{self::BI3::value});
   final self::UBIA* ubia = new self::UBIA::•([@vm.inferred-type.metadata=int] self::smiOrMint);
   final self::UBIB* ubib = new self::UBIB::•();
-  self::use([@vm.inferred-type.metadata=int]([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::UBI*} ubia : ubib).{self::UBI::value}{core::int*});
+  self::use([@vm.inferred-type.metadata=int]([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::UBI*} ubia : ubib).{self::UBI::value});
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_fields.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_fields.dart.expect
index a3d1769b..408fc55 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_fields.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_fields.dart.expect
@@ -21,15 +21,15 @@
     : self::A::unboxedSmi = unboxedSmi, self::A::unboxedInt = unboxedInt, self::A::unboxedDouble = unboxedDouble, self::A::boxedNullableInt = boxedNullableInt, self::A::boxedNullableDouble = boxedNullableDouble, self::A::boxedNonNullableIntOrDouble = boxedNonNullableIntOrDouble, self::A::boxedNullableIntOrDouble = boxedNullableIntOrDouble, self::A::boxedNullableX = boxedNullableX, self::A::boxedX = boxedX, super core::Object::•()
     ;
 }
-[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kTrue = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object*) →* core::bool*} 1 ?{core::bool*} true : false;
-[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kFalse = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object*) →* core::bool*} 2 ?{core::bool*} true : false;
+[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kTrue = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1").{core::num::==}(1) ?{core::bool*} true : false;
+[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kFalse = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1").{core::num::==}(2) ?{core::bool*} true : false;
 static field dynamic usedObject;
 [@vm.unboxing-info.metadata=()->i]static get mint() → core::int*
   return -6144092014192636707;
 [@vm.unboxing-info.metadata=()->i]static get smiOrMint() → core::int*
   return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : [@vm.inferred-type.metadata=int] self::mint;
 static method use(dynamic object) → void {
-  self::usedObject == null ?{dynamic} self::usedObject = object : null;
+  [@vm.inferred-type.metadata=!? (receiver not int)] self::usedObject.{core::Object::==}(null) ?{dynamic} self::usedObject = object : null;
 }
 static method main() → dynamic {
   final self::A* a = new self::A::•([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : 2.2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X*} new self::X::•() : null, new self::X::•());
@@ -42,13 +42,13 @@
   [@vm.direct-call.metadata=#lib::A.boxedNullableIntOrDouble] [@vm.inferred-type.metadata=!? (skip check)] a.{self::A::boxedNullableIntOrDouble} = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null;
   [@vm.direct-call.metadata=#lib::A.boxedNullableX] [@vm.inferred-type.metadata=!? (skip check)] a.{self::A::boxedNullableX} = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X*} new self::X::•() : null;
   [@vm.direct-call.metadata=#lib::A.boxedX] [@vm.inferred-type.metadata=!? (skip check)] a.{self::A::boxedX} = new self::X::•();
-  self::use([@vm.direct-call.metadata=#lib::A.unboxedSmi] [@vm.inferred-type.metadata=dart.core::_Smi] a.{self::A::unboxedSmi}{dynamic});
-  self::use([@vm.direct-call.metadata=#lib::A.unboxedInt] [@vm.inferred-type.metadata=int] a.{self::A::unboxedInt}{dynamic});
-  self::use([@vm.direct-call.metadata=#lib::A.unboxedDouble] [@vm.inferred-type.metadata=dart.core::_Double] a.{self::A::unboxedDouble}{dynamic});
-  self::use([@vm.direct-call.metadata=#lib::A.boxedNullableInt] [@vm.inferred-type.metadata=int?] a.{self::A::boxedNullableInt}{dynamic});
-  self::use([@vm.direct-call.metadata=#lib::A.boxedNullableDouble] [@vm.inferred-type.metadata=dart.core::_Double?] a.{self::A::boxedNullableDouble}{dynamic});
-  self::use([@vm.direct-call.metadata=#lib::A.boxedNonNullableIntOrDouble] [@vm.inferred-type.metadata=!] a.{self::A::boxedNonNullableIntOrDouble}{dynamic});
-  self::use([@vm.direct-call.metadata=#lib::A.boxedNullableIntOrDouble] a.{self::A::boxedNullableIntOrDouble}{dynamic});
-  self::use([@vm.direct-call.metadata=#lib::A.boxedNullableX] [@vm.inferred-type.metadata=#lib::X?] a.{self::A::boxedNullableX}{dynamic});
-  self::use([@vm.direct-call.metadata=#lib::A.boxedX] [@vm.inferred-type.metadata=#lib::X] a.{self::A::boxedX}{dynamic});
+  self::use([@vm.direct-call.metadata=#lib::A.unboxedSmi] [@vm.inferred-type.metadata=dart.core::_Smi] a.{self::A::unboxedSmi});
+  self::use([@vm.direct-call.metadata=#lib::A.unboxedInt] [@vm.inferred-type.metadata=int] a.{self::A::unboxedInt});
+  self::use([@vm.direct-call.metadata=#lib::A.unboxedDouble] [@vm.inferred-type.metadata=dart.core::_Double] a.{self::A::unboxedDouble});
+  self::use([@vm.direct-call.metadata=#lib::A.boxedNullableInt] [@vm.inferred-type.metadata=int?] a.{self::A::boxedNullableInt});
+  self::use([@vm.direct-call.metadata=#lib::A.boxedNullableDouble] [@vm.inferred-type.metadata=dart.core::_Double?] a.{self::A::boxedNullableDouble});
+  self::use([@vm.direct-call.metadata=#lib::A.boxedNonNullableIntOrDouble] [@vm.inferred-type.metadata=!] a.{self::A::boxedNonNullableIntOrDouble});
+  self::use([@vm.direct-call.metadata=#lib::A.boxedNullableIntOrDouble] a.{self::A::boxedNullableIntOrDouble});
+  self::use([@vm.direct-call.metadata=#lib::A.boxedNullableX] [@vm.inferred-type.metadata=#lib::X?] a.{self::A::boxedNullableX});
+  self::use([@vm.direct-call.metadata=#lib::A.boxedX] [@vm.inferred-type.metadata=#lib::X] a.{self::A::boxedX});
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart.expect
index 0811f05..4660ab5 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart.expect
@@ -122,52 +122,52 @@
 [@vm.unboxing-info.metadata=()->i]static get mint() → core::int*
   return -6144092014192636707;
 static method use(dynamic object) → void {
-  self::usedObject == null ?{dynamic} self::usedObject = object : null;
+  [@vm.inferred-type.metadata=!? (receiver not int)] self::usedObject.{core::Object::==}(null) ?{dynamic} self::usedObject = object : null;
 }
 static method main() → dynamic {
   final core::List<core::Object*>* values = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::Object*>] core::_GrowableList::_literal3<core::Object*>(new self::Impl1::•(), new self::BaseImpl2::•(), new self::SubImpl3::•());
-  final self::Impl1* a = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("0")){(core::int*) →* core::Object*} as self::Impl1*;
-  final self::BaseImpl2* b = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("1")){(core::int*) →* core::Object*} as self::BaseImpl2*;
-  final self::SubImpl3* c = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("2")){(core::int*) →* core::Object*} as self::SubImpl3*;
-  final self::Interface* d = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("2")){(core::int*) →* core::Object*} as self::Interface*;
-  [@vm.direct-call.metadata=#lib::Impl1.takePositional??] [@vm.inferred-type.metadata=!? (skip check)] a.{self::Impl1::takePositional}(1, 1.1, null, null, 1, null, null, new self::X::•()){(core::int*, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic) →* void};
-  b.{self::BaseImpl2::takePositional}(2, 2.2, 2, 2.2, 2.2, 2, new self::X::•(), new self::X::•()){(core::int*, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic) →* void};
-  [@vm.direct-call.metadata=#lib::SubImpl3.takePositional??] [@vm.inferred-type.metadata=!? (skip check)] c.{self::SubImpl3::takePositional}([@vm.inferred-type.metadata=int] self::mint, 3.3, [@vm.inferred-type.metadata=int] self::mint, 3.3, 3.3, 3.3, new self::X::•(), new self::X::•()){(core::int*, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic) →* void};
-  d.{self::Interface::takePositional}([@vm.inferred-type.metadata=int] self::mint, 3.3, [@vm.inferred-type.metadata=int] self::mint, 3.3, 3.3, 3.3, new self::X::•(), new self::X::•()){(core::int*, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic) →* void};
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnUnboxedSmi] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 1)] a.{self::Impl1::returnUnboxedSmi}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnUnboxedInt] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 1)] a.{self::Impl1::returnUnboxedInt}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnUnboxedDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 1.1)] a.{self::Impl1::returnUnboxedDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableInt] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableInt}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableDouble] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedIntOrDouble] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 1)] a.{self::Impl1::returnBoxedIntOrDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableIntOrDouble] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableIntOrDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableX] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableX}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedX] [@vm.inferred-type.metadata=#lib::X (skip check)] a.{self::Impl1::returnBoxedX}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Smi] b.{self::BaseImpl2::returnUnboxedSmi}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=int] b.{self::BaseImpl2::returnUnboxedInt}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Double] b.{self::BaseImpl2::returnUnboxedDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=int] b.{self::BaseImpl2::returnBoxedNullableInt}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Double] b.{self::BaseImpl2::returnBoxedNullableDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Double] b.{self::BaseImpl2::returnBoxedIntOrDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=!] b.{self::BaseImpl2::returnBoxedNullableIntOrDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=#lib::X] b.{self::BaseImpl2::returnBoxedNullableX}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=#lib::X] b.{self::BaseImpl2::returnBoxedX}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnUnboxedSmi] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 3)] c.{self::SubImpl3::returnUnboxedSmi}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnUnboxedInt] [@vm.inferred-type.metadata=int (skip check)] c.{self::SubImpl3::returnUnboxedInt}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnUnboxedDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnUnboxedDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableInt] [@vm.inferred-type.metadata=int (skip check)] c.{self::SubImpl3::returnBoxedNullableInt}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnBoxedNullableDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedIntOrDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnBoxedIntOrDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableIntOrDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnBoxedNullableIntOrDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableX] [@vm.inferred-type.metadata=#lib::X (skip check)] c.{self::SubImpl3::returnBoxedNullableX}(){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedX] [@vm.inferred-type.metadata=#lib::X (skip check)] c.{self::SubImpl3::returnBoxedX}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Smi] d.{self::Interface::returnUnboxedSmi}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=int] d.{self::Interface::returnUnboxedInt}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Double] d.{self::Interface::returnUnboxedDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=int?] d.{self::Interface::returnBoxedNullableInt}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Double?] d.{self::Interface::returnBoxedNullableDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=!] d.{self::Interface::returnBoxedIntOrDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Double?] d.{self::Interface::returnBoxedNullableIntOrDouble}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=#lib::X?] d.{self::Interface::returnBoxedNullableX}(){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=#lib::X] d.{self::Interface::returnBoxedX}(){(self::X*) →* dynamic});
+  final self::Impl1* a = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("0")) as self::Impl1*;
+  final self::BaseImpl2* b = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("1")) as self::BaseImpl2*;
+  final self::SubImpl3* c = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("2")) as self::SubImpl3*;
+  final self::Interface* d = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("2")) as self::Interface*;
+  [@vm.direct-call.metadata=#lib::Impl1.takePositional??] [@vm.inferred-type.metadata=!? (skip check)] a.{self::Impl1::takePositional}(1, 1.1, null, null, 1, null, null, new self::X::•());
+  b.{self::BaseImpl2::takePositional}(2, 2.2, 2, 2.2, 2.2, 2, new self::X::•(), new self::X::•());
+  [@vm.direct-call.metadata=#lib::SubImpl3.takePositional??] [@vm.inferred-type.metadata=!? (skip check)] c.{self::SubImpl3::takePositional}([@vm.inferred-type.metadata=int] self::mint, 3.3, [@vm.inferred-type.metadata=int] self::mint, 3.3, 3.3, 3.3, new self::X::•(), new self::X::•());
+  d.{self::Interface::takePositional}([@vm.inferred-type.metadata=int] self::mint, 3.3, [@vm.inferred-type.metadata=int] self::mint, 3.3, 3.3, 3.3, new self::X::•(), new self::X::•());
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnUnboxedSmi] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 1)] a.{self::Impl1::returnUnboxedSmi}());
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnUnboxedInt] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 1)] a.{self::Impl1::returnUnboxedInt}());
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnUnboxedDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 1.1)] a.{self::Impl1::returnUnboxedDouble}());
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableInt] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableInt}());
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableDouble] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableDouble}());
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedIntOrDouble] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 1)] a.{self::Impl1::returnBoxedIntOrDouble}());
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableIntOrDouble] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableIntOrDouble}());
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableX] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableX}());
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedX] [@vm.inferred-type.metadata=#lib::X (skip check)] a.{self::Impl1::returnBoxedX}());
+  self::use([@vm.inferred-type.metadata=dart.core::_Smi] b.{self::BaseImpl2::returnUnboxedSmi}());
+  self::use([@vm.inferred-type.metadata=int] b.{self::BaseImpl2::returnUnboxedInt}());
+  self::use([@vm.inferred-type.metadata=dart.core::_Double] b.{self::BaseImpl2::returnUnboxedDouble}());
+  self::use([@vm.inferred-type.metadata=int] b.{self::BaseImpl2::returnBoxedNullableInt}());
+  self::use([@vm.inferred-type.metadata=dart.core::_Double] b.{self::BaseImpl2::returnBoxedNullableDouble}());
+  self::use([@vm.inferred-type.metadata=dart.core::_Double] b.{self::BaseImpl2::returnBoxedIntOrDouble}());
+  self::use([@vm.inferred-type.metadata=!] b.{self::BaseImpl2::returnBoxedNullableIntOrDouble}());
+  self::use([@vm.inferred-type.metadata=#lib::X] b.{self::BaseImpl2::returnBoxedNullableX}());
+  self::use([@vm.inferred-type.metadata=#lib::X] b.{self::BaseImpl2::returnBoxedX}());
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnUnboxedSmi] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 3)] c.{self::SubImpl3::returnUnboxedSmi}());
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnUnboxedInt] [@vm.inferred-type.metadata=int (skip check)] c.{self::SubImpl3::returnUnboxedInt}());
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnUnboxedDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnUnboxedDouble}());
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableInt] [@vm.inferred-type.metadata=int (skip check)] c.{self::SubImpl3::returnBoxedNullableInt}());
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnBoxedNullableDouble}());
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedIntOrDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnBoxedIntOrDouble}());
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableIntOrDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnBoxedNullableIntOrDouble}());
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableX] [@vm.inferred-type.metadata=#lib::X (skip check)] c.{self::SubImpl3::returnBoxedNullableX}());
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedX] [@vm.inferred-type.metadata=#lib::X (skip check)] c.{self::SubImpl3::returnBoxedX}());
+  self::use([@vm.inferred-type.metadata=dart.core::_Smi] d.{self::Interface::returnUnboxedSmi}());
+  self::use([@vm.inferred-type.metadata=int] d.{self::Interface::returnUnboxedInt}());
+  self::use([@vm.inferred-type.metadata=dart.core::_Double] d.{self::Interface::returnUnboxedDouble}());
+  self::use([@vm.inferred-type.metadata=int?] d.{self::Interface::returnBoxedNullableInt}());
+  self::use([@vm.inferred-type.metadata=dart.core::_Double?] d.{self::Interface::returnBoxedNullableDouble}());
+  self::use([@vm.inferred-type.metadata=!] d.{self::Interface::returnBoxedIntOrDouble}());
+  self::use([@vm.inferred-type.metadata=dart.core::_Double?] d.{self::Interface::returnBoxedNullableIntOrDouble}());
+  self::use([@vm.inferred-type.metadata=#lib::X?] d.{self::Interface::returnBoxedNullableX}());
+  self::use([@vm.inferred-type.metadata=#lib::X] d.{self::Interface::returnBoxedX}());
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart.expect
index d22492c..f5662a4f 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart.expect
@@ -122,62 +122,62 @@
 [@vm.unboxing-info.metadata=()->i]static get mint() → core::int*
   return -6144092014192636707;
 static method use(dynamic object) → void {
-  self::usedObject == null ?{dynamic} self::usedObject = object : null;
+  [@vm.inferred-type.metadata=!? (receiver not int)] self::usedObject.{core::Object::==}(null) ?{dynamic} self::usedObject = object : null;
 }
 static method main() → dynamic {
   final core::List<core::Object*>* values = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::Object*>] core::_GrowableList::_literal3<core::Object*>(new self::Impl1::•(), new self::BaseImpl2::•(), new self::SubImpl3::•());
-  final self::Impl1* a = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("0")){(core::int*) →* core::Object*} as self::Impl1*;
-  final self::BaseImpl2* b = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("1")){(core::int*) →* core::Object*} as self::BaseImpl2*;
-  final self::SubImpl3* c = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("2")){(core::int*) →* core::Object*} as self::SubImpl3*;
-  final self::Interface* d = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("2")){(core::int*) →* core::Object*} as self::Interface*;
-  [@vm.direct-call.metadata=#lib::Impl1.takePositional??] [@vm.inferred-type.metadata=!? (skip check)] a.{self::Impl1::takePositional}(1, 1, 1.1, null, null, 1, null, null, new self::X::•()){(core::int*, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic) →* void};
-  b.{self::BaseImpl2::takePositional}(2, 2, 2.2, 2, 2.2, 2.2, 2, new self::X::•(), new self::X::•()){(core::int*, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic) →* void};
-  [@vm.direct-call.metadata=#lib::SubImpl3.takePositional??] [@vm.inferred-type.metadata=!? (skip check)] c.{self::SubImpl3::takePositional}(3, [@vm.inferred-type.metadata=int] self::mint, 3.3, [@vm.inferred-type.metadata=int] self::mint, 3.3, 3.3, 3.3, new self::X::•(), new self::X::•()){(core::int*, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic) →* void};
-  d.{self::Interface::takePositional}(3, [@vm.inferred-type.metadata=int] self::mint, 3.3, [@vm.inferred-type.metadata=int] self::mint, 3.3, 3.3, 3.3, new self::X::•(), new self::X::•()){(core::int*, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic) →* void};
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnUnboxedSmi] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 1)] a.{self::Impl1::returnUnboxedSmi}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnUnboxedInt] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 1)] a.{self::Impl1::returnUnboxedInt}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnUnboxedDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 1.1)] a.{self::Impl1::returnUnboxedDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableInt] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableInt}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableDouble] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedIntOrDouble] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 1)] a.{self::Impl1::returnBoxedIntOrDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableIntOrDouble] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableIntOrDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableX] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableX}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedX] [@vm.inferred-type.metadata=#lib::X (skip check)] a.{self::Impl1::returnBoxedX}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Smi] b.{self::BaseImpl2::returnUnboxedSmi}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=int] b.{self::BaseImpl2::returnUnboxedInt}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Double] b.{self::BaseImpl2::returnUnboxedDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=int] b.{self::BaseImpl2::returnBoxedNullableInt}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Double] b.{self::BaseImpl2::returnBoxedNullableDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Double] b.{self::BaseImpl2::returnBoxedIntOrDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=!] b.{self::BaseImpl2::returnBoxedNullableIntOrDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=#lib::X] b.{self::BaseImpl2::returnBoxedNullableX}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=#lib::X] b.{self::BaseImpl2::returnBoxedX}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnUnboxedSmi] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 3)] c.{self::SubImpl3::returnUnboxedSmi}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnUnboxedInt] [@vm.inferred-type.metadata=int (skip check)] c.{self::SubImpl3::returnUnboxedInt}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnUnboxedDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnUnboxedDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableInt] [@vm.inferred-type.metadata=int (skip check)] c.{self::SubImpl3::returnBoxedNullableInt}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnBoxedNullableDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedIntOrDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnBoxedIntOrDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableIntOrDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnBoxedNullableIntOrDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableX] [@vm.inferred-type.metadata=#lib::X (skip check)] c.{self::SubImpl3::returnBoxedNullableX}(null){(self::X*) →* dynamic});
-  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedX] [@vm.inferred-type.metadata=#lib::X (skip check)] c.{self::SubImpl3::returnBoxedX}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Smi] d.{self::Interface::returnUnboxedSmi}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=int] d.{self::Interface::returnUnboxedInt}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Double] d.{self::Interface::returnUnboxedDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=int?] d.{self::Interface::returnBoxedNullableInt}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Double?] d.{self::Interface::returnBoxedNullableDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=!] d.{self::Interface::returnBoxedIntOrDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=dart.core::_Double?] d.{self::Interface::returnBoxedNullableIntOrDouble}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=#lib::X?] d.{self::Interface::returnBoxedNullableX}(null){(self::X*) →* dynamic});
-  self::use([@vm.inferred-type.metadata=#lib::X] d.{self::Interface::returnBoxedX}(null){(self::X*) →* dynamic});
-  self::use(d.{self::Interface::takePositional}{(core::int*, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic) →* void});
-  self::use(d.{self::Interface::returnUnboxedSmi}{(self::X*) →* dynamic});
-  self::use(d.{self::Interface::returnUnboxedInt}{(self::X*) →* dynamic});
-  self::use(d.{self::Interface::returnUnboxedDouble}{(self::X*) →* dynamic});
-  self::use(d.{self::Interface::returnBoxedNullableInt}{(self::X*) →* dynamic});
-  self::use(d.{self::Interface::returnBoxedNullableDouble}{(self::X*) →* dynamic});
-  self::use(d.{self::Interface::returnBoxedIntOrDouble}{(self::X*) →* dynamic});
-  self::use(d.{self::Interface::returnBoxedNullableIntOrDouble}{(self::X*) →* dynamic});
-  self::use(d.{self::Interface::returnBoxedNullableX}{(self::X*) →* dynamic});
-  self::use(d.{self::Interface::returnBoxedX}{(self::X*) →* dynamic});
+  final self::Impl1* a = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("0")) as self::Impl1*;
+  final self::BaseImpl2* b = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("1")) as self::BaseImpl2*;
+  final self::SubImpl3* c = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("2")) as self::SubImpl3*;
+  final self::Interface* d = [@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=!? (skip check)] values.{core::List::[]}([@vm.inferred-type.metadata=int?] core::int::parse("2")) as self::Interface*;
+  [@vm.direct-call.metadata=#lib::Impl1.takePositional??] [@vm.inferred-type.metadata=!? (skip check)] a.{self::Impl1::takePositional}(1, 1, 1.1, null, null, 1, null, null, new self::X::•());
+  b.{self::BaseImpl2::takePositional}(2, 2, 2.2, 2, 2.2, 2.2, 2, new self::X::•(), new self::X::•());
+  [@vm.direct-call.metadata=#lib::SubImpl3.takePositional??] [@vm.inferred-type.metadata=!? (skip check)] c.{self::SubImpl3::takePositional}(3, [@vm.inferred-type.metadata=int] self::mint, 3.3, [@vm.inferred-type.metadata=int] self::mint, 3.3, 3.3, 3.3, new self::X::•(), new self::X::•());
+  d.{self::Interface::takePositional}(3, [@vm.inferred-type.metadata=int] self::mint, 3.3, [@vm.inferred-type.metadata=int] self::mint, 3.3, 3.3, 3.3, new self::X::•(), new self::X::•());
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnUnboxedSmi] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 1)] a.{self::Impl1::returnUnboxedSmi}(null));
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnUnboxedInt] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 1)] a.{self::Impl1::returnUnboxedInt}(null));
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnUnboxedDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 1.1)] a.{self::Impl1::returnUnboxedDouble}(null));
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableInt] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableInt}(null));
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableDouble] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableDouble}(null));
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedIntOrDouble] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 1)] a.{self::Impl1::returnBoxedIntOrDouble}(null));
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableIntOrDouble] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableIntOrDouble}(null));
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedNullableX] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] a.{self::Impl1::returnBoxedNullableX}(null));
+  self::use([@vm.direct-call.metadata=#lib::Impl1.returnBoxedX] [@vm.inferred-type.metadata=#lib::X (skip check)] a.{self::Impl1::returnBoxedX}(null));
+  self::use([@vm.inferred-type.metadata=dart.core::_Smi] b.{self::BaseImpl2::returnUnboxedSmi}(null));
+  self::use([@vm.inferred-type.metadata=int] b.{self::BaseImpl2::returnUnboxedInt}(null));
+  self::use([@vm.inferred-type.metadata=dart.core::_Double] b.{self::BaseImpl2::returnUnboxedDouble}(null));
+  self::use([@vm.inferred-type.metadata=int] b.{self::BaseImpl2::returnBoxedNullableInt}(null));
+  self::use([@vm.inferred-type.metadata=dart.core::_Double] b.{self::BaseImpl2::returnBoxedNullableDouble}(null));
+  self::use([@vm.inferred-type.metadata=dart.core::_Double] b.{self::BaseImpl2::returnBoxedIntOrDouble}(null));
+  self::use([@vm.inferred-type.metadata=!] b.{self::BaseImpl2::returnBoxedNullableIntOrDouble}(null));
+  self::use([@vm.inferred-type.metadata=#lib::X] b.{self::BaseImpl2::returnBoxedNullableX}(null));
+  self::use([@vm.inferred-type.metadata=#lib::X] b.{self::BaseImpl2::returnBoxedX}(null));
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnUnboxedSmi] [@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 3)] c.{self::SubImpl3::returnUnboxedSmi}(null));
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnUnboxedInt] [@vm.inferred-type.metadata=int (skip check)] c.{self::SubImpl3::returnUnboxedInt}(null));
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnUnboxedDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnUnboxedDouble}(null));
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableInt] [@vm.inferred-type.metadata=int (skip check)] c.{self::SubImpl3::returnBoxedNullableInt}(null));
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnBoxedNullableDouble}(null));
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedIntOrDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnBoxedIntOrDouble}(null));
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableIntOrDouble] [@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.3)] c.{self::SubImpl3::returnBoxedNullableIntOrDouble}(null));
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedNullableX] [@vm.inferred-type.metadata=#lib::X (skip check)] c.{self::SubImpl3::returnBoxedNullableX}(null));
+  self::use([@vm.direct-call.metadata=#lib::SubImpl3.returnBoxedX] [@vm.inferred-type.metadata=#lib::X (skip check)] c.{self::SubImpl3::returnBoxedX}(null));
+  self::use([@vm.inferred-type.metadata=dart.core::_Smi] d.{self::Interface::returnUnboxedSmi}(null));
+  self::use([@vm.inferred-type.metadata=int] d.{self::Interface::returnUnboxedInt}(null));
+  self::use([@vm.inferred-type.metadata=dart.core::_Double] d.{self::Interface::returnUnboxedDouble}(null));
+  self::use([@vm.inferred-type.metadata=int?] d.{self::Interface::returnBoxedNullableInt}(null));
+  self::use([@vm.inferred-type.metadata=dart.core::_Double?] d.{self::Interface::returnBoxedNullableDouble}(null));
+  self::use([@vm.inferred-type.metadata=!] d.{self::Interface::returnBoxedIntOrDouble}(null));
+  self::use([@vm.inferred-type.metadata=dart.core::_Double?] d.{self::Interface::returnBoxedNullableIntOrDouble}(null));
+  self::use([@vm.inferred-type.metadata=#lib::X?] d.{self::Interface::returnBoxedNullableX}(null));
+  self::use([@vm.inferred-type.metadata=#lib::X] d.{self::Interface::returnBoxedX}(null));
+  self::use(d.{self::Interface::takePositional});
+  self::use(d.{self::Interface::returnUnboxedSmi});
+  self::use(d.{self::Interface::returnUnboxedInt});
+  self::use(d.{self::Interface::returnUnboxedDouble});
+  self::use(d.{self::Interface::returnBoxedNullableInt});
+  self::use(d.{self::Interface::returnBoxedNullableDouble});
+  self::use(d.{self::Interface::returnBoxedIntOrDouble});
+  self::use(d.{self::Interface::returnBoxedNullableIntOrDouble});
+  self::use(d.{self::Interface::returnBoxedNullableX});
+  self::use(d.{self::Interface::returnBoxedX});
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method.dart.expect
index 8279a56..b6123a1 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method.dart.expect
@@ -7,15 +7,15 @@
     : super core::Object::•()
     ;
 }
-[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kTrue = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object*) →* core::bool*} 1 ?{core::bool*} true : false;
-[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kFalse = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object*) →* core::bool*} 2 ?{core::bool*} true : false;
+[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kTrue = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1").{core::num::==}(1) ?{core::bool*} true : false;
+[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kFalse = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1").{core::num::==}(2) ?{core::bool*} true : false;
 static field dynamic usedObject;
 [@vm.unboxing-info.metadata=()->i]static get mint() → core::int*
   return -6144092014192636707;
 [@vm.unboxing-info.metadata=()->i]static get smiOrMint() → core::int*
   return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : [@vm.inferred-type.metadata=int] self::mint;
 static method use(dynamic object) → void {
-  self::usedObject == null ?{dynamic} self::usedObject = object : null;
+  [@vm.inferred-type.metadata=!? (receiver not int)] self::usedObject.{core::Object::==}(null) ?{dynamic} self::usedObject = object : null;
 }
 [@vm.unboxing-info.metadata=(i,d,b,b,b,b,b,b)->b]static method takePositional([@vm.inferred-type.metadata=int] dynamic unboxedInt, [@vm.inferred-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-type.metadata=int?] dynamic boxedNullableInt, [@vm.inferred-type.metadata=dart.core::_Double?] dynamic boxedNullableDouble, [@vm.inferred-type.metadata=!] dynamic boxedIntOrDouble, dynamic boxedNullableIntOrDouble, [@vm.inferred-type.metadata=#lib::X?] dynamic boxedNullableX, [@vm.inferred-type.metadata=#lib::X] dynamic boxedX) → void {
   self::use(unboxedInt);
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method_tearoff.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method_tearoff.dart.expect
index 6b05788..f108cae 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method_tearoff.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method_tearoff.dart.expect
@@ -7,15 +7,15 @@
     : super core::Object::•()
     ;
 }
-[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kTrue = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object*) →* core::bool*} 1 ?{core::bool*} true : false;
-[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kFalse = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object*) →* core::bool*} 2 ?{core::bool*} true : false;
+[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kTrue = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1").{core::num::==}(1) ?{core::bool*} true : false;
+[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool* kFalse = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1").{core::num::==}(2) ?{core::bool*} true : false;
 static field dynamic usedObject;
 [@vm.unboxing-info.metadata=()->i]static get mint() → core::int*
   return -6144092014192636707;
 [@vm.unboxing-info.metadata=()->i]static get smiOrMint() → core::int*
   return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : [@vm.inferred-type.metadata=int] self::mint;
 static method use(dynamic object) → void {
-  self::usedObject == null ?{dynamic} self::usedObject = object : null;
+  [@vm.inferred-type.metadata=!? (receiver not int)] self::usedObject.{core::Object::==}(null) ?{dynamic} self::usedObject = object : null;
 }
 static method takePositional(core::int* unboxedSmi, dynamic unboxedInt, dynamic unboxedDouble, dynamic boxedNullableInt, dynamic boxedNullableDouble, dynamic boxedIntOrDouble, dynamic boxedNullableIntOrDouble, dynamic boxedNullableX, dynamic boxedX) → void {
   self::use(unboxedInt);
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field2.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field2.dart.expect
index 4eee926..664dad2 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field2.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field2.dart.expect
@@ -61,8 +61,8 @@
     [@vm.call-site-attributes.metadata=receiverType:#lib::C<dart.core::num*>*] [@vm.direct-call.metadata=#lib::D.bar] c.{self::C::bar} = 3.14;
   });
   self::E* e = new self::F::•();
-  let final core::int* #t2 = [@vm.direct-call.metadata=#lib::F.bar] [@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] e.{self::E::bar}{core::int*} in exp::Expect::equals();
+  let final core::int* #t2 = [@vm.direct-call.metadata=#lib::F.bar] [@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] e.{self::E::bar} in exp::Expect::equals();
   exp::Expect::isTrue(![@vm.inferred-type.metadata=dart.core::bool] core::identical(#C2, #C4));
-  [@vm.direct-call.metadata=#lib::I.foo] [@vm.inferred-type.metadata=!? (skip check)] new self::I::•().{self::I::foo}(){() →* dynamic};
+  [@vm.direct-call.metadata=#lib::I.foo] [@vm.inferred-type.metadata=!? (skip check)] new self::I::•().{self::I::foo}();
   5;
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field3_nnbd.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field3_nnbd.dart.expect
index 359a3f8..1431eb6 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field3_nnbd.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field3_nnbd.dart.expect
@@ -22,8 +22,8 @@
 }
 [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] [@vm.unboxing-info.metadata=(i)->i]late static final [setter] field core::int staticLateB;
 static method main() → void {
-  [@vm.direct-call.metadata=#lib::A.use] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::use}(){() → dynamic};
-  [@vm.direct-call.metadata=#lib::B.use] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•().{self::B::use}(){() → dynamic};
+  [@vm.direct-call.metadata=#lib::A.use] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::use}();
+  [@vm.direct-call.metadata=#lib::B.use] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•().{self::B::use}();
   4;
   self::staticLateB = 4;
 }
diff --git a/runtime/observatory/tests/service/next_through_function_expression_test.dart b/runtime/observatory/tests/service/next_through_function_expression_test.dart
index 082da72..ef33331 100644
--- a/runtime/observatory/tests/service/next_through_function_expression_test.dart
+++ b/runtime/observatory/tests/service/next_through_function_expression_test.dart
@@ -22,10 +22,10 @@
 
 List<String> stops = [];
 List<String> expected = [
-  "$file:${LINE_A + 0}:13", // on 'i' in 'codeXYZ(int i)'
-  "$file:${LINE_A + 1}:3", // on 'innerOne'
-  "$file:${LINE_A + 5}:10", // on 'innerOne()' call
-  "$file:${LINE_A + 5}:3" // on 'return'
+  "$file:${LINE_A+0}:13", // on 'i' in 'codeXYZ(int i)'
+  "$file:${LINE_A+1}:3", // on 'innerOne'
+  "$file:${LINE_A+5}:18", // on '(', i.e. after 'innerOne' call
+  "$file:${LINE_A+5}:3" // on 'return'
 ];
 
 var tests = <IsolateTest>[
diff --git a/runtime/observatory_2/tests/service_2/next_through_function_expression_test.dart b/runtime/observatory_2/tests/service_2/next_through_function_expression_test.dart
index 082da72..ef33331 100644
--- a/runtime/observatory_2/tests/service_2/next_through_function_expression_test.dart
+++ b/runtime/observatory_2/tests/service_2/next_through_function_expression_test.dart
@@ -22,10 +22,10 @@
 
 List<String> stops = [];
 List<String> expected = [
-  "$file:${LINE_A + 0}:13", // on 'i' in 'codeXYZ(int i)'
-  "$file:${LINE_A + 1}:3", // on 'innerOne'
-  "$file:${LINE_A + 5}:10", // on 'innerOne()' call
-  "$file:${LINE_A + 5}:3" // on 'return'
+  "$file:${LINE_A+0}:13", // on 'i' in 'codeXYZ(int i)'
+  "$file:${LINE_A+1}:3", // on 'innerOne'
+  "$file:${LINE_A+5}:18", // on '(', i.e. after 'innerOne' call
+  "$file:${LINE_A+5}:3" // on 'return'
 ];
 
 var tests = <IsolateTest>[
diff --git a/runtime/vm/compiler/asm_intrinsifier_arm.cc b/runtime/vm/compiler/asm_intrinsifier_arm.cc
index 770d456..2cfe3ad 100644
--- a/runtime/vm/compiler/asm_intrinsifier_arm.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_arm.cc
@@ -56,7 +56,7 @@
 
   // Try allocating in new space.
   const Class& cls = GrowableObjectArrayClass();
-  __ TryAllocate(cls, normal_ir_body, R0, R1);
+  __ TryAllocate(cls, normal_ir_body, Assembler::kFarJump, R0, R1);
 
   // Store backing array object in growable array object.
   __ ldr(R1, Address(SP, kArrayOffset));  // Data argument.
@@ -128,7 +128,7 @@
   __ mov(R1, Operand(R1, LSL, R0));  // R1 gets the low bits.
 
   const Class& mint_class = MintClass();
-  __ TryAllocate(mint_class, normal_ir_body, R0, R2);
+  __ TryAllocate(mint_class, normal_ir_body, Assembler::kFarJump, R0, R2);
 
   __ str(R1, FieldAddress(R0, target::Mint::value_offset()));
   __ str(R8,
@@ -871,7 +871,7 @@
         UNREACHABLE();
     }
     const Class& double_class = DoubleClass();
-    __ TryAllocate(double_class, normal_ir_body, R0,
+    __ TryAllocate(double_class, normal_ir_body, Assembler::kFarJump, R0,
                    R1);  // Result register.
     __ StoreDToOffset(D0, R0, target::Double::value_offset() - kHeapObjectTag);
     __ Ret();
@@ -917,7 +917,7 @@
     __ LoadDFromOffset(D0, R0, target::Double::value_offset() - kHeapObjectTag);
     __ vmuld(D0, D0, D1);
     const Class& double_class = DoubleClass();
-    __ TryAllocate(double_class, normal_ir_body, R0,
+    __ TryAllocate(double_class, normal_ir_body, Assembler::kFarJump, R0,
                    R1);  // Result register.
     __ StoreDToOffset(D0, R0, target::Double::value_offset() - kHeapObjectTag);
     __ Ret();
@@ -938,7 +938,7 @@
     __ vmovsr(S0, R0);
     __ vcvtdi(D0, S0);
     const Class& double_class = DoubleClass();
-    __ TryAllocate(double_class, normal_ir_body, R0,
+    __ TryAllocate(double_class, normal_ir_body, Assembler::kFarJump, R0,
                    R1);  // Result register.
     __ StoreDToOffset(D0, R0, target::Double::value_offset() - kHeapObjectTag);
     __ Ret();
@@ -1094,7 +1094,7 @@
     __ Bind(&double_op);
     __ vsqrtd(D0, D1);
     const Class& double_class = DoubleClass();
-    __ TryAllocate(double_class, normal_ir_body, R0,
+    __ TryAllocate(double_class, normal_ir_body, Assembler::kFarJump, R0,
                    R1);  // Result register.
     __ StoreDToOffset(D0, R0, target::Double::value_offset() - kHeapObjectTag);
     __ Ret();
diff --git a/runtime/vm/compiler/asm_intrinsifier_arm64.cc b/runtime/vm/compiler/asm_intrinsifier_arm64.cc
index 167e089..a976141 100644
--- a/runtime/vm/compiler/asm_intrinsifier_arm64.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_arm64.cc
@@ -59,7 +59,7 @@
 
   // Try allocating in new space.
   const Class& cls = GrowableObjectArrayClass();
-  __ TryAllocate(cls, normal_ir_body, R0, R1);
+  __ TryAllocate(cls, normal_ir_body, Assembler::kFarJump, R0, R1);
 
   // Store backing array object in growable array object.
   __ ldr(R1, Address(SP, kArrayOffset));  // Data argument.
@@ -989,7 +989,7 @@
       UNREACHABLE();
   }
   const Class& double_class = DoubleClass();
-  __ TryAllocate(double_class, normal_ir_body, R0, R1);
+  __ TryAllocate(double_class, normal_ir_body, Assembler::kFarJump, R0, R1);
   __ StoreDFieldToOffset(V0, R0, target::Double::value_offset());
   __ ret();
 
@@ -1030,7 +1030,7 @@
   __ LoadDFieldFromOffset(V0, R0, target::Double::value_offset());
   __ fmuld(V0, V0, V1);
   const Class& double_class = DoubleClass();
-  __ TryAllocate(double_class, normal_ir_body, R0, R1);
+  __ TryAllocate(double_class, normal_ir_body, Assembler::kFarJump, R0, R1);
   __ StoreDFieldToOffset(V0, R0, target::Double::value_offset());
   __ ret();
   __ Bind(normal_ir_body);
@@ -1048,7 +1048,7 @@
   __ scvtfdw(V0, R0);
 #endif
   const Class& double_class = DoubleClass();
-  __ TryAllocate(double_class, normal_ir_body, R0, R1);
+  __ TryAllocate(double_class, normal_ir_body, Assembler::kFarJump, R0, R1);
   __ StoreDFieldToOffset(V0, R0, target::Double::value_offset());
   __ ret();
   __ Bind(normal_ir_body);
@@ -1196,7 +1196,7 @@
   __ Bind(&double_op);
   __ fsqrtd(V0, V1);
   const Class& double_class = DoubleClass();
-  __ TryAllocate(double_class, normal_ir_body, R0, R1);
+  __ TryAllocate(double_class, normal_ir_body, Assembler::kFarJump, R0, R1);
   __ StoreDFieldToOffset(V0, R0, target::Double::value_offset());
   __ ret();
   __ Bind(&is_smi);
diff --git a/runtime/vm/compiler/assembler/assembler_arm.cc b/runtime/vm/compiler/assembler/assembler_arm.cc
index 2a0d655..fcc76b4 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm.cc
@@ -25,9 +25,7 @@
 namespace dart {
 
 DECLARE_FLAG(bool, check_code_pointer);
-DECLARE_FLAG(bool, inline_alloc);
 DECLARE_FLAG(bool, precompiled_mode);
-DECLARE_FLAG(bool, use_slow_path);
 
 namespace compiler {
 
@@ -3425,6 +3423,7 @@
 
 void Assembler::TryAllocate(const Class& cls,
                             Label* failure,
+                            JumpDistance distance,
                             Register instance_reg,
                             Register temp_reg) {
   ASSERT(failure != NULL);
diff --git a/runtime/vm/compiler/assembler/assembler_arm.h b/runtime/vm/compiler/assembler/assembler_arm.h
index a3a12aa..263f5fb 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.h
+++ b/runtime/vm/compiler/assembler/assembler_arm.h
@@ -1280,6 +1280,7 @@
   // Only the tags field of the object is initialized.
   void TryAllocate(const Class& cls,
                    Label* failure,
+                   JumpDistance distance,
                    Register instance_reg,
                    Register temp_reg);
 
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.cc b/runtime/vm/compiler/assembler/assembler_arm64.cc
index f02317e..11cc859 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm64.cc
@@ -16,9 +16,7 @@
 namespace dart {
 
 DECLARE_FLAG(bool, check_code_pointer);
-DECLARE_FLAG(bool, inline_alloc);
 DECLARE_FLAG(bool, precompiled_mode);
-DECLARE_FLAG(bool, use_slow_path);
 
 DEFINE_FLAG(bool, use_far_branches, false, "Always use far branches");
 
@@ -1845,6 +1843,7 @@
 
 void Assembler::TryAllocate(const Class& cls,
                             Label* failure,
+                            JumpDistance distance,
                             Register instance_reg,
                             Register top_reg,
                             bool tag_result) {
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.h b/runtime/vm/compiler/assembler/assembler_arm64.h
index 5726ac1..7d0921b 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.h
+++ b/runtime/vm/compiler/assembler/assembler_arm64.h
@@ -1999,6 +1999,7 @@
   //   * [top_reg] will contain Thread::top_offset()
   void TryAllocate(const Class& cls,
                    Label* failure,
+                   JumpDistance distance,
                    Register instance_reg,
                    Register top_reg,
                    bool tag_result = true);
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.cc b/runtime/vm/compiler/assembler/assembler_ia32.cc
index adcbe1f..a3b7a9a 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.cc
+++ b/runtime/vm/compiler/assembler/assembler_ia32.cc
@@ -14,9 +14,6 @@
 
 namespace dart {
 
-DECLARE_FLAG(bool, inline_alloc);
-DECLARE_FLAG(bool, use_slow_path);
-
 namespace compiler {
 
 class DirectCallRelocation : public AssemblerFixup {
diff --git a/runtime/vm/compiler/assembler/assembler_x64.cc b/runtime/vm/compiler/assembler/assembler_x64.cc
index 1c2c200..ae7798a 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.cc
+++ b/runtime/vm/compiler/assembler/assembler_x64.cc
@@ -15,9 +15,7 @@
 namespace dart {
 
 DECLARE_FLAG(bool, check_code_pointer);
-DECLARE_FLAG(bool, inline_alloc);
 DECLARE_FLAG(bool, precompiled_mode);
-DECLARE_FLAG(bool, use_slow_path);
 
 namespace compiler {
 
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.h b/runtime/vm/compiler/backend/flow_graph_compiler.h
index 6973f62..f613c15 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.h
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.h
@@ -278,6 +278,26 @@
   }
 };
 
+class BoxAllocationSlowPath : public TemplateSlowPathCode<Instruction> {
+ public:
+  BoxAllocationSlowPath(Instruction* instruction,
+                        const Class& cls,
+                        Register result)
+      : TemplateSlowPathCode(instruction), cls_(cls), result_(result) {}
+
+  virtual void EmitNativeCode(FlowGraphCompiler* compiler);
+
+  static void Allocate(FlowGraphCompiler* compiler,
+                       Instruction* instruction,
+                       const Class& cls,
+                       Register result,
+                       Register temp);
+
+ private:
+  const Class& cls_;
+  const Register result_;
+};
+
 // Slow path code which calls runtime entry to throw an exception.
 class ThrowErrorSlowPathCode : public TemplateSlowPathCode<Instruction> {
  public:
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index 5737444..66a645f 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -5545,6 +5545,44 @@
   compiler->AddNullCheck(check_null->source(), check_null->function_name());
 }
 
+void BoxAllocationSlowPath::EmitNativeCode(FlowGraphCompiler* compiler) {
+  if (compiler::Assembler::EmittingComments()) {
+    __ Comment("%s slow path allocation of %s", instruction()->DebugName(),
+               String::Handle(cls_.ScrubbedName()).ToCString());
+  }
+  __ Bind(entry_label());
+  const auto& stub = Code::ZoneHandle(
+      compiler->zone(), StubCode::GetAllocationStubForClass(cls_));
+
+  LocationSummary* locs = instruction()->locs();
+
+  locs->live_registers()->Remove(Location::RegisterLocation(result_));
+  compiler->SaveLiveRegisters(locs);
+  compiler->GenerateStubCall(InstructionSource(),  // No token position.
+                             stub, UntaggedPcDescriptors::kOther, locs);
+  __ MoveRegister(result_, AllocateBoxABI::kResultReg);
+  compiler->RestoreLiveRegisters(locs);
+  __ Jump(exit_label());
+}
+
+void BoxAllocationSlowPath::Allocate(FlowGraphCompiler* compiler,
+                                     Instruction* instruction,
+                                     const Class& cls,
+                                     Register result,
+                                     Register temp) {
+  if (compiler->intrinsic_mode()) {
+    __ TryAllocate(cls, compiler->intrinsic_slow_path_label(),
+                   compiler::Assembler::kFarJump, result, temp);
+  } else {
+    auto slow_path = new BoxAllocationSlowPath(instruction, cls, result);
+    compiler->AddSlowPathCode(slow_path);
+
+    __ TryAllocate(cls, slow_path->entry_label(), compiler::Assembler::kFarJump,
+                   result, temp);
+    __ Bind(slow_path->exit_label());
+  }
+}
+
 void RangeErrorSlowPath::EmitSharedStubCall(FlowGraphCompiler* compiler,
                                             bool save_fpu_registers) {
 #if defined(TARGET_ARCH_IA32)
diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc
index 1709f7b..bd70c29 100644
--- a/runtime/vm/compiler/backend/il_arm.cc
+++ b/runtime/vm/compiler/backend/il_arm.cc
@@ -31,9 +31,6 @@
 
 namespace dart {
 
-DECLARE_FLAG(bool, inline_alloc);
-DECLARE_FLAG(bool, use_slow_path);
-
 // Generic summary for call instructions that have all arguments pushed
 // on the stack and return the result in a fixed location depending on
 // the return value (R0, Location::Pair(R0, R1) or Q0).
@@ -2553,56 +2550,6 @@
 DEFINE_UNIMPLEMENTED_INSTRUCTION(GuardFieldTypeInstr)
 DEFINE_UNIMPLEMENTED_INSTRUCTION(CheckConditionInstr)
 
-class BoxAllocationSlowPath : public TemplateSlowPathCode<Instruction> {
- public:
-  BoxAllocationSlowPath(Instruction* instruction,
-                        const Class& cls,
-                        Register result)
-      : TemplateSlowPathCode(instruction), cls_(cls), result_(result) {}
-
-  virtual void EmitNativeCode(FlowGraphCompiler* compiler) {
-    if (compiler::Assembler::EmittingComments()) {
-      __ Comment("%s slow path allocation of %s", instruction()->DebugName(),
-                 String::Handle(cls_.ScrubbedName()).ToCString());
-    }
-    __ Bind(entry_label());
-    const Code& stub = Code::ZoneHandle(
-        compiler->zone(), StubCode::GetAllocationStubForClass(cls_));
-
-    LocationSummary* locs = instruction()->locs();
-
-    locs->live_registers()->Remove(Location::RegisterLocation(result_));
-
-    compiler->SaveLiveRegisters(locs);
-    compiler->GenerateStubCall(InstructionSource(),  // No token position.
-                               stub, UntaggedPcDescriptors::kOther, locs);
-    __ MoveRegister(result_, R0);
-    compiler->RestoreLiveRegisters(locs);
-    __ b(exit_label());
-  }
-
-  static void Allocate(FlowGraphCompiler* compiler,
-                       Instruction* instruction,
-                       const Class& cls,
-                       Register result,
-                       Register temp) {
-    if (compiler->intrinsic_mode()) {
-      __ TryAllocate(cls, compiler->intrinsic_slow_path_label(), result, temp);
-    } else {
-      BoxAllocationSlowPath* slow_path =
-          new BoxAllocationSlowPath(instruction, cls, result);
-      compiler->AddSlowPathCode(slow_path);
-
-      __ TryAllocate(cls, slow_path->entry_label(), result, temp);
-      __ Bind(slow_path->exit_label());
-    }
-  }
-
- private:
-  const Class& cls_;
-  const Register result_;
-};
-
 LocationSummary* LoadCodeUnitsInstr::MakeLocationSummary(Zone* zone,
                                                          bool opt) const {
   const bool might_box = (representation() == kTagged) && !can_pack_into_smi();
@@ -4810,7 +4757,8 @@
 
   if (compiler->intrinsic_mode()) {
     __ TryAllocate(compiler->mint_class(),
-                   compiler->intrinsic_slow_path_label(), out_reg, tmp);
+                   compiler->intrinsic_slow_path_label(),
+                   compiler::Assembler::kNearJump, out_reg, tmp);
   } else if (locs()->call_on_shared_slow_path()) {
     auto object_store = compiler->isolate_group()->object_store();
     const bool live_fpu_regs = locs()->live_registers()->FpuRegisterCount() > 0;
diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc
index 4bbe8ca..95e5666 100644
--- a/runtime/vm/compiler/backend/il_arm64.cc
+++ b/runtime/vm/compiler/backend/il_arm64.cc
@@ -29,9 +29,6 @@
 
 namespace dart {
 
-DECLARE_FLAG(bool, inline_alloc);
-DECLARE_FLAG(bool, use_slow_path);
-
 // Generic summary for call instructions that have all arguments pushed
 // on the stack and return the result in a fixed register R0 (or V0 if
 // the return type is double).
@@ -2306,56 +2303,6 @@
   }
 }
 
-class BoxAllocationSlowPath : public TemplateSlowPathCode<Instruction> {
- public:
-  BoxAllocationSlowPath(Instruction* instruction,
-                        const Class& cls,
-                        Register result)
-      : TemplateSlowPathCode(instruction), cls_(cls), result_(result) {}
-
-  virtual void EmitNativeCode(FlowGraphCompiler* compiler) {
-    if (compiler::Assembler::EmittingComments()) {
-      __ Comment("%s slow path allocation of %s", instruction()->DebugName(),
-                 String::Handle(cls_.ScrubbedName()).ToCString());
-    }
-    __ Bind(entry_label());
-    const Code& stub = Code::ZoneHandle(
-        compiler->zone(), StubCode::GetAllocationStubForClass(cls_));
-
-    LocationSummary* locs = instruction()->locs();
-
-    locs->live_registers()->Remove(Location::RegisterLocation(result_));
-
-    compiler->SaveLiveRegisters(locs);
-    compiler->GenerateStubCall(InstructionSource(),  // No token position.
-                               stub, UntaggedPcDescriptors::kOther, locs);
-    __ MoveRegister(result_, R0);
-    compiler->RestoreLiveRegisters(locs);
-    __ b(exit_label());
-  }
-
-  static void Allocate(FlowGraphCompiler* compiler,
-                       Instruction* instruction,
-                       const Class& cls,
-                       Register result,
-                       Register temp) {
-    if (compiler->intrinsic_mode()) {
-      __ TryAllocate(cls, compiler->intrinsic_slow_path_label(), result, temp);
-    } else {
-      BoxAllocationSlowPath* slow_path =
-          new BoxAllocationSlowPath(instruction, cls, result);
-      compiler->AddSlowPathCode(slow_path);
-
-      __ TryAllocate(cls, slow_path->entry_label(), result, temp);
-      __ Bind(slow_path->exit_label());
-    }
-  }
-
- private:
-  const Class& cls_;
-  const Register result_;
-};
-
 static void EnsureMutableBox(FlowGraphCompiler* compiler,
                              StoreInstanceFieldInstr* instruction,
                              Register box_reg,
@@ -4077,7 +4024,8 @@
   Register temp = locs()->temp(0).reg();
   if (compiler->intrinsic_mode()) {
     __ TryAllocate(compiler->mint_class(),
-                   compiler->intrinsic_slow_path_label(), out, temp);
+                   compiler->intrinsic_slow_path_label(),
+                   compiler::Assembler::kNearJump, out, temp);
   } else if (locs()->call_on_shared_slow_path()) {
     auto object_store = compiler->isolate_group()->object_store();
     const bool live_fpu_regs = locs()->live_registers()->FpuRegisterCount() > 0;
diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc
index c0cfbe2..c1aeb05 100644
--- a/runtime/vm/compiler/backend/il_ia32.cc
+++ b/runtime/vm/compiler/backend/il_ia32.cc
@@ -29,9 +29,6 @@
 
 namespace dart {
 
-DECLARE_FLAG(bool, inline_alloc);
-DECLARE_FLAG(bool, use_slow_path);
-
 // Generic summary for call instructions that have all arguments pushed
 // on the stack and return the result in a fixed register EAX.
 LocationSummary* Instruction::MakeCallSummary(Zone* zone,
@@ -2042,58 +2039,6 @@
   }
 }
 
-class BoxAllocationSlowPath : public TemplateSlowPathCode<Instruction> {
- public:
-  BoxAllocationSlowPath(Instruction* instruction,
-                        const Class& cls,
-                        Register result)
-      : TemplateSlowPathCode(instruction), cls_(cls), result_(result) {}
-
-  virtual void EmitNativeCode(FlowGraphCompiler* compiler) {
-    if (compiler::Assembler::EmittingComments()) {
-      __ Comment("%s slow path allocation of %s", instruction()->DebugName(),
-                 String::Handle(cls_.ScrubbedName()).ToCString());
-    }
-    __ Bind(entry_label());
-    const Code& stub = Code::ZoneHandle(
-        compiler->zone(), StubCode::GetAllocationStubForClass(cls_));
-
-    LocationSummary* locs = instruction()->locs();
-
-    locs->live_registers()->Remove(Location::RegisterLocation(result_));
-
-    compiler->SaveLiveRegisters(locs);
-    compiler->GenerateStubCall(InstructionSource(), stub,
-                               UntaggedPcDescriptors::kOther, locs);
-    __ MoveRegister(result_, EAX);
-    compiler->RestoreLiveRegisters(locs);
-    __ jmp(exit_label());
-  }
-
-  static void Allocate(FlowGraphCompiler* compiler,
-                       Instruction* instruction,
-                       const Class& cls,
-                       Register result,
-                       Register temp) {
-    if (compiler->intrinsic_mode()) {
-      __ TryAllocate(cls, compiler->intrinsic_slow_path_label(),
-                     compiler::Assembler::kFarJump, result, temp);
-    } else {
-      BoxAllocationSlowPath* slow_path =
-          new BoxAllocationSlowPath(instruction, cls, result);
-      compiler->AddSlowPathCode(slow_path);
-
-      __ TryAllocate(cls, slow_path->entry_label(),
-                     compiler::Assembler::kFarJump, result, temp);
-      __ Bind(slow_path->exit_label());
-    }
-  }
-
- private:
-  const Class& cls_;
-  const Register result_;
-};
-
 LocationSummary* StoreInstanceFieldInstr::MakeLocationSummary(Zone* zone,
                                                               bool opt) const {
   const intptr_t kNumInputs = 2;
diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc
index 82faaac..b60e119 100644
--- a/runtime/vm/compiler/backend/il_x64.cc
+++ b/runtime/vm/compiler/backend/il_x64.cc
@@ -30,9 +30,6 @@
 
 namespace dart {
 
-DECLARE_FLAG(bool, inline_alloc);
-DECLARE_FLAG(bool, use_slow_path);
-
 // Generic summary for call instructions that have all arguments pushed
 // on the stack and return the result in a fixed register RAX (or XMM0 if
 // the return type is double).
@@ -1629,58 +1626,6 @@
   }
 }
 
-class BoxAllocationSlowPath : public TemplateSlowPathCode<Instruction> {
- public:
-  BoxAllocationSlowPath(Instruction* instruction,
-                        const Class& cls,
-                        Register result)
-      : TemplateSlowPathCode(instruction), cls_(cls), result_(result) {}
-
-  virtual void EmitNativeCode(FlowGraphCompiler* compiler) {
-    if (compiler::Assembler::EmittingComments()) {
-      __ Comment("%s slow path allocation of %s", instruction()->DebugName(),
-                 String::Handle(cls_.ScrubbedName()).ToCString());
-    }
-    __ Bind(entry_label());
-    const Code& stub = Code::ZoneHandle(
-        compiler->zone(), StubCode::GetAllocationStubForClass(cls_));
-
-    LocationSummary* locs = instruction()->locs();
-
-    locs->live_registers()->Remove(Location::RegisterLocation(result_));
-
-    compiler->SaveLiveRegisters(locs);
-    compiler->GenerateStubCall(InstructionSource(),  // No token position.
-                               stub, UntaggedPcDescriptors::kOther, locs);
-    __ MoveRegister(result_, RAX);
-    compiler->RestoreLiveRegisters(locs);
-    __ jmp(exit_label());
-  }
-
-  static void Allocate(FlowGraphCompiler* compiler,
-                       Instruction* instruction,
-                       const Class& cls,
-                       Register result,
-                       Register temp) {
-    if (compiler->intrinsic_mode()) {
-      __ TryAllocate(cls, compiler->intrinsic_slow_path_label(),
-                     compiler::Assembler::kFarJump, result, temp);
-    } else {
-      BoxAllocationSlowPath* slow_path =
-          new BoxAllocationSlowPath(instruction, cls, result);
-      compiler->AddSlowPathCode(slow_path);
-
-      __ TryAllocate(cls, slow_path->entry_label(),
-                     compiler::Assembler::kFarJump, result, temp);
-      __ Bind(slow_path->exit_label());
-    }
-  }
-
- private:
-  const Class& cls_;
-  const Register result_;
-};
-
 LocationSummary* LoadIndexedInstr::MakeLocationSummary(Zone* zone,
                                                        bool opt) const {
   const intptr_t kNumInputs = 2;
diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h
index a6086c6..7e54439 100644
--- a/runtime/vm/compiler/recognized_methods_list.h
+++ b/runtime/vm/compiler/recognized_methods_list.h
@@ -17,8 +17,8 @@
   V(Object, Object., ObjectConstructor, 0xab6d6cfa)                            \
   V(List, ., ListFactory, 0xbc820cf9)                                          \
   V(_List, ., ObjectArrayAllocate, 0xd693eee6)                                 \
-  V(_List, []=, ObjectArraySetIndexed, 0xd7b48abc)                             \
-  V(_GrowableList, []=, GrowableArraySetIndexed, 0xd7b48abc)                   \
+  V(_List, []=, ObjectArraySetIndexed, 0xac001598)                             \
+  V(_GrowableList, []=, GrowableArraySetIndexed, 0xac001598)                   \
   V(_TypedList, _getInt8, ByteArrayBaseGetInt8, 0x1623dc34)                    \
   V(_TypedList, _getUint8, ByteArrayBaseGetUint8, 0x177ffe2a)                  \
   V(_TypedList, _getInt16, ByteArrayBaseGetInt16, 0x2e40964f)                  \
@@ -43,7 +43,7 @@
   V(_TypedList, _setFloat64, ByteArrayBaseSetFloat64, 0x2359f8d2)              \
   V(_TypedList, _setFloat32x4, ByteArrayBaseSetFloat32x4, 0x38c6295a)          \
   V(_TypedList, _setInt32x4, ByteArrayBaseSetInt32x4, 0x5ce9025b)              \
-  V(ByteData, ., ByteDataFactory, 0x8a8b07a8)                                  \
+  V(ByteData, ., ByteDataFactory, 0xd12ef748)                                  \
   V(_ByteDataView, get:offsetInBytes, ByteDataViewOffsetInBytes, 0x60cef22c)   \
   V(_ByteDataView, get:_typedData, ByteDataViewTypedData, 0xb9d15ffa)          \
   V(_TypedListView, get:offsetInBytes, TypedDataViewOffsetInBytes, 0x60cef22c) \
@@ -78,19 +78,19 @@
   V(Float32x4List, ., TypedData_Float32x4Array_factory, 0x0a7d7b88)            \
   V(Int32x4List, ., TypedData_Int32x4Array_factory, 0x5a17b46e)                \
   V(Float64x2List, ., TypedData_Float64x2Array_factory, 0xeccaff6a)            \
-  V(::, _toClampedUint8, ConvertIntToClampedUint8, 0x00fc4650)                 \
+  V(::, _toClampedUint8, ConvertIntToClampedUint8, 0x6f65a4d0)                 \
   V(::, copyRangeFromUint8ListToOneByteString,                                 \
-    CopyRangeFromUint8ListToOneByteString, 0x0df019c5)                         \
-  V(_StringBase, _interpolate, StringBaseInterpolate, 0xea1eac09)              \
+    CopyRangeFromUint8ListToOneByteString, 0x8302f9d9)                         \
+  V(_StringBase, _interpolate, StringBaseInterpolate, 0xec019c89)              \
   V(_IntegerImplementation, toDouble, IntegerToDouble, 0x97728b46)             \
   V(_Double, _add, DoubleAdd, 0xea666327)                                      \
   V(_Double, _sub, DoubleSub, 0x28474c2e)                                      \
   V(_Double, _mul, DoubleMul, 0x1f98c76c)                                      \
   V(_Double, _div, DoubleDiv, 0x287d3791)                                      \
-  V(::, min, MathMin, 0x504a28df)                                              \
-  V(::, max, MathMax, 0xead7161a)                                              \
-  V(::, _doublePow, MathDoublePow, 0x989f3334)                                 \
-  V(::, _intPow, MathIntPow, 0x68b6021e)                                       \
+  V(::, min, MathMin, 0x1cee3d43)                                              \
+  V(::, max, MathMax, 0xbf7a293e)                                              \
+  V(::, _doublePow, MathDoublePow, 0x701a00c4)                                 \
+  V(::, _intPow, MathIntPow, 0x9e2bb83a)                                       \
   V(Float32x4, _Float32x4FromDoubles, Float32x4FromDoubles, 0x1845792b)        \
   V(Float32x4, Float32x4.zero, Float32x4Zero, 0xd3b64002)                      \
   V(Float32x4, _Float32x4Splat, Float32x4Splat, 0x13a552c3)                    \
@@ -162,7 +162,7 @@
   V(_WeakProperty, set:key, WeakProperty_setKey, 0x963a095f)                   \
   V(_WeakProperty, get:value, WeakProperty_getValue, 0xd2f28aae)               \
   V(_WeakProperty, set:value, WeakProperty_setValue, 0x8b2bafab)               \
-  V(::, _classRangeCheck, ClassRangeCheck, 0x00269620)                         \
+  V(::, _classRangeCheck, ClassRangeCheck, 0x5fd51e68)                         \
   V(::, _abi, FfiAbi, 0x7c4ab775)                                              \
   V(::, _asFunctionInternal, FfiAsFunctionInternal, 0xbbcb235a)                \
   V(::, _nativeCallbackFunction, FfiNativeCallbackFunction, 0x3ff5ae9c)        \
@@ -198,40 +198,40 @@
   V(::, _fromAddress, FfiFromAddress, 0xfd8cb1cc)                              \
   V(Pointer, get:address, FfiGetAddress, 0x7cde87be)                           \
   V(::, reachabilityFence, ReachabilityFence, 0x619235c1)                      \
-  V(_Utf8Decoder, _scan, Utf8DecoderScan, 0x1dcaf73d)                          \
-  V(_Future, timeout, FutureTimeout, 0x73041520)                               \
-  V(Future, wait, FutureWait, 0xdf32b54d)                                      \
-  V(_RootZone, runUnary, RootZoneRunUnary, 0xb607f8bf)                         \
-  V(_FutureListener, handleValue, FutureListenerHandleValue, 0x438115a8)       \
+  V(_Utf8Decoder, _scan, Utf8DecoderScan, 0x4983e111)                          \
+  V(_Future, timeout, FutureTimeout, 0xc83eaf79)                               \
+  V(Future, wait, FutureWait, 0xc71e731d)                                      \
+  V(_RootZone, runUnary, RootZoneRunUnary, 0x966a802c)                         \
+  V(_FutureListener, handleValue, FutureListenerHandleValue, 0x165b47c4)       \
 
 // List of intrinsics:
 // (class-name, function-name, intrinsification method, fingerprint).
 #define CORE_LIB_INTRINSIC_LIST(V)                                             \
   V(_Smi, get:bitLength, Smi_bitLength, 0x7ab50ceb)                            \
-  V(_BigIntImpl, _lsh, Bigint_lsh, 0x5de6ab16)                                 \
-  V(_BigIntImpl, _rsh, Bigint_rsh, 0xa8090d4f)                                 \
-  V(_BigIntImpl, _absAdd, Bigint_absAdd, 0xdc2a8a75)                           \
-  V(_BigIntImpl, _absSub, Bigint_absSub, 0x23653a4f)                           \
-  V(_BigIntImpl, _mulAdd, Bigint_mulAdd, 0x08fc5919)                           \
-  V(_BigIntImpl, _sqrAdd, Bigint_sqrAdd, 0xd1b6bf41)                           \
+  V(_BigIntImpl, _lsh, Bigint_lsh, 0x3f8b105e)                                 \
+  V(_BigIntImpl, _rsh, Bigint_rsh, 0x117ed3f3)                                 \
+  V(_BigIntImpl, _absAdd, Bigint_absAdd, 0xd55235d1)                           \
+  V(_BigIntImpl, _absSub, Bigint_absSub, 0xe4a9dacf)                           \
+  V(_BigIntImpl, _mulAdd, Bigint_mulAdd, 0x6dab2009)                           \
+  V(_BigIntImpl, _sqrAdd, Bigint_sqrAdd, 0x4ea2b411)                           \
   V(_BigIntImpl, _estimateQuotientDigit, Bigint_estimateQuotientDigit,         \
-    0x3b2a5ba4)                                                                \
-  V(_BigIntMontgomeryReduction, _mulMod, Montgomery_mulMod, 0xc1c66bf4)        \
-  V(_Double, >, Double_greaterThan, 0x9872cc67)                                \
-  V(_Double, >=, Double_greaterEqualThan, 0xfecba6b3)                          \
-  V(_Double, <, Double_lessThan, 0xf07a87d4)                                   \
-  V(_Double, <=, Double_lessEqualThan, 0xb6764495)                             \
-  V(_Double, ==, Double_equal, 0xa91c918f)                                     \
-  V(_Double, +, Double_add, 0xc54725bf)                                        \
-  V(_Double, -, Double_sub, 0xb8343210)                                        \
-  V(_Double, *, Double_mul, 0xf9bb3c0d)                                        \
-  V(_Double, /, Double_div, 0xefe9ca49)                                        \
+    0x898ea14c)                                                                \
+  V(_BigIntMontgomeryReduction, _mulMod, Montgomery_mulMod, 0x0d038dd0)        \
+  V(_Double, >, Double_greaterThan, 0xe450adaf)                                \
+  V(_Double, >=, Double_greaterEqualThan, 0xbc280c13)                          \
+  V(_Double, <, Double_lessThan, 0x39643178)                                   \
+  V(_Double, <=, Double_lessEqualThan, 0x73d2a9f5)                             \
+  V(_Double, ==, Double_equal, 0xaca03d47)                                     \
+  V(_Double, +, Double_add, 0x11250707)                                        \
+  V(_Double, -, Double_sub, 0x04121358)                                        \
+  V(_Double, *, Double_mul, 0x45991d55)                                        \
+  V(_Double, /, Double_div, 0x3bc7ab91)                                        \
   V(_Double, get:hashCode, Double_hashCode, 0x75e0d093)                        \
   V(_Double, get:_identityHashCode, Double_identityHash, 0x47a56551)           \
   V(_Double, get:isNaN, Double_getIsNaN, 0xd4890713)                           \
   V(_Double, get:isInfinite, Double_getIsInfinite, 0xc4facbd2)                 \
   V(_Double, get:isNegative, Double_getIsNegative, 0xd4715091)                 \
-  V(_Double, _mulFromInteger, Double_mulFromInteger, 0x0a50d2cf)               \
+  V(_Double, _mulFromInteger, Double_mulFromInteger, 0xf9e516ab)               \
   V(_Double, .fromInteger, DoubleFromInteger, 0x7d0fd999)                      \
   V(_GrowableList, ._withData, GrowableArray_Allocate, 0xa32d060b)             \
   V(_RegExp, _ExecuteMatch, RegExp_ExecuteMatch, 0x9911d549)                   \
@@ -241,8 +241,8 @@
   V(Object, _haveSameRuntimeType, ObjectHaveSameRuntimeType, 0xce4e6295)       \
   V(_StringBase, get:hashCode, String_getHashCode, 0x75e0d454)                 \
   V(_StringBase, get:_identityHashCode, String_identityHash, 0x47a56912)       \
-  V(_StringBase, get:isEmpty, StringBaseIsEmpty, 0xfecd3cf3)                   \
-  V(_StringBase, _substringMatches, StringBaseSubstringMatches, 0x87094a2a)    \
+  V(_StringBase, get:isEmpty, StringBaseIsEmpty, 0x9ce63f77)                   \
+  V(_StringBase, _substringMatches, StringBaseSubstringMatches, 0x03fdc6ce)    \
   V(_StringBase, [], StringBaseCharAt, 0xd06fc6bf)                             \
   V(_OneByteString, get:hashCode, OneByteString_getHashCode, 0x75e0d454)       \
   V(_OneByteString, _substringUncheckedNative,                                 \
@@ -257,66 +257,66 @@
   V(::, _setHashIfNotSetYet, Object_setHashIfNotSetYet, 0x4e17c2f5)            \
 
 #define CORE_INTEGER_LIB_INTRINSIC_LIST(V)                                     \
-  V(_IntegerImplementation, >, Integer_greaterThan, 0xf741693b)                \
-  V(_IntegerImplementation, ==, Integer_equal, 0xa8aba26a)                     \
+  V(_IntegerImplementation, >, Integer_greaterThan, 0x402b12df)                \
+  V(_IntegerImplementation, ==, Integer_equal, 0x509c9146)                     \
   V(_IntegerImplementation, _equalToInteger, Integer_equalToInteger,           \
     0x710f18c2)                                                                \
-  V(_IntegerImplementation, <, Integer_lessThan, 0xf07a87d4)                   \
-  V(_IntegerImplementation, <=, Integer_lessEqualThan, 0xb6764495)             \
-  V(_IntegerImplementation, >=, Integer_greaterEqualThan, 0xfecba6b3)          \
-  V(_IntegerImplementation, <<, Integer_shl, 0x2d855b02)                       \
+  V(_IntegerImplementation, <, Integer_lessThan, 0x39643178)                   \
+  V(_IntegerImplementation, <=, Integer_lessEqualThan, 0x73d2a9f5)             \
+  V(_IntegerImplementation, >=, Integer_greaterEqualThan, 0xbc280c13)          \
+  V(_IntegerImplementation, <<, Integer_shl, 0x766f04a6)                       \
   V(_Double, toInt, DoubleToInteger, 0x676f1ce8)                               \
 
 #define MATH_LIB_INTRINSIC_LIST(V)                                             \
-  V(::, sqrt, MathSqrt, 0x1c9a16a2)                                            \
+  V(::, sqrt, MathSqrt, 0x58c2a87e)                                            \
   V(_Random, _nextState, Random_nextState, 0x7207677d)                         \
 
 #define GRAPH_MATH_LIB_INTRINSIC_LIST(V)                                       \
-  V(::, sin, MathSin, 0xb79dea09)                                              \
-  V(::, cos, MathCos, 0x81a51dbd)                                              \
-  V(::, tan, MathTan, 0x64bc50f3)                                              \
-  V(::, asin, MathAsin, 0x7d26f0d4)                                            \
-  V(::, acos, MathAcos, 0xc3879f8b)                                            \
-  V(::, atan, MathAtan, 0xb5c4223e)                                            \
-  V(::, atan2, MathAtan2, 0xc03b8b85)                                          \
-  V(::, exp, MathExp, 0x7f5f1a67)                                              \
-  V(::, log, MathLog, 0xebc3f443)                                              \
+  V(::, sin, MathSin, 0xf3c67be5)                                              \
+  V(::, cos, MathCos, 0xbdcdaf99)                                              \
+  V(::, tan, MathTan, 0xa0e4e2cf)                                              \
+  V(::, asin, MathAsin, 0xb94f82b0)                                            \
+  V(::, acos, MathAcos, 0xffb03167)                                            \
+  V(::, atan, MathAtan, 0xf1ecb41a)                                            \
+  V(::, atan2, MathAtan2, 0xff585505)                                          \
+  V(::, exp, MathExp, 0xbb87ac43)                                              \
+  V(::, log, MathLog, 0x27ec861f)                                              \
 
 #define GRAPH_TYPED_DATA_INTRINSICS_LIST(V)                                    \
-  V(_Int8List, [], Int8ArrayGetIndexed, 0x35f3fab6)                            \
-  V(_Int8List, []=, Int8ArraySetIndexed, 0x6e4fdaa7)                           \
-  V(_Uint8List, [], Uint8ArrayGetIndexed, 0x9b6c7e76)                          \
-  V(_Uint8List, []=, Uint8ArraySetIndexed, 0xbadee66b)                         \
-  V(_ExternalUint8Array, [], ExternalUint8ArrayGetIndexed, 0x9b6c7e76)         \
-  V(_ExternalUint8Array, []=, ExternalUint8ArraySetIndexed, 0xbadee66b)        \
-  V(_Uint8ClampedList, [], Uint8ClampedArrayGetIndexed, 0x9b6c7e76)            \
-  V(_Uint8ClampedList, []=, Uint8ClampedArraySetIndexed, 0xb0de9c0b)           \
+  V(_Int8List, [], Int8ArrayGetIndexed, 0x281e2e42)                            \
+  V(_Int8List, []=, Int8ArraySetIndexed, 0x7eb45f63)                           \
+  V(_Uint8List, [], Uint8ArrayGetIndexed, 0x8d96b202)                          \
+  V(_Uint8List, []=, Uint8ArraySetIndexed, 0xcb436b27)                         \
+  V(_ExternalUint8Array, [], ExternalUint8ArrayGetIndexed, 0x8d96b202)         \
+  V(_ExternalUint8Array, []=, ExternalUint8ArraySetIndexed, 0xcb436b27)        \
+  V(_Uint8ClampedList, [], Uint8ClampedArrayGetIndexed, 0x8d96b202)            \
+  V(_Uint8ClampedList, []=, Uint8ClampedArraySetIndexed, 0xc14320c7)           \
   V(_ExternalUint8ClampedArray, [], ExternalUint8ClampedArrayGetIndexed,       \
-    0x9b6c7e76)                                                                \
+    0x8d96b202)                                                                \
   V(_ExternalUint8ClampedArray, []=, ExternalUint8ClampedArraySetIndexed,      \
-    0xb0de9c0b)                                                                \
-  V(_Int16List, [], Int16ArrayGetIndexed, 0x15f25a16)                          \
-  V(_Int16List, []=, Int16ArraySetIndexed, 0xfecf9e32)                         \
-  V(_Uint16List, [], Uint16ArrayGetIndexed, 0xf9cb3616)                        \
-  V(_Uint16List, []=, Uint16ArraySetIndexed, 0xe71245a9)                       \
-  V(_Int32List, [], Int32ArrayGetIndexed, 0x178fffb5)                          \
-  V(_Int32List, []=, Int32ArraySetIndexed, 0xdd041ad1)                         \
-  V(_Uint32List, [], Uint32ArrayGetIndexed, 0x66e26555)                        \
-  V(_Uint32List, []=, Uint32ArraySetIndexed, 0xc8a78f51)                       \
-  V(_Int64List, [], Int64ArrayGetIndexed, 0x505859f5)                          \
-  V(_Int64List, []=, Int64ArraySetIndexed, 0x5a2e23b7)                         \
-  V(_Uint64List, [], Uint64ArrayGetIndexed, 0x8d1cbf75)                        \
-  V(_Uint64List, []=, Uint64ArraySetIndexed, 0x258f94ef)                       \
-  V(_Float64List, [], Float64ArrayGetIndexed, 0x6d778ebc)                      \
-  V(_Float64List, []=, Float64ArraySetIndexed, 0xed47a595)                     \
-  V(_Float32List, [], Float32ArrayGetIndexed, 0x43758fdc)                      \
-  V(_Float32List, []=, Float32ArraySetIndexed, 0x489602c3)                     \
-  V(_Float32x4List, [], Float32x4ArrayGetIndexed, 0xed5d8d35)                  \
-  V(_Float32x4List, []=, Float32x4ArraySetIndexed, 0x0b093d30)                 \
-  V(_Int32x4List, [], Int32x4ArrayGetIndexed, 0x834607ad)                      \
-  V(_Int32x4List, []=, Int32x4ArraySetIndexed, 0x17a2cbc0)                     \
-  V(_Float64x2List, [], Float64x2ArrayGetIndexed, 0xea0577df)                  \
-  V(_Float64x2List, []=, Float64x2ArraySetIndexed, 0x8af8aa58)                 \
+    0xc14320c7)                                                                \
+  V(_Int16List, [], Int16ArrayGetIndexed, 0x081c8da2)                          \
+  V(_Int16List, []=, Int16ArraySetIndexed, 0x0f3422ee)                         \
+  V(_Uint16List, [], Uint16ArrayGetIndexed, 0xebf569a2)                        \
+  V(_Uint16List, []=, Uint16ArraySetIndexed, 0xf776ca65)                       \
+  V(_Int32List, [], Int32ArrayGetIndexed, 0x09ba3341)                          \
+  V(_Int32List, []=, Int32ArraySetIndexed, 0xed689f8d)                         \
+  V(_Uint32List, [], Uint32ArrayGetIndexed, 0x590c98e1)                        \
+  V(_Uint32List, []=, Uint32ArraySetIndexed, 0xd90c140d)                       \
+  V(_Int64List, [], Int64ArrayGetIndexed, 0x42828d81)                          \
+  V(_Int64List, []=, Int64ArraySetIndexed, 0xd7ba387b)                         \
+  V(_Uint64List, [], Uint64ArrayGetIndexed, 0x7f46f301)                        \
+  V(_Uint64List, []=, Uint64ArraySetIndexed, 0xa31ba9b3)                       \
+  V(_Float64List, [], Float64ArrayGetIndexed, 0x5fa1c248)                      \
+  V(_Float64List, []=, Float64ArraySetIndexed, 0x6ad3ba59)                     \
+  V(_Float32List, [], Float32ArrayGetIndexed, 0x359fc368)                      \
+  V(_Float32List, []=, Float32ArraySetIndexed, 0xc6221787)                     \
+  V(_Float32x4List, [], Float32x4ArrayGetIndexed, 0xdf87c0c1)                  \
+  V(_Float32x4List, []=, Float32x4ArraySetIndexed, 0x889551f4)                 \
+  V(_Int32x4List, [], Int32x4ArrayGetIndexed, 0x75703b39)                      \
+  V(_Int32x4List, []=, Int32x4ArraySetIndexed, 0x952ee084)                     \
+  V(_Float64x2List, [], Float64x2ArrayGetIndexed, 0xdc2fab6b)                  \
+  V(_Float64x2List, []=, Float64x2ArraySetIndexed, 0x0884bf1c)                 \
   V(_TypedList, get:length, TypedListLength, 0x5850f06b)                       \
   V(_TypedListView, get:length, TypedListViewLength, 0x5850f06b)               \
   V(_ByteDataView, get:length, ByteDataViewLength, 0x5850f06b)                 \
@@ -353,17 +353,17 @@
   V(_ExternalTwoByteString, codeUnitAt, ExternalTwoByteStringCodeUnitAt,       \
     0x17f90910)                                                                \
   V(_Smi, ~, Smi_bitNegate, 0x8254f8dc)                                        \
-  V(_IntegerImplementation, +, Integer_add, 0x8c775aac)                        \
-  V(_IntegerImplementation, -, Integer_sub, 0x8080699d)                        \
-  V(_IntegerImplementation, *, Integer_mul, 0x63efbe3a)                        \
-  V(_IntegerImplementation, %, Integer_mod, 0x93a8d914)                        \
-  V(_IntegerImplementation, ~/, Integer_truncDivide, 0x4c5b2b80)               \
-  V(_IntegerImplementation, unary-, Integer_negate, 0xaec000b3)                \
-  V(_IntegerImplementation, &, Integer_bitAnd, 0x42b3d650)                     \
-  V(_IntegerImplementation, |, Integer_bitOr, 0x465e5008)                      \
-  V(_IntegerImplementation, ^, Integer_bitXor, 0x8f4f190f)                     \
-  V(_IntegerImplementation, >>, Integer_sar, 0x4a3615a7)                       \
-  V(_IntegerImplementation, >>>, Integer_shr, 0x2bac5209)                      \
+  V(_IntegerImplementation, +, Integer_add, 0xd5610450)                        \
+  V(_IntegerImplementation, -, Integer_sub, 0xc96a1341)                        \
+  V(_IntegerImplementation, *, Integer_mul, 0xacd967de)                        \
+  V(_IntegerImplementation, %, Integer_mod, 0xfcf7cfd4)                        \
+  V(_IntegerImplementation, ~/, Integer_truncDivide, 0xdda4a240)               \
+  V(_IntegerImplementation, unary-, Integer_negate, 0xf7a9aa57)                \
+  V(_IntegerImplementation, &, Integer_bitAnd, 0x8b9d7ff4)                     \
+  V(_IntegerImplementation, |, Integer_bitOr, 0x8f47f9ac)                      \
+  V(_IntegerImplementation, ^, Integer_bitXor, 0xd838c2b3)                     \
+  V(_IntegerImplementation, >>, Integer_sar, 0x931fbf4b)                       \
+  V(_IntegerImplementation, >>>, Integer_shr, 0x7495fbad)                      \
   V(_Double, unary-, DoubleFlipSignBit, 0x3d39082b)                            \
   V(_Double, truncateToDouble, DoubleTruncate, 0x62d48298)                     \
   V(_Double, roundToDouble, DoubleRound, 0x5649c63f)                           \
@@ -437,14 +437,14 @@
 //  result-cid, fingerprint).
 #define RECOGNIZED_LIST_FACTORY_LIST(V)                                        \
   V(_ListFactory, _List, ., kArrayCid, 0xd693eee6)                             \
-  V(_ListFilledFactory, _List, .filled, kArrayCid, 0x7f29060d)                 \
-  V(_ListGenerateFactory, _List, .generate, kArrayCid, 0x95feb438)             \
+  V(_ListFilledFactory, _List, .filled, kArrayCid, 0x4c76526a)                 \
+  V(_ListGenerateFactory, _List, .generate, kArrayCid, 0x4f848337)             \
   V(_GrowableListFactory, _GrowableList, ., kGrowableObjectArrayCid,           \
-    0xc1b55e71)                                                                \
+    0x434de9b9)                                                                \
   V(_GrowableListFilledFactory, _GrowableList, .filled,                        \
-    kGrowableObjectArrayCid, 0x37d0dc65)                                       \
+    kGrowableObjectArrayCid, 0x261b3cc2)                                       \
   V(_GrowableListGenerateFactory, _GrowableList, .generate,                    \
-    kGrowableObjectArrayCid, 0x52f61890)                                       \
+    kGrowableObjectArrayCid, 0x0c7be78f)                                       \
   V(_GrowableListWithData, _GrowableList, ._withData, kGrowableObjectArrayCid, \
     0xa32d060b)                                                                \
   V(_Int8ArrayFactory, Int8List, ., kTypedDataInt8ArrayCid, 0x660dd888)        \
diff --git a/runtime/vm/compiler/runtime_api.cc b/runtime/vm/compiler/runtime_api.cc
index 6df7d2e..9832335 100644
--- a/runtime/vm/compiler/runtime_api.cc
+++ b/runtime/vm/compiler/runtime_api.cc
@@ -176,6 +176,16 @@
   return Class::Handle(object_store->double_class());
 }
 
+const Class& Float32x4Class() {
+  auto object_store = IsolateGroup::Current()->object_store();
+  return Class::Handle(object_store->float32x4_class());
+}
+
+const Class& Float64x2Class() {
+  auto object_store = IsolateGroup::Current()->object_store();
+  return Class::Handle(object_store->float64x2_class());
+}
+
 const Array& OneArgArgumentsDescriptor() {
   return Array::ZoneHandle(
       ArgumentsDescriptor::NewBoxed(/*type_args_len=*/0, /*num_arguments=*/1));
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index 642c287..944cf01 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -114,6 +114,8 @@
 const Class& GrowableObjectArrayClass();
 const Class& MintClass();
 const Class& DoubleClass();
+const Class& Float32x4Class();
+const Class& Float64x2Class();
 const Array& OneArgArgumentsDescriptor();
 
 template <typename To, typename From>
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index 653ef92..2317e29 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -245,9 +245,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 368;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    704;
+    716;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    708;
+    720;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 120;
 static constexpr dart::compiler::target::word
@@ -272,7 +272,7 @@
     Thread_allocate_object_slow_entry_point_offset = 288;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 196;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 744;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 756;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 332;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 112;
@@ -283,7 +283,7 @@
     Thread_call_to_runtime_entry_point_offset = 268;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 136;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 752;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 764;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 48;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -301,7 +301,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    724;
+    736;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
@@ -321,13 +321,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 364;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    712;
+    724;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 132;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    740;
+    752;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 44;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 756;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 768;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     68;
 static constexpr dart::compiler::target::word
@@ -369,11 +369,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 716;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 728;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 720;
+    Thread_saved_shadow_call_stack_offset = 732;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    728;
+    740;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 240;
 static constexpr dart::compiler::target::word
@@ -407,9 +407,9 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     36;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 40;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 732;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 744;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 736;
+    Thread_callback_stack_return_offset = 748;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
 static constexpr dart::compiler::target::word Type_arguments_offset = 16;
@@ -467,7 +467,7 @@
     4, 12, 8, 16};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        672, 676, 680, 684, 688, -1, 692, -1, 696, 700, -1, -1, -1, -1, -1, -1};
+        684, 688, 692, 696, 700, -1, 704, -1, 708, 712, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word Array_header_size = 12;
@@ -785,9 +785,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1424;
+    1448;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1432;
+    1456;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -813,7 +813,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1504;
+    1528;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -824,7 +824,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1520;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1544;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -842,7 +842,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1464;
+    1488;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -862,14 +862,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1440;
+    1464;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1496;
+    1520;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1528;
+    1552;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -911,11 +911,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1448;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1472;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1456;
+    Thread_saved_shadow_call_stack_offset = 1480;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1472;
+    1496;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -950,9 +950,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1480;
+    1504;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1488;
+    Thread_callback_stack_return_offset = 1512;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -1011,8 +1011,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, -1,   -1,   1368, 1376,
-        1384, 1392, 1400, -1,   1408, 1416, -1,   -1};
+        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
+        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -1328,9 +1328,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 368;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    672;
+    684;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    676;
+    688;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 120;
 static constexpr dart::compiler::target::word
@@ -1355,7 +1355,7 @@
     Thread_allocate_object_slow_entry_point_offset = 288;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 196;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 712;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 724;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 332;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 112;
@@ -1366,7 +1366,7 @@
     Thread_call_to_runtime_entry_point_offset = 268;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 136;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 720;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 732;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 48;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -1384,7 +1384,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    692;
+    704;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
@@ -1404,13 +1404,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 364;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    680;
+    692;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 132;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    708;
+    720;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 44;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 724;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 736;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     68;
 static constexpr dart::compiler::target::word
@@ -1452,11 +1452,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 684;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 696;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 688;
+    Thread_saved_shadow_call_stack_offset = 700;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    696;
+    708;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 240;
 static constexpr dart::compiler::target::word
@@ -1490,9 +1490,9 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     36;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 40;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 700;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 712;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 704;
+    Thread_callback_stack_return_offset = 716;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
 static constexpr dart::compiler::target::word Type_arguments_offset = 16;
@@ -1865,9 +1865,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1488;
+    1512;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1496;
+    1520;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -1893,7 +1893,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -1904,7 +1904,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1584;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1608;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -1922,7 +1922,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1528;
+    1552;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -1942,14 +1942,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1504;
+    1528;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1560;
+    1584;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1592;
+    1616;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -1991,11 +1991,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1512;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1536;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1520;
+    Thread_saved_shadow_call_stack_offset = 1544;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1536;
+    1560;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -2030,9 +2030,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1544;
+    1568;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1552;
+    Thread_callback_stack_return_offset = 1576;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -2091,9 +2091,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416,
-        1424, 1432, 1440, 1448, -1,   -1,   -1,   -1,   1456, 1464, -1,
-        -1,   -1,   1472, 1480, -1,   -1,   -1,   -1,   -1,   -1};
+        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
+        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
+        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -2410,9 +2410,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1424;
+    1448;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1432;
+    1456;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -2438,7 +2438,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1504;
+    1528;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -2449,7 +2449,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1520;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1544;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -2467,7 +2467,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1464;
+    1488;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -2487,14 +2487,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1440;
+    1464;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1496;
+    1520;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1528;
+    1552;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -2536,11 +2536,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1448;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1472;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1456;
+    Thread_saved_shadow_call_stack_offset = 1480;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1472;
+    1496;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -2575,9 +2575,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1480;
+    1504;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1488;
+    Thread_callback_stack_return_offset = 1512;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -2636,8 +2636,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, -1,   -1,   1368, 1376,
-        1384, 1392, 1400, -1,   1408, 1416, -1,   -1};
+        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
+        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -2954,9 +2954,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1488;
+    1512;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1496;
+    1520;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -2982,7 +2982,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -2993,7 +2993,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1584;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1608;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -3011,7 +3011,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1528;
+    1552;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -3031,14 +3031,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1504;
+    1528;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1560;
+    1584;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1592;
+    1616;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -3080,11 +3080,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1512;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1536;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1520;
+    Thread_saved_shadow_call_stack_offset = 1544;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1536;
+    1560;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -3119,9 +3119,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1544;
+    1568;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1552;
+    Thread_callback_stack_return_offset = 1576;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -3180,9 +3180,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416,
-        1424, 1432, 1440, 1448, -1,   -1,   -1,   -1,   1456, 1464, -1,
-        -1,   -1,   1472, 1480, -1,   -1,   -1,   -1,   -1,   -1};
+        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
+        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
+        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -3494,9 +3494,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 368;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    704;
+    716;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    708;
+    720;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 120;
 static constexpr dart::compiler::target::word
@@ -3521,7 +3521,7 @@
     Thread_allocate_object_slow_entry_point_offset = 288;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 196;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 744;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 756;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 332;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 112;
@@ -3532,7 +3532,7 @@
     Thread_call_to_runtime_entry_point_offset = 268;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 136;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 752;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 764;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 48;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -3550,7 +3550,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    724;
+    736;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
@@ -3570,13 +3570,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 364;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    712;
+    724;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 132;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    740;
+    752;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 44;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 756;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 768;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     68;
 static constexpr dart::compiler::target::word
@@ -3618,11 +3618,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 716;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 728;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 720;
+    Thread_saved_shadow_call_stack_offset = 732;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    728;
+    740;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 240;
 static constexpr dart::compiler::target::word
@@ -3656,9 +3656,9 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     36;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 40;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 732;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 744;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 736;
+    Thread_callback_stack_return_offset = 748;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
 static constexpr dart::compiler::target::word Type_arguments_offset = 16;
@@ -3716,7 +3716,7 @@
     4, 12, 8, 16};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        672, 676, 680, 684, 688, -1, 692, -1, 696, 700, -1, -1, -1, -1, -1, -1};
+        684, 688, 692, 696, 700, -1, 704, -1, 708, 712, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word Array_header_size = 12;
@@ -4028,9 +4028,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1424;
+    1448;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1432;
+    1456;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -4056,7 +4056,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1504;
+    1528;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -4067,7 +4067,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1520;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1544;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -4085,7 +4085,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1464;
+    1488;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -4105,14 +4105,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1440;
+    1464;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1496;
+    1520;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1528;
+    1552;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -4154,11 +4154,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1448;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1472;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1456;
+    Thread_saved_shadow_call_stack_offset = 1480;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1472;
+    1496;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -4193,9 +4193,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1480;
+    1504;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1488;
+    Thread_callback_stack_return_offset = 1512;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -4254,8 +4254,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, -1,   -1,   1368, 1376,
-        1384, 1392, 1400, -1,   1408, 1416, -1,   -1};
+        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
+        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -4565,9 +4565,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 368;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    672;
+    684;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    676;
+    688;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 120;
 static constexpr dart::compiler::target::word
@@ -4592,7 +4592,7 @@
     Thread_allocate_object_slow_entry_point_offset = 288;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 196;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 712;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 724;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 332;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 112;
@@ -4603,7 +4603,7 @@
     Thread_call_to_runtime_entry_point_offset = 268;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 136;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 720;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 732;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 48;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -4621,7 +4621,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    692;
+    704;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
@@ -4641,13 +4641,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 364;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    680;
+    692;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 132;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    708;
+    720;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 44;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 724;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 736;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     68;
 static constexpr dart::compiler::target::word
@@ -4689,11 +4689,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 684;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 696;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 688;
+    Thread_saved_shadow_call_stack_offset = 700;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    696;
+    708;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 240;
 static constexpr dart::compiler::target::word
@@ -4727,9 +4727,9 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     36;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 40;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 700;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 712;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 704;
+    Thread_callback_stack_return_offset = 716;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
 static constexpr dart::compiler::target::word Type_arguments_offset = 16;
@@ -5096,9 +5096,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1488;
+    1512;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1496;
+    1520;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -5124,7 +5124,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -5135,7 +5135,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1584;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1608;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -5153,7 +5153,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1528;
+    1552;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -5173,14 +5173,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1504;
+    1528;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1560;
+    1584;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1592;
+    1616;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -5222,11 +5222,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1512;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1536;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1520;
+    Thread_saved_shadow_call_stack_offset = 1544;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1536;
+    1560;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -5261,9 +5261,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1544;
+    1568;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1552;
+    Thread_callback_stack_return_offset = 1576;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -5322,9 +5322,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416,
-        1424, 1432, 1440, 1448, -1,   -1,   -1,   -1,   1456, 1464, -1,
-        -1,   -1,   1472, 1480, -1,   -1,   -1,   -1,   -1,   -1};
+        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
+        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
+        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -5635,9 +5635,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1424;
+    1448;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1432;
+    1456;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -5663,7 +5663,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1504;
+    1528;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -5674,7 +5674,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1520;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1544;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -5692,7 +5692,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1464;
+    1488;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -5712,14 +5712,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1440;
+    1464;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1496;
+    1520;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1528;
+    1552;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -5761,11 +5761,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1448;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1472;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1456;
+    Thread_saved_shadow_call_stack_offset = 1480;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1472;
+    1496;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -5800,9 +5800,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1480;
+    1504;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1488;
+    Thread_callback_stack_return_offset = 1512;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -5861,8 +5861,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, -1,   -1,   1368, 1376,
-        1384, 1392, 1400, -1,   1408, 1416, -1,   -1};
+        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
+        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -6173,9 +6173,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1488;
+    1512;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1496;
+    1520;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -6201,7 +6201,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -6212,7 +6212,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1584;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1608;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -6230,7 +6230,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1528;
+    1552;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -6250,14 +6250,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1504;
+    1528;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1560;
+    1584;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1592;
+    1616;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -6299,11 +6299,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1512;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1536;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1520;
+    Thread_saved_shadow_call_stack_offset = 1544;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1536;
+    1560;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -6338,9 +6338,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1544;
+    1568;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1552;
+    Thread_callback_stack_return_offset = 1576;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -6399,9 +6399,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416,
-        1424, 1432, 1440, 1448, -1,   -1,   -1,   -1,   1456, 1464, -1,
-        -1,   -1,   1472, 1480, -1,   -1,   -1,   -1,   -1,   -1};
+        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
+        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
+        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -6747,9 +6747,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 368;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 704;
+    AOT_Thread_active_exception_offset = 716;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 708;
+    AOT_Thread_active_stacktrace_offset = 720;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 120;
 static constexpr dart::compiler::target::word
@@ -6775,7 +6775,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 196;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    744;
+    756;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 332;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -6788,7 +6788,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 136;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    752;
+    764;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 48;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -6807,7 +6807,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 724;
+    AOT_Thread_execution_state_offset = 736;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
@@ -6827,14 +6827,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 364;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 712;
+    AOT_Thread_global_object_pool_offset = 724;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 132;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 740;
+    AOT_Thread_exit_through_ffi_offset = 752;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 44;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    756;
+    768;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 68;
 static constexpr dart::compiler::target::word
@@ -6878,11 +6878,11 @@
     104;
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 716;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 720;
+    AOT_Thread_saved_shadow_call_stack_offset = 732;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 728;
+    AOT_Thread_safepoint_state_offset = 740;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 240;
 static constexpr dart::compiler::target::word
@@ -6919,9 +6919,9 @@
     AOT_Thread_write_barrier_mask_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    732;
+    744;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 736;
+    AOT_Thread_callback_stack_return_offset = 748;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -6992,7 +6992,7 @@
     4, 12, 8, 16};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        672, 676, 680, 684, 688, -1, 692, -1, 696, 700, -1, -1, -1, -1, -1, -1};
+        684, 688, 692, 696, 700, -1, 704, -1, 708, 712, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     12;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
@@ -7349,9 +7349,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1424;
+    AOT_Thread_active_exception_offset = 1448;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1432;
+    AOT_Thread_active_stacktrace_offset = 1456;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -7377,7 +7377,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1504;
+    1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -7390,7 +7390,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1520;
+    1544;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -7409,7 +7409,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1464;
+    AOT_Thread_execution_state_offset = 1488;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -7429,14 +7429,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1440;
+    AOT_Thread_global_object_pool_offset = 1464;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1496;
+    AOT_Thread_exit_through_ffi_offset = 1520;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1528;
+    1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -7481,11 +7481,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1448;
+    1472;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1456;
+    AOT_Thread_saved_shadow_call_stack_offset = 1480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1472;
+    AOT_Thread_safepoint_state_offset = 1496;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -7522,9 +7522,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1480;
+    1504;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1488;
+    AOT_Thread_callback_stack_return_offset = 1512;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -7596,8 +7596,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, -1,   -1,   1368, 1376,
-        1384, 1392, 1400, -1,   1408, 1416, -1,   -1};
+        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
+        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -7957,9 +7957,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1488;
+    AOT_Thread_active_exception_offset = 1512;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1496;
+    AOT_Thread_active_stacktrace_offset = 1520;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -7985,7 +7985,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -7998,7 +7998,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1584;
+    1608;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -8017,7 +8017,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1528;
+    AOT_Thread_execution_state_offset = 1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -8037,14 +8037,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1504;
+    AOT_Thread_global_object_pool_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1560;
+    AOT_Thread_exit_through_ffi_offset = 1584;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1592;
+    1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -8089,11 +8089,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1512;
+    1536;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1520;
+    AOT_Thread_saved_shadow_call_stack_offset = 1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1536;
+    AOT_Thread_safepoint_state_offset = 1560;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -8130,9 +8130,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1544;
+    1568;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1552;
+    AOT_Thread_callback_stack_return_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -8204,9 +8204,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416,
-        1424, 1432, 1440, 1448, -1,   -1,   -1,   -1,   1456, 1464, -1,
-        -1,   -1,   1472, 1480, -1,   -1,   -1,   -1,   -1,   -1};
+        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
+        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
+        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -8563,9 +8563,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1424;
+    AOT_Thread_active_exception_offset = 1448;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1432;
+    AOT_Thread_active_stacktrace_offset = 1456;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -8591,7 +8591,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1504;
+    1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -8604,7 +8604,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1520;
+    1544;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -8623,7 +8623,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1464;
+    AOT_Thread_execution_state_offset = 1488;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -8643,14 +8643,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1440;
+    AOT_Thread_global_object_pool_offset = 1464;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1496;
+    AOT_Thread_exit_through_ffi_offset = 1520;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1528;
+    1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -8695,11 +8695,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1448;
+    1472;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1456;
+    AOT_Thread_saved_shadow_call_stack_offset = 1480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1472;
+    AOT_Thread_safepoint_state_offset = 1496;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -8736,9 +8736,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1480;
+    1504;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1488;
+    AOT_Thread_callback_stack_return_offset = 1512;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -8810,8 +8810,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, -1,   -1,   1368, 1376,
-        1384, 1392, 1400, -1,   1408, 1416, -1,   -1};
+        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
+        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -9168,9 +9168,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1488;
+    AOT_Thread_active_exception_offset = 1512;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1496;
+    AOT_Thread_active_stacktrace_offset = 1520;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -9196,7 +9196,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -9209,7 +9209,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1584;
+    1608;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -9228,7 +9228,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1528;
+    AOT_Thread_execution_state_offset = 1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -9248,14 +9248,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1504;
+    AOT_Thread_global_object_pool_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1560;
+    AOT_Thread_exit_through_ffi_offset = 1584;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1592;
+    1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -9300,11 +9300,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1512;
+    1536;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1520;
+    AOT_Thread_saved_shadow_call_stack_offset = 1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1536;
+    AOT_Thread_safepoint_state_offset = 1560;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -9341,9 +9341,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1544;
+    1568;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1552;
+    AOT_Thread_callback_stack_return_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -9415,9 +9415,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416,
-        1424, 1432, 1440, 1448, -1,   -1,   -1,   -1,   1456, 1464, -1,
-        -1,   -1,   1472, 1480, -1,   -1,   -1,   -1,   -1,   -1};
+        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
+        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
+        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -9768,9 +9768,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 368;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 704;
+    AOT_Thread_active_exception_offset = 716;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 708;
+    AOT_Thread_active_stacktrace_offset = 720;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 120;
 static constexpr dart::compiler::target::word
@@ -9796,7 +9796,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 196;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    744;
+    756;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 332;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -9809,7 +9809,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 136;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    752;
+    764;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 48;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -9828,7 +9828,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 724;
+    AOT_Thread_execution_state_offset = 736;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
@@ -9848,14 +9848,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 364;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 712;
+    AOT_Thread_global_object_pool_offset = 724;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 132;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 740;
+    AOT_Thread_exit_through_ffi_offset = 752;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 44;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    756;
+    768;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 68;
 static constexpr dart::compiler::target::word
@@ -9899,11 +9899,11 @@
     104;
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 716;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 720;
+    AOT_Thread_saved_shadow_call_stack_offset = 732;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 728;
+    AOT_Thread_safepoint_state_offset = 740;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 240;
 static constexpr dart::compiler::target::word
@@ -9940,9 +9940,9 @@
     AOT_Thread_write_barrier_mask_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    732;
+    744;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 736;
+    AOT_Thread_callback_stack_return_offset = 748;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -10013,7 +10013,7 @@
     4, 12, 8, 16};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        672, 676, 680, 684, 688, -1, 692, -1, 696, 700, -1, -1, -1, -1, -1, -1};
+        684, 688, 692, 696, 700, -1, 704, -1, 708, 712, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     12;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
@@ -10363,9 +10363,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1424;
+    AOT_Thread_active_exception_offset = 1448;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1432;
+    AOT_Thread_active_stacktrace_offset = 1456;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -10391,7 +10391,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1504;
+    1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -10404,7 +10404,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1520;
+    1544;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -10423,7 +10423,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1464;
+    AOT_Thread_execution_state_offset = 1488;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -10443,14 +10443,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1440;
+    AOT_Thread_global_object_pool_offset = 1464;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1496;
+    AOT_Thread_exit_through_ffi_offset = 1520;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1528;
+    1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -10495,11 +10495,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1448;
+    1472;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1456;
+    AOT_Thread_saved_shadow_call_stack_offset = 1480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1472;
+    AOT_Thread_safepoint_state_offset = 1496;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -10536,9 +10536,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1480;
+    1504;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1488;
+    AOT_Thread_callback_stack_return_offset = 1512;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -10610,8 +10610,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, -1,   -1,   1368, 1376,
-        1384, 1392, 1400, -1,   1408, 1416, -1,   -1};
+        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
+        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -10964,9 +10964,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1488;
+    AOT_Thread_active_exception_offset = 1512;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1496;
+    AOT_Thread_active_stacktrace_offset = 1520;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -10992,7 +10992,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -11005,7 +11005,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1584;
+    1608;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -11024,7 +11024,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1528;
+    AOT_Thread_execution_state_offset = 1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -11044,14 +11044,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1504;
+    AOT_Thread_global_object_pool_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1560;
+    AOT_Thread_exit_through_ffi_offset = 1584;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1592;
+    1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -11096,11 +11096,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1512;
+    1536;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1520;
+    AOT_Thread_saved_shadow_call_stack_offset = 1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1536;
+    AOT_Thread_safepoint_state_offset = 1560;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -11137,9 +11137,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1544;
+    1568;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1552;
+    AOT_Thread_callback_stack_return_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -11211,9 +11211,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416,
-        1424, 1432, 1440, 1448, -1,   -1,   -1,   -1,   1456, 1464, -1,
-        -1,   -1,   1472, 1480, -1,   -1,   -1,   -1,   -1,   -1};
+        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
+        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
+        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -11563,9 +11563,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1424;
+    AOT_Thread_active_exception_offset = 1448;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1432;
+    AOT_Thread_active_stacktrace_offset = 1456;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -11591,7 +11591,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1504;
+    1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -11604,7 +11604,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1520;
+    1544;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -11623,7 +11623,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1464;
+    AOT_Thread_execution_state_offset = 1488;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -11643,14 +11643,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1440;
+    AOT_Thread_global_object_pool_offset = 1464;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1496;
+    AOT_Thread_exit_through_ffi_offset = 1520;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1528;
+    1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -11695,11 +11695,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1448;
+    1472;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1456;
+    AOT_Thread_saved_shadow_call_stack_offset = 1480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1472;
+    AOT_Thread_safepoint_state_offset = 1496;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -11736,9 +11736,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1480;
+    1504;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1488;
+    AOT_Thread_callback_stack_return_offset = 1512;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -11810,8 +11810,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, -1,   -1,   1368, 1376,
-        1384, 1392, 1400, -1,   1408, 1416, -1,   -1};
+        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
+        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -12161,9 +12161,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1488;
+    AOT_Thread_active_exception_offset = 1512;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1496;
+    AOT_Thread_active_stacktrace_offset = 1520;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -12189,7 +12189,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -12202,7 +12202,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1584;
+    1608;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -12221,7 +12221,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1528;
+    AOT_Thread_execution_state_offset = 1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -12241,14 +12241,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1504;
+    AOT_Thread_global_object_pool_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1560;
+    AOT_Thread_exit_through_ffi_offset = 1584;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1592;
+    1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -12293,11 +12293,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1512;
+    1536;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1520;
+    AOT_Thread_saved_shadow_call_stack_offset = 1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1536;
+    AOT_Thread_safepoint_state_offset = 1560;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -12334,9 +12334,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1544;
+    1568;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1552;
+    AOT_Thread_callback_stack_return_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -12408,9 +12408,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1336, 1344, 1352, 1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416,
-        1424, 1432, 1440, 1448, -1,   -1,   -1,   -1,   1456, 1464, -1,
-        -1,   -1,   1472, 1480, -1,   -1,   -1,   -1,   -1,   -1};
+        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
+        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
+        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
diff --git a/runtime/vm/compiler/stub_code_compiler.cc b/runtime/vm/compiler/stub_code_compiler.cc
index ea11574..5f54c67 100644
--- a/runtime/vm/compiler/stub_code_compiler.cc
+++ b/runtime/vm/compiler/stub_code_compiler.cc
@@ -19,6 +19,9 @@
 
 namespace dart {
 
+DECLARE_FLAG(bool, inline_alloc);
+DECLARE_FLAG(bool, use_slow_path);
+
 namespace compiler {
 
 intptr_t StubCodeCompiler::WordOffsetFromFpToCpuRegister(
@@ -901,6 +904,31 @@
   __ Breakpoint();
 }
 
+#define EMIT_BOX_ALLOCATION(Name)                                              \
+  void StubCodeCompiler::GenerateAllocate##Name##Stub(Assembler* assembler) {  \
+    Label call_runtime;                                                        \
+    if (!FLAG_use_slow_path && FLAG_inline_alloc) {                            \
+      __ TryAllocate(compiler::Name##Class(), &call_runtime,                   \
+                     Assembler::kNearJump, AllocateBoxABI::kResultReg,         \
+                     AllocateBoxABI::kTempReg);                                \
+      __ Ret();                                                                \
+    }                                                                          \
+    __ Bind(&call_runtime);                                                    \
+    __ EnterStubFrame();                                                       \
+    __ PushObject(NullObject()); /* Make room for result. */                   \
+    __ CallRuntime(kAllocate##Name##RuntimeEntry, 0);                          \
+    __ PopRegister(AllocateBoxABI::kResultReg);                                \
+    __ LeaveStubFrame();                                                       \
+    __ Ret();                                                                  \
+  }
+
+EMIT_BOX_ALLOCATION(Mint)
+EMIT_BOX_ALLOCATION(Double)
+EMIT_BOX_ALLOCATION(Float32x4)
+EMIT_BOX_ALLOCATION(Float64x2)
+
+#undef EMIT_BOX_ALLOCATION
+
 }  // namespace compiler
 
 }  // namespace dart
diff --git a/runtime/vm/compiler/stub_code_compiler_arm.cc b/runtime/vm/compiler/stub_code_compiler_arm.cc
index 0d611f4..af6c94f 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm.cc
@@ -29,11 +29,6 @@
 
 namespace dart {
 
-DEFINE_FLAG(bool, inline_alloc, true, "Inline allocation of objects.");
-DEFINE_FLAG(bool,
-            use_slow_path,
-            false,
-            "Set to true for debugging & verifying the slow paths.");
 DECLARE_FLAG(bool, precompiled_mode);
 
 namespace compiler {
@@ -1129,7 +1124,7 @@
   // For test purpose call allocation stub without inline allocation attempt.
   if (!FLAG_use_slow_path && FLAG_inline_alloc) {
     Label slow_case;
-    __ TryAllocate(compiler::MintClass(), &slow_case,
+    __ TryAllocate(compiler::MintClass(), &slow_case, Assembler::kNearJump,
                    AllocateMintABI::kResultReg, AllocateMintABI::kTempReg);
     __ Ret();
 
@@ -1150,7 +1145,7 @@
   // For test purpose call allocation stub without inline allocation attempt.
   if (!FLAG_use_slow_path && FLAG_inline_alloc) {
     Label slow_case;
-    __ TryAllocate(compiler::MintClass(), &slow_case,
+    __ TryAllocate(compiler::MintClass(), &slow_case, Assembler::kNearJump,
                    AllocateMintABI::kResultReg, AllocateMintABI::kTempReg);
     __ Ret();
 
diff --git a/runtime/vm/compiler/stub_code_compiler_arm64.cc b/runtime/vm/compiler/stub_code_compiler_arm64.cc
index 6438a2c..3d5f6c4 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm64.cc
@@ -28,11 +28,6 @@
 
 namespace dart {
 
-DEFINE_FLAG(bool, inline_alloc, true, "Inline allocation of objects.");
-DEFINE_FLAG(bool,
-            use_slow_path,
-            false,
-            "Set to true for debugging & verifying the slow paths.");
 DECLARE_FLAG(bool, precompiled_mode);
 
 namespace compiler {
@@ -1265,7 +1260,7 @@
   // For test purpose call allocation stub without inline allocation attempt.
   if (!FLAG_use_slow_path && FLAG_inline_alloc) {
     Label slow_case;
-    __ TryAllocate(compiler::MintClass(), &slow_case,
+    __ TryAllocate(compiler::MintClass(), &slow_case, Assembler::kNearJump,
                    AllocateMintABI::kResultReg, AllocateMintABI::kTempReg);
     __ Ret();
 
@@ -1285,7 +1280,7 @@
   // For test purpose call allocation stub without inline allocation attempt.
   if (!FLAG_use_slow_path && FLAG_inline_alloc) {
     Label slow_case;
-    __ TryAllocate(compiler::MintClass(), &slow_case,
+    __ TryAllocate(compiler::MintClass(), &slow_case, Assembler::kNearJump,
                    AllocateMintABI::kResultReg, AllocateMintABI::kTempReg);
     __ Ret();
 
diff --git a/runtime/vm/compiler/stub_code_compiler_ia32.cc b/runtime/vm/compiler/stub_code_compiler_ia32.cc
index 0c4161f..f52098f 100644
--- a/runtime/vm/compiler/stub_code_compiler_ia32.cc
+++ b/runtime/vm/compiler/stub_code_compiler_ia32.cc
@@ -27,12 +27,6 @@
 
 namespace dart {
 
-DEFINE_FLAG(bool, inline_alloc, true, "Inline allocation of objects.");
-DEFINE_FLAG(bool,
-            use_slow_path,
-            false,
-            "Set to true for debugging & verifying the slow paths.");
-
 namespace compiler {
 
 // Ensures that [EAX] is a new object, if not it will be added to the remembered
diff --git a/runtime/vm/compiler/stub_code_compiler_x64.cc b/runtime/vm/compiler/stub_code_compiler_x64.cc
index a25196d..321838f 100644
--- a/runtime/vm/compiler/stub_code_compiler_x64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_x64.cc
@@ -29,11 +29,6 @@
 
 namespace dart {
 
-DEFINE_FLAG(bool, inline_alloc, true, "Inline allocation of objects.");
-DEFINE_FLAG(bool,
-            use_slow_path,
-            false,
-            "Set to true for debugging & verifying the slow paths.");
 DECLARE_FLAG(bool, precompiled_mode);
 
 namespace compiler {
diff --git a/runtime/vm/constants_arm.h b/runtime/vm/constants_arm.h
index 9bb97a5..fbcf4db 100644
--- a/runtime/vm/constants_arm.h
+++ b/runtime/vm/constants_arm.h
@@ -451,12 +451,18 @@
   static const Register kIndexReg = R1;
 };
 
-// ABI for AllocateMint*Stub.
+// ABI for AllocateMintShared*Stub.
 struct AllocateMintABI {
   static const Register kResultReg = R0;
   static const Register kTempReg = R1;
 };
 
+// ABI for Allocate{Mint,Double,Float32x4,Float64x2}Stub.
+struct AllocateBoxABI {
+  static const Register kResultReg = R0;
+  static const Register kTempReg = R1;
+};
+
 // ABI for Allocate<TypedData>ArrayStub.
 struct AllocateTypedDataArrayABI {
   static const Register kLengthReg = R4;
diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h
index 0ce8f19..ae8436e 100644
--- a/runtime/vm/constants_arm64.h
+++ b/runtime/vm/constants_arm64.h
@@ -292,12 +292,18 @@
   static const Register kIndexReg = R1;
 };
 
-// ABI for AllocateMint*Stub.
+// ABI for AllocateMintShared*Stub.
 struct AllocateMintABI {
   static const Register kResultReg = R0;
   static const Register kTempReg = R1;
 };
 
+// ABI for Allocate{Mint,Double,Float32x4,Float64x2}Stub.
+struct AllocateBoxABI {
+  static const Register kResultReg = R0;
+  static const Register kTempReg = R1;
+};
+
 // ABI for Allocate<TypedData>ArrayStub.
 struct AllocateTypedDataArrayABI {
   static const Register kLengthReg = R4;
diff --git a/runtime/vm/constants_ia32.h b/runtime/vm/constants_ia32.h
index 1e95ec1..73912e2 100644
--- a/runtime/vm/constants_ia32.h
+++ b/runtime/vm/constants_ia32.h
@@ -196,6 +196,12 @@
   static const Register kIndexReg = EBX;
 };
 
+// ABI for Allocate{Mint,Double,Float32x4,Float64x2}Stub.
+struct AllocateBoxABI {
+  static const Register kResultReg = EAX;
+  static const Register kTempReg = EBX;
+};
+
 // ABI for Allocate<TypedData>ArrayStub.
 struct AllocateTypedDataArrayABI {
   static const Register kLengthReg = EAX;
diff --git a/runtime/vm/constants_x64.h b/runtime/vm/constants_x64.h
index f2ae0ad..73578fa 100644
--- a/runtime/vm/constants_x64.h
+++ b/runtime/vm/constants_x64.h
@@ -263,12 +263,18 @@
   static const Register kIndexReg = RBX;
 };
 
-// ABI for AllocateMint*Stub.
+// ABI for AllocateMintShared*Stub.
 struct AllocateMintABI {
   static const Register kResultReg = RAX;
   static const Register kTempReg = RBX;
 };
 
+// ABI for Allocate{Mint,Double,Float32x4,Float64x2}Stub.
+struct AllocateBoxABI {
+  static const Register kResultReg = RAX;
+  static const Register kTempReg = RBX;
+};
+
 // ABI for Allocate<TypedData>ArrayStub.
 struct AllocateTypedDataArrayABI {
   static const Register kLengthReg = RAX;
diff --git a/runtime/vm/flag_list.h b/runtime/vm/flag_list.h
index 1aa3e56..d0c85d0 100644
--- a/runtime/vm/flag_list.h
+++ b/runtime/vm/flag_list.h
@@ -117,6 +117,7 @@
     "Dump megamorphic cache statistics")                                       \
   R(dump_symbol_stats, false, bool, false, "Dump symbol table statistics")     \
   R(enable_asserts, false, bool, false, "Enable assert statements.")           \
+  P(inline_alloc, bool, true, "Whether to use inline allocation fast paths.")  \
   R(null_assertions, false, bool, false,                                       \
     "Enable null assertions for parameters.")                                  \
   R(strict_null_safety_checks, false, bool, false,                             \
@@ -239,6 +240,7 @@
     "Use class hierarchy analysis even if it can cause deoptimization.")       \
   P(use_field_guards, bool, true, "Use field guards and track field types")    \
   C(use_osr, false, true, bool, true, "Use OSR")                               \
+  P(use_slow_path, bool, false, "Whether to avoid inlined fast paths.")        \
   R(verbose_gc, false, bool, false, "Enables verbose GC.")                     \
   R(verbose_gc_hdr, 40, int, 40, "Print verbose GC header interval.")          \
   R(verify_after_gc, false, bool, false,                                       \
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 343bf91..9f363a6 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -925,6 +925,10 @@
   isolate_group->object_store()->set_mint_class(cls);
   cls = Class::New<Double, RTN::Double>(isolate_group);
   isolate_group->object_store()->set_double_class(cls);
+  cls = Class::New<Float32x4, RTN::Float32x4>(isolate_group);
+  isolate_group->object_store()->set_float32x4_class(cls);
+  cls = Class::New<Float64x2, RTN::Float64x2>(isolate_group);
+  isolate_group->object_store()->set_float64x2_class(cls);
 
   // Ensure that class kExternalTypedDataUint8ArrayCid is registered as we
   // need it when reading in the token stream of bootstrap classes in the VM
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index 519ea48..df7f89a 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -193,6 +193,10 @@
   RW(Code, stack_overflow_stub_with_fpu_regs_stub)                             \
   RW(Code, stack_overflow_stub_without_fpu_regs_stub)                          \
   RW(Code, allocate_array_stub)                                                \
+  RW(Code, allocate_mint_stub)                                                 \
+  RW(Code, allocate_double_stub)                                               \
+  RW(Code, allocate_float32x4_stub)                                            \
+  RW(Code, allocate_float64x2_stub)                                            \
   RW(Code, allocate_int8_array_stub)                                           \
   RW(Code, allocate_uint8_array_stub)                                          \
   RW(Code, allocate_uint8_clamped_array_stub)                                  \
@@ -261,6 +265,10 @@
   DO(stack_overflow_stub_without_fpu_regs_stub,                                \
      StackOverflowSharedWithoutFPURegs)                                        \
   DO(allocate_array_stub, AllocateArray)                                       \
+  DO(allocate_mint_stub, AllocateMint)                                         \
+  DO(allocate_double_stub, AllocateDouble)                                     \
+  DO(allocate_float32x4_stub, AllocateFloat32x4)                               \
+  DO(allocate_float64x2_stub, AllocateFloat64x2)                               \
   DO(allocate_int8_array_stub, AllocateInt8Array)                              \
   DO(allocate_uint8_array_stub, AllocateUint8Array)                            \
   DO(allocate_uint8_clamped_array_stub, AllocateUint8ClampedArray)             \
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index 324a031..5417f6d 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -3545,7 +3545,7 @@
            "#3      _bar (%1$s:16:3)\n"
            "#4      MyClass.field (%1$s:25:5)\n"
            "#5      MyClass.foo.fooHelper (%1$s:30:7)\n"
-           "#6      MyClass.foo (%1$s:32:5)\n"
+           "#6      MyClass.foo (%1$s:32:14)\n"
            "#7      new MyClass.<anonymous closure> (%1$s:21:12)\n"
            "#8      new MyClass (%1$s:21:18)\n"
            "#9      main.<anonymous closure> (%1$s:37:14)\n"
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index cc62255..402bfa9 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -336,6 +336,34 @@
   array.SetTypeArguments(element_type);  // May be null.
 }
 
+DEFINE_RUNTIME_ENTRY_NO_LAZY_DEOPT(AllocateDouble, 0) {
+  if (FLAG_shared_slow_path_triggers_gc) {
+    isolate->group()->heap()->CollectAllGarbage();
+  }
+  arguments.SetReturn(Object::Handle(zone, Double::New(0.0)));
+}
+
+DEFINE_RUNTIME_ENTRY_NO_LAZY_DEOPT(AllocateMint, 0) {
+  if (FLAG_shared_slow_path_triggers_gc) {
+    isolate->group()->heap()->CollectAllGarbage();
+  }
+  arguments.SetReturn(Object::Handle(zone, Integer::New(kMaxInt64)));
+}
+
+DEFINE_RUNTIME_ENTRY_NO_LAZY_DEOPT(AllocateFloat32x4, 0) {
+  if (FLAG_shared_slow_path_triggers_gc) {
+    isolate->group()->heap()->CollectAllGarbage();
+  }
+  arguments.SetReturn(Object::Handle(zone, Float32x4::New(0.0, 0.0, 0.0, 0.0)));
+}
+
+DEFINE_RUNTIME_ENTRY_NO_LAZY_DEOPT(AllocateFloat64x2, 0) {
+  if (FLAG_shared_slow_path_triggers_gc) {
+    isolate->group()->heap()->CollectAllGarbage();
+  }
+  arguments.SetReturn(Object::Handle(zone, Float64x2::New(0.0, 0.0)));
+}
+
 // Allocate typed data array of given class id and length.
 // Arg0: class id.
 // Arg1: number of elements.
@@ -2713,16 +2741,6 @@
 }
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
 
-DEFINE_RUNTIME_ENTRY(AllocateMint, 0) {
-  if (FLAG_shared_slow_path_triggers_gc) {
-    isolate->group()->heap()->CollectAllGarbage();
-  }
-  constexpr uint64_t val = 0x7fffffff7fffffff;
-  ASSERT(!Smi::IsValid(static_cast<int64_t>(val)));
-  const auto& integer_box = Integer::Handle(zone, Integer::NewFromUint64(val));
-  arguments.SetReturn(integer_box);
-};
-
 DEFINE_RUNTIME_ENTRY(StackOverflow, 0) {
 #if defined(USING_SIMULATOR)
   uword stack_pos = Simulator::Current()->get_sp();
diff --git a/runtime/vm/runtime_entry_list.h b/runtime/vm/runtime_entry_list.h
index ca32756..dcf7e1a 100644
--- a/runtime/vm/runtime_entry_list.h
+++ b/runtime/vm/runtime_entry_list.h
@@ -9,6 +9,10 @@
 
 #define RUNTIME_ENTRY_LIST(V)                                                  \
   V(AllocateArray)                                                             \
+  V(AllocateMint)                                                              \
+  V(AllocateDouble)                                                            \
+  V(AllocateFloat32x4)                                                         \
+  V(AllocateFloat64x2)                                                         \
   V(AllocateTypedData)                                                         \
   V(AllocateContext)                                                           \
   V(AllocateObject)                                                            \
@@ -44,7 +48,6 @@
   V(IntegerDivisionByZeroException)                                            \
   V(ReThrow)                                                                   \
   V(StackOverflow)                                                             \
-  V(AllocateMint)                                                              \
   V(Throw)                                                                     \
   V(DeoptimizeMaterialize)                                                     \
   V(RewindPostDeopt)                                                           \
diff --git a/runtime/vm/source_report_test.cc b/runtime/vm/source_report_test.cc
index 9bc1aac..44ae5e1 100644
--- a/runtime/vm/source_report_test.cc
+++ b/runtime/vm/source_report_test.cc
@@ -311,7 +311,7 @@
 
       // One range compiled with one hit (helper0).
       "{\"scriptIndex\":0,\"startPos\":0,\"endPos\":73,\"compiled\":true,"
-      "\"coverage\":{\"hits\":[0],\"misses\":[]}},"
+      "\"coverage\":{\"hits\":[0,69],\"misses\":[]}},"
 
       // One range not compiled (helper1).
       "{\"scriptIndex\":0,\"startPos\":75,\"endPos\":86,\"compiled\":false},"
@@ -370,7 +370,7 @@
 
       // One range compiled with one hit (helper0).
       "{\"scriptIndex\":0,\"startPos\":0,\"endPos\":73,\"compiled\":true,"
-      "\"coverage\":{\"hits\":[0],\"misses\":[]}},"
+      "\"coverage\":{\"hits\":[0,69],\"misses\":[]}},"
 
       // Nested range compiled (nestedHelper0).
       "{\"scriptIndex\":0,\"startPos\":14,\"endPos\":31,\"compiled\":true,"
diff --git a/runtime/vm/stub_code.cc b/runtime/vm/stub_code.cc
index 0afa895..10c86c6 100644
--- a/runtime/vm/stub_code.cc
+++ b/runtime/vm/stub_code.cc
@@ -170,12 +170,21 @@
   const Error& error =
       Error::Handle(zone, cls.EnsureIsAllocateFinalized(thread));
   ASSERT(error.IsNull());
-  if (cls.id() == kArrayCid) {
-    return object_store->allocate_array_stub();
-  } else if (cls.id() == kContextCid) {
-    return object_store->allocate_context_stub();
-  } else if (cls.id() == kUnhandledExceptionCid) {
-    return object_store->allocate_unhandled_exception_stub();
+  switch (cls.id()) {
+    case kArrayCid:
+      return object_store->allocate_array_stub();
+    case kContextCid:
+      return object_store->allocate_context_stub();
+    case kUnhandledExceptionCid:
+      return object_store->allocate_unhandled_exception_stub();
+    case kMintCid:
+      return object_store->allocate_mint_stub();
+    case kDoubleCid:
+      return object_store->allocate_double_stub();
+    case kFloat32x4Cid:
+      return object_store->allocate_float32x4_stub();
+    case kFloat64x2Cid:
+      return object_store->allocate_float64x2_stub();
   }
   Code& stub = Code::Handle(zone, cls.allocation_stub());
   if (stub.IsNull()) {
diff --git a/runtime/vm/stub_code_list.h b/runtime/vm/stub_code_list.h
index d1a200f..2364084 100644
--- a/runtime/vm/stub_code_list.h
+++ b/runtime/vm/stub_code_list.h
@@ -29,6 +29,10 @@
   V(WriteBarrierWrappers)                                                      \
   V(ArrayWriteBarrier)                                                         \
   V(AllocateArray)                                                             \
+  V(AllocateMint)                                                              \
+  V(AllocateDouble)                                                            \
+  V(AllocateFloat32x4)                                                         \
+  V(AllocateFloat64x2)                                                         \
   V(AllocateInt8Array)                                                         \
   V(AllocateUint8Array)                                                        \
   V(AllocateUint8ClampedArray)                                                 \
diff --git a/tests/language/async/congruence_local_test.dart b/tests/language/async/congruence_local_test.dart
index e3ba8e8..15e27a2 100644
--- a/tests/language/async/congruence_local_test.dart
+++ b/tests/language/async/congruence_local_test.dart
@@ -101,7 +101,7 @@
     Future<int> v2 = f_inferred_futureObject();
     //               ^^^^^^^^^^^^^^^^^^^^^^^^^
     // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
-    //               ^
+    //                                      ^
     // [cfe] A value of type 'Future<Object>' can't be assigned to a variable of type 'Future<int>'.
 
     // Check that f_inferred_A's static return type is `Future<A>`, by verifying
@@ -111,7 +111,7 @@
     Future<B> v4 = f_inferred_A();
     //             ^^^^^^^^^^^^^^
     // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
-    //             ^
+    //                         ^
     // [cfe] A value of type 'Future<A>' can't be assigned to a variable of type 'Future<B>'.
   }
 
diff --git a/tests/language/const_functions/const_functions_closures_error_test.dart b/tests/language/const_functions/const_functions_closures_error_test.dart
index d09eb06..1383983 100644
--- a/tests/language/const_functions/const_functions_closures_error_test.dart
+++ b/tests/language/const_functions/const_functions_closures_error_test.dart
@@ -76,6 +76,6 @@
   const z = a();
   //        ^^^
   // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE
-  //        ^
+  //         ^
   // [cfe] Constant evaluation error:
 }
diff --git a/tests/language_2/async/congruence_local_test.dart b/tests/language_2/async/congruence_local_test.dart
index 1ae9dfa..7a9d30c 100644
--- a/tests/language_2/async/congruence_local_test.dart
+++ b/tests/language_2/async/congruence_local_test.dart
@@ -105,7 +105,7 @@
     int v2 = f_inferred_futureObject();
     //       ^^^^^^^^^^^^^^^^^^^^^^^^^
     // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
-    //       ^
+    //                              ^
     // [cfe] A value of type 'Future<Object>' can't be assigned to a variable of type 'int'.
 
     // Check that f_inferred_A's static return type is `Future<A>`, by verifying
@@ -115,7 +115,7 @@
     Future<int> v4 = f_inferred_A();
     //               ^^^^^^^^^^^^^^
     // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
-    //               ^
+    //                           ^
     // [cfe] A value of type 'Future<A>' can't be assigned to a variable of type 'Future<int>'.
   }
 
diff --git a/tools/VERSION b/tools/VERSION
index 400d307..3b52306 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 99
+PRERELEASE 100
 PRERELEASE_PATCH 0
\ No newline at end of file